Ejemplo n.º 1
0
    private void setAfkProp(PropDefinition propDefinition)
    {
        if (propDefinition == null)
        {
        }
        DHeldObject dHeldObject = new DHeldObject();

        switch (propDefinition.PropType)
        {
        case PropDefinition.PropTypes.Consumable:
            dHeldObject.ObjectType = HeldObjectType.CONSUMABLE;
            break;

        case PropDefinition.PropTypes.Durable:
            dHeldObject.ObjectType = HeldObjectType.DURABLE;
            break;

        case PropDefinition.PropTypes.InteractiveObject:
            dHeldObject.ObjectType = HeldObjectType.DISPENSABLE;
            break;

        case PropDefinition.PropTypes.PartyGame:
            dHeldObject.ObjectType = HeldObjectType.PARTYGAME;
            break;
        }
        dHeldObject.ObjectId = propDefinition.NameOnServer;
        if (AvatarDataHandle.TryGetPlayerHandle(base.gameObject, out DataEntityHandle handle))
        {
            dataEntityCollection.GetComponent <HeldObjectsData>(handle).HeldObject = dHeldObject;
            isUsingAFKProp = true;
        }
    }
 private void changedHeldObject(DHeldObject obj)
 {
     if (this.PlayerHeldObjectChanged != null)
     {
         this.PlayerHeldObjectChanged(obj);
     }
 }
Ejemplo n.º 3
0
 private void clearAfkProp()
 {
     if (AvatarDataHandle.TryGetPlayerHandle(base.gameObject, out DataEntityHandle handle))
     {
         if (presenceData.AFKState.EquippedObject != null)
         {
             DHeldObject dHeldObject = new DHeldObject();
             dHeldObject.ObjectId = presenceData.AFKState.EquippedObject.EquippedObjectId;
             if (presenceData.AFKState.EquippedObject.IsConsumable())
             {
                 dHeldObject.ObjectType = HeldObjectType.CONSUMABLE;
             }
             else if (presenceData.AFKState.EquippedObject.IsDurable())
             {
                 dHeldObject.ObjectType = HeldObjectType.DURABLE;
             }
             else if (presenceData.AFKState.EquippedObject.IsDispensable())
             {
                 dHeldObject.ObjectType = HeldObjectType.DISPENSABLE;
             }
             else if (presenceData.AFKState.EquippedObject.isPartyGame())
             {
                 dHeldObject.ObjectType = HeldObjectType.PARTYGAME;
             }
             dataEntityCollection.GetComponent <HeldObjectsData>(handle).HeldObject = dHeldObject;
         }
         else
         {
             dataEntityCollection.GetComponent <HeldObjectsData>(handle).HeldObject = null;
         }
     }
     isUsingAFKProp = false;
 }
Ejemplo n.º 4
0
        private bool onLocalPlayerSpawned(PlayerSpawnedEvents.LocalPlayerSpawned evt)
        {
            if (LocalPlayerPropUser == null)
            {
                LocalPlayerPropUser = evt.LocalPlayerGameObject.GetComponent <PropUser>();
            }
            SessionIdData component = dataEntityCollection.GetComponent <SessionIdData>(evt.Handle);

            if (component != null)
            {
                userIdToPropUser[component.SessionId] = LocalPlayerPropUser;
                DHeldObject heldObject = dataEntityCollection.GetComponent <HeldObjectsData>(dataEntityCollection.LocalPlayerHandle).HeldObject;
                if (heldObject != null && heldObject.ObjectId != null)
                {
                    onPlayerPropRetrieved(heldObject.ObjectId, GetPropDefinition(heldObject.ObjectId).PropAssetContentKey, component.SessionId);
                }
                loadExistingPlayerHeldExperiences(component.SessionId);
                loadExistingWorldExperiences();
                if (dataEntityCollection.TryGetComponent <PropToBeRestoredData>(evt.Handle, out var component2))
                {
                    LocalPlayerRetrieveProp(component2.PropId);
                    dataEntityCollection.RemoveComponent <PropToBeRestoredData>(evt.Handle);
                }
            }
            return(false);
        }
Ejemplo n.º 5
0
        private IEnumerator WaitForGamePropBeforeCasting()
        {
            yield return(new WaitForSeconds(1f));

            CPDataEntityCollection dataEntityCollection = Service.Get <CPDataEntityCollection>();
            bool isReadyToCast = false;

            if (!dataEntityCollection.LocalPlayerHandle.IsNull)
            {
                DHeldObject heldObject = dataEntityCollection.GetComponent <HeldObjectsData>(dataEntityCollection.LocalPlayerHandle).HeldObject;
                isReadyToCast = heldObject != null;
            }
            if (isReadyToCast)
            {
                IncrementPlayCount();
                minigameService.CastFishingRod(this);
                yield return(new WaitForSeconds(5f));

                if (_gameplayState == FishingGameplayStates.WaitingForServer)
                {
                    finishMinigame();
                }
            }
            else
            {
                finishMinigame();
            }
        }
Ejemplo n.º 6
0
        private void onPlayerHeldItemChanged(DHeldObject heldObject)
        {
            DataEntityHandle playerHandle = PlayerHandle;

            if (!heldObjectsData.IsInvitationalExperience && dataEntityCollection.TryGetComponent <SessionIdData>(playerHandle, out var component))
            {
                Service.Get <PropService>().PlayerHeldObjectChanged(component.SessionId, heldObject);
            }
        }
Ejemplo n.º 7
0
        public void LocalPlayerRetrieveProp(string propId)
        {
            if (LocalPlayerPropUser == null)
            {
                Log.LogError(this, "The local player was asked to retrieve a prop before the spawn event was raised");
            }
            else if (LocalPlayerPropUser.gameObject == null || LocalPlayerPropUser.gameObject.Equals(null))
            {
                Log.LogError(this, "The local player game object is not set");
            }
            else
            {
                if (dataEntityCollection.LocalPlayerSessionId == 0)
                {
                    return;
                }
                if (!Props.ContainsKey(propId))
                {
                    throw new InvalidOperationException("There is no prop definition for " + propId);
                }
                PropDefinition             propDefinition      = Props[propId];
                InvitationalItemExperience componentInChildren = LocalPlayerPropUser.GetComponentInChildren <InvitationalItemExperience>();
                if (componentInChildren != null)
                {
                    PropExperience componentInChildren2 = LocalPlayerPropUser.GetComponentInChildren <PropExperience>();
                    if (componentInChildren2 != null && componentInChildren2.PropDef != null && componentInChildren2.PropDef.Id.ToString() != propId)
                    {
                        Service.Get <EventDispatcher>().DispatchEvent(new InputEvents.ActionEvent(InputEvents.Actions.Cancel));
                    }
                }
                DHeldObject dHeldObject = new DHeldObject();
                dHeldObject.ObjectId = propId;
                switch (propDefinition.PropType)
                {
                case PropDefinition.PropTypes.Consumable:
                    dHeldObject.ObjectType = HeldObjectType.CONSUMABLE;
                    Service.Get <INetworkServicesManager>().ConsumableService.EquipItem(propId);
                    break;

                case PropDefinition.PropTypes.InteractiveObject:
                    dHeldObject.ObjectType = HeldObjectType.DISPENSABLE;
                    if (LocalPlayerPropUser.GetComponent <LocomotionBroadcaster>() != null)
                    {
                        Service.Get <INetworkServicesManager>().PlayerStateService.EquipDispensable(propDefinition.Id);
                    }
                    break;

                case PropDefinition.PropTypes.Durable:
                    dHeldObject.ObjectType = HeldObjectType.DURABLE;
                    Service.Get <INetworkServicesManager>().PlayerStateService.EquipDurable(propDefinition.Id);
                    break;
                }
                dataEntityCollection.GetComponent <HeldObjectsData>(dataEntityCollection.LocalPlayerHandle).HeldObject = dHeldObject;
            }
        }
Ejemplo n.º 8
0
 private void onHeldObjectChanged(DHeldObject obj)
 {
     if (obj != null)
     {
         for (int i = 0; i < Props.Length; i++)
         {
             if (!(Props[i] == null) && Props[i].isDefinition(obj.ObjectId))
             {
                 Change(propsIdSet.Contains(obj.ObjectId));
                 return;
             }
         }
     }
     Change(onoff: false);
 }
 private bool onSessionPaused(SessionEvents.SessionPausedEvent evt)
 {
     if (isInvitationLocalPlayer && dataEntityCollection.TryGetComponent <HeldObjectsData>(dataEntityCollection.LocalPlayerHandle, out var component))
     {
         DHeldObject heldObject = component.HeldObject;
         if (heldObject != null)
         {
             dataEntityCollection.AddComponent(dataEntityCollection.LocalPlayerHandle, delegate(PropToBeRestoredData restoreData)
             {
                 restoreData.PropId = heldObject.ObjectId;
             });
             removeItem();
         }
     }
     return(false);
 }
Ejemplo n.º 10
0
        private bool onServerObjectItemAdded(DataEntityEvents.ComponentAddedEvent <ServerObjectItemData> evt)
        {
            Vector3 zero = Vector3.zero;

            if (evt.Component.Item.Id.Parent == CPMMOItemId.CPMMOItemParent.WORLD)
            {
                if (evt.Component.Item is ConsumableItem)
                {
                    new ServerObjectTracker(this, evt.Handle, evt.Component);
                }
                if (userIdToPropUser.ContainsKey(evt.Component.Item.CreatorId))
                {
                    PropUser propUser = userIdToPropUser[evt.Component.Item.CreatorId];
                    if (propUser.PendingExperienceId == evt.Component.Item.Id.Id)
                    {
                        propUser.PendingExperienceId = -1L;
                    }
                }
            }
            PlayerHeldItem playerHeldItem = evt.Component.Item as PlayerHeldItem;

            if (playerHeldItem != null)
            {
                string type = playerHeldItem.Type;
                if (!Props.ContainsKey(type))
                {
                    throw new InvalidOperationException("There is no prop definition for " + type);
                }
                if (Props[type].ServerAddedItem)
                {
                    DHeldObject dHeldObject = new DHeldObject();
                    dHeldObject.ObjectId = type;
                    DataEntityHandle dataEntityHandle = ((!dataEntityCollection.IsLocalPlayer(evt.Component.Item.CreatorId)) ? dataEntityCollection.FindEntity <SessionIdData, long>(evt.Component.Item.CreatorId) : dataEntityCollection.LocalPlayerHandle);
                    if (!dataEntityHandle.IsNull)
                    {
                        dataEntityCollection.GetComponent <HeldObjectsData>(dataEntityHandle).HeldObject = dHeldObject;
                        evt.Component.ItemChanged += onCPMMOItemChanged;
                    }
                }
                else
                {
                    onPropUsed(evt.Component.Item.CreatorId, playerHeldItem.Type, evt.Component.Item.Id.Id.ToString(), zero);
                }
            }
            return(false);
        }
Ejemplo n.º 11
0
 public void PlayerHeldObjectChanged(long playerId, DHeldObject obj)
 {
     if (obj == null || obj.ObjectId == null)
     {
         if (userIdToPropUser.TryGetValue(playerId, out var value) && value.Prop != null && value.PendingExperienceId == -1)
         {
             onPropStored(playerId);
         }
     }
     else if (dataEntityCollection.IsLocalPlayer(playerId))
     {
         if (LocalPlayerPropUser != null)
         {
             onPlayerPropRetrieved(obj.ObjectId, GetPropDefinition(obj.ObjectId).PropAssetContentKey, playerId);
         }
     }
     else
     {
         onPlayerPropRetrieved(obj.ObjectId, GetPropDefinition(obj.ObjectId).PropAssetContentKey, playerId);
     }
 }
        private void onItemRemoved()
        {
            CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>();
            DHeldObject            dHeldObject            = null;

            if (isInvitationLocalPlayer)
            {
                dHeldObject = cPDataEntityCollection.GetComponent <HeldObjectsData>(cPDataEntityCollection.LocalPlayerHandle).HeldObject;
            }
            else
            {
                DataEntityHandle dataEntityHandle = cPDataEntityCollection.FindEntity <SessionIdData, long>(invitingPlayerId);
                if (!dataEntityHandle.IsNull)
                {
                    dHeldObject = Service.Get <CPDataEntityCollection>().GetComponent <HeldObjectsData>(dataEntityHandle).HeldObject;
                }
            }
            if (dHeldObject != null)
            {
                string         text           = "";
                PlayerHeldItem playerHeldItem = ((serverObjectData == null) ? null : (serverObjectData.Item as PlayerHeldItem));
                if (playerHeldItem != null)
                {
                    text = playerHeldItem.Type;
                }
                if (text == dHeldObject.ObjectId)
                {
                    if (isInvitationLocalPlayer)
                    {
                        cPDataEntityCollection.GetComponent <HeldObjectsData>(cPDataEntityCollection.LocalPlayerHandle).HeldObject = null;
                    }
                    else
                    {
                        DataEntityHandle dataEntityHandle = cPDataEntityCollection.FindEntity <SessionIdData, long>(invitingPlayerId);
                        Service.Get <CPDataEntityCollection>().GetComponent <HeldObjectsData>(dataEntityHandle).HeldObject = null;
                    }
                }
            }
            destroySelf();
        }
Ejemplo n.º 13
0
 private void loadExistingPlayerHeldExperiences(long playerId)
 {
     DataEntityHandle[] entitiesByType = dataEntityCollection.GetEntitiesByType <ServerObjectItemData>();
     foreach (DataEntityHandle handle in entitiesByType)
     {
         ServerObjectItemData component = dataEntityCollection.GetComponent <ServerObjectItemData>(handle);
         if (component.Item.Id.Parent != 0)
         {
             continue;
         }
         CPMMOItem item = component.Item;
         if (!(item is PlayerHeldItem))
         {
             continue;
         }
         PlayerHeldItem playerHeldItem = (PlayerHeldItem)item;
         if (playerHeldItem.CreatorId != playerId)
         {
             continue;
         }
         DHeldObject dHeldObject = new DHeldObject();
         dHeldObject.ObjectId = playerHeldItem.Type;
         DataEntityHandle dataEntityHandle = ((!dataEntityCollection.IsLocalPlayer(playerId)) ? dataEntityCollection.FindEntity <SessionIdData, long>(playerId) : dataEntityCollection.LocalPlayerHandle);
         if (!dataEntityHandle.IsNull)
         {
             HeldObjectsData  component2 = dataEntityCollection.GetComponent <HeldObjectsData>(dataEntityHandle);
             PrefabContentKey propExperiencePathFromPropId = getPropExperiencePathFromPropId(playerHeldItem.Type);
             if (propExperiencePathFromPropId != null && !string.IsNullOrEmpty(propExperiencePathFromPropId.Key))
             {
                 component2.IsInvitationalExperience = true;
                 CoroutineRunner.Start(loadPlayerHeldExperience(playerHeldItem), this, "loadPlayerHeldExperience");
             }
             component2.HeldObject = dHeldObject;
             if (propExperiencePathFromPropId != null && !string.IsNullOrEmpty(propExperiencePathFromPropId.Key))
             {
                 component2.IsInvitationalExperience = true;
             }
         }
     }
 }
Ejemplo n.º 14
0
        private void onHeldObjectChanged(DHeldObject obj)
        {
            if (obj == null)
            {
                Change(onoff: false);
                return;
            }
            bool onoff = false;

            if (HeldTypes != null)
            {
                for (int i = 0; i < HeldTypes.Length; i++)
                {
                    if (obj.ObjectType == HeldTypes[i])
                    {
                        onoff = true;
                        break;
                    }
                }
            }
            Change(onoff);
        }
Ejemplo n.º 15
0
 private void onHeldObjectChanged(DHeldObject heldObject)
 {
     Destroy();
 }
Ejemplo n.º 16
0
 private void onPlayerHeldItemChanged(DHeldObject heldObject)
 {
     ObjectId.Value = ((heldObject != null) ? heldObject.ObjectId : "");
     base.Fsm.Event(RetrievedEvent);
 }