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); } }
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; }
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); }
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(); } }
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); } }
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; } }
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); }
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); }
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(); }
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; } } } }
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); }
private void onHeldObjectChanged(DHeldObject heldObject) { Destroy(); }
private void onPlayerHeldItemChanged(DHeldObject heldObject) { ObjectId.Value = ((heldObject != null) ? heldObject.ObjectId : ""); base.Fsm.Event(RetrievedEvent); }