コード例 #1
0
 // External
 public void SetFlag(EWeaponFlag inFlag, bool inState, float inDuration = 0.0f, bool inNetTransfer = false)
 {
     if (inNetTransfer)
     {
         photonView.RPC("NetSetFlag", PhotonTargets.All, inFlag, inState, inDuration);
     }
     else
     {
         NetSetFlag(inFlag, inState, inDuration);
     }
 }
コード例 #2
0
    void NetSetFlag(EWeaponFlag inFlag, bool inState, float inDuration = 0.0f)
    {
        _flags[inFlag] = inState;

        // Start a duration coroutine, and overwrite any earlier duration coroutine of the same type
        if (inDuration > 0)
        {
            _flagHandles[inFlag] = Timing.RunCoroutineSingleton(HandleDuration(inFlag, inDuration, inState), _flagHandles[inFlag], SingletonBehavior.Overwrite);
        }

        // If the flag is set without a duration and a duration coroutine is going, kill the coroutine
        else
        {
            Timing.KillCoroutines(_flagHandles[inFlag]);
        }
    }
コード例 #3
0
    IEnumerator <float> HandleDuration(EWeaponFlag inFlag, float inDuration, bool inState)
    {
        yield return(Timing.WaitForSeconds(inDuration));

        SetFlag(inFlag, !inState);
    }
コード例 #4
0
 public bool GetFlag(EWeaponFlag inFlag)
 {
     return(_flags[inFlag]);
 }