public UnitController(InputManager inputManager, InputState inputState, EntityWorld entityWorld, DisFieldMixer disFieldMixer, Lord lord) { this.inputManager = inputManager; this.inputState = inputState; this.entityWorld = entityWorld; this.disFieldMixer = disFieldMixer; this.lord = lord; pathGoal = null; }
public void HandleInput(InputState inputState, PlayerIndex? controllingPlayer) { if (entityFollowing != null) { component.Physics physics = entityFollowing.GetComponent<component.Physics>(); if (physics != null) { Vector2 newPos = new Vector2(); newPos.X = MathHelper.Lerp(Position.X, physics.Position.X * 32, cameraSpeed); newPos.Y = MathHelper.Lerp(Position.Y, physics.Position.Y * 32, cameraSpeed); Position = newPos; } } else { Vector2 cameraMovement = Vector2.Zero; if (inputState.CurrentKeyboardStates[(int)PlayerIndex.One].IsKeyDown(Keys.Left)) { cameraMovement.X = -1; } else if (inputState.CurrentKeyboardStates[(int)PlayerIndex.One].IsKeyDown(Keys.Right)) { cameraMovement.X = 1; } if (inputState.CurrentKeyboardStates[(int)PlayerIndex.One].IsKeyDown(Keys.Up)) { cameraMovement.Y = -1; } else if (inputState.CurrentKeyboardStates[(int)PlayerIndex.One].IsKeyDown(Keys.Down)) { cameraMovement.Y = 1; } if (inputState.IsScrollDown(controllingPlayer)) { AdjustZoom(-0.1f); } else if (inputState.IsScrollUp(controllingPlayer)) { AdjustZoom(0.1f); } if (Keyboard.GetState().IsKeyDown(Keys.Subtract)) { AdjustZoom(-0.05f); } else if (Keyboard.GetState().IsKeyDown(Keys.Add)) { AdjustZoom(0.05f); } if (cameraMovement != Vector2.Zero) { cameraMovement.Normalize(); } cameraMovement *= Global.tileSize; MoveCamera(cameraMovement); } }
protected override void Initialize() { _inputState = new InputState(); tileManager = new TileManager(); tileMap = new TileMap(tileManager, new int2(Global.mapWidth, Global.mapHeight)); entityWorld = new EntityWorld(); entityTileMap = new EntityTileMap(entityWorld, new int2(Global.mapWidth, Global.mapHeight)); disFieldMixer = new DisFieldMixer(); textureManager = new TextureManager(); animationManager = new AnimationManager(); world = new FarseerPhysics.Dynamics.World(new Vector2(0f, 0f)); generator = new Generator(tileMap); lord = new Lord("Obama", Color.Red, 0); enemyLord = new Lord("Justin Bieber", Color.Brown, 1); unitController = new UnitController(null, _inputState, entityWorld, disFieldMixer, lord); spriteBatch = new SpriteBatch(GraphicsDevice); graphics.PreferredBackBufferWidth = Global.ViewportWidth; graphics.PreferredBackBufferHeight = Global.ViewportHeight; graphics.ApplyChanges(); EntitySystem.BlackBoard.SetEntry<SpriteBatch>("SpriteBatch", spriteBatch); EntitySystem.BlackBoard.SetEntry<TextureManager>("TextureManager", textureManager); EntitySystem.BlackBoard.SetEntry<TileMap>("TileMap", tileMap); EntitySystem.BlackBoard.SetEntry<EntityTileMap>("EntityTileMap", entityTileMap); EntitySystem.BlackBoard.SetEntry<DisFieldMixer>("DisFieldMixer", disFieldMixer); EntitySystem.BlackBoard.SetEntry<FarseerPhysics.Dynamics.World>("PhysicsWorld", world); EntitySystem.BlackBoard.SetEntry<Generator>("Generator", generator); EntitySystem.BlackBoard.SetEntry<AnimationManager>("AnimationManager", animationManager); this.entityWorld.InitializeAll(true); base.Initialize(); }