// 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); }
public static void GenerateFromCsv(string csv, SpriteMapping spriteMapping, GameLayer layer) { var spriteNames = CsvHelper.ReadCsv(csv); var tiles = TransformNamesToVectors(spriteNames, spriteMapping.Width, spriteMapping.Height); foreach (var tile in tiles) { var tileNames = tile.Value; var tileArray = tileNames.Split(';'); var tileName = string.Format("Tile_{0}_{1}_{2}", tileNames, tile.Key.X, tile.Key.Y); var gameObject = new GameObject(tileName, tile.Key); var spriteName = tileArray[0]; var sprite = new SpriteMappingComponent(spriteMapping, spriteName); if (tileArray.Count() > 1) { var blockingProperty = tileArray[1]; if (blockingProperty.ToUpperInvariant() == "B") { var boundary = new BoundaryComponent(spriteMapping.Width, spriteMapping.Height); gameObject.AddComponent(boundary); } } gameObject.AddComponent(sprite); layer.AddGameObject(gameObject); } }
protected override void LoadDisplay() { var xCentre = GameConstants.ScreenBoundary.Width / 2; var yCentre = GameConstants.ScreenBoundary.Height / 2; var display = new GameObject("Text", new Vector2(xCentre, yCentre)); var font = FontGraphics.PropertialFont_8X8; var textSimpleRpg = new TextComponent(font, "SIMPLE RPG", new Vector2(-75, -25), 2); var textEnter = new TextComponent(font, "PRESS ENTER", new Vector2(-80, 25), 2); var shield = new SpriteMappingComponent(RpgGraphics.GameboySpriteMapping, "Sword10", new Vector2(-250, 0), 3f); var sword = new SpriteMappingComponent(RpgGraphics.GameboySpriteMapping, "Shield10", new Vector2(200, 0), 3f); var action = new KeyboardActionComponent(Keys.Enter, Action); display.AddComponent(textSimpleRpg); display.AddComponent(textEnter); display.AddComponent(shield); display.AddComponent(sword); display.AddComponent(action); DisplayLayer.AddGameObject(display); }
private GameObject CreatePlayer(string playerCharacter, int xStartPosition, int yStartPosition, Keys key) { var player = new GameObject(playerCharacter, new Vector2(xStartPosition, yStartPosition)); // TODO: Pass in the actual player selected character through constructor var sprites = new SpriteMappingComponent(RpgGraphics.GameboySpriteMapping, playerCharacter); var bounday = new BoundaryComponent(null, 16, 16); var constantMovement = new AccelerateMovementComponent(GetMovement); var collisionEvent = new ObjectEventComponent(ObjectEvent.CollisionEnter, CollisionEnter); var collisionExit = new ObjectEventComponent(ObjectEvent.CollisionExit, CollisionExit); var keyAction = new KeyboardActionComponent(key, PlayerAttacked); player.AddComponent(sprites); player.AddComponent(bounday); player.AddComponent(constantMovement); player.AddComponent(collisionEvent); player.AddComponent(collisionExit); player.AddComponent(keyAction); ForegroundLayer.AddGameObject(player); return(player); }