Esempio n. 1
0
 public static InstantiationData Build(SyncTokenType tokenType)
 {
     return(new InstantiationData
     {
         tokenType = tokenType
     });
 }
Esempio n. 2
0
        /// <summary>
        /// Tries to parse value into sync token.
        /// </summary>
        /// <param name="value">Value to parse.</param>
        /// <param name="tokenType">Token type.</param>
        /// <param name="token">out SyncToken.</param>
        /// <returns></returns>
        public static bool TryParseFromUrl(string value, SyncTokenType tokenType, out ISyncToken token)
        {
            token = null;
            if (string.IsNullOrEmpty(value))
            {
                return(false);
            }

            int startIndex = value.IndexOf(SyncToken.GetTokenPrefix(tokenType), StringComparison.OrdinalIgnoreCase);

            if (startIndex == -1)
            {
                return(false);
            }

            int    endIndex   = startIndex + SyncToken.GetTokenPrefix(tokenType).Length;
            string tokenValue = value.Substring(endIndex);

            if (tokenValue.IndexOf("&", StringComparison.Ordinal) != -1)
            {
                tokenValue = tokenValue.Split('&')[0];
            }

            token = new SyncToken(tokenValue, tokenType);
            return(true);
        }
Esempio n. 3
0
    /// <summary>
    /// Setup by
    /// TokenHandler LOCALly
    /// or
    /// using data received from TransmissionBase.OnEnable
    /// </summary>
    /// <param name="insData"></param>
    public void Setup(InstantiationData insData)
    {
        tType = insData.tokenType;
        Debug.Log($"TransmissionBase {gameObject.name} Setup. photonView.IsMine:{photonView.IsMine} {insData}");

        // get tokenUser from ObjectSupplier
        switch (tType)
        {
        case SyncTokenType.Player:
            playerCoreAdditive.Init(insData, photonView.IsMine);

            break;

        default:
        case SyncTokenType.General:
            Debug.LogWarning("TransmissionBase Setup General");
            roomCoreAdditive.Init(insData, photonView.IsMine);
            break;
        }

        // Setup SerializableReadWrite
        var sData = refObj?.GetComponent <ISyncHandlerUser>()?.SerializableReadWrite;

        if (sData != null)
        {
            Register(sData);
        }
        else
        {
            Debug.LogWarning($"TransmissionBase {gameObject.name}: No TokenUser/ no SerializableReadWrite for Sync!");
        }

        started = true;
    }
Esempio n. 4
0
    public object RequestTokenHandler(SyncTokenType tokenType, object refObj)
    {
        var go       = Instantiate(NetworkSyncHandler, (refObj as GameObject).transform);
        var handUser = go.GetComponent <ISyncHandlerUser>();

        go.GetComponent <ITokenHandler>()?.Setup(this, handUser);

        return(go);
    }
Esempio n. 5
0
    public InstantiationData(object[] data)
    {
        tokenType = (SyncTokenType)data[0];

        //(i, i+1), i=1
        for (int i = 1; i < data.Length; i += 2)
        {
            this[(string)data[i]] = data[i + 1];
        }
    }
Esempio n. 6
0
    public void UpdateProperties(SyncTokenType stType, string key, object data)
    {
        switch (stType)
        {
        case SyncTokenType.Player:
            statHelper.UpdatePlayerProperties(key, data);
            break;

        default:
        case SyncTokenType.General:
            _ = statHelper.UpdateRoomProperties(key, data);
            break;
        }
    }
Esempio n. 7
0
    public ITokenHandler RequestTokenHandlerAttachment(SyncTokenType tokenType, object refScript)
    {
        Debug.LogWarning($"RequestTokenHandler Try AttachToGameObject");
        var go = (refScript as Component).gameObject;

        if (go == null)
        {
            Debug.LogWarning($"RequestTokenHandler {refScript} is NOT AttachToGameObject");
            return(null);
        }

        var handUser = go.GetComponent <ISyncHandlerUser>();

        var res = go.AddComponent <TokenHandler>();

        res.Setup(this, handUser);
        return(res);
    }
Esempio n. 8
0
 /// <summary>
 /// Get token prefix.
 /// </summary>
 /// <param name="tokenType">Type of token to retrieve prefix for.</param>
 /// <returns></returns>
 private static string GetTokenPrefix(SyncTokenType tokenType)
 {
     return(tokenType == SyncTokenType.DeltaToken
         ? "deltatoken="
         : "skiptoken=");
 }
Esempio n. 9
0
 /// <summary>
 /// Create new instance of <see cref="SyncToken"/>
 /// </summary>
 /// <param name="rawToken"></param>
 /// <param name="tokenType"></param>
 public SyncToken(string rawToken, SyncTokenType tokenType)
 {
     ArgumentValidator.ThrowIfNullOrEmpty(rawToken, nameof(rawToken));
     this.Value = rawToken;
     this.Type  = tokenType;
 }
Esempio n. 10
0
 /// <summary>
 /// Tries to parse value of Url query into <see cref="ISyncToken"/>
 /// </summary>
 /// <param name="url"></param>
 /// <param name="tokenType"></param>
 /// <param name="token"></param>
 /// <returns></returns>
 public static bool TryParseFromUrl(Uri url, SyncTokenType tokenType, out ISyncToken token)
 {
     return(SyncToken.TryParseFromUrl(url.Query, tokenType, out token));
 }