protected virtual void RecieveRandomSeedSync(TCPMessageType tcpMessageType, object messageObj)
    {
        if (this.isDisconnected)
        {
            global::Debug.Log("RandomSeedSync: 切断中");
            return;
        }
        global::Debug.Log("RandomSeedSync: 受信");
        if (base.stateManager.rootState.currentState.GetType() != typeof(SubStateWaitRandomSeedSync))
        {
            return;
        }
        RandomSeedSyncData randomSeedSyncData = TCPData <RandomSeedSyncData> .Convert(messageObj);

        if (this.CheckRecieveData(randomSeedSyncData.playerUserId, randomSeedSyncData.hashValue))
        {
            return;
        }
        this.lastAction[TCPMessageType.RandomSeedSync] = delegate()
        {
            global::Debug.LogFormat("randomSeed:{0}", new object[]
            {
                randomSeedSyncData.randomSeed
            });
            UnityEngine.Random.InitState(randomSeedSyncData.randomSeed);
            this.recieveChecks[TCPMessageType.RandomSeedSync] = true;
        };
        this.SendConfirmation(tcpMessageType, randomSeedSyncData.playerUserId, string.Empty);
    }
Exemplo n.º 2
0
    public TCPData Parse_Data()
    {
        TCPData Data = new TCPData();

        if (strReceived.Length > 1)
        {
            string[] sub = strReceived.Split(' '); // data sended with ' '
            Data.message_number = int.Parse(sub[0]);
            if (Data.message_number == 7)
            {
                Data.m_fSpeed                = float.Parse(sub[1]);
                Data.m_fComfSpd              = float.Parse(sub[2]);
                Data.m_fRepeatTime           = int.Parse(sub[3]);
                Data.m_fSteady_Time_Interval = float.Parse(sub[4]);
                Data.global_current_time     = float.Parse(sub[5]);
                Data.body_detection          = int.Parse(sub[6]);
            }
            else if (Data.message_number == 2)
            {
                Data.m_nMode = int.Parse(sub[1]);
            }
        }
        else
        {
            Debug.Log("Data is unparsable. Data : " + strReceived);
        }

        return(Data);    // return data
    }
    protected void RecieveAdventureSceneData(TCPMessageType tcpMessageType, object messageObj)
    {
        if (this.isDisconnected)
        {
            global::Debug.Log("AdventureSceneData: 切断中");
            return;
        }
        global::Debug.Log("AdventureSceneData: 受信");
        AdventureSceneData data = TCPData <AdventureSceneData> .Convert(messageObj);

        if (this.CheckHash(data.hashValue))
        {
            return;
        }
        this.lastAction[tcpMessageType] = delegate()
        {
            this.isAdventureSceneAllEnd = (data.isEnd == 1);
            if (this.isAdventureSceneAllEnd)
            {
                this.adventureSceneEndList.Clear();
            }
            this.recieveChecks[tcpMessageType] = true;
        };
        int num = (!base.stateManager.battleAdventureSceneManager.isUpdate) ? 1 : 0;

        this.SendConfirmation(tcpMessageType, data.playerUserId, num.ToString());
    }
    private IEnumerator SendConfirm <T>(TCPMessageType tcpMessageType, TCPData <T> message, string targetId, bool enableDisconnected = true) where T : class
    {
        global::Debug.LogFormat("Send tcpMessageType:{0}", new object[]
        {
            tcpMessageType
        });
        float sendWaitTime = 2f;

        for (;;)
        {
            if (sendWaitTime >= 2f)
            {
                sendWaitTime = 0f;
                this.SendMessageForTarget(tcpMessageType, message, new string[]
                {
                    targetId
                }, enableDisconnected);
            }
            sendWaitTime += Time.unscaledDeltaTime;
            if (this.otherUserCount == 0 || this.confirmationChecks[tcpMessageType].Where((string item) => item == targetId).Any <string>())
            {
                break;
            }
            yield return(null);
        }
        this.confirmationChecks[tcpMessageType].Clear();
        yield break;
        yield break;
    }
Exemplo n.º 5
0
    // Use this for initialization
    void Start()
    {
        TCPData tcpData = new TCPData();

        tcpData.IP   = "61.151.186.113";
        tcpData.Port = 8080;

        NetService.StartTCP(tcpData);
    }
Exemplo n.º 6
0
 private static void Server_OnDataReceived(object sender, TCPData e)
 {
     Console.WriteLine(e.items.Length);
     if (e.items.Length > 0)
     {
         foreach (Item i in e.items)
         {
             Console.WriteLine(i.name + " " + i.amount);
         }
     }
 }
    private void RecieveEmotion(TCPMessageType tcpMessageType, object messageObj)
    {
        global::Debug.Log("Emotion: 受信");
        EmotionData emotionData = TCPData <EmotionData> .Convert(messageObj);

        string spriteName       = emotionData.spriteName;
        int    iconSpritesIndex = emotionData.iconSpritesIndex;
        bool   isOther          = true;

        base.stateManager.uiControlPvP.ShowEmotion(iconSpritesIndex, spriteName, isOther);
    }
    protected virtual void RecieveAttack(TCPMessageType tcpMessageType, object messageObj)
    {
        if (this.isDisconnected)
        {
            global::Debug.Log("Attack: 切断中");
            return;
        }
        global::Debug.Log("Attack: 受信");
        if (base.stateManager.rootState.currentState.GetType() != typeof(SubStateMultiWaitEnemySkillSelect) && base.stateManager.rootState.currentState.GetType() != typeof(SubStateWaitEnemySkillSelect))
        {
            global::Debug.LogWarning("まだ準備していない");
            return;
        }
        AttackData attackData = TCPData <AttackData> .Convert(messageObj);

        if (this.CheckRecieveData(attackData.playerUserId, attackData.hashValue))
        {
            return;
        }
        this.lastAction[TCPMessageType.Attack] = delegate()
        {
            CharacterStateControl currentSelectCharacterState = this.battleStateData.currentSelectCharacterState;
            int targetIdx      = attackData.targetIdx;
            int selectSkillIdx = attackData.selectSkillIdx;
            if (this.battleStateData.currentSelectCharacterState.isEnemy)
            {
                if (attackData.isTargetCharacterEnemy)
                {
                    currentSelectCharacterState.targetCharacter = this.battleStateData.playerCharacters[targetIdx];
                }
                else
                {
                    currentSelectCharacterState.targetCharacter = this.battleStateData.enemies[targetIdx];
                }
            }
            else if (attackData.isTargetCharacterEnemy)
            {
                currentSelectCharacterState.targetCharacter = this.battleStateData.enemies[targetIdx];
            }
            else
            {
                currentSelectCharacterState.targetCharacter = this.battleStateData.playerCharacters[targetIdx];
            }
            currentSelectCharacterState.targetCharacter.myIndex = targetIdx;
            currentSelectCharacterState.isSelectSkill           = selectSkillIdx;
            this.battleStateData.onSkillTrigger       = true;
            this.recieveChecks[TCPMessageType.Attack] = true;
        };
        this.SendConfirmation(tcpMessageType, attackData.playerUserId, string.Empty);
    }
Exemplo n.º 9
0
    public IEnumerator SendMessageInsistently <T>(TCPMessageType tcpMessageType, TCPData <T> message, List <int> TCPSendUserIdList, string TCPKey = "activityList", Action <List <int> > SendFaildAction = null) where T : class
    {
        TCPUtil.isTCPSending = true;
        int        waitingCount = 0;
        List <int> InsistentlySendUserIdList = new List <int>();

        foreach (int item in TCPSendUserIdList)
        {
            InsistentlySendUserIdList.Add(item);
        }
        for (;;)
        {
            global::Debug.LogFormat("[SendMessage] tcpMessageType:{0}, MyPlayerUserId:{1} , waitingCount:{2}", new object[]
            {
                tcpMessageType,
                this.myUserId,
                waitingCount
            });
            for (int i = 0; i < this.confirmationChecks[tcpMessageType].Count; i++)
            {
                InsistentlySendUserIdList.Remove(int.Parse(this.confirmationChecks[tcpMessageType][i]));
            }
            bool sendResult = this.SendMessageForTarget(tcpMessageType, message, InsistentlySendUserIdList, TCPKey);
            yield return(AppCoroutine.Start(Util.WaitForRealTime(1f), false));

            waitingCount++;
            bool finishForcely = false;
            if ((float)waitingCount >= 10f || !sendResult)
            {
                finishForcely = true;
                if ((float)waitingCount >= 10f && SendFaildAction != null)
                {
                    SendFaildAction(InsistentlySendUserIdList);
                }
            }
            if (this.confirmationChecks[tcpMessageType].Count == TCPSendUserIdList.Count || finishForcely)
            {
                break;
            }
            yield return(null);
        }
        this.confirmationChecks[tcpMessageType].Clear();
        TCPUtil.isTCPSending = false;
        global::Debug.LogFormat("[PacketEnd] tcpMessageType:{0}", new object[]
        {
            tcpMessageType
        });
        yield break;
        yield break;
    }
    private void RecieveEnemyTurnSync(TCPMessageType tcpMessageType, object messageObj)
    {
        global::Debug.Log("EnemyTurnSync: 受信");
        EnemyTurnSyncData enemyTurnSyncData = TCPData <EnemyTurnSyncData> .Convert(messageObj);

        if (base.CheckRecieveData(enemyTurnSyncData.playerUserId, enemyTurnSyncData.hashValue))
        {
            return;
        }
        this.lastAction[TCPMessageType.EnemyTurnSync] = delegate()
        {
            this.recieveChecks[TCPMessageType.EnemyTurnSync] = true;
        };
        base.SendConfirmationDisconnected(tcpMessageType, enemyTurnSyncData.playerUserId, string.Empty);
    }
    protected void RecieveLastConfirmation(TCPMessageType tcpMessageType, object messageObj)
    {
        global::Debug.Log("LastConfirmation: 受信");
        LastConfirmationData lastConfirmationData = TCPData <LastConfirmationData> .Convert(messageObj);

        if (this.CheckRecieveData(lastConfirmationData.playerUserId, lastConfirmationData.hashValue))
        {
            return;
        }
        this.confirmationChecks[TCPMessageType.Confirmation].Add(lastConfirmationData.playerUserId);
        this.RunLastAction((TCPMessageType)lastConfirmationData.tcpMessageType);
        global::Debug.LogFormat("tcpMessageType:{0}", new object[]
        {
            (TCPMessageType)lastConfirmationData.tcpMessageType
        });
    }
    private void RecieveRetire(TCPMessageType tcpMessageType, object messageObj)
    {
        global::Debug.Log("Retire: リタイア");
        RetireData retierData = TCPData <RetireData> .Convert(messageObj);

        if (base.CheckRecieveData(retierData.playerUserId, retierData.hashValue))
        {
            return;
        }
        this.lastAction[TCPMessageType.Retire] = delegate()
        {
            if (retierData.retiredPlayerId != ClassSingleton <MultiBattleData> .Instance.MyPlayerUserId)
            {
                this.ShowWinDialog();
            }
        };
        base.SendConfirmation(tcpMessageType, retierData.playerUserId, string.Empty);
    }
    protected void RecieveLeaderChange(TCPMessageType tcpMessageType, object messageObj)
    {
        if (this.isDisconnected)
        {
            global::Debug.Log("LeaderChange: 切断中");
            return;
        }
        global::Debug.Log("LeaderChange: 受信");
        LeaderChangeData data = TCPData <LeaderChangeData> .Convert(messageObj);

        if (this.CheckHash(data.hashValue))
        {
            return;
        }
        this.lastAction[tcpMessageType] = delegate()
        {
            this.battleStateData.ChangePlayerLeader(data.leaderIndex);
            this.battleStateData.ChangeEnemyLeader(data.leaderIndex);
            this.recieveChecks[tcpMessageType] = true;
        };
        this.SendConfirmation(tcpMessageType, data.playerUserId, string.Empty);
    }
    protected void RecieveConfirmation(TCPMessageType tcpMessageType, object messageObj)
    {
        global::Debug.Log("Confirmation: 受信");
        ConfirmationData confirmationData = TCPData <ConfirmationData> .Convert(messageObj);

        if (this.CheckRecieveData(confirmationData.playerUserId, confirmationData.hashValue))
        {
            return;
        }
        TCPMessageType tcpMessageType2 = (TCPMessageType)confirmationData.tcpMessageType;

        this.confirmationChecks[tcpMessageType2].Add(confirmationData.playerUserId);
        global::Debug.LogFormat("confirmationChecks : {0}から確認用{1}を受信しました. Count:{2}", new object[]
        {
            confirmationData.playerUserId,
            tcpMessageType2,
            this.confirmationChecks[tcpMessageType2].Count
        });
        if (tcpMessageType2 == TCPMessageType.AdventureScene && confirmationData.value1 == "1" && !this.adventureSceneEndList.Contains(confirmationData.playerUserId))
        {
            this.adventureSceneEndList.Add(confirmationData.playerUserId);
        }
    }
Exemplo n.º 15
0
        public TCPData GetProcessedData(KinectData kinectData)
        {
            TCPData pd = new TCPData()
            {
                Metadata = new Dictionary <string, string>()
            };

            int max = kinectData.MaxDepth;
            int min = kinectData.MinDepth;

            if (kinectData.DepthArray != null)
            {
                //enviamos tambien el array de profundidades
                char[] depthsChar  = kinectData.DepthArray.Select(p => Convert.ToChar(p)).ToArray();
                string depthsArray = new string(depthsChar);
                string b64         = Base64Encode(depthsArray);

                //Metemos los atributos que queremos enviar
                pd.Metadata.Add(KEY_DEPTH_WIDTH, kinectData.Width.ToString());
                pd.Metadata.Add(KEY_DEPTH_HEIGHT, kinectData.Height.ToString());
                pd.Metadata.Add(KEY_DEPTH_MIN, min.ToString());
                pd.Metadata.Add(KEY_DEPTH_MAX, max.ToString());
                pd.Metadata.Add(KEY_DEPTH_ARRAY, b64);
            }

            if (kinectData.DetectedObjects != null && kinectData.DetectedObjects.Count > 0)
            {
                //enviamos los objetos que se han detectado
                foreach (Kinect.ObjectsDetection.DetectedObject o in kinectData.DetectedObjects)
                {
                    pd.Metadata.Add(KEY_OBJ_PREFIX + o.Data, o.RelCenter.X + "," + o.RelCenter.Y);
                }
            }

            return(pd);
        }
 public abstract IEnumerator SendMessageInsistently <T>(TCPMessageType tcpMessageType, TCPData <T> message, float waitingTerm = 2f) where T : class;
    public override IEnumerator SendMessageInsistently <T>(TCPMessageType tcpMessageType, TCPData <T> message, float waitingTerm = 2f)
    {
        global::Debug.LogFormat("Send tcpMessageType:{0}", new object[]
        {
            tcpMessageType
        });
        float sendWaitTime      = waitingTerm;
        float sendTotalWaitTime = 0f;

        for (;;)
        {
            while (this.isSendEvent || this.isDisconnected || this.isEnemyFailedAction)
            {
                yield return(null);
            }
            if (sendWaitTime >= waitingTerm)
            {
                sendWaitTime = 0f;
                base.SendMessageForSync(tcpMessageType, message);
            }
            if (sendTotalWaitTime >= 45f)
            {
                sendTotalWaitTime = 0f;
                IEnumerator enemyFailedAction = this.EnemyFailedAction();
                while (enemyFailedAction.MoveNext())
                {
                    yield return(null);
                }
            }
            if (this.confirmationChecks[tcpMessageType].Count == base.otherUserCount)
            {
                break;
            }
            sendWaitTime      += Time.unscaledDeltaTime;
            sendTotalWaitTime += Time.unscaledDeltaTime;
            yield return(null);
        }
        LastConfirmationData message2 = new LastConfirmationData
        {
            playerUserId   = ClassSingleton <MultiBattleData> .Instance.MyPlayerUserId,
            hashValue      = Singleton <TCPUtil> .Instance.CreateHash(TCPMessageType.LastConfirmation, ClassSingleton <MultiBattleData> .Instance.MyPlayerUserId, tcpMessageType),
            tcpMessageType = tcpMessageType.ToInteger()
        };

        base.SendMessageForSync(TCPMessageType.LastConfirmation, message2);
        this.confirmationChecks[tcpMessageType].Clear();
        yield break;
        yield break;
    }