예제 #1
0
        private IEnumerator triggerTubeRace(PartyGameLobbyMmoItemTeamDefinition lobbyData, int templateId, int minutesBetweenLaunches, TubeRaceDefinition raceDefinition)
        {
            while (true)
            {
                yield return(new WaitForSeconds(minutesBetweenLaunches * 60 - lobbyData.LobbyLengthInSeconds));

                PartygameLobbyMmoItem cpItem = new PartygameLobbyMmoItem
                {
                    CreatorId            = -1L,
                    gameTemplateId       = templateId,
                    Id                   = new CPMMOItemId(generateMMOItemId(), CPMMOItemId.CPMMOItemParent.WORLD),
                    playerData           = "{\"Players\":[]}",
                    timeStartedInSeconds = DateTime.UtcNow.GetTimeInSeconds(),
                    timeToLive           = lobbyData.LobbyLengthInSeconds
                };
                processEvent(GameServerEvent.SERVER_ITEM_ADDED, cpItem);
                CPMMOItemPosition position = default(CPMMOItemPosition);
                position.Id       = cpItem.Id;
                position.Position = lobbyData.LobbyLocation;
                processEvent(GameServerEvent.SERVER_ITEM_MOVED, position);
                TubeRaceWorldObject worldObject = new TubeRaceWorldObject(cpItem, processEvent, partyGameSessionManager, raceDefinition);
                worldObjects.Add(worldObject);
                yield return(new WaitForSeconds(lobbyData.LobbyLengthInSeconds));

                worldObject.StartRace();
                worldObjects.Remove(worldObject);
                processEvent(GameServerEvent.SERVER_ITEM_REMOVED, cpItem.Id);
            }
        }
        private void getDefinitions()
        {
            Dictionary <int, PartyGameDefinition> dictionary = Service.Get <IGameData>().Get <Dictionary <int, PartyGameDefinition> >();

            if (dictionary.ContainsKey(3))
            {
                partyGameDefinition   = dictionary[3];
                danceBattleDefinition = (DanceBattleDefinition)partyGameDefinition.GameData;
                lobbyDefinition       = (PartyGameLobbyMmoItemTeamDefinition)partyGameDefinition.LobbyData;
                launcherDefinition    = PartyGameUtils.GetPartyGameLauncherForPartyGameId(partyGameDefinition.Id);
            }
        }
예제 #3
0
        private void startTubeRacingSchedule()
        {
            Dictionary <int, PartyGameLauncherDefinition> dictionary = Service.Get <IGameData>().Get <Dictionary <int, PartyGameLauncherDefinition> >();

            TubeRaceLobby[] array  = UnityEngine.Object.FindObjectsOfType <TubeRaceLobby>();
            TubeRaceLobby[] array2 = array;
            foreach (TubeRaceLobby tubeRaceLobby in array2)
            {
                PartyGameDefinition gameDefinition = tubeRaceLobby.GameDefinition;
                if (!(gameDefinition != null) || !dictionary.TryGetValue(gameDefinition.Id, out var value))
                {
                    continue;
                }
                PartyGameLobbyMmoItemTeamDefinition partyGameLobbyMmoItemTeamDefinition = gameDefinition.LobbyData as PartyGameLobbyMmoItemTeamDefinition;
                if (partyGameLobbyMmoItemTeamDefinition != null)
                {
                    TubeRaceDefinition tubeRaceDefinition = gameDefinition.GameData as TubeRaceDefinition;
                    if (tubeRaceDefinition != null)
                    {
                        coroutines.Add(CoroutineRunner.StartPersistent(triggerTubeRace(partyGameLobbyMmoItemTeamDefinition, gameDefinition.Id, value.EveryXMinutesAfterTheHour, tubeRaceDefinition), this, "triggerTubeRace"));
                    }
                }
            }
        }