Skip to content

Commit a18853c

Browse files
moving held object id to NetworkCharacterState, adding pickup to HeroActionBar so that mobile can pick up
1 parent b704f20 commit a18853c

File tree

8 files changed

+56
-68
lines changed

8 files changed

+56
-68
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version https://git-lfs.github.com/spec/v1
2-
oid sha256:334a50fc0b739338f05ed2540b1596391aa81484669f6db14751c48ea0c8f45a
3-
size 909
2+
oid sha256:d66a4c5142547c017fb54aa3d881abc43eca7d5f4b74bc800d4439b31b4081d5
3+
size 997

Assets/Prefabs/Character/PlayerAvatar.prefab

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,17 @@ MonoBehaviour:
220220
m_Script: {fileID: 11500000, guid: 4a3a07abfb44d50469112a0db6a202b2, type: 3}
221221
m_Name:
222222
m_EditorClassIdentifier:
223+
--- !u!114 &6009713983291384752 stripped
224+
MonoBehaviour:
225+
m_CorrespondingSourceObject: {fileID: 4600110157238723777, guid: 0d2d836e2e83b754fa1a1c4022d6d65d, type: 3}
226+
m_PrefabInstance: {fileID: 7831782662127126385}
227+
m_PrefabAsset: {fileID: 0}
228+
m_GameObject: {fileID: 6009713983291384756}
229+
m_Enabled: 1
230+
m_EditorHideFlags: 0
231+
m_Script: {fileID: 11500000, guid: edb78c1621dad5149bb47b96120d3fbf, type: 3}
232+
m_Name:
233+
m_EditorClassIdentifier:
223234
--- !u!1 &6009713983291384756 stripped
224235
GameObject:
225236
m_CorrespondingSourceObject: {fileID: 4600110157238723781, guid: 0d2d836e2e83b754fa1a1c4022d6d65d, type: 3}
@@ -339,21 +350,7 @@ MonoBehaviour:
339350
m_Name:
340351
m_EditorClassIdentifier:
341352
m_PlayerAvatars: {fileID: 11400000, guid: 13c227b8a2f5f5f4a8c252835aaf648f, type: 2}
342-
--- !u!114 &6940323159316181846
343-
MonoBehaviour:
344-
m_ObjectHideFlags: 0
345-
m_CorrespondingSourceObject: {fileID: 0}
346-
m_PrefabInstance: {fileID: 0}
347-
m_PrefabAsset: {fileID: 0}
348-
m_GameObject: {fileID: 6009713983291384756}
349-
m_Enabled: 1
350-
m_EditorHideFlags: 0
351-
m_Script: {fileID: 11500000, guid: 7bb02fcdd8d85034794f2a32382009e3, type: 3}
352-
m_Name:
353-
m_EditorClassIdentifier:
354-
m_GraphicsAnimator: {fileID: 1829276847453002016}
355-
m_NetworkAvatarGuidState: {fileID: 2466014342928185240}
356-
--- !u!114 &7232939173259361562
353+
--- !u!114 &6387032110594377642
357354
MonoBehaviour:
358355
m_ObjectHideFlags: 0
359356
m_CorrespondingSourceObject: {fileID: 0}
@@ -362,11 +359,12 @@ MonoBehaviour:
362359
m_GameObject: {fileID: 6009713983291384756}
363360
m_Enabled: 1
364361
m_EditorHideFlags: 0
365-
m_Script: {fileID: 11500000, guid: 119ee2e9b25694aa9b2f80b9a3d22c6e, type: 3}
362+
m_Script: {fileID: 11500000, guid: 0e59f6113deae61408ad63553733ed77, type: 3}
366363
m_Name:
367364
m_EditorClassIdentifier:
368-
m_FeedbackPrefab: {fileID: 9137928905311479176, guid: 5d22c1d86e0e5604cbe14004bf924827, type: 3}
369-
--- !u!114 &1344358136560354212
365+
m_NetworkLifeState: {fileID: 6173771494986166194}
366+
m_NetworkCharacterState: {fileID: 6009713983291384752}
367+
--- !u!114 &6940323159316181846
370368
MonoBehaviour:
371369
m_ObjectHideFlags: 0
372370
m_CorrespondingSourceObject: {fileID: 0}
@@ -375,12 +373,12 @@ MonoBehaviour:
375373
m_GameObject: {fileID: 6009713983291384756}
376374
m_Enabled: 1
377375
m_EditorHideFlags: 0
378-
m_Script: {fileID: 11500000, guid: c00eb062d450d8345abcc50f017109a3, type: 3}
376+
m_Script: {fileID: 11500000, guid: 7bb02fcdd8d85034794f2a32382009e3, type: 3}
379377
m_Name:
380378
m_EditorClassIdentifier:
381-
heldObject:
382-
m_InternalValue: 0
383-
--- !u!114 &6387032110594377642
379+
m_GraphicsAnimator: {fileID: 1829276847453002016}
380+
m_NetworkAvatarGuidState: {fileID: 2466014342928185240}
381+
--- !u!114 &7232939173259361562
384382
MonoBehaviour:
385383
m_ObjectHideFlags: 0
386384
m_CorrespondingSourceObject: {fileID: 0}
@@ -389,11 +387,10 @@ MonoBehaviour:
389387
m_GameObject: {fileID: 6009713983291384756}
390388
m_Enabled: 1
391389
m_EditorHideFlags: 0
392-
m_Script: {fileID: 11500000, guid: 0e59f6113deae61408ad63553733ed77, type: 3}
390+
m_Script: {fileID: 11500000, guid: 119ee2e9b25694aa9b2f80b9a3d22c6e, type: 3}
393391
m_Name:
394392
m_EditorClassIdentifier:
395-
m_NetworkLifeState: {fileID: 6173771494986166194}
396-
m_NetworkPickUpState: {fileID: 1344358136560354212}
393+
m_FeedbackPrefab: {fileID: 9137928905311479176, guid: 5d22c1d86e0e5604cbe14004bf924827, type: 3}
397394
--- !u!4 &6009713983291384766 stripped
398395
Transform:
399396
m_CorrespondingSourceObject: {fileID: 4600110157238723791, guid: 0d2d836e2e83b754fa1a1c4022d6d65d, type: 3}

Assets/Scripts/Gameplay/Action/PickUpAction.cs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,17 @@ public class PickUpAction : Action
2424

2525
float m_AnimationTimer;
2626

27-
NetworkPickUpState m_NetworkPickUpState;
28-
2927
static RaycastHitComparer s_RaycastHitComparer;
3028

3129
public PickUpAction(ServerCharacter parent, ref ActionRequestData data) : base(parent, ref data)
3230
{
33-
m_NetworkPickUpState = parent.GetComponent<NetworkPickUpState>();
34-
3531
s_RaycastHitComparer ??= new RaycastHitComparer();
3632
}
3733

3834
public override bool Start()
3935
{
4036
// play animation based on if a heavy object is already held and start timer
41-
if (m_NetworkPickUpState.heldNetworkObjectReference.TryGet(out var heldObject))
37+
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.TryGetValue(m_Parent.NetState.heldNetworkObject.Value, out var heldObject))
4238
{
4339
Data.TargetIds = null;
4440

@@ -74,10 +70,10 @@ public override bool Start()
7470

7571
void PickUpOrDrop()
7672
{
77-
if (m_NetworkPickUpState.heldNetworkObjectReference.TryGet(out var heldObject))
73+
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.TryGetValue(m_Parent.NetState.heldNetworkObject.Value, out var heldObject))
7874
{
7975
// pickup object found inside of hierarchy; drop it
80-
m_NetworkPickUpState.heldNetworkObjectReference = default;
76+
m_Parent.NetState.heldNetworkObject.Value = 0;
8177
heldObject.transform.SetParent(null);
8278
return;
8379
}
@@ -114,7 +110,7 @@ void PickUpOrDrop()
114110
return;
115111
}
116112

117-
m_NetworkPickUpState.heldNetworkObjectReference = heavyNetworkObject;
113+
m_Parent.NetState.heldNetworkObject.Value = heavyNetworkObject.NetworkObjectId;
118114

119115
Data.TargetIds = new ulong[] { heavyNetworkObject.NetworkObjectId };
120116

Assets/Scripts/Gameplay/GameplayObjects/NetworkCharacterState.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public class NetworkCharacterState : NetworkBehaviour, ITargetable
3636
/// Indicates how the character's movement should be depicted.
3737
public NetworkVariable<MovementStatus> MovementStatus { get; } = new NetworkVariable<MovementStatus>();
3838

39+
public NetworkVariable<ulong> heldNetworkObject;
40+
3941
/// <summary>
4042
/// Indicates whether this character is in "stealth mode" (invisible to monsters and other players).
4143
/// </summary>

Assets/Scripts/Gameplay/GameplayObjects/NetworkPickUpState.cs

Lines changed: 0 additions & 10 deletions
This file was deleted.

Assets/Scripts/Gameplay/GameplayObjects/NetworkPickUpState.cs.meta

Lines changed: 0 additions & 11 deletions
This file was deleted.

Assets/Scripts/Gameplay/GameplayObjects/ServerDropItemOnFaint.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33

44
namespace Unity.Multiplayer.Samples.BossRoom.Server
55
{
6-
[RequireComponent(typeof(NetworkPickUpState), typeof(NetworkLifeState))]
6+
[RequireComponent(typeof(NetworkCharacterState), typeof(NetworkLifeState))]
77
public class ServerDropItemOnFaint : NetworkBehaviour
88
{
99
[SerializeField]
1010
NetworkLifeState m_NetworkLifeState;
1111

1212
[SerializeField]
13-
NetworkPickUpState m_NetworkPickUpState;
13+
NetworkCharacterState m_NetworkCharacterState;
1414

1515
public override void OnNetworkSpawn()
1616
{
@@ -32,11 +32,11 @@ void OnValueChanged(LifeState previousValue, LifeState newValue)
3232
{
3333
if (newValue == LifeState.Fainted)
3434
{
35-
if (m_NetworkPickUpState.heldNetworkObjectReference.TryGet(out var heavyNetworkObject))
35+
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.TryGetValue(m_NetworkCharacterState.heldNetworkObject.Value, out var heavyNetworkObject))
3636
{
37-
m_NetworkPickUpState.heldNetworkObjectReference = default;
3837
heavyNetworkObject.transform.SetParent(null);
3938
}
39+
m_NetworkCharacterState.heldNetworkObject.Value = 0;
4040
}
4141
}
4242
}

Assets/Scripts/Gameplay/UI/HeroActionBar.cs

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,12 @@ void RegisterInputSender(ClientPlayerAvatar clientPlayerAvatar)
138138
m_InputSender = inputSender;
139139
m_NetState = m_InputSender.GetComponent<NetworkCharacterState>();
140140
m_NetState.TargetId.OnValueChanged += OnSelectionChanged;
141+
m_NetState.heldNetworkObject.OnValueChanged += OnHeldNetworkObjectChanged;
142+
UpdateAllActionButtons();
143+
}
144+
145+
void OnHeldNetworkObjectChanged(ulong previousValue, ulong newValue)
146+
{
141147
UpdateAllActionButtons();
142148
}
143149

@@ -147,6 +153,7 @@ void DeregisterInputSender()
147153
if (m_NetState)
148154
{
149155
m_NetState.TargetId.OnValueChanged -= OnSelectionChanged;
156+
m_NetState.heldNetworkObject.OnValueChanged -= OnHeldNetworkObjectChanged;
150157
}
151158
m_NetState = null;
152159
}
@@ -183,13 +190,10 @@ void OnDisable()
183190

184191
void OnDestroy()
185192
{
193+
DeregisterInputSender();
194+
186195
ClientPlayerAvatar.LocalClientSpawned -= RegisterInputSender;
187196
ClientPlayerAvatar.LocalClientDespawned -= DeregisterInputSender;
188-
189-
if (m_NetState)
190-
{
191-
m_NetState.TargetId.OnValueChanged -= OnSelectionChanged;
192-
}
193197
}
194198

195199
void Update()
@@ -264,14 +268,24 @@ void UpdateAllActionButtons()
264268
UpdateActionButton(m_ButtonInfo[ActionButtonType.Special1], m_NetState.CharacterClass.Skill2);
265269
UpdateActionButton(m_ButtonInfo[ActionButtonType.Special2], m_NetState.CharacterClass.Skill3);
266270

267-
// special case: when we have a player selected, we change the meaning of the basic action
268-
if (m_NetState.TargetId.Value != 0
269-
&& NetworkManager.Singleton.SpawnManager.SpawnedObjects.TryGetValue(m_NetState.TargetId.Value, out NetworkObject selection)
271+
NetworkManager.Singleton.SpawnManager.SpawnedObjects.TryGetValue(m_NetState.TargetId.Value, out var selection);
272+
273+
if ((m_NetState.TargetId.Value != 0
274+
&& selection != null
275+
&& selection.TryGetComponent(out PickUpState pickUpState)) ||
276+
NetworkManager.Singleton.SpawnManager.SpawnedObjects.TryGetValue(m_NetState.heldNetworkObject.Value, out var heldNetworkObject)
277+
)
278+
{
279+
// special case: targeting a pickup-able item or holding a pickup object
280+
UpdateActionButton(m_ButtonInfo[ActionButtonType.BasicAction], ActionType.PickUp, true);
281+
}
282+
else if (m_NetState.TargetId.Value != 0
270283
&& selection != null
271284
&& selection.NetworkObjectId != m_NetState.NetworkObjectId
272285
&& selection.TryGetComponent(out NetworkCharacterState charState)
273286
&& !charState.IsNpc)
274287
{
288+
// special case: when we have a player selected, we change the meaning of the basic action
275289
// we have another player selected! In that case we want to reflect that our basic Action is a Revive, not an attack!
276290
// But we need to know if the player is alive... if so, the button should be disabled (for better player communication)
277291

0 commit comments

Comments
 (0)