|
| 1 | +using System; |
1 | 2 | using System.Collections; |
2 | 3 | using System.Collections.Generic; |
3 | 4 | using System.Linq; |
@@ -377,6 +378,7 @@ public override void AddItem() |
377 | 378 |
|
378 | 379 | protected override void OnNetworkPostSpawn() |
379 | 380 | { |
| 381 | + Log($"[Client-{NetworkManager.LocalClientId}] Running post spawn."); |
380 | 382 | m_DictionaryCollection.OnValueChanged += OnValueChanged; |
381 | 383 | base.OnNetworkPostSpawn(); |
382 | 384 | } |
@@ -488,16 +490,24 @@ public enum HelperStates |
488 | 490 | } |
489 | 491 |
|
490 | 492 | private HelperStates HelperState { get; set; } |
| 493 | + private Dictionary<HelperStates, Action> m_StateToAction = new Dictionary<HelperStates, Action>(); |
| 494 | + |
491 | 495 |
|
492 | 496 | private int m_SendClearForOwnershipOnTick; |
493 | 497 | private ulong m_NextClient = 0; |
494 | 498 | private ulong m_ClientToSendClear = 0; |
495 | 499 |
|
496 | 500 | public void SetState(HelperStates helperState) |
497 | 501 | { |
| 502 | + Log($"[StateUpdate] Previous: {HelperState} New: {helperState}"); |
498 | 503 | HelperState = helperState; |
499 | 504 | } |
500 | 505 |
|
| 506 | + private void Awake() |
| 507 | + { |
| 508 | + InitializeStateUpdates(); |
| 509 | + } |
| 510 | + |
501 | 511 | protected virtual bool OnValidateAgainst(BaseCollectionUpdateHelper otherHelper) |
502 | 512 | { |
503 | 513 | return true; |
@@ -653,24 +663,36 @@ private void OnNetworkTick() |
653 | 663 | { |
654 | 664 | return; |
655 | 665 | } |
| 666 | + m_StateToAction[HelperState]?.Invoke(); |
| 667 | + } |
656 | 668 |
|
657 | | - if (HelperState == HelperStates.ChangingOwner) |
658 | | - { |
659 | | - NetworkObject.ChangeOwnership(m_NextClient); |
660 | | - Log($"Local Change ownership to Client-{m_NextClient} complete! New Owner is {NetworkObject.OwnerClientId} | Expected {m_NextClient}"); |
661 | | - } |
662 | | - else |
663 | | - { |
664 | | - ChangingOwnershipClearRpc(RpcTarget.Single(m_ClientToSendClear, RpcTargetUse.Temp)); |
665 | | - } |
666 | | - HelperState = HelperStates.Stop; |
| 669 | + private void InitializeStateUpdates() |
| 670 | + { |
| 671 | + m_StateToAction.Add(HelperStates.Start, null); |
| 672 | + m_StateToAction.Add(HelperStates.Stop, null); |
| 673 | + m_StateToAction.Add(HelperStates.Pause, null); |
| 674 | + m_StateToAction.Add(HelperStates.ClearToChangeOwner, ClearToChangeOwnerStateUpdate); |
| 675 | + m_StateToAction.Add(HelperStates.ChangingOwner, ChangingOwnerStateUpdate); |
| 676 | + } |
| 677 | + |
| 678 | + private void ChangingOwnerStateUpdate() |
| 679 | + { |
| 680 | + NetworkObject.ChangeOwnership(m_NextClient); |
| 681 | + Log($"Local Change ownership to Client-{m_NextClient} complete! New Owner is {NetworkObject.OwnerClientId} | Expected {m_NextClient}"); |
| 682 | + SetState(HelperStates.Stop); |
| 683 | + } |
| 684 | + |
| 685 | + private void ClearToChangeOwnerStateUpdate() |
| 686 | + { |
| 687 | + ChangingOwnershipClearRpc(RpcTarget.Single(m_ClientToSendClear, RpcTargetUse.Temp)); |
| 688 | + SetState(HelperStates.Stop); |
667 | 689 | } |
668 | 690 |
|
669 | 691 | protected void Log(string msg) |
670 | 692 | { |
671 | 693 | if (VerboseMode) |
672 | 694 | { |
673 | | - Debug.Log($"[Client-{NetworkManager.LocalClientId}] {msg}"); |
| 695 | + Debug.Log($"[Frame: {Time.frameCount}][Tick: {((uint)(NetworkManager.LocalTime.TickWithPartial * 1000))*0.001f}][{name}] {msg}"); |
674 | 696 | } |
675 | 697 | } |
676 | 698 | } |
|
0 commit comments