예제 #1
0
 void ShowStench()
 {
     for (int i = 0; i <= stench; i++)
     {
         List <Node> tilesReachable = grid.TilesReachables(this, stench - i);
         foreach (Node tile in tilesReachable)
         {
             Collider[] tilesInSpace = Physics.OverlapSphere(grid.CalcWorldPos(tile.x, transform.position.y - 1, tile.y), 0.1f);
             for (int j = 0; j < tilesInSpace.Length; j++)
             {
                 if (GetComponent <Minotaur> ())
                 {
                     tilesInSpace [j].SendMessage("MinotaurDistance", stench - i);
                 }
                 else
                 {
                     tilesInSpace [j].SendMessage("PlayerDistance", stench - i);
                 }
             }
         }
     }
 }
예제 #2
0
    bool SurroundingOk()
    {
        bool        ok = true;
        List <Node> surroundingNodes = grid.TilesReachables(thisUnit, thisUnit.stench);

        // Para cada tile na área de visão do player
        foreach (var node in surroundingNodes)
        {
            Minotaur minotaur = FindObjectOfType <Minotaur>();
            if (minotaur)
            {
                // Se o minotauro está no tile
                if (GameObject.Find(node.lXcY).GetComponent <Tile>().minotaurNear == 0)
                {
                    // e eu não sabia que ele tava vivo,
                    if (!kdb.CheckVar("isAlive", minotaur.gameObject.name))
                    {
                        // agora sei que está vivo!
                        kdb.Add("isAlive", minotaur.gameObject.name);
                    }
                    // e eu não sabia que ele estava nesse tile,
                    if (!kdb.CheckRelation("atTile", minotaur.gameObject.name, node.lXcY))
                    {
                        // agora sei que está naquele tile, e tenho que repensar o plano.
                        kdb.Add("atTile", minotaur.gameObject.name, node.lXcY);
                        ok = false;
                    }
                }
                // Se o minotauro não está no tile
                else
                {
                    // e eu achava que ele estava nesse tile,
                    if (kdb.CheckRelation("atTile", minotaur.gameObject.name, node.lXcY))
                    {
                        // agora sei que ele não está nesse tile, e tenho que repensar o plano.
                        kdb.Remove("atTile", minotaur.gameObject.name, node.lXcY);
                        ok = false;
                    }
                }
            }
            else
            {
                // Minotauro está morto, então arrumo meu conhecimento se eu achava que ele estava em algum lugar.
                kdb.Remove("isAlive", "minotaur");
                kdb.Remove("atTile", "minotaur");
            }
        }
        return(ok);
    }