From 2fe63f51c05a84ca2b82925e9fa1ef584441c270 Mon Sep 17 00:00:00 2001 From: Niklas Ulf Anders Cullberg Date: Sat, 20 Oct 2012 13:01:57 +0200 Subject: [PATCH] Shooting calculation displayed, needs work --- DepthsBelow/DepthsBelow/Component/Stat.cs | 2 +- DepthsBelow/DepthsBelow/KeyboardInput.cs | 34 ++++++------ DepthsBelow/DepthsBelow/MouseInput.cs | 17 +++--- DepthsBelow/DepthsBelow/Shot.cs | 18 +++++-- DepthsBelow/DepthsBelow/Utility.cs | 64 ++++++++++++----------- 5 files changed, 74 insertions(+), 61 deletions(-) diff --git a/DepthsBelow/DepthsBelow/Component/Stat.cs b/DepthsBelow/DepthsBelow/Component/Stat.cs index dc1afa3..278cbc4 100644 --- a/DepthsBelow/DepthsBelow/Component/Stat.cs +++ b/DepthsBelow/DepthsBelow/Component/Stat.cs @@ -23,7 +23,7 @@ namespace DepthsBelow.Component public int GetAim { get { return soldierAim + weaponAccuracy; } - set { soldierAim = value; } + set { weaponAccuracy = value; } } public int GetDodge diff --git a/DepthsBelow/DepthsBelow/KeyboardInput.cs b/DepthsBelow/DepthsBelow/KeyboardInput.cs index 02818da..dc0cab3 100644 --- a/DepthsBelow/DepthsBelow/KeyboardInput.cs +++ b/DepthsBelow/DepthsBelow/KeyboardInput.cs @@ -12,7 +12,7 @@ namespace DepthsBelow { public class KeyboardInput { - Core core; + Core core; private KeyboardState lastKeyboardState; int checkerSpeed = 2; @@ -20,29 +20,29 @@ namespace DepthsBelow public KeyboardInput(Core core) { this.core = core; - } - + } + public void Update(GameTime gameTime) { KeyboardState ks = Keyboard.GetState(); - // Lua reload scripts - if (ks.IsKeyUp(Keys.R) && lastKeyboardState.IsKeyDown(Keys.R)) - { - core.Lua.Reload(); + // Lua reload scripts + if (ks.IsKeyUp(Keys.R) && lastKeyboardState.IsKeyDown(Keys.R)) + { + core.Lua.Reload(); } // Next turn if (ks.IsKeyDown(Keys.Enter) && lastKeyboardState.IsKeyUp(Keys.Enter)) - { + { if (core.TurnManager.CurrentTurn == core.TurnManager["Player"]) { foreach (var unit in core.Squad) { unit.step = 0; unit.Fired = false; - } - + } + core.TurnManager.EndTurn(); } @@ -65,8 +65,8 @@ namespace DepthsBelow } } core.TestMonster.GetComponent().Goal = target; - distance = 7000; - + distance = 7000; + core.TurnManager.EndTurn(); } } @@ -86,7 +86,7 @@ namespace DepthsBelow { if (soldier.Selected == true && soldier.Fired == false) { - core.Volley.Add(new Shot(core.EntityManager)); + core.Volley.Add(new Shot(core.EntityManager, soldier.GetComponent())); soldier.Fired = true; foreach (var shot in core.Volley) { @@ -143,7 +143,7 @@ namespace DepthsBelow current = 0; if (soldier.Selected == true && soldier.Fired == false && hit == true) { - core.Volley.Add(new Shot(core.EntityManager)); + core.Volley.Add(new Shot(core.EntityManager, soldier.GetComponent())); soldier.Fired = true; foreach (var shot in core.Volley) { @@ -165,9 +165,9 @@ namespace DepthsBelow hit = false; } } - } - - lastKeyboardState = ks; + } + + lastKeyboardState = ks; } } } \ No newline at end of file diff --git a/DepthsBelow/DepthsBelow/MouseInput.cs b/DepthsBelow/DepthsBelow/MouseInput.cs index e784028..6640ede 100755 --- a/DepthsBelow/DepthsBelow/MouseInput.cs +++ b/DepthsBelow/DepthsBelow/MouseInput.cs @@ -118,21 +118,22 @@ namespace DepthsBelow readjust = false; } } - //Calculating chance to hit if holding cursor over enemy - foreach (var unit in core.Squad) + } + //Calculating chance to hit if holding cursor over enemy + foreach (var unit in core.Squad) + { + if (unit.Selected == true && unit.Fired == false) { - if (unit.Selected == true && unit.Fired == false) + foreach (var enemy in core.Swarm) { - foreach (var enemy in core.Swarm) + if (gridRectangle.Intersects(enemy.GetComponent().Rectangle)) { - if (gridRectangle.Intersects(enemy.GetComponent().Rectangle)) - { - Utility.CalculateHitChance(unit, enemy); - } + Console.WriteLine(Utility.CalculateHitChance(unit, enemy)); } } } } + // When the mouse is released if (ms.LeftButton == ButtonState.Released && selectionRectangle != Rectangle.Empty) { diff --git a/DepthsBelow/DepthsBelow/Shot.cs b/DepthsBelow/DepthsBelow/Shot.cs index 8f2e229..f8ce89e 100644 --- a/DepthsBelow/DepthsBelow/Shot.cs +++ b/DepthsBelow/DepthsBelow/Shot.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using DepthsBelow.Component; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Content; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; @@ -14,6 +14,14 @@ namespace DepthsBelow public Color Color; public static Point Origin; + Stat soldierStat; + + public Stat Stat + { + get { return soldierStat; } + set { soldierStat = value; } + } + private bool _selected = false; //I guess as in "currently doing something" public bool select @@ -29,7 +37,7 @@ namespace DepthsBelow public Vector2 direction = Vector2.Zero; - public Shot(EntityManager entityManager) + public Shot(EntityManager entityManager, Stat _soldierStat) : base(entityManager) { if (Texture == null) @@ -37,6 +45,8 @@ namespace DepthsBelow Transform.World.Origin = new Vector2(16, 16); + Stat = _soldierStat; + this.Color = Color.White; var rc = new SpriteRenderer(this) { Texture = Texture, Color = Color.White }; AddComponent(rc); @@ -46,7 +56,7 @@ namespace DepthsBelow } public static void LoadContent() - { + { Texture = GameServices.GetService().Load("images/Shot"); } public override void Update(GameTime gameTime) diff --git a/DepthsBelow/DepthsBelow/Utility.cs b/DepthsBelow/DepthsBelow/Utility.cs index 56cb736..3cce561 100644 --- a/DepthsBelow/DepthsBelow/Utility.cs +++ b/DepthsBelow/DepthsBelow/Utility.cs @@ -1,23 +1,23 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using DepthsBelow.Component; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; - +using System.Text; +using DepthsBelow.Component; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + namespace DepthsBelow { - /// - /// Various global utility functions. + /// + /// Various global utility functions. /// static class Utility { - /// - /// Calculate the chance of an entity with a Stat component to hit another unit. - /// - /// The attacking unit. - /// The recieving unit. + /// + /// Calculate the chance of an entity with a Stat component to hit another unit. + /// + /// The attacking unit. + /// The recieving unit. /// Returns a hit chance percentage. public static int CalculateHitChance(Entity attacker, Entity defender) { @@ -29,7 +29,9 @@ namespace DepthsBelow } int baseHitChance = shooting.GetAim; int baseDodgeChance = dodging.GetDodge; - int basePenalty = shooting.Penalty((int)Vector2.Distance(attacker.GetComponent().World.Position, defender.GetComponent().World.Position) / Grid.TileSize); + int distance = (int)Vector2.Distance(attacker.GetComponent().World.Position, defender.GetComponent().World.Position); + int basePenalty = shooting.Penalty(distance / (Grid.TileSize / 2)); + Console.WriteLine("Penalty = " + basePenalty); int chanceToHit = baseHitChance - baseDodgeChance - basePenalty; //Console.WriteLine(chanceToHit); return chanceToHit; @@ -45,23 +47,23 @@ namespace DepthsBelow return true; } return false; - }*/ - private static Texture2D blank; - - public static void DrawLine(SpriteBatch batch, Color color, float width, Vector2 start, Vector2 end) - { - if (blank == null) - { - blank = new Texture2D(Core.GraphicsDeviceManager.GraphicsDevice, 1, 1, false, SurfaceFormat.Color); - blank.SetData(new[] { color }); - } - - float angle = (float)Math.Atan2(end.Y - start.Y, end.X - start.X); - float length = Vector2.Distance(start, end); - - batch.Draw(blank, start, null, color, - angle, Vector2.Zero, new Vector2(length, width), - SpriteEffects.None, 0); - } + }*/ + private static Texture2D blank; + + public static void DrawLine(SpriteBatch batch, Color color, float width, Vector2 start, Vector2 end) + { + if (blank == null) + { + blank = new Texture2D(Core.GraphicsDeviceManager.GraphicsDevice, 1, 1, false, SurfaceFormat.Color); + blank.SetData(new[] { color }); + } + + float angle = (float)Math.Atan2(end.Y - start.Y, end.X - start.X); + float length = Vector2.Distance(start, end); + + batch.Draw(blank, start, null, color, + angle, Vector2.Zero, new Vector2(length, width), + SpriteEffects.None, 0); + } } }