Monsters turn in direction walking
This commit is contained in:
@@ -19,33 +19,33 @@ namespace DepthsBelow
|
||||
/// </summary>
|
||||
public class Core : Microsoft.Xna.Framework.Game
|
||||
{
|
||||
public static GraphicsDeviceManager GraphicsDeviceManager;
|
||||
private SpriteBatch spriteBatch;
|
||||
private Effect lightShader;
|
||||
private RenderTarget2D lightRenderTarget;
|
||||
public static GraphicsDeviceManager GraphicsDeviceManager;
|
||||
private SpriteBatch spriteBatch;
|
||||
private Effect lightShader;
|
||||
private RenderTarget2D lightRenderTarget;
|
||||
private RenderTarget2D sceneRenderTarget;
|
||||
|
||||
public Lua Lua;
|
||||
|
||||
public EntityManager EntityManager;
|
||||
public Lua Lua;
|
||||
|
||||
public EntityManager EntityManager;
|
||||
public TurnManager TurnManager;
|
||||
|
||||
public Camera Camera;
|
||||
public Camera Camera;
|
||||
public Interface Interface;
|
||||
|
||||
public static MouseInput MouseInput;
|
||||
public static KeyboardInput KeyboardInput;
|
||||
public List<Soldier> Squad;
|
||||
public List<Soldier> Squad;
|
||||
public DynamicGroupManager GroupManager;
|
||||
public List<SmallEnemy> Swarm;
|
||||
public List<Shot> Volley;
|
||||
|
||||
public List<Shot> Volley;
|
||||
|
||||
public List<MonsterSpawn> Spawn;
|
||||
|
||||
public static Map Map;
|
||||
|
||||
public SmallEnemy TestMonster;
|
||||
|
||||
public SmallEnemy TestMonster;
|
||||
|
||||
public int Brightness = 30;
|
||||
|
||||
public Core()
|
||||
@@ -70,24 +70,24 @@ namespace DepthsBelow
|
||||
/// and initialize them as well.
|
||||
/// </summary>
|
||||
protected override void Initialize()
|
||||
{
|
||||
GameServices.AddService<GraphicsDevice>(GraphicsDevice);
|
||||
GameServices.AddService<ContentManager>(Content);
|
||||
|
||||
Lua = new Lua();
|
||||
|
||||
EntityManager = new EntityManager();
|
||||
TurnManager = new TurnManager(new string[] { "Player", "Computer" });
|
||||
|
||||
Camera = new Camera(this);
|
||||
Interface = new Interface(this);
|
||||
|
||||
Squad = new List<Soldier>();
|
||||
Swarm = new List<SmallEnemy>();
|
||||
Volley = new List<Shot>();
|
||||
|
||||
Spawn = new List<MonsterSpawn>();
|
||||
|
||||
{
|
||||
GameServices.AddService<GraphicsDevice>(GraphicsDevice);
|
||||
GameServices.AddService<ContentManager>(Content);
|
||||
|
||||
Lua = new Lua();
|
||||
|
||||
EntityManager = new EntityManager();
|
||||
TurnManager = new TurnManager(new string[] { "Player", "Computer" });
|
||||
|
||||
Camera = new Camera(this);
|
||||
Interface = new Interface(this);
|
||||
|
||||
Squad = new List<Soldier>();
|
||||
Swarm = new List<SmallEnemy>();
|
||||
Volley = new List<Shot>();
|
||||
|
||||
Spawn = new List<MonsterSpawn>();
|
||||
|
||||
base.Initialize();
|
||||
}
|
||||
|
||||
@@ -98,15 +98,21 @@ namespace DepthsBelow
|
||||
protected override void LoadContent()
|
||||
{
|
||||
// Create a new SpriteBatch, which can be used to draw textures.
|
||||
spriteBatch = new SpriteBatch(GraphicsDevice);
|
||||
lightShader = Content.Load<Effect>("shaders/LightEffect");
|
||||
lightRenderTarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, false, SurfaceFormat.Color, DepthFormat.None, 0, RenderTargetUsage.PreserveContents);
|
||||
spriteBatch = new SpriteBatch(GraphicsDevice);
|
||||
lightShader = Content.Load<Effect>("shaders/LightEffect");
|
||||
lightRenderTarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, false, SurfaceFormat.Color, DepthFormat.None, 0, RenderTargetUsage.PreserveContents);
|
||||
sceneRenderTarget = new RenderTarget2D(GraphicsDevice, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height);
|
||||
|
||||
Map = Content.Load<Map>("maps/Aztek.Test");
|
||||
//Map = Content.Load<Map>("maps/Cave.Level1");
|
||||
// Load map objects
|
||||
Map.ParseObjects(this);
|
||||
GroupManager = new DynamicGroupManager(Squad.Cast<Entity>().ToList(), (float)Grid.TileSize * 1.5f);
|
||||
Squad[0].Name = "Dean H. Jones";
|
||||
Squad[1].Name = "Walter L. Verville";
|
||||
Squad[2].Name = "Patrick Y. Southerland";
|
||||
Squad[3].Name = "Andrew C. Friend";
|
||||
Squad[4].Name = "Gary B. Whitley";
|
||||
Interface.CreateUnitFrames(Squad);
|
||||
|
||||
// TODO: use this.Content to load your game content here
|
||||
@@ -116,12 +122,12 @@ namespace DepthsBelow
|
||||
|
||||
MouseInput = new MouseInput(this);
|
||||
MouseInput.LoadContent();
|
||||
KeyboardInput = new KeyboardInput(this);
|
||||
|
||||
TestMonster = new SmallEnemy(EntityManager, ref Swarm);
|
||||
TestMonster.X = 12;
|
||||
KeyboardInput = new KeyboardInput(this);
|
||||
|
||||
TestMonster = new SmallEnemy(EntityManager, ref Swarm);
|
||||
TestMonster.X = 12;
|
||||
TestMonster.Y = 4;
|
||||
Swarm.Add(TestMonster);
|
||||
Swarm.Add(TestMonster);
|
||||
|
||||
// Load Lua scripts after everything is created
|
||||
Lua.LoadScripts();
|
||||
@@ -163,25 +169,25 @@ namespace DepthsBelow
|
||||
/// This is called when the game should draw itself.
|
||||
/// </summary>
|
||||
/// <param name="gameTime">Provides a snapshot of timing values.</param>
|
||||
protected override void Draw(GameTime gameTime)
|
||||
{
|
||||
MouseState ms = Mouse.GetState();
|
||||
protected override void Draw(GameTime gameTime)
|
||||
{
|
||||
MouseState ms = Mouse.GetState();
|
||||
|
||||
// Draw to the lighting render target
|
||||
GraphicsDevice.SetRenderTarget(lightRenderTarget);
|
||||
GraphicsDevice.Clear(new Color(Brightness, Brightness, Brightness));
|
||||
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.Additive, SamplerState.PointClamp, null, null, null,
|
||||
Camera.Transform);
|
||||
|
||||
// Draw flashlights
|
||||
foreach (var light in EntityManager.GetComponents<Component.Flashlight>())
|
||||
GraphicsDevice.SetRenderTarget(lightRenderTarget);
|
||||
GraphicsDevice.Clear(new Color(Brightness, Brightness, Brightness));
|
||||
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.Additive, SamplerState.PointClamp, null, null, null,
|
||||
Camera.Transform);
|
||||
|
||||
// Draw flashlights
|
||||
foreach (var light in EntityManager.GetComponents<Component.Flashlight>())
|
||||
light.Draw(spriteBatch);
|
||||
|
||||
spriteBatch.End();
|
||||
GraphicsDevice.SetRenderTarget(null);
|
||||
|
||||
// Draw the scene to a render target
|
||||
GraphicsDevice.SetRenderTarget(sceneRenderTarget);
|
||||
GraphicsDevice.SetRenderTarget(sceneRenderTarget);
|
||||
GraphicsDevice.Clear(Color.Black);
|
||||
// Start drawing using the Camera transform
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, SamplerState.PointClamp, null, null, null,
|
||||
@@ -190,45 +196,45 @@ namespace DepthsBelow
|
||||
// Draw the level
|
||||
Map.Draw(spriteBatch);
|
||||
|
||||
// Draw entities
|
||||
foreach (var spriteRenderer in EntityManager.GetComponents<Component.SpriteRenderer>())
|
||||
{
|
||||
// Only render illuminated entities
|
||||
var position = Camera.WorldToScreen(spriteRenderer.Parent.Transform.World + spriteRenderer.Parent.Transform.World.Origin);
|
||||
var sourceRect = new Rectangle((int)position.X, (int)position.Y, 1, 1);
|
||||
if (
|
||||
sourceRect.X >= 0
|
||||
&& sourceRect.Y >= 0
|
||||
&& sourceRect.X < lightRenderTarget.Width
|
||||
&& sourceRect.Y < lightRenderTarget.Height
|
||||
)
|
||||
{
|
||||
var lightData = new Color[1];
|
||||
lightRenderTarget.GetData<Color>(0, sourceRect, lightData, 0, 1);
|
||||
if (lightData[0] != new Color(Brightness, Brightness, Brightness))
|
||||
spriteRenderer.Draw(spriteBatch);
|
||||
}
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
var debugTexture = new Texture2D(GraphicsDevice, 1, 1);
|
||||
debugTexture.SetData(new Color[] { Color.White });
|
||||
foreach (var collisionComponent in EntityManager.GetComponents<Component.Collision>())
|
||||
{
|
||||
spriteBatch.Draw(debugTexture, collisionComponent.Rectangle, Color.Red * 0.5f);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Draw entities
|
||||
foreach (var spriteRenderer in EntityManager.GetComponents<Component.SpriteRenderer>())
|
||||
{
|
||||
// Only render illuminated entities
|
||||
var position = Camera.WorldToScreen(spriteRenderer.Parent.Transform.World + spriteRenderer.Parent.Transform.World.Origin);
|
||||
var sourceRect = new Rectangle((int)position.X, (int)position.Y, 1, 1);
|
||||
if (
|
||||
sourceRect.X >= 0
|
||||
&& sourceRect.Y >= 0
|
||||
&& sourceRect.X < lightRenderTarget.Width
|
||||
&& sourceRect.Y < lightRenderTarget.Height
|
||||
)
|
||||
{
|
||||
var lightData = new Color[1];
|
||||
lightRenderTarget.GetData<Color>(0, sourceRect, lightData, 0, 1);
|
||||
if (lightData[0] != new Color(Brightness, Brightness, Brightness))
|
||||
spriteRenderer.Draw(spriteBatch);
|
||||
}
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
var debugTexture = new Texture2D(GraphicsDevice, 1, 1);
|
||||
debugTexture.SetData(new Color[] { Color.White });
|
||||
foreach (var collisionComponent in EntityManager.GetComponents<Component.Collision>())
|
||||
{
|
||||
spriteBatch.Draw(debugTexture, collisionComponent.Rectangle, Color.Red * 0.5f);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Draw mouse input visuals
|
||||
MouseInput.Draw(spriteBatch);
|
||||
|
||||
spriteBatch.End();
|
||||
GraphicsDevice.SetRenderTarget(null);
|
||||
|
||||
// Draw the scene from the render target with the light shader
|
||||
lightShader.Parameters["LightsTexture"].SetValue(lightRenderTarget);
|
||||
lightShader.CurrentTechnique.Passes[0].Apply();
|
||||
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.Opaque, SamplerState.PointClamp, null, null, lightShader,
|
||||
// Draw the scene from the render target with the light shader
|
||||
lightShader.Parameters["LightsTexture"].SetValue(lightRenderTarget);
|
||||
lightShader.CurrentTechnique.Passes[0].Apply();
|
||||
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.Opaque, SamplerState.PointClamp, null, null, lightShader,
|
||||
Matrix.Identity);
|
||||
spriteBatch.Draw(sceneRenderTarget, Vector2.Zero, Color.White);
|
||||
spriteBatch.End();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -105,10 +105,10 @@ namespace DepthsBelow
|
||||
{
|
||||
KeyboardState ks = Keyboard.GetState();
|
||||
|
||||
// Brightness
|
||||
if (ks.IsKeyUp(Keys.Up) && lastKeyboardState.IsKeyDown(Keys.Up))
|
||||
core.Brightness = (int)MathHelper.Clamp(core.Brightness + 5, 0, 254);
|
||||
if (ks.IsKeyUp(Keys.Down) && lastKeyboardState.IsKeyDown(Keys.Down))
|
||||
// Brightness
|
||||
if (ks.IsKeyUp(Keys.Up) && lastKeyboardState.IsKeyDown(Keys.Up))
|
||||
core.Brightness = (int)MathHelper.Clamp(core.Brightness + 5, 0, 254);
|
||||
if (ks.IsKeyUp(Keys.Down) && lastKeyboardState.IsKeyDown(Keys.Down))
|
||||
core.Brightness = (int)MathHelper.Clamp(core.Brightness - 5, 0, 254);
|
||||
|
||||
// Debug test: grouping
|
||||
@@ -177,6 +177,10 @@ namespace DepthsBelow
|
||||
}*/
|
||||
core.TestMonster.X = 12;
|
||||
core.TestMonster.Y = 4;
|
||||
}
|
||||
if (ks.IsKeyDown(Keys.N))
|
||||
{
|
||||
|
||||
}
|
||||
if (ks.IsKeyDown(Keys.S))
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace DepthsBelow
|
||||
}
|
||||
}
|
||||
|
||||
public SmallEnemy(EntityManager entityManager, ref List<SmallEnemy> swarm)
|
||||
public SmallEnemy(EntityManager entityManager, ref List<SmallEnemy> swarm)
|
||||
: base(entityManager)
|
||||
{
|
||||
if (Texture == null)
|
||||
@@ -49,16 +49,16 @@ namespace DepthsBelow
|
||||
AddComponent(cc);
|
||||
|
||||
var pfc = new PathFinder(this);
|
||||
AddComponent(pfc);
|
||||
|
||||
var stat = new Component.Stat(this)
|
||||
{
|
||||
Life = 2,
|
||||
Defence = 0,
|
||||
Strength = 5000,
|
||||
GetAim = 100,
|
||||
GetDodge = 50
|
||||
};
|
||||
AddComponent(pfc);
|
||||
|
||||
var stat = new Component.Stat(this)
|
||||
{
|
||||
Life = 2,
|
||||
Defence = 0,
|
||||
Strength = 5000,
|
||||
GetAim = 100,
|
||||
GetDodge = 50
|
||||
};
|
||||
AddComponent(stat);
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ namespace DepthsBelow
|
||||
}
|
||||
|
||||
public static void LoadContent()
|
||||
{
|
||||
{
|
||||
Texture = GameServices.GetService<ContentManager>().Load<Texture2D>("images/Monster");
|
||||
}
|
||||
|
||||
@@ -111,14 +111,25 @@ namespace DepthsBelow
|
||||
// HACK: Make this work properly with other speeds...
|
||||
float speed = 4f;
|
||||
if (Transform.World.X < nodeWorldPos.X)
|
||||
{
|
||||
Transform.World.X += speed;
|
||||
GetComponent<Component.Transform>().World.Rotation = MathHelper.ToRadians(0);
|
||||
}
|
||||
if (Transform.World.X > nodeWorldPos.X)
|
||||
{
|
||||
Transform.World.X -= speed;
|
||||
GetComponent<Component.Transform>().World.Rotation = MathHelper.ToRadians(180);
|
||||
}
|
||||
if (Transform.World.Y < nodeWorldPos.Y)
|
||||
{
|
||||
Transform.World.Y += speed;
|
||||
GetComponent<Component.Transform>().World.Rotation = MathHelper.ToRadians(90);
|
||||
}
|
||||
if (Transform.World.Y > nodeWorldPos.Y)
|
||||
{
|
||||
Transform.World.Y -= speed;
|
||||
|
||||
GetComponent<Component.Transform>().World.Rotation = MathHelper.ToRadians(270);
|
||||
}
|
||||
if (Transform.World == nodeWorldPos)
|
||||
{
|
||||
if (currentStep < numberOfSteps)
|
||||
|
||||
Reference in New Issue
Block a user