Exemplo n.º 1
0
 public UnityAction LeaveLevelBounds(CamTransitionType ctt)
 {
     return(() =>
     {
         m_manager.UnfilteredTransition(ctt);
     });
 }
Exemplo n.º 2
0
    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();
    }