- Timestamp:
- 2013-07-26 10:55:23 (10 years ago)
- 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 96 96 <Compile Include="Guis\GuiArmoryMenu.cs" /> 97 97 <Compile Include="Guis\GuiDebug.cs" /> 98 <Compile Include="Guis\GuiMainScreen.cs" /> 98 99 <Compile Include="Guis\GuiPlayer.cs" /> 99 100 <Compile Include="Guis\GuiManager.cs" /> … … 117 118 <Compile Include="Units\Unit.cs" /> 118 119 <Compile Include="Units\UnitArmory.cs" /> 120 <Compile Include="Units\UnitBuilding.cs" /> 119 121 <Compile Include="Units\UnitKing.cs" /> 120 122 <Compile Include="Units\UnitStore.cs" /> -
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Entities/Entity.cs
r4671 r4703 55 55 protected Vector2 ScreenPos { get { return screenPos * Viewport.ZOOM; } } 56 56 57 public v oid Remove()57 public virtual void Remove() 58 58 { 59 59 Removed = true; -
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Game.cs
r4694 r4703 13 13 using CastleMaster.Guis; 14 14 15 // NOTES: 16 // If VSYNC problems/Lag problems go to line 73 to enable/disable VSYNC 15 17 namespace CastleMaster 16 18 { 17 /// <summary>18 /// This is the main type for your game19 /// </summary>20 19 public class Game : Microsoft.Xna.Framework.Game 21 20 { … … 23 22 public const int HEIGHT = 600; 24 23 public const string TITLE = "Castle Master"; 25 public const string VERSION = " 24 public const string VERSION = "Alpha 1.5"; 26 25 27 26 private GraphicsDeviceManager graphics; … … 35 34 private GuiDebug debugScreen; 36 35 private GuiPlayer ingame; 36 private GuiMainScreen mainScreen; 37 private bool isGameRunning = false; 37 38 38 39 #region Counter … … 63 64 public int UPS { get { return ups; } } 64 65 66 public bool IsGameRunning { get { return isGameRunning; } } 67 65 68 protected override void Initialize() 66 69 { 67 70 graphics.PreferredBackBufferWidth = WIDTH; 68 71 graphics.PreferredBackBufferHeight = HEIGHT; 72 // NOTE: If enabled on some computers, the FPS will drop too much to play 69 73 graphics.SynchronizeWithVerticalRetrace = false; 70 74 graphics.ApplyChanges(); … … 98 102 } 99 103 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(); 126 122 127 123 level = new LevelForest(Content.Load<Texture2D>("levels/levelForest")); … … 134 130 camera.CenterOn(level.Width / 2 * Viewport.TILESIZE, level.Height / 2 * Viewport.TILESIZE); 135 131 136 137 132 ingame = new GuiPlayer(guiManager, players[0]); 138 133 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(); 139 163 140 164 debugScreen = new GuiDebug(guiManager, this); 141 165 guiManager.AddGui(debugScreen, false); 166 167 mainScreen = new GuiMainScreen(guiManager, this); 168 guiManager.AddGui(mainScreen, true, true); 142 169 } 143 170 … … 153 180 IsFixedTimeStep = !IsFixedTimeStep; 154 181 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 } 170 209 171 210 guiManager.Update(); … … 190 229 renderer.BeginRender(); 191 230 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 } 195 237 196 238 guiManager.Render(renderer); 197 camera.RenderCursor(renderer); 239 if (isGameRunning) 240 camera.RenderCursor(renderer); 198 241 renderer.EndRender(); 199 242 -
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Graphics/Resources.cs
r4694 r4703 17 17 public static SpriteFont FONT { get; private set; } 18 18 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; } 19 22 20 23 public static void LoadResources(ContentManager cm, RenderHelper renderer) … … 31 34 SPRITESHEET_HEALTH = renderer.RegisterSpriteSheet(new SpriteSheet(cm.Load<Texture2D>("gui/guiHealth"), 100, 4)); 32 35 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"); 33 39 } 34 40 } -
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Guis/Gui.cs
r4694 r4703 13 13 public const int IMPORTANCE_HIGH = 2; 14 14 15 pr ivateGuiManager manager;15 protected GuiManager manager; 16 16 17 17 public Gui(GuiManager manager) -
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Guis/GuiDebug.cs
r4694 r4703 37 37 { 38 38 text.Clear(); 39 text.Append(Game.TITLE).Append( Game.VERSION);39 text.Append(Game.TITLE).Append(" ").Append(Game.VERSION); 40 40 #if DEBUG 41 41 text.Append(DEBUGNOTATION); -
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Guis/GuiManager.cs
r4694 r4703 65 65 if (g.IsActive) g.Render(renderer); 66 66 } 67 68 if (hasImportantGui) 69 importantGui.Render(renderer); 67 70 } 68 71 } -
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/Mobs/MobRanger.cs
r4671 r4703 150 150 StopAttack(); 151 151 } 152 if (target == null || target.Removed )152 if (target == null || target.Removed || (typeof(UnitBuilding).IsAssignableFrom(target.GetType()) && ((UnitBuilding)target).IsDestroyed)) 153 153 StopAttack(); 154 154 } … … 171 171 } 172 172 } 173 if (target == null || target.Removed )173 if (target == null || target.Removed || (typeof(UnitBuilding).IsAssignableFrom(target.GetType()) && ((UnitBuilding)target).IsDestroyed)) 174 174 { 175 175 StopAttack(); -
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/Mobs/MobWarrior.cs
r4671 r4703 151 151 StopAttack(); 152 152 } 153 if (target == null || target.Removed )153 if (target == null || target.Removed || (typeof(UnitBuilding).IsAssignableFrom(target.GetType()) && ((UnitBuilding)target).IsDestroyed)) 154 154 StopAttack(); 155 155 } … … 172 172 } 173 173 } 174 if (target == null || target.Removed )174 if (target == null || target.Removed || (typeof(UnitBuilding).IsAssignableFrom(target.GetType()) && ((UnitBuilding)target).IsDestroyed )) 175 175 StopAttack(); 176 176 } -
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/UnitArmory.cs
r4694 r4703 11 11 namespace CastleMaster.Units 12 12 { 13 public class UnitArmory : Unit 13 public class UnitArmory : UnitBuilding 14 14 { 15 15 public const int PRICE_WOODCUTTER = 5; … … 18 18 private Dictionary<Type, int> prices; 19 19 private GuiArmoryMenu menu; 20 private int spriteX = 0; 20 21 21 22 public UnitArmory(Level level, Player owner) 22 23 : base(level, owner) 23 24 { 24 IsDestroyed = false;25 25 width = 5 * Viewport.TILESIZE; 26 26 depth = 5 * Viewport.TILESIZE; 27 27 HasHealth = true; 28 28 maxHealth = 400; 29 immunityTime = 20;30 31 isSolid = true;32 29 33 30 renderOffset.X = 80; … … 50 47 } 51 48 52 public bool IsDestroyed { get; private set; }53 54 49 public Dictionary<Type, int> Prices { get { return prices; } } 55 50 56 51 public override void OnFocus() 57 52 { 58 Game.GuiManager.AddGui(menu, true); 53 if (!isDestroyed) 54 Game.GuiManager.AddGui(menu, true); 59 55 } 60 56 61 57 public override void OnFocusLost() 62 58 { 63 Game.GuiManager.RemoveGui(menu); 59 if (!isDestroyed) 60 Game.GuiManager.RemoveGui(menu); 64 61 } 65 62 … … 74 71 } 75 72 73 public override void Remove() 74 { 75 base.Remove(); 76 level.RemoveUnit(this); 77 spriteX = 1; 78 } 79 76 80 public override void Render(RenderHelper renderer) 77 81 { 78 renderer.Render(ScreenPos, 0, 0, Resources.SPRITE_ARMORY, Viewport.ZOOM);82 renderer.Render(ScreenPos, spriteX, 0, Resources.SPRITE_ARMORY, colorizer, Viewport.ZOOM); 79 83 base.Render(renderer); 80 84 } -
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/UnitKing.cs
r4694 r4703 9 9 namespace CastleMaster.Units 10 10 { 11 public class UnitKing : Unit 11 public class UnitKing : UnitBuilding 12 12 { 13 private bool isDestroyed = false;14 13 private int timesHit = 0; 15 14 … … 21 20 HasHealth = true; 22 21 maxHealth = 400; 23 24 isSolid = true;25 22 26 23 renderOffset.X = 64; … … 34 31 35 32 rectOffset.Update(-2 * Viewport.TILESIZE, -2 * Viewport.TILESIZE, 2 * Viewport.TILESIZE, 2 * Viewport.TILESIZE); 36 immunityTime = 20;37 33 } 38 34 39 35 public int TimesHit { get { return timesHit; } } 40 41 public bool IsDestroyed { get { return isDestroyed; } }42 36 43 37 public override void Damage(Unit attacker, int damage, float dir, float pushPower) … … 47 41 } 48 42 49 public override void OnRemoved()43 public override void Remove() 50 44 { 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(); 66 46 level.RemoveUnit(this); 67 47 } -
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Units/UnitStore.cs
r4694 r4703 11 11 namespace CastleMaster.Units 12 12 { 13 public class UnitStore : Unit 13 public class UnitStore : UnitBuilding 14 14 { 15 15 public const int COINS_FOR_LUMBER = 2; 16 private bool isDestroyed = false;17 16 private GuiStoreMenu menu; 17 private int spriteX = 0; 18 18 19 19 public UnitStore(Level level, Player owner) … … 24 24 HasHealth = true; 25 25 maxHealth = 400; 26 immunityTime = 20; 27 28 isSolid = true; 29 26 30 27 renderOffset.X = 128; 31 28 renderOffset.Y = 83; … … 51 48 } 52 49 53 public bool IsDestroyed { get { return isDestroyed; } }54 55 50 public override void OnFocus() 56 51 { 57 Game.GuiManager.AddGui(menu, true); 52 if (!isDestroyed) 53 Game.GuiManager.AddGui(menu, true); 58 54 } 59 55 60 56 public override void OnFocusLost() 61 57 { 62 Game.GuiManager.RemoveGui(menu); 58 if (!isDestroyed) 59 Game.GuiManager.RemoveGui(menu); 63 60 } 64 61 65 public override void OnRemoved()62 public override void Remove() 66 63 { 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(); 82 65 menu.Remove(); 83 66 level.RemoveUnit(this); 67 spriteX = 1; 84 68 } 85 69 … … 87 71 { 88 72 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); 90 74 } 91 75 } -
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMasterContent/CastleMasterContent.contentproj
r4694 r4703 62 62 <Processor>TextureProcessor</Processor> 63 63 </Compile> 64 <Compile Include="mobs\dwarfs.png">65 <Name>dwarfs</Name>66 <Importer>TextureImporter</Importer>67 <Processor>TextureProcessor</Processor>68 </Compile>69 64 <Compile Include="mobs\woodcutter.png"> 70 65 <Name>woodcutter</Name> … … 77 72 <Processor>TextureProcessor</Processor> 78 73 </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>114 74 <Compile Include="tiles\tile.png"> 115 75 <Name>tile</Name> … … 117 77 <Processor>TextureProcessor</Processor> 118 78 </Compile> 119 <Compile Include="tiles\tilesample.png">120 <Name>tilesample</Name>121 <Importer>TextureImporter</Importer>122 <Processor>TextureProcessor</Processor>123 </Compile>124 79 <Compile Include="tiles\tilesheet.png"> 125 80 <Name>tilesheet</Name> 126 <Importer>TextureImporter</Importer>127 <Processor>TextureProcessor</Processor>128 </Compile>129 <Compile Include="tiles\water.png">130 <Name>water</Name>131 81 <Importer>TextureImporter</Importer> 132 82 <Processor>TextureProcessor</Processor> … … 182 132 </Compile> 183 133 </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> 184 153 <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 185 154 <!-- 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.