public LavaSpellEffect(Vector3Int origTile, Vector2Int direction, int lifespan, int originCount) { this.origTile = origTile; this.lifespan = lifespan; this.originCount = originCount; this.direction = direction; this.worldFunc = new WorldFunc(this.firstExec); }
public void firstExec() { GameMap gameMap = GameMap.getInstance(); if (originCount > 0) { while (gameMap.isAir(origTile)) { origTile = gameMap.getDropTile(origTile); } if (gameMap.isWater(origTile) || gameMap.isObstructed(origTile) || gameMap.isLava(origTile)) { return; } LinkedList <Tuple <Vector3Int, Vector2Int> > openTiles = findOpenTiles(gameMap); if (openTiles.Count > 0) { direction = openTiles.First().Item2; DirectionEnum directionKey = DirectionVectors.key(direction); gameMap.setDirection(origTile, directionKey); foreach (Tuple <Vector3Int, Vector2Int> openTile in openTiles) { EventQueue.getInstance().enqueue(new LavaSpellEffect(openTile.Item1, //direction, openTile.Item2, lifespan, originCount - 1), 1); } } /* * ArrayList nextObjects = DirectionEnumFunc.isCardinal(DirectionVectors.key(direction)) ? * determineNextObjectsCardinal(gameMap) : * determineNextObjectsNonCardinal(gameMap); * DirectionEnum directionKey = DirectionVectors.key(direction); * gameMap.setDirection(origTile, directionKey); * foreach (Vector2Int nextDirection in nextObjects) { * Vector3Int nextTile = origTile + nextDirection; * if (!gameMap.isObstructed(nextTile)) * { * EventQueue.getInstance().enqueue(new LavaSpellEffect(nextTile, direction, lifespan, originCount - 1),1); * } * }*/ } gameMap.setLava(origTile); ++age; this.worldFunc = new WorldFunc(this.nextExec); EventQueue.getInstance().enqueue(this, 1); }