// abstract graphics from the physics // 2D array of integers, representing the tile // 0, 1 wall, etc // check element array next to it // scale by a constant, tile at row, 4, col 2, multiple by pixel size // tutorials, scale up without blurry protected override void LoadForeground() { var player = new GameObject("PlayerOne", new Vector2(0, 0)); var sprites = new SpriteMappingComponent(RpgGraphics.GameboySpriteMapping, "Player1"); var nextItem = new KeyboardEventComponent(Keys.X, ObjectEvent.NextItem); var previousItem = new KeyboardEventComponent(Keys.Z, ObjectEvent.PreviousItem); var useItem = new KeyboardActionComponent(Keys.Enter, UseItem); var useAction = new KeyboardActionComponent(Keys.Space, UseAction); // TODO: Could be refactored into single class. // Need to apply movement constraints based off grid var moveUp = new KeyboardEventComponent(Keys.Up, ObjectEvent.MoveUp); var moveDown = new KeyboardEventComponent(Keys.Down, ObjectEvent.MoveDown); var moveLeft = new KeyboardEventComponent(Keys.Left, ObjectEvent.MoveLeft); var moveRight = new KeyboardEventComponent(Keys.Right, ObjectEvent.MoveRight); var gridMovement = new GridMovementComponent(16); player.AddComponent(sprites); player.AddComponent(nextItem); player.AddComponent(previousItem); player.AddComponent(useItem); player.AddComponent(useAction); player.AddComponent(moveUp); player.AddComponent(moveDown); player.AddComponent(moveLeft); player.AddComponent(moveRight); player.AddComponent(gridMovement); ForegroundLayer.AddGameObject(player); }
protected override void LoadDisplay() { var player = new GameObject("PlayerOneSelection", new Vector2(10, 10)); var playerText = new TextComponent(FontGraphics.PropertialFont_8X8, "PLAYER ONE"); var startText = new TextComponent(FontGraphics.PropertialFont_8X8, "PRESS SPACE TO START", new Vector2(0, 100)); var counter = new CounterComponent(ObjectEvent.PreviousCharacter, ObjectEvent.NextCharacter, 0, _playerCharacters.Count() - 1); var sprites = new SpriteMappingsComponent(RpgGraphics.GameboySpriteMapping, _playerCharacters, new Vector2(10, 50), counter); var nextCharacter = new KeyboardEventComponent(Keys.Right, ObjectEvent.NextCharacter); var previousCharacter = new KeyboardEventComponent(Keys.Left, ObjectEvent.PreviousCharacter); var action = new KeyboardActionComponent(Keys.Space, Action); player.AddComponent(playerText); player.AddComponent(startText); player.AddComponent(counter); player.AddComponent(sprites); player.AddComponent(nextCharacter); player.AddComponent(previousCharacter); player.AddComponent(action); DisplayLayer.AddGameObject(player); }
private void CreatePlayerTwo(Vector2 startPosition) { var player = new GameObject("PlayerTwoSelection", new Vector2(10, 10) + startPosition); var playerText = new TextComponent(FontGraphics.PropertialFont_8X8, "PLAYER TWO"); var startText = new TextComponent(FontGraphics.PropertialFont_8X8, "PRESS TAB TO START", new Vector2(0, 100)); var counter = new CounterComponent(ObjectEvent.PreviousCharacter, ObjectEvent.NextCharacter, 0, _playerCharacters.Count() - 1); var sprites = new SpriteMappingsComponent(RpgGraphics.GameboySpriteMapping, _playerCharacters, new Vector2(10, 50), counter); var nextCharacter = new KeyboardEventComponent(Keys.D, ObjectEvent.NextCharacter); var previousCharacter = new KeyboardEventComponent(Keys.A, ObjectEvent.PreviousCharacter); var action = new KeyboardActionComponent(Keys.Tab, Action); player.AddComponent(playerText); player.AddComponent(startText); player.AddComponent(counter); player.AddComponent(sprites); player.AddComponent(nextCharacter); player.AddComponent(previousCharacter); player.AddComponent(action); DisplayLayer.AddGameObject(player); }
private void CreatePlayer() { var xPosition = GameHelper.GetRelativeScaleX(0.5f); var yPosition = GameHelper.GetRelativeScaleY(0.8f); // PLAYER var player = new GameObject(TopDown.PlayerName, new Vector2(xPosition, yPosition)); // GENERAL var texture = SpaceGraphics.PlayerShipAsset.First(); var sprite = new SpriteComponent(texture); var boundary = new BoundaryComponent(SpaceGraphics.BoundaryAsset.First(), texture.Width, texture.Height); player.AddComponent(boundary); player.AddComponent(sprite); // MOVEMENT var movement = new MovementComponent(5, FaceDirection.Up, Vector2.Zero); var localKeyboard = new LocalKeyboardComponent(); var input = new InputComponent(InputHelper.KeyboardMappedKey(), localKeyboard, movement); player.AddComponent(movement); player.AddComponent(input); // THRUSTER var thrusterLeft = new SpriteComponent(SpaceGraphics.FlameAsset, new Vector2(2, 16), color: Color.BlueViolet); var thrusterRight = new SpriteComponent(SpaceGraphics.FlameAsset, new Vector2(11, 16), color: Color.BlueViolet); player.AddComponent(thrusterLeft); player.AddComponent(thrusterRight); // GUNS var gunLeft = new SpriteComponent(SpaceGraphics.PlayerGunLeftAsset, new Vector2(-6, 8), color: Color.White); var gunRight = new SpriteComponent(SpaceGraphics.PlayerGunRightAsset, new Vector2(16, 8), color: Color.White); player.AddComponent(gunLeft); player.AddComponent(gunRight); // STATE var state = new StateComponent(); state.AddComponentState(thrusterLeft, movement); state.AddComponentState(thrusterRight, movement); player.AddComponent(state); // HEALTH var healthCounter = new CounterIncrementComponent(ObjectEvent.CollisionEnter, ObjectEvent.HealthRemoved, ObjectEvent.HealthEmpty, ObjectEvent.HealthReset, 5, 0); var healthBar = new SpriteRepeaterComponent(SpaceGraphics.HealthBarAsset.First(), new Vector2(0, 35), false, ObjectEvent.HealthRemoved, healthCounter, false, Color.ForestGreen); //healthBar.SetDynamicColors(Color.DarkRed, Color.Red, Color.Orange, Color.Yellow, Color.ForestGreen); healthBar.SetColorEvent(ObjectEvent.HealthRemoved, HealthColourFunc); player.AddComponent(healthCounter); player.AddComponent(healthBar); // TODO: Refactor into their own game objects that are attached to PlayerObject // FIRING - MACHINE GUN var machineGun = new BulletComponent(TopDown.PlayerBulletName, SpaceGraphics.LargeBulletAsset, movement, ObjectEvent.AmmoRemoved, ObjectEvent.AmmoEmpty, ObjectEvent.AmmoReset, 20, Color.DarkOrange, 0, null, TopDown.EnemyBulletName); var ammoCounter = new CounterIncrementComponent(ObjectEvent.Fire, ObjectEvent.AmmoRemoved, ObjectEvent.AmmoEmpty, ObjectEvent.AmmoReset, 50, 0); var ammoBar = new SpriteRepeaterComponent(SpaceGraphics.OnePixelBarAsset.First(), new Vector2(-25, 25), true, ObjectEvent.AmmoRemoved, ammoCounter, true, Color.Red); var ammoMovement = new EventMovementComponent(new Vector2(0, 2), ObjectEvent.AmmoRemoved); var ammoSound = new EventSoundComponent(SpaceSounds.Sound_LongFire01, ObjectEvent.AmmoRemoved); player.AddComponent(machineGun); player.AddComponent(ammoCounter); player.AddComponent(ammoMovement); player.AddComponent(ammoBar); player.AddComponent(ammoSound); // FIRING - MISSILE var missileKeyboard = new KeyboardEventComponent(Keys.Z, ObjectEvent.MissileFire); var missile = new BulletComponent(TopDown.PlayerBulletName, SpaceGraphics.MissileAsset, movement, ObjectEvent.MissileRemoved, ObjectEvent.MissileEmpty, ObjectEvent.MissileReset, 0, Color.White, 0.5f, new Vector2(-10, 5), TopDown.EnemyBulletName); var missileCounter = new CounterIncrementComponent(ObjectEvent.MissileFire, ObjectEvent.MissileRemoved, ObjectEvent.MissileEmpty, ObjectEvent.MissileReset, 50, 0); var missileBar = new SpriteRepeaterComponent(SpaceGraphics.OnePixelBarAsset.First(), new Vector2(-30, 25), true, ObjectEvent.MissileRemoved, missileCounter, true, Color.DarkGray); var missileMovement = new EventMovementComponent(new Vector2(0, 5), ObjectEvent.MissileRemoved); var missileSound = new EventSoundComponent(SpaceSounds.Sound_ShortFire01, ObjectEvent.MissileRemoved); missile.SetCollisionAction(MissileCollision); player.AddComponent(missileKeyboard); player.AddComponent(missile); player.AddComponent(missileCounter); player.AddComponent(missileMovement); player.AddComponent(missileBar); player.AddComponent(missileSound); // FIRING - LASER var laserKeyboard = new KeyboardEventComponent(Keys.C, ObjectEvent.LaserFire); var laser = new BulletComponent(TopDown.PlayerBulletName, SpaceGraphics.LaserAsset, movement, ObjectEvent.LaserRemoved, ObjectEvent.LaserEmpty, ObjectEvent.LaserReset, 20, Color.LightBlue, 0, new Vector2(10, 5), TopDown.EnemyBulletName, TopDown.EnemyName); var laserCounter = new CounterIncrementComponent(ObjectEvent.LaserFire, ObjectEvent.LaserRemoved, ObjectEvent.LaserEmpty, ObjectEvent.LaserReset, 50, 0); var laserBar = new SpriteRepeaterComponent(SpaceGraphics.OnePixelBarAsset.First(), new Vector2(-20, 25), true, ObjectEvent.LaserRemoved, laserCounter, true, Color.Blue); var laserMovement = new EventMovementComponent(new Vector2(0, 1), ObjectEvent.LaserRemoved); var laserSound = new EventSoundComponent(SpaceSounds.Sound_ShortFire01, ObjectEvent.LaserRemoved); player.AddComponent(laserKeyboard); player.AddComponent(laser); player.AddComponent(laserCounter); player.AddComponent(laserMovement); player.AddComponent(laserBar); player.AddComponent(laserSound); // DAMAGE var fireCounter = new CounterIncrementComponent(ObjectEvent.CollisionEnter, ObjectEvent.ElectricalFire, ObjectEvent.Ignore, ObjectEvent.Ignore, 0, 5, false); var fireSprite = new SpriteGenericComponent(SpaceGraphics.FireAsset, Vector2.Zero, ObjectEvent.ElectricalFire, fireCounter, RandomDrawMethod); player.AddComponent(fireCounter); player.AddComponent(fireSprite); // DEATH var deathEvent = new ObjectEventComponent(ObjectEvent.HealthEmpty, PlayerDeath); player.AddComponent(deathEvent); ForegroundLayer.AddGameObject(player); }