Esempio n. 1
0
        // 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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }