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); } }
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")); } } } }