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 { } } }
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)); }
private void TurnRewindMechanism() { ActionController.instance.Rewind(); foreach (GameObject obj in boardScript.GetPressureZones()) { PressureZone zone = obj.GetComponent <PressureZone>(); } }
private void PressureExistingNeighbor(GameObject neighbor, int exertedPressure) { if (neighbor == null) { return; } PressureZone neighborScript = neighbor.GetComponent <PressureZone>(); neighborScript.IncrementPressure(exertedPressure); }
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)); } }
public static int GetZoneType(PressureZone zone) { if (zone is Unit) { return(UNIT); } if (zone is Brick) { return(BRICK); } return(PRESSURE_ZONE); }
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 { } } }
private bool IsTrackedZone(PressureZone zone) { return(true);// (zone.GetType() != typeof(Brick)); }