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

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

Guit lisätty, AIn viimestely.

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 : Unit
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
21        public UnitArmory(Level level, Player owner)
22            : base(level, owner)
23        {
24            IsDestroyed = false;
25            width = 5 * Viewport.TILESIZE;
26            depth = 5 * Viewport.TILESIZE;
27            HasHealth = true;
28            maxHealth = 400;
29            immunityTime = 20;
30
31            isSolid = true;
32
33            renderOffset.X = 80;
34            renderOffset.Y = 58;
35
36            spriteSize.X = 160;
37            spriteSize.Y = 98;
38            screenRectOffset.Update(32, 0, spriteSize.X - 32, spriteSize.Y - 10);
39
40            highlightOffset.X = spriteSize.X / 2 - 4;
41
42            rectOffset.Update(-2 * Viewport.TILESIZE, -2 * Viewport.TILESIZE, 2 * Viewport.TILESIZE, 2 * Viewport.TILESIZE);
43
44            prices = new Dictionary<Type, int>();
45            prices.Add(typeof(MobWoodcutter), PRICE_WOODCUTTER);
46            prices.Add(typeof(MobWarrior), PRICE_WARRIOR);
47            prices.Add(typeof(MobRanger), PRICE_RANGER);
48
49            menu = new GuiArmoryMenu(Game.GuiManager, this);
50        }
51
52        public bool IsDestroyed { get; private set; }
53
54        public Dictionary<Type, int> Prices { get { return prices; } }
55
56        public override void OnFocus()
57        {
58            Game.GuiManager.AddGui(menu, true);
59        }
60
61        public override void OnFocusLost()
62        {
63            Game.GuiManager.RemoveGui(menu);
64        }
65
66        public T BuyUnit<T>(Type toBuy = null) where T : Mob
67        {
68            Type unitType = toBuy == null ? typeof(T) : toBuy;
69            int cost = prices[unitType];
70            if (Owner.CoinsAmount - cost < 0) return null;
71            T m = (T)Activator.CreateInstance(unitType, level, Owner);
72            Owner.CoinsAmount -= cost;
73            return m;
74        }
75
76        public override void Render(RenderHelper renderer)
77        {
78            renderer.Render(ScreenPos, 0, 0, Resources.SPRITE_ARMORY, Viewport.ZOOM);
79            base.Render(renderer);
80        }
81    }
82}
Note: See TracBrowser for help on using the repository browser.