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);
            }
        }
Example #4
0
        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));
            }
        }
Example #5
0
    private void onServerItemMoved(GameServerEvent gameServerEvent, object data)
    {
        CPMMOItemPosition cPMMOItemPosition = (CPMMOItemPosition)data;

        Service.Get <EventDispatcher>().DispatchEvent(new WorldServiceEvents.ItemMoved(cPMMOItemPosition.Id, cPMMOItemPosition.Position));
    }