Пример #1
0
        public bool savePlaylist(LevelPlaylist selectedPlaylist, string name)
        {
            // playlists are attached to game objects
            // when a new level loads, all existing game objects are destroyed so we cannot properly save them
            // instead, we make a new one and copy the old playlist into the new object.
            LevelPlaylist list = LevelPlaylist.Create(true);

            list.CopyFrom(selectedPlaylist);
            list.IsCustom_   = true;
            selectedPlaylist = list;
            switch (name)
            {
            case "current":
            {
                if (canUseCurrentPlaylist)
                {
                    G.Sys.GameManager_.LevelPlaylist_.CopyFrom(selectedPlaylist);
                    G.Sys.GameManager_.LevelPlaylist_.SetIndex(0);
                    GeneralUtilities.updateGameManagerCurrentLevel();
                    StaticTargetedEvent <Events.ServerToClient.SetLevelName.Data> .Broadcast(RPCMode.All, G.Sys.GameManager_.CreateSetLevelNameEventData());

                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            case "upcoming":
            {
                if (canUseCurrentPlaylist)
                {
                    var currentPlaylist = G.Sys.GameManager_.LevelPlaylist_;
                    if (currentPlaylist.Count_ > currentPlaylist.Index_ + 1)
                    {
                        currentPlaylist.Playlist_.RemoveRange(currentPlaylist.Index_ + 1, currentPlaylist.Count_ - currentPlaylist.Index_ - 1);
                    }
                    foreach (LevelPlaylist.ModeAndLevelInfo level in selectedPlaylist.Playlist_)
                    {
                        currentPlaylist.Add(level);
                    }
                    currentPlaylist.IsCustom_ = true;
                    GeneralUtilities.updateGameManagerCurrentLevel();
                    StaticTargetedEvent <Events.ServerToClient.SetLevelName.Data> .Broadcast(RPCMode.All, G.Sys.GameManager_.CreateSetLevelNameEventData());

                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            case "active":
            {
                return(true);
            }

            default:
            {
                selectedPlaylist.Name_ = name;
                selectedPlaylist.Save();
                return(true);
            }
            }
        }