source: 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/UnitStore.cs @ 4694

Revision 4694, 2.6 KB checked in by dezhidki, 7 years ago (diff)

Guit lisätty, AIn viimestely.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using CastleMaster.Players;
6using CastleMaster.World;
7using CastleMaster.Graphics;
8using CastleMaster.Units.Mobs;
9using CastleMaster.Guis;
10
11namespace CastleMaster.Units
12{
13    public class UnitStore : Unit
14    {
15        public const int COINS_FOR_LUMBER = 2;
16        private bool isDestroyed = false;
17        private GuiStoreMenu menu;
18
19        public UnitStore(Level level, Player owner)
20            : base(level, owner)
21        {
22            width = 8 * Viewport.TILESIZE;
23            depth = 8 * Viewport.TILESIZE;
24            HasHealth = true;
25            maxHealth = 400;
26            immunityTime = 20;
27
28            isSolid = true;
29
30            renderOffset.X = 128;
31            renderOffset.Y = 83;
32
33            spriteSize.X = 240;
34            spriteSize.Y = 147;
35            screenRectOffset.Update(32, 0, spriteSize.X - 32, spriteSize.Y - 10);
36
37            highlightOffset.X = spriteSize.X / 2 - 4;
38
39            rectOffset.Update(-4 * Viewport.TILESIZE, -4 * Viewport.TILESIZE, 4 * Viewport.TILESIZE, 4 * Viewport.TILESIZE);
40
41            menu = new GuiStoreMenu(Game.GuiManager, this);
42        }
43
44        public void SellWood()
45        {
46            if (Owner.LumberAmount >= 1)
47            {
48                Owner.LumberAmount--;
49                Owner.CoinsAmount += COINS_FOR_LUMBER;
50            }
51        }
52
53        public bool IsDestroyed { get { return isDestroyed; } }
54
55        public override void OnFocus()
56        {
57            Game.GuiManager.AddGui(menu, true);
58        }
59
60        public override void OnFocusLost()
61        {
62            Game.GuiManager.RemoveGui(menu);
63        }
64
65        public override void OnRemoved()
66        {
67            int xTile = (int)(X / Viewport.TILESIZE);
68            int zTile = (int)(Z / Viewport.TILESIZE);
69
70            for (int x = xTile - 5; x <= xTile + 5; x++)
71            {
72                if (x < 0 || x >= level.Width) continue;
73                for (int z = zTile - 5; z <= zTile + 5; z++)
74                {
75                    if (z < 0 || z >= level.Height) continue;
76
77                    level.SetTile(x, z, 1);
78                    level.SetData(x, z, 0);
79                }
80            }
81
82            menu.Remove();
83            level.RemoveUnit(this);
84        }
85
86        public override void Render(RenderHelper renderer)
87        {
88            base.Render(renderer);
89            renderer.Render(ScreenPos, 0, 0, Resources.SPRITE_STORE, colorizer, Viewport.ZOOM);
90        }
91    }
92}
Note: See TracBrowser for help on using the repository browser.