public override IEnumerator Consume(int partialCount, string type, object properties) { base.type = type; item = new TimedItem(timeToLive); item.Id = new CPMMOItemId(client.generateMMOItemId(), CPMMOItemId.CPMMOItemParent.WORLD); item.CreatorId = client.clubPenguinClient.PlayerSessionId; item.Type = type; ConsumableMMODeployedEvent data = default(ConsumableMMODeployedEvent); data.SessionId = client.clubPenguinClient.PlayerSessionId; data.ExperienceId = item.Id.Id; Vector3 vecPosition = Vector3.zero; if (properties is Vector3) { vecPosition = (Vector3)properties; } CPMMOItemPosition position = default(CPMMOItemPosition); position.Id = item.Id; position.Position = vecPosition; yield return(null); client.processEvent(GameServerEvent.CONSUMABLE_MMO_DEPLOYED, data); yield return(base.Consume(partialCount, type, properties)); yield return(null); client.processEvent(GameServerEvent.SERVER_ITEM_ADDED, item); yield return(null); client.processEvent(GameServerEvent.SERVER_ITEM_MOVED, position); client.activeConsumables.Add(this); yield return(countDown()); }
private void startScheduledWorldObjects() { ScheduledWorldObjectConfiguration[] array = UnityEngine.Object.FindObjectsOfType <ScheduledWorldObjectConfiguration>(); foreach (ScheduledWorldObjectConfiguration scheduledWorldObjectConfiguration in array) { List <StatefulWorldObject> list = new List <StatefulWorldObject>(); Transform[] componentsInChildren = scheduledWorldObjectConfiguration.GetComponentsInChildren <Transform>(); foreach (Transform transform in componentsInChildren) { if (!(transform == scheduledWorldObjectConfiguration.transform)) { StatefulWorldObject statefulWorldObject = new StatefulWorldObject(); statefulWorldObject.CreatorId = -1L; statefulWorldObject.Id = new CPMMOItemId(generateMMOItemId(), CPMMOItemId.CPMMOItemParent.WORLD); statefulWorldObject.State = ScheduledWorldObjectState.Inactive; statefulWorldObject.Path = transform.GetPath(); statefulWorldObject.Timestamp = 0L; StatefulWorldObject statefulWorldObject2 = statefulWorldObject; processEvent(GameServerEvent.SERVER_ITEM_ADDED, statefulWorldObject2); CPMMOItemPosition cPMMOItemPosition = default(CPMMOItemPosition); cPMMOItemPosition.Id = statefulWorldObject2.Id; cPMMOItemPosition.Position = transform.position; processEvent(GameServerEvent.SERVER_ITEM_MOVED, cPMMOItemPosition); list.Add(statefulWorldObject2); } } coroutines.Add(CoroutineRunner.StartPersistent(triggerScheduledWorldObjects(scheduledWorldObjectConfiguration, list), this, "triggerScheduledWorldObjects")); } }
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 onProximityListUpdate(BaseEvent evt) { RoomMember roomMember; foreach (User item in (List <User>)evt.Params["addedUsers"]) { roomMember = default(RoomMember); roomMember.Id = getSessionId(item); roomMember.Name = item.Name; mt.triggerEvent(GameServerEvent.ROOM_USER_ADDED, roomMember); LocomotionActionEvent locomotionActionEvent = default(LocomotionActionEvent); locomotionActionEvent.SessionId = getSessionId(item); locomotionActionEvent.Type = LocomotionAction.SnapToPosition; locomotionActionEvent.Position = new Vector3(item.AOIEntryPoint.FloatX, item.AOIEntryPoint.FloatY, item.AOIEntryPoint.FloatZ); locomotionActionEvent.Direction = Vector3.zero; locomotionActionEvent.Timestamp = 0L; mt.triggerEvent(GameServerEvent.USER_LOCO_ACTION, locomotionActionEvent); broadcastUserVariables(item); } foreach (User item2 in (List <User>)evt.Params["removedUsers"]) { roomMember = default(RoomMember); roomMember.Id = getSessionId(item2); roomMember.Name = item2.Name; mt.triggerEvent(GameServerEvent.ROOM_USER_REMOVED, roomMember); item2.UserManager.RemoveUser(item2); } foreach (IMMOItem item3 in (List <IMMOItem>)evt.Params["addedItems"]) { CPMMOItem cPMMOItem = ItemFactory.Create(item3, getSessionId); mt.triggerEvent(GameServerEvent.SERVER_ITEM_ADDED, cPMMOItem); CPMMOItemPosition cPMMOItemPosition = default(CPMMOItemPosition); cPMMOItemPosition.Id = cPMMOItem.Id; cPMMOItemPosition.Position = new Vector3(item3.AOIEntryPoint.FloatX, item3.AOIEntryPoint.FloatY, item3.AOIEntryPoint.FloatZ); mt.triggerEvent(GameServerEvent.SERVER_ITEM_MOVED, cPMMOItemPosition); } foreach (IMMOItem item4 in (List <IMMOItem>)evt.Params["removedItems"]) { mt.triggerEvent(GameServerEvent.SERVER_ITEM_REMOVED, new CPMMOItemId(item4.Id, CPMMOItemId.CPMMOItemParent.WORLD)); } }
private void onServerItemMoved(GameServerEvent gameServerEvent, object data) { CPMMOItemPosition cPMMOItemPosition = (CPMMOItemPosition)data; Service.Get <EventDispatcher>().DispatchEvent(new WorldServiceEvents.ItemMoved(cPMMOItemPosition.Id, cPMMOItemPosition.Position)); }