Changeset 4703


Ignore:
Timestamp:
2013-07-26 10:55:23 (6 years ago)
Author:
dezhidki
Message:

Talletus.

Location:
2013/30/DenisZ/CastleMaster/CastleMaster
Files:
5 added
15 edited

Legend:

Unmodified
Added
Removed
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/CastleMaster.csproj

    r4694 r4703  
    9696    <Compile Include="Guis\GuiArmoryMenu.cs" /> 
    9797    <Compile Include="Guis\GuiDebug.cs" /> 
     98    <Compile Include="Guis\GuiMainScreen.cs" /> 
    9899    <Compile Include="Guis\GuiPlayer.cs" /> 
    99100    <Compile Include="Guis\GuiManager.cs" /> 
     
    117118    <Compile Include="Units\Unit.cs" /> 
    118119    <Compile Include="Units\UnitArmory.cs" /> 
     120    <Compile Include="Units\UnitBuilding.cs" /> 
    119121    <Compile Include="Units\UnitKing.cs" /> 
    120122    <Compile Include="Units\UnitStore.cs" /> 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Entities/Entity.cs

    r4671 r4703  
    5555        protected Vector2 ScreenPos { get { return screenPos * Viewport.ZOOM; } } 
    5656 
    57         public void Remove() 
     57        public virtual void Remove() 
    5858        { 
    5959            Removed = true; 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Game.cs

    r4694 r4703  
    1313using CastleMaster.Guis; 
    1414 
     15// NOTES: 
     16// If VSYNC problems/Lag problems go to line 73 to enable/disable VSYNC 
    1517namespace CastleMaster 
    1618{ 
    17     /// <summary> 
    18     /// This is the main type for your game 
    19     /// </summary> 
    2019    public class Game : Microsoft.Xna.Framework.Game 
    2120    { 
     
    2322        public const int HEIGHT = 600; 
    2423        public const string TITLE = "Castle Master"; 
    25         public const string VERSION = " Alpha 1.5"; 
     24        public const string VERSION = "Alpha 1.5"; 
    2625 
    2726        private GraphicsDeviceManager graphics; 
     
    3534        private GuiDebug debugScreen; 
    3635        private GuiPlayer ingame; 
     36        private GuiMainScreen mainScreen; 
     37        private bool isGameRunning = false; 
    3738 
    3839        #region Counter 
     
    6364        public int UPS { get { return ups; } } 
    6465 
     66        public bool IsGameRunning { get { return isGameRunning; } } 
     67 
    6568        protected override void Initialize() 
    6669        { 
    6770            graphics.PreferredBackBufferWidth = WIDTH; 
    6871            graphics.PreferredBackBufferHeight = HEIGHT; 
     72            // NOTE: If enabled on some computers, the FPS will drop too much to play 
    6973            graphics.SynchronizeWithVerticalRetrace = false; 
    7074            graphics.ApplyChanges(); 
     
    98102        } 
    99103 
    100         private void AddPlayer(Player p) 
    101         { 
    102             players[p.Team.ID] = p; 
    103             level.SetPlayer(p, p.Team.ID); 
    104         } 
    105  
    106         public static Team GetEnemyTeam(Team team) 
    107         { 
    108             return team == TEAM1 ? TEAM2 : TEAM1; 
    109         } 
    110  
    111         protected override void LoadContent() 
    112         { 
    113             spriteBatch = new SpriteBatch(GraphicsDevice); 
    114             renderer = new RenderHelper(spriteBatch); 
    115  
    116             Resources.LoadResources(Content, renderer); 
    117         } 
    118  
    119         protected override void UnloadContent() 
    120         { 
    121         } 
    122  
    123         protected override void BeginRun() 
    124         { 
    125             base.BeginRun(); 
     104        public void ResetGame() 
     105        { 
     106            isGameRunning = false; 
     107            level = null; 
     108            camera = null; 
     109            players = new Player[2]; 
     110            ingame.Remove(); 
     111            GC.Collect(); 
     112        } 
     113 
     114        public void StartGame() 
     115        { 
     116            if (isGameRunning) 
     117                ResetGame(); 
     118 
     119            isGameRunning = true; 
     120 
     121            mainScreen.Remove(); 
    126122 
    127123            level = new LevelForest(Content.Load<Texture2D>("levels/levelForest")); 
     
    134130            camera.CenterOn(level.Width / 2 * Viewport.TILESIZE, level.Height / 2 * Viewport.TILESIZE); 
    135131 
    136  
    137132            ingame = new GuiPlayer(guiManager, players[0]); 
    138133            guiManager.AddGui(ingame, true); 
     134        } 
     135 
     136        private void AddPlayer(Player p) 
     137        { 
     138            players[p.Team.ID] = p; 
     139            level.SetPlayer(p, p.Team.ID); 
     140        } 
     141 
     142        public static Team GetEnemyTeam(Team team) 
     143        { 
     144            return team == TEAM1 ? TEAM2 : TEAM1; 
     145        } 
     146 
     147        protected override void LoadContent() 
     148        { 
     149            spriteBatch = new SpriteBatch(GraphicsDevice); 
     150            renderer = new RenderHelper(spriteBatch); 
     151 
     152            Resources.LoadResources(Content, renderer); 
     153        } 
     154 
     155        protected override void UnloadContent() 
     156        { 
     157            RenderHelper.EmptyTexture.Dispose(); 
     158        } 
     159 
     160        protected override void BeginRun() 
     161        { 
     162            base.BeginRun(); 
    139163 
    140164            debugScreen = new GuiDebug(guiManager, this); 
    141165            guiManager.AddGui(debugScreen, false); 
     166 
     167            mainScreen = new GuiMainScreen(guiManager, this); 
     168            guiManager.AddGui(mainScreen, true, true); 
    142169        } 
    143170 
     
    153180                IsFixedTimeStep = !IsFixedTimeStep; 
    154181            if (InputHandler.HasKeyBeenPressed(Keys.Escape)) 
    155                 this.Exit(); 
    156  
    157             if (InputHandler.MouseScrollDelta > 1) 
    158                 camera.Zoom(Viewport.ZOOM_STEP); 
    159             else if (InputHandler.MouseScrollDelta < 0) 
    160                 camera.Zoom(-Viewport.ZOOM_STEP); 
    161  
    162             foreach (Player p in players) 
    163                 if (p != null) 
    164                     p.Update(); 
    165             //players[0].Update(); 
    166  
    167             camera.Update(); 
    168  
    169             level.Update(); 
     182            { 
     183                if (isGameRunning) 
     184                { 
     185                    if (!mainScreen.IsActive) 
     186                        guiManager.AddGui(mainScreen, true, true); 
     187                    else 
     188                        mainScreen.Remove(); 
     189                } 
     190                else Exit(); 
     191            } 
     192 
     193            if (isGameRunning && !mainScreen.IsActive) 
     194            { 
     195                if (InputHandler.MouseScrollDelta > 1) 
     196                    camera.Zoom(Viewport.ZOOM_STEP); 
     197                else if (InputHandler.MouseScrollDelta < 0) 
     198                    camera.Zoom(-Viewport.ZOOM_STEP); 
     199 
     200                foreach (Player p in players) 
     201                    if (p != null) 
     202                        p.Update(); 
     203                //players[0].Update(); 
     204 
     205                camera.Update(); 
     206 
     207                level.Update(); 
     208            } 
    170209 
    171210            guiManager.Update(); 
     
    190229            renderer.BeginRender(); 
    191230 
    192             level.RenderBackground(camera, renderer); 
    193             camera.RenderSelelctor(renderer); 
    194             level.RenderEntities(camera, renderer); 
     231            if (isGameRunning) 
     232            { 
     233                level.RenderBackground(camera, renderer); 
     234                camera.RenderSelelctor(renderer); 
     235                level.RenderEntities(camera, renderer); 
     236            } 
    195237 
    196238            guiManager.Render(renderer); 
    197             camera.RenderCursor(renderer); 
     239            if (isGameRunning) 
     240                camera.RenderCursor(renderer); 
    198241            renderer.EndRender(); 
    199242 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Graphics/Resources.cs

    r4694 r4703  
    1717        public static SpriteFont FONT { get; private set; } 
    1818        public static Texture2D SPRITE_GUI_UNITMENU { get; private set; } 
     19        public static Texture2D SPRITE_GUI_BACKGROUND { get; private set; } 
     20        public static Texture2D SPRITE_GUI_LOGO { get; private set; } 
     21        public static Texture2D SPRITE_GUI_BACKGROUND_INGAME { get; private set; } 
    1922 
    2023        public static void LoadResources(ContentManager cm, RenderHelper renderer) 
     
    3134            SPRITESHEET_HEALTH = renderer.RegisterSpriteSheet(new SpriteSheet(cm.Load<Texture2D>("gui/guiHealth"), 100, 4)); 
    3235            SPRITE_GUI_UNITMENU = cm.Load<Texture2D>("gui/guiUnitMenu"); 
     36            SPRITE_GUI_BACKGROUND = cm.Load<Texture2D>("gui/startMenu"); 
     37            SPRITE_GUI_LOGO = cm.Load<Texture2D>("gui/logo"); 
     38            SPRITE_GUI_BACKGROUND_INGAME = cm.Load<Texture2D>("gui/inGameBackGround"); 
    3339        } 
    3440    } 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Guis/Gui.cs

    r4694 r4703  
    1313        public const int IMPORTANCE_HIGH = 2; 
    1414 
    15         private GuiManager manager; 
     15        protected GuiManager manager; 
    1616 
    1717        public Gui(GuiManager manager) 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Guis/GuiDebug.cs

    r4694 r4703  
    3737        { 
    3838            text.Clear(); 
    39             text.Append(Game.TITLE).Append(Game.VERSION); 
     39            text.Append(Game.TITLE).Append(" ").Append(Game.VERSION); 
    4040#if DEBUG 
    4141            text.Append(DEBUGNOTATION); 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Guis/GuiManager.cs

    r4694 r4703  
    6565                    if (g.IsActive) g.Render(renderer); 
    6666            } 
     67 
     68            if (hasImportantGui) 
     69                importantGui.Render(renderer); 
    6770        } 
    6871    } 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/Mobs/MobRanger.cs

    r4671 r4703  
    150150                        StopAttack(); 
    151151                } 
    152                 if (target == null || target.Removed) 
     152                if (target == null || target.Removed || (typeof(UnitBuilding).IsAssignableFrom(target.GetType()) && ((UnitBuilding)target).IsDestroyed)) 
    153153                    StopAttack(); 
    154154            } 
     
    171171                    } 
    172172                } 
    173                 if (target == null || target.Removed) 
     173                if (target == null || target.Removed || (typeof(UnitBuilding).IsAssignableFrom(target.GetType()) && ((UnitBuilding)target).IsDestroyed)) 
    174174                { 
    175175                    StopAttack(); 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/Mobs/MobWarrior.cs

    r4671 r4703  
    151151                        StopAttack(); 
    152152                } 
    153                 if (target == null || target.Removed) 
     153                if (target == null || target.Removed || (typeof(UnitBuilding).IsAssignableFrom(target.GetType()) && ((UnitBuilding)target).IsDestroyed)) 
    154154                    StopAttack(); 
    155155            } 
     
    172172                    } 
    173173                } 
    174                 if (target == null || target.Removed) 
     174                if (target == null || target.Removed || (typeof(UnitBuilding).IsAssignableFrom(target.GetType()) && ((UnitBuilding)target).IsDestroyed )) 
    175175                    StopAttack(); 
    176176            } 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/UnitArmory.cs

    r4694 r4703  
    1111namespace CastleMaster.Units 
    1212{ 
    13     public class UnitArmory : Unit 
     13    public class UnitArmory : UnitBuilding 
    1414    { 
    1515        public const int PRICE_WOODCUTTER = 5; 
     
    1818        private Dictionary<Type, int> prices; 
    1919        private GuiArmoryMenu menu; 
     20        private int spriteX = 0; 
    2021 
    2122        public UnitArmory(Level level, Player owner) 
    2223            : base(level, owner) 
    2324        { 
    24             IsDestroyed = false; 
    2525            width = 5 * Viewport.TILESIZE; 
    2626            depth = 5 * Viewport.TILESIZE; 
    2727            HasHealth = true; 
    2828            maxHealth = 400; 
    29             immunityTime = 20; 
    30  
    31             isSolid = true; 
    3229 
    3330            renderOffset.X = 80; 
     
    5047        } 
    5148 
    52         public bool IsDestroyed { get; private set; } 
    53  
    5449        public Dictionary<Type, int> Prices { get { return prices; } } 
    5550 
    5651        public override void OnFocus() 
    5752        { 
    58             Game.GuiManager.AddGui(menu, true); 
     53            if (!isDestroyed) 
     54                Game.GuiManager.AddGui(menu, true); 
    5955        } 
    6056 
    6157        public override void OnFocusLost() 
    6258        { 
    63             Game.GuiManager.RemoveGui(menu); 
     59            if (!isDestroyed) 
     60                Game.GuiManager.RemoveGui(menu); 
    6461        } 
    6562 
     
    7471        } 
    7572 
     73        public override void Remove() 
     74        { 
     75            base.Remove(); 
     76            level.RemoveUnit(this); 
     77            spriteX = 1; 
     78        } 
     79 
    7680        public override void Render(RenderHelper renderer) 
    7781        { 
    78             renderer.Render(ScreenPos, 0, 0, Resources.SPRITE_ARMORY, Viewport.ZOOM); 
     82            renderer.Render(ScreenPos, spriteX, 0, Resources.SPRITE_ARMORY, colorizer, Viewport.ZOOM); 
    7983            base.Render(renderer); 
    8084        } 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/UnitKing.cs

    r4694 r4703  
    99namespace CastleMaster.Units 
    1010{ 
    11     public class UnitKing : Unit 
     11    public class UnitKing : UnitBuilding 
    1212    { 
    13         private bool isDestroyed = false; 
    1413        private int timesHit = 0; 
    1514         
     
    2120            HasHealth = true; 
    2221            maxHealth = 400; 
    23  
    24             isSolid = true; 
    2522 
    2623            renderOffset.X = 64; 
     
    3431 
    3532            rectOffset.Update(-2 * Viewport.TILESIZE, -2 * Viewport.TILESIZE, 2 * Viewport.TILESIZE, 2 * Viewport.TILESIZE); 
    36             immunityTime = 20; 
    3733        } 
    3834 
    3935        public int TimesHit { get { return timesHit; } } 
    40  
    41         public bool IsDestroyed { get { return isDestroyed; } } 
    4236 
    4337        public override void Damage(Unit attacker, int damage, float dir, float pushPower) 
     
    4741        } 
    4842 
    49         public override void OnRemoved() 
     43        public override void Remove() 
    5044        { 
    51             int xTile = (int)(X / Viewport.TILESIZE); 
    52             int zTile = (int)(Z / Viewport.TILESIZE); 
    53  
    54             for (int x = xTile - 4; x <= xTile + 4; x++) 
    55             { 
    56                 if (x < 0 || x >= level.Width) continue; 
    57                 for (int z = zTile - 4; z <= zTile + 4; z++) 
    58                 { 
    59                     if (z < 0 || z >= level.Height) continue; 
    60  
    61                     level.SetTile(x, z, 1); 
    62                     level.SetData(x, z, 0); 
    63                 } 
    64             } 
    65  
     45            base.Remove(); 
    6646            level.RemoveUnit(this); 
    6747        } 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/UnitStore.cs

    r4694 r4703  
    1111namespace CastleMaster.Units 
    1212{ 
    13     public class UnitStore : Unit 
     13    public class UnitStore : UnitBuilding 
    1414    { 
    1515        public const int COINS_FOR_LUMBER = 2; 
    16         private bool isDestroyed = false; 
    1716        private GuiStoreMenu menu; 
     17        private int spriteX = 0; 
    1818 
    1919        public UnitStore(Level level, Player owner) 
     
    2424            HasHealth = true; 
    2525            maxHealth = 400; 
    26             immunityTime = 20; 
    27  
    28             isSolid = true; 
    29  
     26             
    3027            renderOffset.X = 128; 
    3128            renderOffset.Y = 83; 
     
    5148        } 
    5249 
    53         public bool IsDestroyed { get { return isDestroyed; } } 
    54  
    5550        public override void OnFocus() 
    5651        { 
    57             Game.GuiManager.AddGui(menu, true); 
     52            if (!isDestroyed) 
     53                Game.GuiManager.AddGui(menu, true); 
    5854        } 
    5955 
    6056        public override void OnFocusLost() 
    6157        { 
    62             Game.GuiManager.RemoveGui(menu); 
     58            if (!isDestroyed) 
     59                Game.GuiManager.RemoveGui(menu); 
    6360        } 
    6461 
    65         public override void OnRemoved() 
     62        public override void Remove() 
    6663        { 
    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  
     64            base.Remove(); 
    8265            menu.Remove(); 
    8366            level.RemoveUnit(this); 
     67            spriteX = 1; 
    8468        } 
    8569 
     
    8771        { 
    8872            base.Render(renderer); 
    89             renderer.Render(ScreenPos, 0, 0, Resources.SPRITE_STORE, colorizer, Viewport.ZOOM); 
     73            renderer.Render(ScreenPos, spriteX, 0, Resources.SPRITE_STORE, colorizer, Viewport.ZOOM); 
    9074        } 
    9175    } 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMasterContent/CastleMasterContent.contentproj

    r4694 r4703  
    6262      <Processor>TextureProcessor</Processor> 
    6363    </Compile> 
    64     <Compile Include="mobs\dwarfs.png"> 
    65       <Name>dwarfs</Name> 
    66       <Importer>TextureImporter</Importer> 
    67       <Processor>TextureProcessor</Processor> 
    68     </Compile> 
    6964    <Compile Include="mobs\woodcutter.png"> 
    7065      <Name>woodcutter</Name> 
     
    7772      <Processor>TextureProcessor</Processor> 
    7873    </Compile> 
    79     <Compile Include="tiles\blocks.png"> 
    80       <Name>blocks</Name> 
    81       <Importer>TextureImporter</Importer> 
    82       <Processor>TextureProcessor</Processor> 
    83     </Compile> 
    84     <Compile Include="tiles\buildings.png"> 
    85       <Name>buildings</Name> 
    86       <Importer>TextureImporter</Importer> 
    87       <Processor>TextureProcessor</Processor> 
    88     </Compile> 
    89     <Compile Include="tiles\buildings2.png"> 
    90       <Name>buildings2</Name> 
    91       <Importer>TextureImporter</Importer> 
    92       <Processor>TextureProcessor</Processor> 
    93     </Compile> 
    94     <Compile Include="tiles\fill16x16.png"> 
    95       <Name>fill16x16</Name> 
    96       <Importer>TextureImporter</Importer> 
    97       <Processor>TextureProcessor</Processor> 
    98     </Compile> 
    99     <Compile Include="tiles\fill32x32.png"> 
    100       <Name>fill32x32</Name> 
    101       <Importer>TextureImporter</Importer> 
    102       <Processor>TextureProcessor</Processor> 
    103     </Compile> 
    104     <Compile Include="tiles\king.png"> 
    105       <Name>king</Name> 
    106       <Importer>TextureImporter</Importer> 
    107       <Processor>TextureProcessor</Processor> 
    108     </Compile> 
    109     <Compile Include="tiles\plants.png"> 
    110       <Name>plants</Name> 
    111       <Importer>TextureImporter</Importer> 
    112       <Processor>TextureProcessor</Processor> 
    113     </Compile> 
    11474    <Compile Include="tiles\tile.png"> 
    11575      <Name>tile</Name> 
     
    11777      <Processor>TextureProcessor</Processor> 
    11878    </Compile> 
    119     <Compile Include="tiles\tilesample.png"> 
    120       <Name>tilesample</Name> 
    121       <Importer>TextureImporter</Importer> 
    122       <Processor>TextureProcessor</Processor> 
    123     </Compile> 
    12479    <Compile Include="tiles\tilesheet.png"> 
    12580      <Name>tilesheet</Name> 
    126       <Importer>TextureImporter</Importer> 
    127       <Processor>TextureProcessor</Processor> 
    128     </Compile> 
    129     <Compile Include="tiles\water.png"> 
    130       <Name>water</Name> 
    13181      <Importer>TextureImporter</Importer> 
    13282      <Processor>TextureProcessor</Processor> 
     
    182132    </Compile> 
    183133  </ItemGroup> 
     134  <ItemGroup> 
     135    <Compile Include="gui\logo.png"> 
     136      <Name>logo</Name> 
     137      <Importer>TextureImporter</Importer> 
     138      <Processor>TextureProcessor</Processor> 
     139    </Compile> 
     140    <Compile Include="gui\startMenu.png"> 
     141      <Name>startMenu</Name> 
     142      <Importer>TextureImporter</Importer> 
     143      <Processor>TextureProcessor</Processor> 
     144    </Compile> 
     145  </ItemGroup> 
     146  <ItemGroup> 
     147    <Compile Include="gui\inGameBackGround.png"> 
     148      <Name>inGameBackGround</Name> 
     149      <Importer>TextureImporter</Importer> 
     150      <Processor>TextureProcessor</Processor> 
     151    </Compile> 
     152  </ItemGroup> 
    184153  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    185154  <!--  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.