Changeset 4753 for 2013/30


Ignore:
Timestamp:
2013-09-01 18:40:38 (6 years ago)
Author:
dezhidki
Message:
  • Lisätty kunnon ohjeet.
  • Ctrl + RMouse toimii nyt kunnolla (voi valita monta kerrallaan).
Location:
2013/30/DenisZ/CastleMaster/CastleMaster
Files:
7 added
15 edited

Legend:

Unmodified
Added
Removed
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Ai/AIStates/AgressiveState.cs

    r4740 r4753  
    2626            get 
    2727            { 
    28                 List<MobWarrior> mobUnits = AI.GetUnitsByType<MobWarrior>(); 
     28                List<MobWarrior> mobUnits = AI.GetUnits<MobWarrior>(); 
    2929 
    3030                if (AI.CoinsAmount >= 200) 
     
    6565        public override void OnStateChosen() 
    6666        { 
    67             warriors = AI.GetUnitsByType<MobWarrior>(); 
    68             rangers = AI.GetUnitsByType<MobRanger>(); 
     67            warriors = AI.GetUnits<MobWarrior>(); 
     68            rangers = AI.GetUnits<MobRanger>(); 
    6969        } 
    7070 
    7171        public override void OnStateReChosen() 
    7272        { 
    73             warriors = AI.GetUnitsByType<MobWarrior>(); 
    74             rangers = AI.GetUnitsByType<MobRanger>(); 
     73            warriors = AI.GetUnits<MobWarrior>(); 
     74            rangers = AI.GetUnits<MobRanger>(); 
    7575        } 
    7676 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Ai/AIStates/CollectiveState.cs

    r4694 r4753  
    4141        public override void OnStateChosen() 
    4242        { 
    43             woodCutters = AI.GetUnitsByType<MobWoodcutter>(); 
    44             warriors = AI.GetUnitsByType<MobWarrior>(); 
    45             rangers = AI.GetUnitsByType<MobRanger>(); 
     43            woodCutters = AI.GetUnits<MobWoodcutter>(); 
     44            warriors = AI.GetUnits<MobWarrior>(); 
     45            rangers = AI.GetUnits<MobRanger>(); 
    4646        } 
    4747 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Ai/AIStates/DefensiveState.cs

    r4694 r4753  
    2626            get 
    2727            { 
    28                 List<Mob> mobUnits = AI.GetUnitsByType<Mob>(); 
     28                List<Mob> mobUnits = AI.GetUnits<Mob>(); 
    2929                int importance = IMPORTANCE_LOW; 
    3030 
     
    3939        public override void OnStateChosen() 
    4040        { 
    41             warriors = AI.GetUnitsByType<MobWarrior>(); 
    42             rangers = AI.GetUnitsByType<MobRanger>(); 
     41            warriors = AI.GetUnits<MobWarrior>(); 
     42            rangers = AI.GetUnits<MobRanger>(); 
    4343 
    4444            while (!AI.Armory.IsDestroyed && warriors.Count + rangers.Count < 30 && AI.CoinsAmount >= UnitArmory.PRICE_WARRIOR) 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Game.cs

    r4752 r4753  
    1 #region Information 
    2 /*  Castle Master by Denis Zhidkikh 
    3  *  
    4  * Controls: 
    5  * Use W, A, S, D to move around the map 
    6  * Hold Shift while moving to move faster 
    7  * Hold middle mouse button and drag to move the map 
    8  * Scroll to zoom in/out 
    9  * Click on unit with right mouse button to select it 
    10  * Hold Ctrl while clicking to choose multiple units 
    11  * Give orders to your units by clicking left mouse button (ordering button) on other units/entities 
    12  *  
    13  * Classes: 
    14  * Woodcutter: 
    15  * - Costs 5 gold 
    16  * - Has 20 health 
    17  * - Really fast 
    18  * - Order to cut by clicking on the tree with the ordering button 
    19  * - Order to walk by clicking on the empty tile with the ordering button 
    20  * - After cutting first tree woodcutter will begin looking for nearby trees to cut 
    21  *  
    22  * Warrior: 
    23  * - Costs 20 gold 
    24  * - Has 50 health 
    25  * - Slow 
    26  * - Order to attack enemy units by clicking on them with the ordering button 
    27  * - After killing will stay in place until he either gets another order or gets attacked by the enemy 
    28  *  
    29  * Ranger: 
    30  * - Costs 15 gold 
    31  * - Has 30 health 
    32  * - Medium speed 
    33  * - Attacks the same way the warrior does 
    34  *  
    35  * Units: 
    36  * King (and the castle): 
    37  * - Has 400 health 
    38  * - Doesn't do anything 
    39  * - The game ends after being destroyed 
    40  *  
    41  * Store (large wooden building): 
    42  * - Has 400 health 
    43  * - Can exchange wood to gold 
    44  * - Selecting it will open the exchange window 
    45  * - Cannot exchange wood to gold after being destroyed 
    46  *  
    47  * Armory (small stone building): 
    48  * - Has 400 health 
    49  * - Uses money to buy woodcutters, warriors and rangers 
    50  * - Selecting it will open the armory window 
    51  * - Cannot buy more units after being destroyed 
    52  *  
    53  * Objective: 
    54  * Win game by destroying enemy's castle. Make it easier by killing enemy's woodcutters and destroying the store and/or armory. 
    55  *  
    56  */ 
    57  
    58 #endregion 
    59  
    601using CastleMaster.Graphics; 
    612using CastleMaster.Input; 
     
    7213using CastleMaster.Guis; 
    7314 
    74 // NOTES: 
    75 // If VSYNC problems/Lag problems go to line 73 to enable/disable VSYNC 
    7615namespace CastleMaster 
    7716{ 
     
    319258                camera.RenderSelelctor(renderer); 
    320259                level.RenderEntities(camera, renderer); 
     260                foreach (Player p in players) 
     261                    if (p != null) p.Render(renderer); 
    321262            } 
    322263 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Graphics/Resources.cs

    r4752 r4753  
    2424        public static Texture2D SPRITE_GUI_BACKGROUND_INGAME { get; private set; } 
    2525        public static Texture2D SPRITE_GUI_INSCTRUCTIONS { get; private set; } 
     26        public static Texture2D SPRITE_HIGHTLIGHT { get; private set; } 
     27 
     28        public static Texture2D SPRITE_PAGE_WELCOME { get; private set; } 
     29        public static Texture2D SPRITE_PAGE_CONTROLS { get; private set; } 
     30        public static Texture2D SPRITE_PAGE_GUI { get; private set; } 
     31        public static Texture2D SPRITE_PAGE_BUILDINGS { get; private set; } 
     32        public static Texture2D SPRITE_PAGE_UNITS { get; private set; } 
    2633 
    2734        public static void LoadResources(ContentManager cm, RenderHelper renderer) 
     
    4552            SPRITE_GUI_BACKGROUND_INGAME = cm.Load<Texture2D>("gui/inGameBackGround"); 
    4653            SPRITE_GUI_INSCTRUCTIONS = cm.Load<Texture2D>("gui/instructions"); 
     54            SPRITE_HIGHTLIGHT = cm.Load<Texture2D>("gui/highLightBox"); 
     55 
     56            SPRITE_PAGE_WELCOME = cm.Load<Texture2D>("gui/howto/page_welcome"); 
     57            SPRITE_PAGE_CONTROLS = cm.Load<Texture2D>("gui/howto/page_controls"); 
     58            SPRITE_PAGE_GUI = cm.Load<Texture2D>("gui/howto/page_gui"); 
     59            SPRITE_PAGE_BUILDINGS = cm.Load<Texture2D>("gui/howto/page_buildings"); 
     60            SPRITE_PAGE_UNITS = cm.Load<Texture2D>("gui/howto/page_units"); 
    4761        } 
    4862    } 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Guis/GuiInstructions.cs

    r4752 r4753  
    1 using System; 
     1using CastleMaster.Graphics; 
     2using CastleMaster.Input; 
     3using Microsoft.Xna.Framework; 
     4using System; 
    25using System.Collections.Generic; 
    36using System.Linq; 
    47using System.Text; 
     8using System.Windows.Forms; 
     9using Microsoft.Xna.Framework.Graphics; 
    510 
    611namespace CastleMaster.Guis 
     
    813    public class GuiInstructions : Gui 
    914    { 
    10         public GuiInstructions(GuiManager manager) 
     15        private const String HELP_MOVE = "<LEFT, RIGHT> Switch Pages"; 
     16        private const String HELP_CLOSE = "<X> Main menu"; 
     17        private const String NAME = "Instructions"; 
     18        private const String PAGE = "Page"; 
     19        private const char AST = '/'; 
     20 
     21        private GuiMainScreen mainMenu; 
     22        private Rectangle backGroundRect; 
     23        private Vector2 helpPos, pageNumPos, helpPos2; 
     24        private StringBuilder pageNumText; 
     25        private int currentPage = 0; 
     26        private Texture2D[] pages; 
     27 
     28        public GuiInstructions(GuiMainScreen mainMenu, GuiManager manager) 
    1129            : base(manager) 
    1230        { 
     31            this.mainMenu = mainMenu; 
     32            backGroundRect = new Rectangle(0, 0, Game.WIDTH, Game.HEIGHT); 
     33            helpPos = new Vector2(10, Game.HEIGHT - 50); 
    1334 
     35            pages = new Texture2D[] { Resources.SPRITE_PAGE_WELCOME, Resources.SPRITE_PAGE_CONTROLS, Resources.SPRITE_PAGE_GUI, Resources.SPRITE_PAGE_BUILDINGS, Resources.SPRITE_PAGE_UNITS }; 
     36            pageNumText = new StringBuilder(PAGE).Append(" 1/").Append(pages.Length); 
     37            pageNumPos = new Vector2(Game.WIDTH - 150, Game.HEIGHT - 50); 
     38 
     39            helpPos2 = new Vector2(helpPos.X, helpPos.Y + 16); 
     40        } 
     41 
     42        public override int Importance 
     43        { 
     44            get 
     45            { 
     46                return Gui.IMPORTANCE_HIGH; 
     47            } 
     48        } 
     49 
     50        private void ShowMainMenu() 
     51        { 
     52            Remove(); 
     53            manager.AddGui(mainMenu, true, true); 
     54        } 
     55 
     56        public override void Update() 
     57        { 
     58            if (InputHandler.HasKeyBeenPressed(Keys.X)) 
     59                ShowMainMenu(); 
     60 
     61            if (InputHandler.HasKeyBeenPressed(Keys.Right)) 
     62            { 
     63                currentPage++; 
     64                if (currentPage >= pages.Length) 
     65                    currentPage = 0; 
     66 
     67                pageNumText.Clear().Append(PAGE).Append(' ').Append(currentPage + 1).Append(AST).Append(pages.Length); 
     68            } 
     69            else if (InputHandler.HasKeyBeenPressed(Keys.Left)) 
     70            { 
     71                currentPage--; 
     72                if (currentPage < 0) 
     73                    currentPage = pages.Length - 1; 
     74                pageNumText.Clear().Append(PAGE).Append(' ').Append(currentPage + 1).Append(AST).Append(pages.Length); 
     75            } 
     76 
     77        } 
     78 
     79        public override void Render(RenderHelper renderer) 
     80        { 
     81            renderer.SpriteBatch.Draw(pages[currentPage], backGroundRect, Color.White); 
     82 
     83            renderer.SpriteBatch.DrawString(Resources.FONT, HELP_CLOSE, helpPos, Color.White); 
     84            renderer.SpriteBatch.DrawString(Resources.FONT, pageNumText, pageNumPos, Color.White); 
     85            renderer.SpriteBatch.DrawString(Resources.FONT, HELP_MOVE, helpPos2, Color.White); 
     86        } 
     87    } 
     88 
     89    internal class Page 
     90    { 
     91        public virtual void Render(RenderHelper renderer) { } 
     92    } 
     93 
     94    internal class Page1 : Page 
     95    { 
     96        private const string TEST = "Hello, world!"; 
     97 
     98        public override void Render(RenderHelper renderer) 
     99        { 
     100            renderer.SpriteBatch.DrawString(Resources.FONT, TEST, new Vector2(10, 100), Color.White); 
    14101        } 
    15102    } 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Guis/GuiMainScreen.cs

    r4752 r4753  
    1717        private const string HELP1 = "<UP,DOWN> SCROLL"; 
    1818        private const string HELP2 = "<ENTER> SELECT"; 
    19         private const string HELP3 = "<X> Main menu"; 
    2019        private const string AUTHOR = "Game by Denis Zhidkikh"; 
    2120 
     
    2827        private Vector2 logoPos, infoPos, helpPos, optionPos, optionOffset, arrowOffset; 
    2928        private StringBuilder infoText, helpText; 
    30         private bool showInstructions = false; 
     29        private GuiInstructions guiInstructions; 
    3130 
    3231        public GuiMainScreen(GuiManager manager, Game game) 
     
    3433        { 
    3534            this.game = game; 
     35 
     36            guiInstructions = new GuiInstructions(this, manager); 
     37 
    3638            actionsStart = new Action[] { game.StartGame, ShowInstructions, game.Exit }; 
    37             actionsInGame = new Action[] { Remove, ReturnToMain, game.Exit }; 
     39            actionsInGame = new Action[] { ReturnToGame, ReturnToMain, game.Exit }; 
    3840            backgroundRect = new Rectangle(0, 0, Game.WIDTH, Game.HEIGHT); 
    3941            logoPos = new Vector2(Game.WIDTH / 2 - 225, 10); 
     
    6163        public void ShowInstructions() 
    6264        { 
    63             showInstructions = true; 
     65            Remove(); 
     66            manager.AddGui(guiInstructions, true, true); 
    6467        } 
    6568 
     
    7073        } 
    7174 
     75        public void ReturnToGame() 
     76        { 
     77            Remove(); 
     78            game.IsGamePaused = false; 
     79        } 
     80 
    7281        public override void Update() 
    7382        { 
    74             if (!showInstructions) 
    75             { 
    7683                if (InputHandler.HasKeyBeenPressed(Keys.Up)) 
    7784                { 
     
    9198                        actionsStart[currentOption].Invoke(); 
    9299                } 
    93             } 
    94             else 
    95             { 
    96                 if (InputHandler.HasKeyBeenPressed(Keys.X)) 
    97                     showInstructions = false; 
    98             } 
    99100        } 
    100101 
     
    103104            if (!game.IsGameRunning) 
    104105            { 
    105                 if (!showInstructions) 
    106                 { 
    107106                    renderer.SpriteBatch.Draw(Resources.SPRITE_GUI_BACKGROUND, backgroundRect, Color.White); 
    108107                    renderer.SpriteBatch.Draw(Resources.SPRITE_GUI_LOGO, logoPos, Color.White); 
     
    116115                        renderer.SpriteBatch.DrawString(Resources.FONT, optionsStart[i], optionPos + optionOffset * i, Color.White, 0.0F, Vector2.Zero, 1.5F, SpriteEffects.None, 0.0F); 
    117116                    } 
    118                 } 
    119                 else 
    120                 { 
    121                     renderer.SpriteBatch.Draw(Resources.SPRITE_GUI_INSCTRUCTIONS, backgroundRect, Color.White); 
    122                     renderer.SpriteBatch.DrawString(Resources.FONT, HELP3, helpPos, Color.White); 
    123                 } 
    124117            } 
    125118            else 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/MathHelpers/FastFunctions.cs

    r4535 r4753  
    11 
     2using Microsoft.Xna.Framework; 
     3using System; 
    24namespace CastleMaster.MathHelpers 
    35{ 
     
    1214            return ag | r | b; 
    1315        } 
     16 
     17        public static Rectangle RectangleFromPoints(Point p0, Point p1) 
     18        { 
     19            int width = Math.Abs(p1.X - p0.X); 
     20            int height = Math.Abs(p1.Y - p0.Y); 
     21 
     22            int x = p0.X; 
     23            int y = p0.Y; 
     24 
     25            if (p1.X < p0.X) 
     26                x = p1.X; 
     27            if (p1.Y < p0.Y) 
     28                y = p1.Y; 
     29 
     30            return new Rectangle(x, y, width, height); 
     31        } 
    1432    } 
    1533} 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Physics/BoundingRectangle.cs

    r4581 r4753  
    1515            this.x1 = x1; 
    1616            this.z1 = z1; 
     17        } 
     18 
     19        public BoundingRectangle(Point p0, Point p1, BoundingRectangleOwner owner) 
     20        { 
     21            this.owner = owner; 
     22            this.x0 = p1.X < p0.X ? p1.X : p0.X; 
     23            this.z0 = p1.Y < p0.Y ? p1.Y : p0.Y; 
     24            this.x1 = p1.X > p0.X ? p1.X : p0.X; 
     25            this.z1 = p1.Y > p0.Y ? p1.Y : p0.Y; 
    1726        } 
    1827 
     
    6877        } 
    6978 
     79        public BoundingRectangle Translate(Vector2 vec) 
     80        { 
     81            this.x0 += vec.X; 
     82            this.z0 += vec.Y; 
     83            this.x1 += vec.X; 
     84            this.z1 += vec.Y; 
     85 
     86            return this; 
     87        } 
     88 
    7089        public static BoundingRectangle operator +(BoundingRectangle br, Vector2 vec) 
    7190        { 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Players/Player.cs

    r4694 r4753  
    1616 
    1717        public const int SPAWN_WOODCUTTER = 0; 
    18         public const int SPAWN_WARRIOR= 1; 
     18        public const int SPAWN_WARRIOR = 1; 
    1919        public const int SPAWN_RANGER = 2; 
    2020 
     
    3434            LumberAmount = START_LUMBER; 
    3535            CoinsAmount = 20; 
    36              
     36 
    3737            spawnPoints = new Point[3]; 
    3838 
     
    6666        public virtual void OnLevelLoaded() { } 
    6767 
    68         public List<T> GetUnitsByType<T>() where T : Unit 
     68        public List<T> GetUnits<T>() where T : Unit 
    6969        { 
    7070            List<T> result = new List<T>(); 
    7171 
    7272            foreach (Unit u in AvailableUnits) 
    73                 if (typeof(T).IsAssignableFrom(u.GetType())) 
    74                     result.Add((T)u); 
     73            { 
     74                T unit = u as T; 
     75                if (unit != null) 
     76                    result.Add(unit); 
     77            } 
    7578 
    7679            return result; 
    7780        } 
    7881 
    79         public virtual void Update() 
    80         { 
    81         } 
     82        public virtual void Update() { } 
     83 
     84        public virtual void Render(RenderHelper renderer) { } 
    8285 
    8386        public abstract Unit SelectUnit(Team team); 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Players/PlayerReal.cs

    r4694 r4753  
    1111using CastleMaster.Units.Mobs; 
    1212using System.Diagnostics; 
     13using CastleMaster.Physics; 
     14using CastleMaster.MathHelpers; 
    1315 
    1416namespace CastleMaster.Players 
     
    3234        } 
    3335 
     36        private bool trackBox = false; 
     37        private Point oldPoint, newPoint; 
    3438        public override void Update() 
    3539        { 
     
    6367            } 
    6468 
     69 
    6570            if (InputHandler.HasMouseButtonBeenPressed(MouseButtons.Right)) 
    6671            { 
    67                 Unit u = SelectUnit(Team); 
    68  
    69                 if (InputHandler.IsKeyDown(Keys.ControlKey) && u != null && u is Mob) 
     72                if (InputHandler.IsKeyDown(Keys.ControlKey)) 
    7073                { 
    71                     if (selectedUnit != null) 
     74                    if (!trackBox) 
    7275                    { 
    73                         selectedUnit.OnFocusLost(); 
    74                         selectedUnit.IsSelected = false; 
    75                         selectedUnit = null; 
     76                        trackBox = true; 
     77                        oldPoint = InputHandler.MousePos; 
    7678                    } 
    77                     selectedMobUnits.Add((Mob)u); 
    78                     u.IsSelected = true; 
    79                     u.OnFocus(); 
    8079                } 
    8180                else 
    8281                { 
     82                    Unit u = SelectUnit(Team); 
     83 
    8384                    selectedMobUnits.ForEach(delegate(Mob m) 
    8485                    { 
     
    105106                        u.OnFocus(); 
    106107                    } 
     108                } 
     109            } 
     110 
     111            if (trackBox && InputHandler.IsMouseButtonDown(MouseButtons.Right) && InputHandler.IsKeyDown(Keys.ControlKey)) 
     112            { 
     113                newPoint = InputHandler.MousePos; 
     114            } 
     115            else if (trackBox && (!InputHandler.IsMouseButtonDown(MouseButtons.Right) || !InputHandler.IsKeyDown(Keys.ControlKey))) 
     116            { 
     117                trackBox = false; 
     118                List<Mob> selectedMobs = SelectMobs(new BoundingRectangle(oldPoint, newPoint, null)); 
     119 
     120                if (selectedMobs.Count > 0) 
     121                { 
     122                    if (selectedUnit != null) 
     123                    { 
     124                        selectedUnit.OnFocusLost(); 
     125                        selectedUnit.IsSelected = false; 
     126                        selectedUnit = null; 
     127                    } 
     128 
     129                    selectedMobUnits.ForEach(delegate(Mob m) 
     130                    { 
     131                        m.OnFocusLost(); 
     132                        m.IsSelected = false; 
     133                    }); 
     134                    selectedMobUnits.Clear(); 
     135 
     136                    selectedMobs.ForEach(delegate(Mob m) 
     137                    { 
     138                        selectedMobUnits.Add(m); 
     139                        m.IsSelected = true; 
     140                        m.OnFocus(); 
     141                    }); 
    107142                } 
    108143            } 
     
    139174            return current; 
    140175        } 
     176 
     177        private List<Mob> SelectMobs(BoundingRectangle rect) 
     178        { 
     179            rect.Translate(new Vector2(camera.XLeft, camera.YTop)); 
     180 
     181            List<Mob> mobs = level.GetUnitsWithinScreenSpace<Mob>(rect, Team); 
     182 
     183            return mobs; 
     184        } 
     185 
     186        public override void Render(RenderHelper renderer) 
     187        { 
     188            if (trackBox) 
     189            { 
     190                renderer.SpriteBatch.Draw(Resources.SPRITE_HIGHTLIGHT, FastFunctions.RectangleFromPoints(oldPoint, newPoint), Color.White); 
     191            } 
     192        } 
    141193    } 
    142194} 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/Mobs/MobWoodcutter.cs

    r4752 r4753  
    112112        } 
    113113 
     114        private void TryChopNearestTree(int radius) 
     115        { 
     116            TileEntityTree nearestTree = level.GetNearestEntity<TileEntityTree>(this, radius); 
     117            if (nearestTree != null) 
     118                OrderChop(nearestTree, 1, false); 
     119            else return; 
     120        } 
     121 
    114122        public override void Update() 
    115123        { 
     
    121129                { 
    122130                    StopChopping(); 
    123                     OrderChop(level.GetNearestEntity<TileEntityTree>(this, 5), 1, false); 
     131                    TryChopNearestTree(5); 
    124132                } 
    125                 TurnTowards(currentTarget.X, currentTarget.Z); 
    126                 choppingAnimation.UpdateStep(); 
     133                else 
     134                { 
     135                    TurnTowards(currentTarget.X, currentTarget.Z); 
     136                    choppingAnimation.UpdateStep(); 
     137                } 
    127138            } 
    128139            else if (!isChopping && currentOrderType == OrderType.CHOP) 
     
    131142                { 
    132143                    StopChopping(); 
    133                     OrderChop(level.GetNearestEntity<TileEntityTree>(this, 5), 1, false); 
     144                    TryChopNearestTree(5); 
    134145                } 
    135146            } 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/World/Level.cs

    r4694 r4753  
    338338        } 
    339339 
     340        public List<T> GetUnitsWithinScreenSpace<T>(BoundingRectangle rect, Team team) where T : Unit 
     341        { 
     342            List<T> result = new List<T>(); 
     343 
     344            foreach (Unit u in units[team.ID]) 
     345            { 
     346                T unit = u as T; 
     347                if (unit != null && unit.IsSelectable && unit.IntersectsWithScreenSpace(rect.XLeft, rect.ZFar, rect.XRight, rect.ZNear)) 
     348                    result.Add(unit); 
     349            } 
     350 
     351            return result; 
     352        } 
     353 
    340354        public List<BoundingRectangle> GetCollidables(Entity ent, BoundingRectangle br = null) 
    341355        { 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMasterContent/CastleMasterContent.contentproj

    r4752 r4753  
    167167    </Compile> 
    168168  </ItemGroup> 
     169  <ItemGroup> 
     170    <Compile Include="gui\highLightBox.png"> 
     171      <Name>highLightBox</Name> 
     172      <Importer>TextureImporter</Importer> 
     173      <Processor>TextureProcessor</Processor> 
     174    </Compile> 
     175  </ItemGroup> 
     176  <ItemGroup> 
     177    <Compile Include="gui\howto\page_buildings.png"> 
     178      <Name>page_buildings</Name> 
     179      <Importer>TextureImporter</Importer> 
     180      <Processor>TextureProcessor</Processor> 
     181    </Compile> 
     182    <Compile Include="gui\howto\page_controls.png"> 
     183      <Name>page_controls</Name> 
     184      <Importer>TextureImporter</Importer> 
     185      <Processor>TextureProcessor</Processor> 
     186    </Compile> 
     187    <Compile Include="gui\howto\page_gui.png"> 
     188      <Name>page_gui</Name> 
     189      <Importer>TextureImporter</Importer> 
     190      <Processor>TextureProcessor</Processor> 
     191    </Compile> 
     192    <Compile Include="gui\howto\page_units.png"> 
     193      <Name>page_units</Name> 
     194      <Importer>TextureImporter</Importer> 
     195      <Processor>TextureProcessor</Processor> 
     196    </Compile> 
     197    <Compile Include="gui\howto\page_welcome.png"> 
     198      <Name>page_welcome</Name> 
     199      <Importer>TextureImporter</Importer> 
     200      <Processor>TextureProcessor</Processor> 
     201    </Compile> 
     202  </ItemGroup> 
    169203  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    170204  <!--  To modify your build process, add your task inside one of the targets below and uncomment it.  
Note: See TracChangeset for help on using the changeset viewer.