source: 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Players/Player.cs @ 4753

Revision 4753, 2.4 KB checked in by dezhidki, 6 years ago (diff)
  • Lisätty kunnon ohjeet.
  • Ctrl + RMouse toimii nyt kunnolla (voi valita monta kerrallaan).
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using CastleMaster.World;
6using CastleMaster.Graphics;
7using CastleMaster.Units;
8using Microsoft.Xna.Framework;
9
10namespace CastleMaster.Players
11{
12    public abstract class Player
13    {
14        public const int START_MONEY = 20;
15        public const int START_LUMBER = 10;
16
17        public const int SPAWN_WOODCUTTER = 0;
18        public const int SPAWN_WARRIOR = 1;
19        public const int SPAWN_RANGER = 2;
20
21        protected Team team;
22        protected Level level;
23        protected Camera camera;
24        protected UnitKing king;
25        protected UnitStore store;
26        protected UnitArmory armory;
27        protected Point[] spawnPoints;
28
29        public Player(Team team, Level level, Camera camera)
30        {
31            this.team = team;
32            this.level = level;
33            this.camera = camera;
34            LumberAmount = START_LUMBER;
35            CoinsAmount = 20;
36
37            spawnPoints = new Point[3];
38
39            king = new UnitKing(level, this);
40            store = new UnitStore(level, this);
41            armory = new UnitArmory(level, this);
42        }
43
44        public Point HomePoint { get; set; }
45
46        public Point[] SpawnPoints { get { return spawnPoints; } }
47
48        public UnitKing King { get { return king; } }
49
50        public UnitStore Store { get { return store; } }
51
52        public UnitArmory Armory { get { return armory; } }
53
54        public List<Unit> AvailableUnits { get { return level.Units[Team.ID]; } }
55
56        public int CoinsAmount { get; set; }
57
58        public int LumberAmount { get; set; }
59
60        public Level Level { get { return level; } }
61
62        public Camera Camera { get { return camera; } }
63
64        public Team Team { get { return team; } }
65
66        public virtual void OnLevelLoaded() { }
67
68        public List<T> GetUnits<T>() where T : Unit
69        {
70            List<T> result = new List<T>();
71
72            foreach (Unit u in AvailableUnits)
73            {
74                T unit = u as T;
75                if (unit != null)
76                    result.Add(unit);
77            }
78
79            return result;
80        }
81
82        public virtual void Update() { }
83
84        public virtual void Render(RenderHelper renderer) { }
85
86        public abstract Unit SelectUnit(Team team);
87    }
88}
Note: See TracBrowser for help on using the repository browser.