コード例 #1
0
 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);
 }
コード例 #2
0
        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);
        }