public UnityAction LeaveLevelBounds(CamTransitionType ctt) { return(() => { m_manager.UnfilteredTransition(ctt); }); }
public void UnfilteredTransition(CamTransitionType type) { if ((type == CamTransitionType.Room_Down || type == CamTransitionType.Room_Left || type == CamTransitionType.Room_Right || type == CamTransitionType.Room_Up) && (m_gridElements.camPos != CamPos.InRoom)) { return; //Return if invalid transition request } Debug.Log("UnfilteredTransition - " + type + " from " + m_gridElements.camPos); switch (type) { case CamTransitionType.HW_New: { GameObject temp; Vector3 shiftVal = new Vector3(0, 0, 0); switch (m_gridElements.camPos) { case CamPos.BotHW: { shiftVal = -(new Vector3(0, 0, m_levelH + 6)); //Vx1 temp = m_gridElements.HW_V11; m_gridElements.HW_V11 = m_gridElements.HW_V21; m_gridElements.HW_V21 = m_gridElements.HW_V31; temp.transform.position += 3 * shiftVal; m_gridElements.HW_V31 = temp; //Vx2 temp = m_gridElements.HW_V12; m_gridElements.HW_V12 = m_gridElements.HW_V22; m_gridElements.HW_V22 = m_gridElements.HW_V32; temp.transform.position += 3 * shiftVal; m_gridElements.HW_V32 = temp; //H1x temp = m_gridElements.HW_H11; m_gridElements.HW_H11 = m_gridElements.HW_H12; temp.transform.position += 2 * shiftVal; m_gridElements.HW_H12 = temp; //H2x temp = m_gridElements.HW_H21; m_gridElements.HW_H21 = m_gridElements.HW_H22; temp.transform.position += 2 * shiftVal; m_gridElements.HW_H22 = temp; //H3x temp = m_gridElements.HW_H31; m_gridElements.HW_H31 = m_gridElements.HW_H32; temp.transform.position += 2 * shiftVal; m_gridElements.HW_H32 = temp; //NxL temp = m_gridElements.NodeTL; m_gridElements.NodeTL = m_gridElements.NodeBL; temp.transform.position += 2 * shiftVal; m_gridElements.NodeBL = temp; //NxR temp = m_gridElements.NodeTR; m_gridElements.NodeTR = m_gridElements.NodeBR; temp.transform.position += 2 * shiftVal; m_gridElements.NodeBR = temp; break; } case CamPos.TopHW: { shiftVal = (new Vector3(0, 0, m_levelH + 6)); //Vx1 temp = m_gridElements.HW_V31; m_gridElements.HW_V31 = m_gridElements.HW_V21; m_gridElements.HW_V21 = m_gridElements.HW_V11; temp.transform.position += 3 * shiftVal; m_gridElements.HW_V11 = temp; //Vx2 temp = m_gridElements.HW_V32; m_gridElements.HW_V32 = m_gridElements.HW_V22; m_gridElements.HW_V22 = m_gridElements.HW_V12; temp.transform.position += 3 * shiftVal; m_gridElements.HW_V12 = temp; //H1x temp = m_gridElements.HW_H12; m_gridElements.HW_H12 = m_gridElements.HW_H11; temp.transform.position += 2 * shiftVal; m_gridElements.HW_H11 = temp; //H2x temp = m_gridElements.HW_H22; m_gridElements.HW_H22 = m_gridElements.HW_H21; temp.transform.position += 2 * shiftVal; m_gridElements.HW_H21 = temp; //H3x temp = m_gridElements.HW_H32; m_gridElements.HW_H32 = m_gridElements.HW_H31; temp.transform.position += 2 * shiftVal; m_gridElements.HW_H31 = temp; //NxL temp = m_gridElements.NodeBL; m_gridElements.NodeBL = m_gridElements.NodeTL; temp.transform.position += 2 * shiftVal; m_gridElements.NodeTL = temp; //NxR temp = m_gridElements.NodeBR; m_gridElements.NodeBR = m_gridElements.NodeTR; temp.transform.position += 2 * shiftVal; m_gridElements.NodeTR = temp; break; } case CamPos.LeftHW: { shiftVal = -(new Vector3(m_levelW + 6, 0, 0)); //Hx1 temp = m_gridElements.HW_H31; m_gridElements.HW_H31 = m_gridElements.HW_H21; m_gridElements.HW_H21 = m_gridElements.HW_H11; temp.transform.position += 3 * shiftVal; m_gridElements.HW_H11 = temp; //Hx2 temp = m_gridElements.HW_H32; m_gridElements.HW_H32 = m_gridElements.HW_H22; m_gridElements.HW_H22 = m_gridElements.HW_H12; temp.transform.position += 3 * shiftVal; m_gridElements.HW_H12 = temp; //V1x temp = m_gridElements.HW_V12; m_gridElements.HW_V12 = m_gridElements.HW_V11; temp.transform.position += 2 * shiftVal; m_gridElements.HW_V11 = temp; //V2x temp = m_gridElements.HW_V22; m_gridElements.HW_V22 = m_gridElements.HW_V21; temp.transform.position += 2 * shiftVal; m_gridElements.HW_V21 = temp; //V3x temp = m_gridElements.HW_V32; m_gridElements.HW_V32 = m_gridElements.HW_V31; temp.transform.position += 2 * shiftVal; m_gridElements.HW_V31 = temp; //NTx temp = m_gridElements.NodeTR; m_gridElements.NodeTR = m_gridElements.NodeTL; temp.transform.position += 2 * shiftVal; m_gridElements.NodeTL = temp; //NBx temp = m_gridElements.NodeBR; m_gridElements.NodeBR = m_gridElements.NodeBL; temp.transform.position += 2 * shiftVal; m_gridElements.NodeBL = temp; break; } case CamPos.RightHW: { shiftVal = (new Vector3(m_levelW + 6, 0, 0)); //Hx1 temp = m_gridElements.HW_H11; m_gridElements.HW_H11 = m_gridElements.HW_H21; m_gridElements.HW_H21 = m_gridElements.HW_H31; temp.transform.position += 3 * shiftVal; m_gridElements.HW_H31 = temp; //Hx2 temp = m_gridElements.HW_H12; m_gridElements.HW_H12 = m_gridElements.HW_H22; m_gridElements.HW_H22 = m_gridElements.HW_H32; temp.transform.position += 3 * shiftVal; m_gridElements.HW_H32 = temp; //V1x temp = m_gridElements.HW_V11; m_gridElements.HW_V11 = m_gridElements.HW_V12; temp.transform.position += 2 * shiftVal; m_gridElements.HW_V12 = temp; //V2x temp = m_gridElements.HW_V21; m_gridElements.HW_V21 = m_gridElements.HW_V22; temp.transform.position += 2 * shiftVal; m_gridElements.HW_V22 = temp; //V3x temp = m_gridElements.HW_V31; m_gridElements.HW_V31 = m_gridElements.HW_V32; temp.transform.position += 2 * shiftVal; m_gridElements.HW_V32 = temp; //NTx temp = m_gridElements.NodeTL; m_gridElements.NodeTL = m_gridElements.NodeTR; temp.transform.position += 2 * shiftVal; m_gridElements.NodeTR = temp; //NBx temp = m_gridElements.NodeBL; m_gridElements.NodeBL = m_gridElements.NodeBR; temp.transform.position += 2 * shiftVal; m_gridElements.NodeBR = temp; break; } case CamPos.InRoom: { Debug.Log("Attempted room switch whilst midroom"); break; } default: break; } m_gridElements.worldCentre += shiftVal; m_gridElements.camPos = CamPos.InRoom; m_camera.LerpMoveFocus(m_gridElements.worldCentre); GenerateLevel newLevel = OutLevelSlot(m_gridElements.worldCentre.x, m_gridElements.worldCentre.z); if (FilterManager.IsHappy) { //Hacky fix to first transition backtrack bugs newLevel = m_gridElements.LevelNext; InLevelSlot(newLevel); } if (m_gridElements.LevelLast != null && newLevel != m_gridElements.LevelLast) { m_gridElements.LevelLast.SetActiveLevel(false); } m_gridElements.LevelLast = m_gridElements.LevelCurrent; m_gridElements.LevelCurrent = newLevel; m_gridElements.LevelCurrent.SetShadowMode(false); m_gridElements.LevelCurrent.SetPauseMode(false); if (FilterManager.IsHappy) { //Hacky fix to first transition backtrack bugs m_currentUFLIndex++; m_gridElements.LevelNext = m_unfilteredLevelGenerations[m_currentUFLIndex]; } else { PlayerBlock.PlayerStarter.ActivateEnemy(); } //TODO Unhardcode this level 3 spot //TODO activate and darken next level if (FilterManager.IsHappy) { FilterManager.IsHappy = false; } break; } case CamTransitionType.HW_Old: { m_camera.LerpMoveFocus(m_gridElements.worldCentre); m_gridElements.LevelCurrent.SetShadowMode(false); Vector2 OLSInput = new Vector2(100000, 100000); if (!FilterManager.IsHappy) { switch (m_gridElements.camPos) { case CamPos.BotHW: { OLSInput = new Vector2(m_gridElements.worldCentre.x, m_gridElements.worldCentre.z - m_levelH - 6); break; } case CamPos.TopHW: { OLSInput = new Vector2(m_gridElements.worldCentre.x, m_gridElements.worldCentre.z + m_levelH + 6); break; } case CamPos.LeftHW: { OLSInput = new Vector2(m_gridElements.worldCentre.x - m_levelW - 6, m_gridElements.worldCentre.z); break; } case CamPos.RightHW: { OLSInput = new Vector2(m_gridElements.worldCentre.x + m_levelW + 6, m_gridElements.worldCentre.z); break; } case CamPos.InRoom: { Debug.Log("Attempted room backtrack whilst midroom"); break; } default: break; } GenerateLevel LevelAvoided = OutLevelSlot(OLSInput.x, OLSInput.y); if (LevelAvoided != m_gridElements.LevelLast) { m_gridElements.LevelLast.SetActiveLevel(false); m_gridElements.LevelLast = LevelAvoided; } } m_gridElements.camPos = CamPos.InRoom; break; } case CamTransitionType.Room_Left: { if (FilterManager.IsHappy) { FilterManager.IsAlmostDark = true; } m_gridElements.camPos = CamPos.LeftHW; m_camera.LerpMoveFocus(m_gridElements.worldCentre - new Vector3(m_levelW / 2 + 3, 0, 0)); HighwayEntryAddedCode(-new Vector3(m_levelW + 6, 0, 0)); break; } case CamTransitionType.Room_Right: { if (FilterManager.IsHappy) { FilterManager.IsAlmostDark = true; } m_gridElements.camPos = CamPos.RightHW; m_camera.LerpMoveFocus(m_gridElements.worldCentre + new Vector3(m_levelW / 2 + 3, 0, 0)); HighwayEntryAddedCode(new Vector3(m_levelW + 6, 0, 0)); break; } case CamTransitionType.Room_Up: { if (FilterManager.IsHappy) { FilterManager.IsAlmostDark = true; } m_gridElements.camPos = CamPos.TopHW; m_camera.LerpMoveFocus(m_gridElements.worldCentre + new Vector3(0, 0, m_levelH / 2 + 3)); HighwayEntryAddedCode(new Vector3(0, 0, m_levelH + 6)); break; } case CamTransitionType.Room_Down: { if (FilterManager.IsHappy) { FilterManager.IsAlmostDark = true; } m_gridElements.camPos = CamPos.BotHW; m_camera.LerpMoveFocus(m_gridElements.worldCentre - new Vector3(0, 0, m_levelH / 2 + 3)); HighwayEntryAddedCode(-new Vector3(0, 0, m_levelH + 6)); break; } default: break; } DebugGridArrayPrint(); }