Inheritance: MonoBehaviour
Esempio n. 1
0
    private void SchedulePressureNeighbor(KeyValuePair <string, GameObject> neighborPair, GameObject currentZone)
    {
        PressureZone pressureScript      = currentZone.GetComponent <PressureZone>();
        Vector2      currentZonePosition = currentZone.transform.position;

        // if there is an existing pressure zone, add pressure to it
        if (neighborPair.Value != null)
        {
            changeActionsQueue.AddLast(CreateDirectAction(ActionTypes.PRESSURE_CHANGE, pressureScript.ExertedPressure, neighborPair.Value));
        }
        // else add to pressure values to put into pressure creator
        else
        {
            // neighbor's position
            Vector2 adjustedVector = Directions.directionFromCenter[neighborPair.Key](currentZonePosition);
            if (boardScript.PositionIsOnBoard(adjustedVector))
            {
                if (!newPressureZoneAddresses.Contains(adjustedVector))
                {
                    createActionsQueue.AddLast(CreateAddressAction(ActionTypes.CREATE, 0, adjustedVector));
                    newPressureZoneAddresses.Add(adjustedVector);
                }

                changeActionsQueue.AddLast(CreateAddressAction(ActionTypes.PRESSURE_CHANGE, pressureScript.ExertedPressure, adjustedVector));
            }
            else
            {
            }
        }
    }
Esempio n. 2
0
    public void ResolvePressureZone(GameObject zone)
    {
        PressureZone pressureScript = zone.GetComponent <PressureZone>();

        int        pressureResult = pressureScript.CheckPressure();
        GameObject replacement    = null;

        switch (pressureResult)
        {
        case 1:
            replacement = pressureScript.SpawnOnOverPressure();
            break;

        case -1:
            replacement = pressureScript.SpawnOnUnderPressure();
            break;

        default:
            break;
        }
        if (pressureResult != 0)
        {
            Vector2 position = zone.transform.position;
            removeActionsQueue.AddLast(CreateDirectAction(ActionTypes.REMOVE, ZoneTypes.GetZoneType(pressureScript), zone));
            if (replacement != null)
            {
                // create on replacement
                GameObject instance = Instantiate(replacement, position, Quaternion.identity) as GameObject;
                createActionsQueue.AddLast(CreateDirectAction(ActionTypes.CREATE, pressureScript.Pressure, instance));
            }
        }
        zeroActionsQueue.AddLast(CreateDirectAction(ActionTypes.PRESSURE_ZERO, pressureScript.Pressure, zone));
    }
Esempio n. 3
0
 private void TurnRewindMechanism()
 {
     ActionController.instance.Rewind();
     foreach (GameObject obj in boardScript.GetPressureZones())
     {
         PressureZone zone = obj.GetComponent <PressureZone>();
     }
 }
Esempio n. 4
0
    private void PressureExistingNeighbor(GameObject neighbor, int exertedPressure)
    {
        if (neighbor == null)
        {
            return;
        }
        PressureZone neighborScript = neighbor.GetComponent <PressureZone>();

        neighborScript.IncrementPressure(exertedPressure);
    }
Esempio n. 5
0
    protected void AddPressureZone(GameObject zone)
    {
        boardScript.AddPressureZone(zone);
        PressureZone pressureScript = zone.GetComponent <PressureZone>();

        // if zone is not on the board or on a brick
        if (!boardScript.PositionIsOnBoard(zone.transform.position) || (boardScript.PositionIsBrick(zone.transform.position) && pressureScript.GetType() != typeof(Brick)))
        {
            IssueAction(CreateDirectAction(ActionTypes.REMOVE, ZoneTypes.GetZoneType(pressureScript), zone));
        }
    }
Esempio n. 6
0
 public static int GetZoneType(PressureZone zone)
 {
     if (zone is Unit)
     {
         return(UNIT);
     }
     if (zone is Brick)
     {
         return(BRICK);
     }
     return(PRESSURE_ZONE);
 }
Esempio n. 7
0
    void UpdatePressureZones()
    {
        List <GameObject> ExistingPressureZones = boardScript.GetPressureZones();

        for (int i = 0; i < ExistingPressureZones.Count; i++)
        {
            GameObject   currentZone    = ExistingPressureZones[i];
            PressureZone pressureScript = currentZone.GetComponent <PressureZone>();
            // check pressure if it this zone exerts pressure
            if (pressureScript.ExertedPressure != 0)
            {
                // must check neighbors
                Dictionary <string, GameObject> neighbors = pressureScript.CheckNeighbors();

                SchedulePressureNeighbors(neighbors, currentZone);
            }
            else
            {
            }
        }
    }
Esempio n. 8
0
 private bool IsTrackedZone(PressureZone zone)
 {
     return(true);// (zone.GetType() != typeof(Brick));
 }