From a05ae287aa87259817e6ca7627986e14eeab6098 Mon Sep 17 00:00:00 2001 From: aldrikboy Date: Tue, 2 Jan 2018 23:36:55 +0100 Subject: dank --- Penguloon/Content/Content.mgcb | 24 ++++++++++++++ Penguloon/Content/Objects/mortar.png | Bin 0 -> 6894 bytes Penguloon/Content/Objects/mortarBase.png | Bin 0 -> 5160 bytes Penguloon/Content/UI/background.png | Bin 915 -> 915 bytes Penguloon/ContentPathManager.cs | 2 ++ Penguloon/Controls/ObjectSelector.cs | 17 ++++++++-- Penguloon/Levels/IceLevel3.cs | 2 +- Penguloon/Levels/Map.cs | 53 ++++++++++++++++++++++++------- Penguloon/Objects/MortarObject.cs | 47 +++++++++++++++++++++++++++ Penguloon/Objects/ObjectBase.cs | 7 ++++ Penguloon/Penguloon.csproj | 1 + 11 files changed, 137 insertions(+), 16 deletions(-) create mode 100644 Penguloon/Content/Objects/mortar.png create mode 100644 Penguloon/Content/Objects/mortarBase.png create mode 100644 Penguloon/Objects/MortarObject.cs diff --git a/Penguloon/Content/Content.mgcb b/Penguloon/Content/Content.mgcb index b7d585f..f3ab71e 100644 --- a/Penguloon/Content/Content.mgcb +++ b/Penguloon/Content/Content.mgcb @@ -763,3 +763,27 @@ /processorParam:TextureFormat=Color /build:SplashArt/4.png +#begin Objects/mortar.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:Objects/mortar.png + +#begin Objects/mortarBase.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:Objects/mortarBase.png + diff --git a/Penguloon/Content/Objects/mortar.png b/Penguloon/Content/Objects/mortar.png new file mode 100644 index 0000000..db27b4b Binary files /dev/null and b/Penguloon/Content/Objects/mortar.png differ diff --git a/Penguloon/Content/Objects/mortarBase.png b/Penguloon/Content/Objects/mortarBase.png new file mode 100644 index 0000000..1dde5f7 Binary files /dev/null and b/Penguloon/Content/Objects/mortarBase.png differ diff --git a/Penguloon/Content/UI/background.png b/Penguloon/Content/UI/background.png index 2e76011..84bf0c5 100644 Binary files a/Penguloon/Content/UI/background.png and b/Penguloon/Content/UI/background.png differ diff --git a/Penguloon/ContentPathManager.cs b/Penguloon/ContentPathManager.cs index 22f93a9..9a29509 100644 --- a/Penguloon/ContentPathManager.cs +++ b/Penguloon/ContentPathManager.cs @@ -23,6 +23,8 @@ namespace Penguloon "Objects/penguin1", "Objects/penguin2", "Objects/healthRegenerator", + "Objects/mortar", + "Objects/mortarBase", "Tiles/ice", "Tiles/waterCornerLeftDown", diff --git a/Penguloon/Controls/ObjectSelector.cs b/Penguloon/Controls/ObjectSelector.cs index a13f3eb..56dff8a 100644 --- a/Penguloon/Controls/ObjectSelector.cs +++ b/Penguloon/Controls/ObjectSelector.cs @@ -126,7 +126,8 @@ namespace Penguloon.Controls Objects.Add(new Tuple(new PenguinObject(Map), 250)); Objects.Add(new Tuple(new GoldPenguinObject(Map), 360)); Objects.Add(new Tuple(new CannonObject(Map), 650)); - Objects.Add(new Tuple(new HealthGeneratorObject(Map), 150)); + Objects.Add(new Tuple(new HealthGeneratorObject(Map), 800)); + Objects.Add(new Tuple(new MortarObject(Map), 150)); } public override void Update(float deltaTime, TouchLocation[] touchLocations) @@ -166,8 +167,18 @@ namespace Penguloon.Controls destinationRectangle: new Rectangle(posX, (int)Position.Y + posY, width, height)); } - int widthToDraw = (height / Objects[i].Item1.TileSpanY) - (padding * 2); - int heightToDraw = (height / Objects[i].Item1.TileSpanX) - (padding * (3 - Objects[i].Item1.TileSpanX)); + //int widthToDraw = (height / Objects[i].Item1.TileSpanY) - (padding * (3 - Objects[i].Item1.TileSpanY)); + //int heightToDraw = (height / Objects[i].Item1.TileSpanX) - (padding * (3 - Objects[i].Item1.TileSpanX)); + + int spanY = 1; + int spanX = 1; + + int widthToDraw = (width / spanY) - (padding * 2); + int heightToDraw = (height / spanX) - (padding * 2); + + if (Objects[i].Item1.TextureBase != null) + ParentScene.Main.SpriteBatch.Draw(Objects[i].Item1.TextureBase, + destinationRectangle: new Rectangle(posX + (width - widthToDraw) / 2, (int)Position.Y + posY + (height / 2) - (heightToDraw / 2), widthToDraw, heightToDraw)); ParentScene.Main.SpriteBatch.Draw(Objects[i].Item1.Texture, destinationRectangle: new Rectangle(posX + (width - widthToDraw) / 2, (int)Position.Y + posY + (height / 2) - (heightToDraw / 2), widthToDraw, heightToDraw)); diff --git a/Penguloon/Levels/IceLevel3.cs b/Penguloon/Levels/IceLevel3.cs index e70ea70..f7a46e4 100644 --- a/Penguloon/Levels/IceLevel3.cs +++ b/Penguloon/Levels/IceLevel3.cs @@ -14,7 +14,7 @@ namespace Penguloon.Levels this.Money = 123550; this.Health = 200; this.ID = 3; - this.MinimumLevel = 5; + this.MinimumLevel = 10; LevelType = LevelType.Ice; } diff --git a/Penguloon/Levels/Map.cs b/Penguloon/Levels/Map.cs index 03e1c4f..806c8de 100644 --- a/Penguloon/Levels/Map.cs +++ b/Penguloon/Levels/Map.cs @@ -64,6 +64,25 @@ namespace Penguloon.Levels } public void Draw(float deltaTime) + { + DrawMap(); + + DrawSpareTiles(); + + for (int i = 0; i < Enemies.Count; i++) + { + if (Enemies[i].Texture != null) + ParentScene.Main.SpriteBatch.Draw(Enemies[i].Texture, + destinationRectangle: Enemies[i].Box); + } + + for (int i = 0; i < Objects.Count; i++) + { + Objects[i].Draw(deltaTime); + } + } + + private void DrawMap() { for (int y = 0; y < TileMap.GetLength(0); y++) { @@ -77,16 +96,19 @@ namespace Penguloon.Levels case LevelType.Sand: tileTexture = ContentManager.GetSandTileTextureByType(TileMap[y, x].Type); break; } - if(tileTexture != null) - ParentScene.Main.SpriteBatch.Draw(tileTexture, - destinationRectangle: new Rectangle(x * TileWidth, y * TileHeight, TileWidth, TileHeight)); + if (tileTexture != null) + ParentScene.Main.SpriteBatch.Draw(tileTexture, + destinationRectangle: new Rectangle(x * TileWidth, y * TileHeight, TileWidth, TileHeight)); //if (ParentScene.ObjectSeletor.State == Controls.State.Selected) // ParentScene.Main.SpriteBatch.Draw(tileTexture, // destinationRectangle: new Rectangle(x * TileWidth, y * TileHeight, TileWidth, TileHeight)); } } + } + private void DrawSpareTiles() + { Texture2D tileTextureSpare = null; Texture2D unplaceableTileTexture = null; @@ -113,17 +135,19 @@ namespace Penguloon.Levels } } - - for (int i = 0; i < Enemies.Count; i++) - { - if (Enemies[i].Texture != null) - ParentScene.Main.SpriteBatch.Draw(Enemies[i].Texture, - destinationRectangle: Enemies[i].Box); - } - for (int i = 0; i < Objects.Count; i++) { - Objects[i].Draw(deltaTime); + if (ParentScene.ObjectSeletor.State != Controls.State.Selected) continue; + + for (int x = 0; x < Objects[i].TileSpanX; x++) + { + for (int y = 0; y < Objects[i].TileSpanY; y++) + { + ParentScene.Main.SpriteBatch.Draw(unplaceableTileTexture, + destinationRectangle: new Rectangle((int)Objects[i].Position.X + (x * TileWidth), + (int)Objects[i].Position.Y + (y * TileHeight), TileWidth, TileHeight)); + } + } } } @@ -235,6 +259,11 @@ namespace Penguloon.Levels var b = new HealthGeneratorObject(pos, this); Objects.Add(b); } + if (type == typeof(MortarObject)) + { + var b = new MortarObject(pos, this); + Objects.Add(b); + } } } diff --git a/Penguloon/Objects/MortarObject.cs b/Penguloon/Objects/MortarObject.cs new file mode 100644 index 0000000..a2687d5 --- /dev/null +++ b/Penguloon/Objects/MortarObject.cs @@ -0,0 +1,47 @@ +using Microsoft.Xna.Framework; +using Penguloon.Levels; +using Penguloon.Projectiles; +using System.Collections.Generic; + +namespace Penguloon.Objects +{ + class MortarObject : ObjectBase + { + public MortarObject(Vector2 position, Map map) : base(position, map) + { + this.Texture = ContentManager.GetTexture("Objects/mortar"); + this.TextureBase = ContentManager.GetTexture("Objects/mortarBase"); + this.TileSpanX = 2; + this.TileSpanY = 2; + this.Range = Map.TileWidth * 7f; + this.AttackSpeedMS = 4500; + this.infoText = map.Level.ParentScene.Main.Resources.GetString(Resource.String.ObjectCannon); + } + + public MortarObject(Map map) : base(map) + { + this.Texture = ContentManager.GetTexture("Objects/mortar"); + this.TextureBase = ContentManager.GetTexture("Objects/mortarBase"); + this.TileSpanX = 2; + this.TileSpanY = 2; + this.Range = Map.TileWidth * 7f; + this.AttackSpeedMS = 4500; + this.infoText = map.Level.ParentScene.Main.Resources.GetString(Resource.String.ObjectCannon); + } + + public override void DrawUnique(float deltaTime) + { + + } + + public override void UpdateUnique(float deltaTime) + { + + } + + public override void SpawnUnique() + { + Projectiles.Add(new CannonballProjectile(this, this.Rotation)); + } + } +} \ No newline at end of file diff --git a/Penguloon/Objects/ObjectBase.cs b/Penguloon/Objects/ObjectBase.cs index 9d00702..5bfdcb9 100644 --- a/Penguloon/Objects/ObjectBase.cs +++ b/Penguloon/Objects/ObjectBase.cs @@ -16,6 +16,7 @@ namespace Penguloon.Objects public float Range { get; set; } public Texture2D Texture { get; set; } + public Texture2D TextureBase { get; set; } public Texture2D RangeCircle { get; set; } public float Rotation { get; set; } = -0f; @@ -144,6 +145,12 @@ namespace Penguloon.Objects Map.TileWidth * TileSpanX, Map.TileHeight * TileSpanY); + // Draw object base + if (TextureBase != null) + Map.ParentScene.Main.SpriteBatch.Draw(TextureBase, + destinationRectangle: rec, + origin: new Vector2(Texture.Width / 2, Texture.Height / 2)); + // Draw projectiles before drawing the object for (int i = 0; i < Projectiles.Count; i++) Projectiles[i].Draw(deltaTime); diff --git a/Penguloon/Penguloon.csproj b/Penguloon/Penguloon.csproj index 95ec810..3fabc72 100644 --- a/Penguloon/Penguloon.csproj +++ b/Penguloon/Penguloon.csproj @@ -85,6 +85,7 @@ + -- cgit v1.2.3-70-g09d2