source: 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/UnitArmory.cs @ 4703

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

Talletus.

Line 
1using CastleMaster.Graphics;
2using CastleMaster.Guis;
3using CastleMaster.Players;
4using CastleMaster.Units.Mobs;
5using CastleMaster.World;
6using System;
7using System.Collections.Generic;
8using System.Linq;
9using System.Text;
10
11namespace CastleMaster.Units
12{
13    public class UnitArmory : UnitBuilding
14    {
15        public const int PRICE_WOODCUTTER = 5;
16        public const int PRICE_WARRIOR = 20;
17        public const int PRICE_RANGER = 10;
18        private Dictionary<Type, int> prices;
19        private GuiArmoryMenu menu;
20        private int spriteX = 0;
21
22        public UnitArmory(Level level, Player owner)
23            : base(level, owner)
24        {
25            width = 5 * Viewport.TILESIZE;
26            depth = 5 * Viewport.TILESIZE;
27            HasHealth = true;
28            maxHealth = 400;
29
30            renderOffset.X = 80;
31            renderOffset.Y = 58;
32
33            spriteSize.X = 160;
34            spriteSize.Y = 98;
35            screenRectOffset.Update(32, 0, spriteSize.X - 32, spriteSize.Y - 10);
36
37            highlightOffset.X = spriteSize.X / 2 - 4;
38
39            rectOffset.Update(-2 * Viewport.TILESIZE, -2 * Viewport.TILESIZE, 2 * Viewport.TILESIZE, 2 * Viewport.TILESIZE);
40
41            prices = new Dictionary<Type, int>();
42            prices.Add(typeof(MobWoodcutter), PRICE_WOODCUTTER);
43            prices.Add(typeof(MobWarrior), PRICE_WARRIOR);
44            prices.Add(typeof(MobRanger), PRICE_RANGER);
45
46            menu = new GuiArmoryMenu(Game.GuiManager, this);
47        }
48
49        public Dictionary<Type, int> Prices { get { return prices; } }
50
51        public override void OnFocus()
52        {
53            if (!isDestroyed)
54                Game.GuiManager.AddGui(menu, true);
55        }
56
57        public override void OnFocusLost()
58        {
59            if (!isDestroyed)
60                Game.GuiManager.RemoveGui(menu);
61        }
62
63        public T BuyUnit<T>(Type toBuy = null) where T : Mob
64        {
65            Type unitType = toBuy == null ? typeof(T) : toBuy;
66            int cost = prices[unitType];
67            if (Owner.CoinsAmount - cost < 0) return null;
68            T m = (T)Activator.CreateInstance(unitType, level, Owner);
69            Owner.CoinsAmount -= cost;
70            return m;
71        }
72
73        public override void Remove()
74        {
75            base.Remove();
76            level.RemoveUnit(this);
77            spriteX = 1;
78        }
79
80        public override void Render(RenderHelper renderer)
81        {
82            renderer.Render(ScreenPos, spriteX, 0, Resources.SPRITE_ARMORY, colorizer, Viewport.ZOOM);
83            base.Render(renderer);
84        }
85    }
86}
Note: See TracBrowser for help on using the repository browser.