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)); }
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)); } }