public override void Initialize() { int targetPlayerId = 0; if (Config.PlayersNumber == 2) { targetPlayerId = GameplayScreen.Rand.Next(0, 2); } MoverManager.Initialize(Game.GameplayScreen.Players[targetPlayerId].GetPosition); MoverManager.movers.Clear(); Position = Vector2.Zero; _motion = new Vector2(1, 0); _ready = false; _totalHealth = InitialHealth * ((DefeatNumber + 1) / 2f); _health = _totalHealth; IsAlive = true; _timer = Config.BossInitialTimer; Rotation = 0; _rotationIncrementor = 0.001f; base.Initialize(); }
public GameManager(XmasHell game) { _game = game; _bullets = new List <Bullet>(); _lasers = new List <Laser>(); _endGame = false; MoverManager = new MoverManager(_game); CollisionWorld = new CollisionWorld(_game); ParticleManager = new ParticleManager(_game); //Random = new Random(GameConfig.RandomSeed); Random = new Random(); _cameraZoomTimer = new CountdownTimer(GameConfig.EndGameCameraZoomTime); _cameraZoomTimer.Stop(); _cameraZoomTimer.Completed += CameraZoomTimerCompleted; _explosionTimer = new CountdownTimer(GameConfig.EndGameExplosionTime); _explosionTimer.Stop(); _explosionTimer.Completed += ExplosionTimerCompleted; _transitioningToEndGame = false; _cantMove = false; }
public override void Initialize() { _backgroundMainRectangle = new Rectangle(0, 0, Config.GameArea.X, Config.GameArea.Y); // Bullet manager _moverManager = new MoverManager((DnK)Game); GameManager.GameDifficulty = Config.GameDifficultyDelegate; base.Initialize(); _defaultView = GraphicsDevice.Viewport; // First player _player = new Player(GameRef, _defaultView, 1, Config.PlayersController[0], new Vector2(Config.GameArea.X / 2f, Config.GameArea.Y - 150)); _player.Initialize(); _moverManager.Initialize(_player.GetPosition); _moverManager.movers.Clear(); AddBullet(true); // Watch the bullet pattern file _watcher = new FileSystemWatcher { Path = _patternDirectory, NotifyFilter = NotifyFilters.LastWrite, Filter = _patternFileName }; // Add event handler _watcher.Changed += OnChanged; // Begin watching _watcher.EnableRaisingEvents = true; }
void Start() { Assert.IsNotNull(gameManagers.chaserManagerClass); Assert.IsNotNull(gameManagers.UIManagerClass); Assert.IsNotNull(gameManagers.spawnPointManagerClass); Assert.IsNotNull(gameManagers.asteroidStormManagerClass); Assert.IsNotNull(players, "playerShips niet geassigned"); //UIManager UIManager UIManager = Instantiate(gameManagers.UIManagerClass); UIManager.playerShip = players[0]; // Spawn Point Manager SpawnPointManager spawnPointManager = Instantiate(gameManagers.spawnPointManagerClass); // Asteroid Storm Manager //if (difficulty > 0) //{ // AsteroidStormManager asteroidStormManager = Instantiate(gameManagers.asteroidStormManagerClass); // asteroidStormManager.spawnPointManager = spawnPointManager; //} // Enemy Managers ChaserManager chaserManager = Instantiate(gameManagers.chaserManagerClass); chaserManager.SetPlayers(players); chaserManager.SetSpawnPoints(spawnPointManager.chaserSpawnPoints); MoverManager moverManager = Instantiate(gameManagers.MoverManagerClass); moverManager.SetPlayers(players); moverManager.SetSpawnPoints(spawnPointManager.movingSpawnPoints); }
public Boss(DnK game) : base(game) { MoverManager = new MoverManager(Game); GameManager.GameDifficulty = Config.GameDifficultyDelegate; DefeatNumber = 0; _speed = 1f; }
public PathRenderer(MoverManager mover, BaseMovable moving, Texture2D texture, Texture2D endTexture, Point pointSize, int maxX, int maxY) : base(mover, moving) { _texture = texture; _endTexture = endTexture; _pointSize = pointSize; MaxX = maxX; MaxY = maxY; }
public void Draw(GameTime gameTime, Matrix viewMatrix) { foreach (var part in _parts) { part.Draw(gameTime, viewMatrix); } _core.Draw(gameTime); MoverManager.Draw(gameTime); }
private void Start() { _gameStateManager = GetComponent <GameStateManager>(); _waveIndicatorAnimator = waveIndicator.GetComponent <Animator>(); _mementoManager = GetComponent <MementoManager>(); _moverManager = GetComponent <MoverManager>(); _spawnPointManager = GetComponent <SpawnPointManager>(); _dogAnimation = dogIndicator.GetComponent <Animator>(); _audioSource = GetComponent <AudioSource>(); _windowAnimation = windowObject.GetComponent <Animator>(); }
public OpenWorldGameMode(ViewportAdapter viewPort, IPossibleMovements possibleMovements, string worldName, EntityManager entityManager, StoryEngine storyEngine, EventHandler clickEvent) : base(clickEvent) { _entityManager = entityManager; EntityRenderersDict = new Dictionary <Entity, AbstractEntityRenderer>(); _possibleMovements = possibleMovements; _content = ContentManagerFactory.RequestContentManager(); RenderList = new List <IRenderable>(); Map = _content.Load <TiledMap>($"TopDownRpg/{worldName}"); var graphics = StaticServiceLocator.GetService <GraphicsDevice>(); _mapRenderer = new FullMapRenderer(graphics); _mapRenderer.SwapMap(Map); _tileSize = new Vector2(Map.TileWidth, Map.TileHeight); _moverManager = new MoverManager(); var collisionSystem = new CompositeAbstractCollisionSystem(_possibleMovements); _expiringSpatialHash = new ExpiringSpatialHashCollisionSystem <Entity>(_possibleMovements); _spatialHashMover = new SpatialHashMoverManager <Entity>(collisionSystem, _expiringSpatialHash); AddPlayer(); var entityController = EntityControllerFactory.AddEntityController(PlayerEntity.Instance, _possibleMovements, _moverManager); var texture = _content.Load <Texture2D>("TopDownRpg/Path"); var endTexture = _content.Load <Texture2D>("TopDownRpg/BluePathEnd"); collisionSystem.AddCollisionSystem(new TiledCollisionSystem(_possibleMovements, Map, "Collision-Layer")); collisionSystem.AddCollisionSystem(_expiringSpatialHash); CollisionSystem = collisionSystem; AddClickController(PlayerEntity.Instance); PathRenderer = new PathRenderer(_moverManager, PlayerEntity.Instance, texture, endTexture, _tileSize.ToPoint(), Map.Width, Map.Height); UpdateList.Add(_expiringSpatialHash); UpdateList.Add(entityController); UpdateList.Add(_spatialHashMover); UpdateList.Add(_moverManager); CameraTracker = CameraTrackerFactory.CreateTracker(viewPort, EntityRenderersDict[PlayerEntity.Instance], Map); UpdateList.Add(CameraTracker); LoadEntities(); var dialogFont = _content.Load <SpriteFont>("dialog"); var settings = StaticServiceLocator.GetService <IControllerSettings>(); DialogBox = new EntityStoryBoxDialog(ScreenSize.Size, dialogFont, settings.GamePadEnabled); GuiManager.AddGuiLayer(DialogBox); storyEngine.LoadWorld(AddEntity, RemoveEntity, CollisionSystem.CheckMovementCollision, worldName); InteractEvent += (sender, args) => { var facingDirection = PlayerEntity.Instance.FacingDirection; var interactTarget = (PlayerEntity.Instance.Position + facingDirection).ToPoint(); Interact(interactTarget); }; AddInteractionController(); CameraController.AddCameraZoomController(CameraTracker, ClickController); CameraController.AddCameraMovementController(CameraTracker, ClickController); }
private void Start() { var gameController = GameObject.FindGameObjectWithTag("GameController"); _mementoManager = gameController.GetComponent <MementoManager>(); _spawnPointManager = gameController.GetComponent <SpawnPointManager>(); _moverManager = gameController.GetComponent <MoverManager>(); _navMeshAgent = GetComponent <NavMeshAgent>(); _animator = GetComponentInChildren <Animator>(); _navMeshAgent.speed = settings.walkingSpeed; audioSource = GetComponent <AudioSource>(); }
private void AddBullet(bool clear) { if (clear) { //clear out all the bulelts MoverManager.movers.Clear(); } //add a new bullet in the center of the screen _mover = (Mover)MoverManager.CreateBullet(); _mover.X = Position.X; _mover.Y = Position.Y - 5; _mover.SetBullet(_myPatterns[_currentPattern].RootNode); }
public Boss(GameRunner gameRef, Player player, int iteration = 50, float step = 25) { _gameRef = gameRef; _defeatCounter = 0; MoverManager = new MoverManager(gameRef); GameManager.GameDifficulty = Config.GameDifficultyDelegate; this.player = player; _iteration = iteration; _step = step; _previousBossPart = null; _parts = new List <BossPart>(); _currentPartIndex = 0; //MoverManager.Initialize(player.Position); }
public BossCore( GameRunner gameRef, Entity parent, PositionDelegate playerPositionDelegate, MoverManager moverManager, List <BulletPattern> bulletPatterns, float initialHp = 100f) : base(gameRef) { _parent = parent; _hp = initialHp; _activated = false; _playerPositionDelegate = playerPositionDelegate; _moverManager = moverManager; _bulletPatterns = bulletPatterns; }
public Boss(DnK gameRef, List <Player> players, int iteration = 50, float step = 25) { _gameRef = gameRef; _defeatCounter = 0; MoverManager = new MoverManager(gameRef); GameManager.GameDifficulty = Config.GameDifficultyDelegate; _players = players; _iteration = iteration; _step = step; _previousBossPart = null; _parts = new List <BossPart>(); _currentPartIndex = 0; int targetPlayerId = _gameRef.Rand.Next(0, _players.Count); MoverManager.Initialize(_players[targetPlayerId].GetPosition); }
public GameManager(XmasHell game) { _game = game; _bullets = new List <Bullet>(); _lasers = new List <Laser>(); _endGame = false; MoverManager = new MoverManager(_game); CollisionWorld = new CollisionWorld(_game); ParticleManager = new ParticleManager(_game); //Random = new Random(GameConfig.RandomSeed); Random = new Random(); _endGameTimer = new CountdownTimer(1); _endGameTimer.Stop(); _endGameTimer.Completed += EndGameTimerCompleted; _endGameFirstTime = true; }
public Turret( DnK gameRef, Entity parent, Entity target, MoverManager moverManager, Vector2 initialPosition, BulletPattern pattern, Color color) : base(gameRef) { _initialPosition = initialPosition; X = InitialPosition.X; Y = InitialPosition.Y; _parent = parent; _target = target; _moverManager = moverManager; _pattern = pattern; _timer = new TimeSpan(0, 0, (int)(GameRef.Rand.NextDouble() * 30)); _color = color; Scale = new Vector2(0.5f, 0.5f); }
public BossPart( GameRunner gameRef, Boss bossRef, Player player, MoverManager moverManager, List <BulletPattern> bulletPatterns, Color color, float initialHealth, Texture2D pixel, int iteration = 50, float step = 25, List <Turret> turrets = null, PolygonShape polygonShape = null, bool mainPart = false) : base(gameRef) { this.pixel = pixel; _bossRef = bossRef; _mainPart = mainPart; this.player = player; _moverManager = moverManager; _bulletPatterns = bulletPatterns ?? new List <BulletPattern>(); _health = initialHealth; _displayHp = false; _color = color; _iteration = iteration; _step = step; _accelerationDecreaseFactor = 0.00075f; _turrets = turrets ?? new List <Turret>(); _polygonShape = polygonShape; _collisionBoxesHp = new Dictionary <CollisionConvexPolygon, float>(); _targetPosition = Vector2.Zero; _targetAngle = 0f; }
public void Update(GameTime gameTime) { _timer -= gameTime.ElapsedGameTime; if (_timer < TimeSpan.Zero) { _timer = Config.BossInitialTimer; } // If the main part is destroyed, we destroy all parts // (or if the boss core is destroyed instead) if (!_core.IsAlive) { // Destroy all parts foreach (var part in Parts) { part.TakeDamage(9999); } _defeatCounter++; Reset(); } _core.Update(gameTime); if (!_mainPartIsDead && !_mainPart.IsAlive) { _mainPartIsDead = true; _core.Activate(); } for (int i = 0; i < _parts.Count; i++) { _parts[i].Update(gameTime); if (!_parts[i].IsAlive) { _parts.Remove(_parts[i]); } } // Check bullets to players collision for (int i = 0; i < MoverManager.movers.Count; i++) { foreach (var player in _players) { if (MoverManager.movers[i].Intersects(player)) { // Destroyed by shield? if (player.IsInvincible) { ParticleExplosion(MoverManager.movers[i].Position); MoverManager.RemoveBullet(MoverManager.movers[i]); } else { player.Hit(); } } } } if (Config.Debug) { /* * //check input to increment/decrement the current bullet pattern * if (InputHandler.KeyPressed(Keys.A)) * { * //decrement the pattern * if (0 >= _currentPatternIndex) * { * //if it is at the beginning, move to the end * _currentPatternIndex = _bulletPatterns.Count - 1; * } * else * { * _currentPatternIndex--; * } * * AddBullet(true); * } * else if (InputHandler.KeyPressed(Keys.X)) * { * //increment the pattern * if ((_bulletPatterns.Count - 1) <= _currentPatternIndex) * { * //if it is at the beginning, move to the end * _currentPatternIndex = 0; * } * else * { * _currentPatternIndex++; * } * * AddBullet(true); * } * else if (InputHandler.KeyPressed(Keys.LeftControl)) * { * AddBullet(false); * } * else */ if (_parts.Count > 0) { var currentBossPart = _parts[_currentPartIndex]; var dt = (float)gameTime.ElapsedGameTime.TotalSeconds * 100; if (InputHandler.KeyDown(Keys.Space)) { currentBossPart.GenerateStructure(); } else if (InputHandler.KeyPressed(Keys.OemPlus)) { currentBossPart.IterateStructure(); } else if (InputHandler.KeyDown(Keys.O)) { currentBossPart.IterateStructure(); } // Motion if (InputHandler.KeyPressed(Keys.N)) { _currentPartIndex = (_currentPartIndex + 1) % _parts.Count; } var acceleration = 0.1f; if (InputHandler.KeyDown(Keys.I)) { currentBossPart.ApplyImpulse(new Vector2(0, -1), new Vector2(acceleration)); } if (InputHandler.KeyDown(Keys.L)) { currentBossPart.ApplyImpulse(new Vector2(1, 0), new Vector2(acceleration)); } if (InputHandler.KeyDown(Keys.K)) { currentBossPart.ApplyImpulse(new Vector2(0, 1), new Vector2(acceleration)); } if (InputHandler.KeyDown(Keys.J)) { currentBossPart.ApplyImpulse(new Vector2(-1, 0), new Vector2(acceleration)); } // Left vector if (InputHandler.KeyDown(Keys.F)) { var direction = new Vector2( (float)-Math.Sin(currentBossPart.Rotation), (float)Math.Cos(currentBossPart.Rotation) ); currentBossPart.ApplyImpulse(direction, new Vector2(0.05f)); } // Right vector if (InputHandler.KeyPressed(Keys.G)) { var direction = new Vector2( (float)-Math.Cos(currentBossPart.Rotation) * -1, (float)Math.Sin(currentBossPart.Rotation) ); direction = new Vector2(-direction.Y, direction.X); currentBossPart.ApplyImpulse(direction, new Vector2(acceleration)); } if (InputHandler.KeyDown(Keys.PageUp)) { currentBossPart.ApplyAngularImpulse(.1f); } else if (InputHandler.KeyDown(Keys.PageDown)) { currentBossPart.ApplyAngularImpulse(-0.1f); } if (InputHandler.KeyPressed(Keys.H)) { currentBossPart.DisplayHpSwitch(); } } } MoverManager.Update(gameTime); MoverManager.FreeMovers(); }
public override void Update(GameTime gameTime) { float dt = (float)gameTime.ElapsedGameTime.TotalSeconds * 100; if (Position.Y < (75 + Sprite.Height / 2f)) { Position.Y += 1 * Speed * dt; if (Position.Y >= (75 + Sprite.Height / 2f)) { _ready = true; } } else { Rotation += _rotationIncrementor * dt; if (_rotationIncrementor < 1f) { _rotationIncrementor += 0.001f; } if (_health <= 0) { IsAlive = false; _deadSound.Play(); MoverManager.movers.Clear(); } if (Config.Debug) { //check input to increment/decrement the current bullet pattern if (InputHandler.KeyPressed(Keys.A)) { //decrement the pattern if (0 >= _currentPattern) { //if it is at the beginning, move to the end _currentPattern = _myPatterns.Count - 1; } else { _currentPattern--; } AddBullet(true); } else if (InputHandler.KeyPressed(Keys.X)) { //increment the pattern if ((_myPatterns.Count - 1) <= _currentPattern) { //if it is at the beginning, move to the end _currentPattern = 0; } else { _currentPattern++; } AddBullet(true); } else if (InputHandler.KeyPressed(Keys.LeftControl)) { AddBullet(false); } } _timer -= gameTime.ElapsedGameTime; if (_timer < TimeSpan.Zero) { _timer = Config.BossInitialTimer; /* * if (MoverManager.movers.Count < 10) * AddBullet(false); */ } if (MoverManager.movers.Count <= 1) { AddBullet(false); } MoverManager.Update(gameTime); MoverManager.FreeMovers(); } base.Update(gameTime); }
public static BaseMovableController AddEntityController(BaseMovable moveable, IPossibleMovements possibleMovements, MoverManager moverManager) { var controller = new EntityControllerFactory(); return(controller.CreateEntityController(moveable, possibleMovements, moverManager)); }
public override BaseMovableController CreateEntityController(BaseMovable moveable, IPossibleMovements possibleMovements, MoverManager moverManager) { var controller = base.CreateEntityController(moveable, possibleMovements, moverManager); var runningButton = new List <IButtonAble>(); AddKeyBoardButton(runningButton, Keys.LeftShift); AddKeyBoardButton(runningButton, Keys.RightShift); AddGamePadButton(runningButton, Buttons.B); var entity = moveable as Entity; if (entity != null) { var smartButton = new CompositeSmartButton(runningButton) { OnButtonJustPressed = (sender, args) => { entity.SpeedContext.SpeedState = new SpeedRunning(); }, OnButtonReleased = (sender, args) => { entity.SpeedContext.SpeedState = new SpeedNormal(); } }; controller.AddButton(smartButton); } return(controller); }
public abstract BaseMovableController CreateEntityController(BaseMovable entity, IPossibleMovements possibleMovements, MoverManager moverManager);
protected AbstractPathRenderer(MoverManager mover, BaseMovable moving) { Mover = mover; Moving = moving; }
public async void MoveEntityTo(Point endPoint, Entity entity, Point tileSize, MoverManager moverManager, bool interact = false, Point?interactWith = null) { var searchParams = new SearchParameters(entity.Position.ToPoint(), endPoint, CollisionSystem, new Size(Map.Width, Map.Height)); await Task.Run(() => { var path = new AStarPathFinder(searchParams, _possibleMovements).FindPath(); var pathMover = new PathMover(entity, new FinitePath(path), new ExpiringSpatialHashMovementComplete <Entity>(_expiringSpatialHash, PlayerEntity.Instance)); pathMover.OnCancelEvent += (sender, args) => entity.MovingDirection = new Vector2(); if (interact && interactWith != null) { pathMover.OnCompleteEvent += (sender, args) => Interact(interactWith.Value); } moverManager.AddMover(pathMover); }); }
public BaseMovableController(BaseMovable baseMovable, IPossibleMovements possibleMovements, MoverManager moverManager, IReadOnlyDictionary <Directions, List <IButtonAble> > directionButtons) { _possibleMovements = possibleMovements; ToMove = baseMovable; SmartController = new SmartController(); CreateCompositeButton(directionButtons[Directions.Up], baseMovable, new Vector2(0, -1), moverManager); CreateCompositeButton(directionButtons[Directions.Down], baseMovable, new Vector2(0, 1), moverManager); CreateCompositeButton(directionButtons[Directions.Left], baseMovable, new Vector2(-1, 0), moverManager); CreateCompositeButton(directionButtons[Directions.Right], baseMovable, new Vector2(1, 0), moverManager); }
public override BaseMovableController CreateEntityController(BaseMovable entity, IPossibleMovements possibleMovements, MoverManager moverManager) { var directions = new Dictionary <BaseMovableController.Directions, List <IButtonAble> > { [BaseMovableController.Directions.Down] = new List <IButtonAble>(), [BaseMovableController.Directions.Up] = new List <IButtonAble>(), [BaseMovableController.Directions.Left] = new List <IButtonAble>(), [BaseMovableController.Directions.Right] = new List <IButtonAble>() }; if (ControllerSettings.GamePadEnabled) { directions[BaseMovableController.Directions.Down].Add(new JoyStickGamePadButton(Buttons.DPadDown)); directions[BaseMovableController.Directions.Left].Add(new JoyStickGamePadButton(Buttons.DPadLeft)); directions[BaseMovableController.Directions.Up].Add(new JoyStickGamePadButton(Buttons.DPadUp)); directions[BaseMovableController.Directions.Right].Add(new JoyStickGamePadButton(Buttons.DPadRight)); } if (ControllerSettings.KeyBoardMouseEnabled) { directions[BaseMovableController.Directions.Down].Add(new KeyButton(Keys.S)); directions[BaseMovableController.Directions.Down].Add(new KeyButton(Keys.Down)); directions[BaseMovableController.Directions.Left].Add(new KeyButton(Keys.A)); directions[BaseMovableController.Directions.Left].Add(new KeyButton(Keys.Left)); directions[BaseMovableController.Directions.Up].Add(new KeyButton(Keys.Up)); directions[BaseMovableController.Directions.Up].Add(new KeyButton(Keys.W)); directions[BaseMovableController.Directions.Right].Add(new KeyButton(Keys.D)); directions[BaseMovableController.Directions.Right].Add(new KeyButton(Keys.Right)); } return(new BaseMovableController(entity, possibleMovements, moverManager, directions)); }
private void CreateCompositeButton(IEnumerable <IButtonAble> buttons, BaseMovable entityMover, Vector2 moveBy, MoverManager moverManager) { var smartButton = new CompositeSmartButton(buttons) { OnButtonJustPressed = (sender, args) => { ButtonsDown++; ToMove.Moving = PlayerMove; moverManager.RemoveMover(entityMover); MoveBy(moveBy, entityMover.Position); }, OnButtonHeldDown = (sender, args) => { ToMove.Moving = PlayerMove; MoveBy(moveBy, entityMover.Position); }, OnButtonReleased = (sender, args) => { ButtonsDown--; ToMove.Moving = PlayerMove; moverManager.RemoveMover(entityMover); Release(moveBy); } }; AddButton(smartButton); }
public EndPointPathRenderer(MoverManager mover, BaseMovable moving, Texture2D endTexture, Point pointSize) : base(mover, moving) { _pointSize = pointSize; _endTexture = endTexture; }