Example #1
0
    /// <summary>
    /// what happend when interact with board
    /// </summary>
    /// <param name="action"> action id 0 build 1 sell</param>
    void InteractWithBoard(state action)
    {
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;// out param

        if (Physics.Raycast(ray, out hit))
        {
            Vector3 gridPos = board.CalculateGridPosition(hit.point);
            if (!EventSystem.current.IsPointerOverGameObject())
            {
                if (action.Equals(state.build) && board.CheckForBuildingAtPosition(gridPos) == null)
                {
                    // build building
                    if (city.Cash >= selectedBuilding.cost)
                    {
                        // check cash
                        city.DepositCash(-selectedBuilding.cost);
                        uIController.UpdateCityData();
                        city.buildingCounts[selectedBuilding.id]++;
                        board.AddBuilding(selectedBuilding, gridPos);
                    }
                }
                else if (action.Equals(state.sell) && board.CheckForBuildingAtPosition(gridPos) != null)
                {
                    // if building on pos is not null
                    city.DepositCash(board.CheckForBuildingAtPosition(gridPos).cost / 2);
                    // refund half of value
                    board.RemoveBuilding(gridPos);
                    uIController.UpdateCityData();
                }
            }
        }
    }
    //coroutines

    /*
     * Wander: corrutina del estado Wander que llamará al método WanderAction mientras que el
     * agente se encuentre en ese estado.
     */
    IEnumerator Wander()
    {
        while (currentState.Equals(state.Wander))
        {
            WanderAction();
            yield return(new WaitForSeconds(0.1f));
        }
    }
Example #3
0
            public List <state> genMaxTerm(int max)
            {
                if (!hasTerminatingState)
                {
                    throw new Exception("No terminating state");
                }
                List <state> ret = new List <state>();

                ret.Add(currentState);
                int  i       = 0;
                bool tryQuit = false;

                while (!currentState.Equals(terminatingState))
                {
                    state s = step();
                    i++;
                    if (i >= max)
                    {
                        tryQuit = true;
                    }
                    if (tryQuit && s.transitions.Contains(terminatingState.identifier))
                    {
                        ret.Add(s);
                        ret.Add(terminatingState);
                        break;
                    }
                    //if (tryQuit) Console.WriteLine("Overtime");
                    ret.Add(s);
                }
                return(ret);
            }
Example #4
0
 public static int stateToInt(state s)
 {
     if (s.Equals(state.visitor))
     {
         return(0);
     }
     return(1);
 }