void Start()
 {
     if (lom == null)
     {
         lom = this.gameObject.GetComponent <LevelObjectManager>();
     }
 }
 public static LevelObjectManager GetInstance()
 {
     if(_instance == null)
     {
         GameObject gameScreensObject = GameObject.Find("LevelObjectManager") as GameObject;
         _instance = gameScreensObject.GetComponent<LevelObjectManager>();
     }
     return _instance;
 }
Beispiel #3
0
    private void LoadLevelObjects(LevelImporter importer)
    {
        List <LevelObject> objects            = importer.loadLevel(Resources.Load <TextAsset>(PlayerPrefs.GetInt("CurrentLevel", 0).ToString()).text);
        LevelObjectManager levelObjectManager = GetComponent <LevelObjectManager>();
        LevelsCollection   levels             = importer.loadMetadata(Resources.Load <TextAsset>("levels").text);

        LevelsCollection.Level level = levels.levels[PlayerPrefs.GetInt("CurrentLevel", 0)];
        levelObjectManager.GridSize = new Vector2Int(level.gridSizeX, level.gridSizeY);
        for (int i = 0; i < objects.Count; i++)
        {
            levelObjectManager.InstantiateLevelObject(objects[i]);
        }
    }
Beispiel #4
0
 void LoadLevel(LevelCompletionInfo completionInfo = default)
 {
     if (!IsDone)
     {
         screenBlocker        = GameObject.Find("ScreenBlocker");
         CurrentObjectManager = this;
         World.SetCurrent(new World(LoadLevelName + ".lv5")); // set the current world
         PlayMusic(Context);                                  // play the level music
         LoadingPercentage = 0;                               // update the percent complete of level layer loading
         isLoadingLevel    = true;
         int timeRemaining = World.Current.Level.LevelTime;   // set the time remaining for the level
         levelTime = TimeSpan.FromSeconds(timeRemaining);
         World.Current.LoadSave(completionInfo);              // load save information for the current world
         Player.CurrentPlayer = Assets.Scripts.Game.PlayerEnum.ANYONE;
         LoadNext();
     }
 }
Beispiel #5
0
    // Update is called once per frame
    void Update()
    {
        if (dying)
        {
            float deathTime = 2.5f;
            dyingTimer += Time.deltaTime;
            if (dyingTimer >= deathTime)
            {
                LevelObjectManager.ReloadLevel(); // reset the level
                dying      = false;
                dyingTimer = 0f;
            }
            return;         // prevent player control when dying.
        }
        _ = TileMoveScript; // force update of component
        PlayerEnum updatingPlayer = PlayerName == "spongebob" ? PlayerEnum.SPONGEBOB : PlayerEnum.PATRICK;
        bool       currentPlayer  = (PlayerName == "spongebob" && CurrentPlayer == PlayerEnum.SPONGEBOB) ||
                                    (PlayerName == "patrick" && CurrentPlayer == PlayerEnum.PATRICK);

        if (updatingPlayer == swappingPlayer && playerSwapping) // this frame is the update frame after swapping
        {
            playerSwapping = false;
        }
        if (currentPlayer)
        {
            Current = this;
            if (!IsMoving)
            {
                if (Input.GetKey(KeyCode.W)) // forward
                {
                    WalkToTile(TileX, TileY - 1);
                    rotator.Rotate(SRotation.NORTH);
                }
                else if (Input.GetKey(KeyCode.S)) // backward
                {
                    WalkToTile(TileX, TileY + 1);
                    rotator.Rotate(SRotation.SOUTH);
                }
                else if (Input.GetKey(KeyCode.A)) // left
                {
                    WalkToTile(TileX - 1, TileY);
                    rotator.Rotate(SRotation.WEST);
                }
                else if (Input.GetKey(KeyCode.D)) // right
                {
                    WalkToTile(TileX + 1, TileY);
                    rotator.Rotate(SRotation.EAST);
                }
                if (Input.GetKeyDown(KeyCode.Q))
                {
                    TileMoveScript.NoClip = !TileMoveScript.NoClip; // no clip toggle
                }
                if (Input.GetKeyDown(KeyCode.K))
                {
                    KillAllPlayers(); // kill me now
                }
            }
            if (Input.GetKeyDown(KeyCode.Space) && !playerSwapping)
            {
                swappingPlayer = CurrentPlayer;
                switch (CurrentPlayer) // switch current player
                {
                case PlayerEnum.SPONGEBOB:
                    CurrentPlayer = PlayerEnum.PATRICK;     // patrick
                    break;

                case PlayerEnum.PATRICK:
                    CurrentPlayer = PlayerEnum.SPONGEBOB;     // spongebob
                    break;
                }
                SoundLoader.Play("teleport.wav", false);
                playerSwapping = true;
            }
        }
    }
Beispiel #6
0
 public void GoToLevel(string levelName)
 {
     LevelObjectManager.ChangeLevel(levelName, true);
 }
Beispiel #7
0
 public void RestartLevel() => LevelObjectManager.ReloadLevel();
Beispiel #8
0
 public void SkipLevel() => LevelObjectManager.SignalLevelCompleted(true);
Beispiel #9
0
 public void ReturnToMap() => LevelObjectManager.SignalLevelCompleted(false);