void Awake() { tileChangeManager = transform.root.GetComponent <TileChangeManager>(); tileTrigger = transform.root.GetComponent <TileTrigger>(); metaDataLayer = transform.parent.GetComponent <MetaDataLayer>(); metaTileMap = transform.parent.GetComponent <MetaTileMap>(); Layer = GetComponent <Layer>(); }
public void takeDamage(TileTrigger tileTrigger, Element damageType = Element.PHYSICAL) { if (health - calculateDefenseDamage(tileTrigger.damage, damageType) <= 0) { health = 0; dying = true; } else { health -= calculateDefenseDamage(tileTrigger.damage, damageType); } SetHit(); }
public void LoadWorld(int id) { Logger.Log("Loading world id " + id, true); //Clear ALL enemies/projectiles/tiles/etc entityLivings.Clear(); tiles.Clear(); if (id == 0) { player = Player.CreatePlayer(new Vector2(0, 0), 1); TileStatic.CreateTileStatic(new Rectangle(0, 0, 512, 512), Assets.tile_grass1, 0); TileStatic.CreateTileStatic(new Rectangle(512, 0, 64, 512), Assets.tile_rockwall, 4, true, Directions.West); TileStatic.CreateTileStatic(new Rectangle(0, 512, 512, 64), Assets.tile_rockwall, 4, true, Directions.North); TileStatic.CreateTileStatic(new Rectangle(512, 512, 64, 64), Assets.tile_rockwall, 4, true, Directions.NorthWest); //TileTrigger.CreateTileTrigger(new Rectangle(64, 0, 64, 64), true, 5, "<intro_3>"); TileTrigger.CreateTileTriggerDialogue(new Rectangle(64, 0, 64, 64), false, "<default>"); TileTrigger.CreateTileTriggerKillBox(new Rectangle(128, 0, 64, 64), false); ItemEntity.CreateItemEntity(new Vector2(576 + 64, 576), Vector2.Zero, ItemStack.CreateItemStack(ItemWeapon.CreateItemWeapon(0), 1), 1); ItemEntity.CreateItemEntity(new Vector2(576 + 128, 576 - 36), Vector2.Zero, ItemStack.CreateItemStack(ItemWeapon.CreateItemWeapon(1), 58), 1); Enemy.CreateEnemy(new Vector2(576, 0), 2, 0); ambientColor = new Color(25, 25, 50, 100); } if (id == 1) { player = Player.CreatePlayer(Vector2.Zero, 1); Enemy.CreateEnemy(new Vector2(500, 300), 1, 0); Enemy.CreateEnemy(new Vector2(300, 500), 1, 1); TileStatic.CreateTileStatic(new Rectangle(128, 128, 64, 64), "tile_grass1", 0); TileStatic.CreateTileStatic(new Rectangle(128, 360, 128, 64), "tile_grass1", 0); } drawnTileRenderTarget = false; }
private int RunMoveTile(GameObject tile, Vector3 position, Vector3 target, List <TileMover> movers) { // Priorities -> // 1 - If there's a blocker that stops us before this tile, then stop there and don't move // onto the tile // 2 - If we're able to move onto the tile // there's something in our way, but we may be able to move onto / over it TileTrigger trigger = tile.GetComponent <TileTrigger>(); if (trigger) { if (trigger.ResponseType == TileTrigger.TriggerResponseType.StopOn) { // This is a trigger we should stop on return(MoveStopOn); } else { // Trigger does not stop movement return(MoveNone); } } // Not a trigger, maybe it's a blocker? TileBlocker blocker = tile.GetComponent <TileBlocker>(); if (blocker) { switch (blocker.CheckBlock(position, target)) { case TileBlocker.BlockType.MoveOn: // Move onto the blocker, but stop there return(MoveStopOn); case TileBlocker.BlockType.None: return(MoveNone); case TileBlocker.BlockType.StopInfront: return(MoveBlocked); } } // A tile mover can be moved by us, but we need to calculate the move appropriately TileMover mover = tile.GetComponent <TileMover>(); if (mover) { switch (mover.MoveType) { case TileMover.TileMoveType.MoveThrough: return(MoveNone); // Can just move through the mover case TileMover.TileMoveType.Block: return(MoveBlocked); // Mover is set to not move, so we're blocked case TileMover.TileMoveType.Push: // Process this later. If nothing else is blocking us, we might be able to push this mover. movers.Add(mover); return(MoveNone); } } return(MoveBlocked); // A wall }
public void LoadWorldFromFile(string mapFilePath, bool playerDefaultPos = true) { tiles.Clear(); entityLivings.Clear(); itemEntities.Clear(); player = Player.CreatePlayer(new Vector2(0, 0), 1); string[] data = Utilities.ReadFile(mapFilePath, "<data>"); int numberTiles = Int32.Parse(data[0]), numberEntities = Int32.Parse(data[1]); for (int i = 0; i < numberTiles; i++) { string[] tileData = Utilities.ReadFile(mapFilePath, "<tile" + (i + 1) + ">"); string type = tileData[0]; switch (type) { case "static": { Rectangle bounds = Utilities.CreateRectangleFromStrings(tileData[1].Split(',')); string texName = tileData[2]; int createLayer = Int32.Parse(tileData[3]); string rawisWall = tileData[4]; bool isWall = rawisWall == "true" ? true : false; TileStatic.CreateTileStatic(bounds, texName, createLayer, isWall, ParseDirections.ParseStringToDirections(tileData[5])); break; } case "trigger": { string triggerType = tileData[1]; string[] bounds = tileData[2].Split(','); switch (triggerType) { case "dialogue": { string rawtriggerOnce = tileData[3]; bool triggerOnce = rawtriggerOnce == "true" ? true : false; string dialogueKey = tileData[4]; TileTrigger.CreateTileTriggerDialogue(Utilities.CreateRectangleFromStrings(bounds), triggerOnce, dialogueKey); break; } case "damage": { TileTrigger.CreateTileTriggerDamageBox(Utilities.CreateRectangleFromStrings(bounds), false, 0); //todo implement damage tile trigger break; } case "kill": { TileTrigger.CreateTileTriggerKillBox(Utilities.CreateRectangleFromStrings(bounds), false); break; } } break; } } } for (int i = 0; i < numberEntities; i++) { string[] entityData = Utilities.ReadFile(mapFilePath, "<entity" + (i + 1) + ">"); string type = entityData[0]; int id = Int32.Parse(entityData[1]); Vector2 pos = Utilities.CreateVector2FromStrings(entityData[2].Split(',')); int layer = Int32.Parse(entityData[3]); switch (type) { case "enemy": { Enemy.CreateEnemy(pos, layer, id); break; } case "item": { //ItemEntity.CreateItemEntity(pos, ) break; } } } }
public void DealtDamage(TileTrigger tileTrigger) { takeDamage(tileTrigger); guiHUD.UpdateHealthBar(); }