Exemple #1
0
    /// <summary>
    /// ゲーム開始前のMessage処理
    /// </summary>
    /// <param name="msg"></param>
    void updateMessage(Message msg)
    {
        switch (msg.Type)
        {
        case Message.Join:     // 接続成功
            client_.SendMessage(Message.GameStart, "Niwako");
            break;

        case Message.GameStart:     // ゲーム開始
        {
            var data = JsonUtility.FromJson <GameStartMessage>(msg.Data);
            users_ = data.Users;
            foreach (var user in users_)
            {
                var obj = createNiwatori(user);
                niwatoriList_.Add(obj);

                // プレイヤーの操作するオブジェクトの初期化
                if (user.Id == data.Player.Id)
                {
                    TrackingCamera.transform.SetParent(obj.transform, false);
                    Player.Init(obj);
                }
            }
            GameStarted = true;
        }
        break;
        }
    }
 public void Send(string type, object data)
 {
     client.SendMessage(type, data);
 }
Exemple #3
0
    void updateMessageForGameStarted(Message msg)
    {
        switch (msg.Type)
        {
        case Message.NPCAction:
        {
            var data = JsonUtility.FromJson <NPCAction>(msg.Data);
            _npcs = data.npc;
            for (int i = 0; i < _npcs.Count; i++)
            {
                var npcID = FindNPC(_npcs[i].NPC_ID);
                if (npcID != null)
                {
                    npcID.Action = _npcs[i].Action;

                    npcID.GetAction(npcID.Action);
                    Send(Message.UpdateNPCDate, new UpdateNPCDate
                        {
                            NPC_ID  = npcID.NPC_ID,
                            NPC_pos = npcID.setPos()
                        });
                }
            }
        }
        break;

        case Message.UpdateNPCDate:
        {
            var data = JsonUtility.FromJson <UpdateNPCDate>(msg.Data);
            var npc  = FindNPC(data.NPC_ID);

            //Debug.Log(data.NPC_pos);
            //print(data.NPC_pos.x);
            //print(data.NPC_pos.y);
            //print(data.NPC_pos.z);

            npc.X = data.NPC_pos.x;
            npc.Y = data.NPC_pos.y;
            npc.Z = data.NPC_pos.z;
        }
        break;

        case Message.Join:
            _client.SendMessage(Message.GameStart, "Human_NJ");
            break;

        case Message.GameStart:
        {
            var data = JsonUtility.FromJson <GameStartMessage>(msg.Data);
            if (GameStarted)
            {        //誰もいます
                var human_nj = FindHumanNJ(data.Player.ID);
                if (human_nj == null)
                {
                    _users.Add(data.Player);
                    human_nj_List.Add(createPlayer(data.Player));
                }
            }
            else
            {        //誰もいません
                _users = data.Users;
                foreach (var user in _users)
                {
                    var obj = createPlayer(user);
                    human_nj_List.Add(obj);
                    if (user.ID == data.Player.ID)
                    {
                        MainCamera.transform.SetParent(obj.transform, false);
                        MainCamera.transform.localPosition = new Vector3(0, (float)0.0163, (float)-0.004899);
                        GameEngineID = obj.UserID;
                        Player.Init(obj);
                    }
                }
                _npcs = data.npc;
                foreach (var npc in _npcs)
                {
                    var n = createNPC(npc);
                    npc_List.Add(n);
                }
            }
            GameStarted = true;
        }
        break;

        case Message.ExitUser:
        {
            var data     = JsonUtility.FromJson <ExitUserMessage>(msg.Data);
            var user     = _users.First(u => u.WsName == data.WsName);
            var human_nj = human_nj_List.First(v => v.UserID == user.ID);
            human_nj_List.Remove(human_nj);
            Destroy(human_nj.gameObject);
        }
        break;

        case Message.UpdatePlayerStatic:
        {
            var data     = JsonUtility.FromJson <UpdatePlayerStatic__Massage>(msg.Data);
            var human_nj = FindHumanNJ(data.UserID);
            if (data.UserID != Player.Human_NJ.UserID)
            {
                human_nj.X          = data.UserPos.x; //Global
                human_nj.Y          = data.UserPos.y; //Global
                human_nj.Z          = data.UserPos.z; //Global
                human_nj.MoveV      = data.MoveV;
                human_nj.MoveH      = data.MoveH;
                human_nj.IsWalkStop = data.IsWalkStop;

                human_nj.Rotation = data.UserRotation;        //Global

                human_nj.IsSneak   = data.IsSneak;
                human_nj.SneakName = data.SneakName;

                human_nj.UserViewRotation = data.UserViewRotation;
                human_nj.UpdateOtherPlayerStatic(human_nj.MoveV, human_nj.MoveH, human_nj.IsWalkStop);        //Local

                human_nj.tokuten = data.tokuten;
            }
            string tokutenbannText = "得点板\n";
            for (int i = 0; i < human_nj_List.Count; i++)
            {
                tokutenbannText += human_nj_List[i].UserID + " : " + human_nj_List[i].tokuten + "点\n";
            }
            human_nj.UpdateTokutenbann(tokutenbannText);
        }
        break;

        case Message.ActionShot:
        {
            var data     = JsonUtility.FromJson <ActionShotMessage>(msg.Data);
            var human_nj = FindHumanNJ(data.UserID);

            human_nj.Shot();
        }
        break;

        case Message.ActionSword:
        {
            var data     = JsonUtility.FromJson <ActionSwordMessage>(msg.Data);
            var human_nj = FindHumanNJ(data.UserID);

            human_nj.Giri();
        }
        break;

        case Message.ActionSkill:
        {
            var data     = JsonUtility.FromJson <ActionSkillMessage>(msg.Data);
            var human_nj = FindHumanNJ(data.UserID);
            human_nj.ActionSkill();
        }
        break;

        case Message.ActionSkill2:
        {
            var data     = JsonUtility.FromJson <ActionSkill2Message>(msg.Data);
            var human_nj = FindHumanNJ(data.UserID);
            human_nj.ActionSkill2();
        }
        break;

        case Message.ActionDamge:
        {
            var data     = JsonUtility.FromJson <ActionDmgMessage>(msg.Data);
            var human_nj = FindHumanNJ(data.UserID);
            if (human_nj.Hp > 0)
            {
                human_nj.Damage(data.Dmg);
            }
            human_nj.tokuten = human_nj.GetTokuten();
            var killer = FindHumanNJ(data.killID);

            if (human_nj.IsDead)
            {
                killer.tokuten = killer.tokuten + human_nj.tokuten + 1;
                killer.SetTokuten(killer.tokuten);
                if (killer.tokuten >= 100)
                {
                    Send(Message.GameEnd, new GameEndMessage {
                            UserID = killer.UserID
                        });
                }

                StartCoroutine(human_nj.Dead());

                if (human_nj.UserID == Player.Human_NJ.UserID)
                {
                    _client.Dispose();
                    GameStarted = false;
                    MainCamera.transform.SetParent(null, false);
                    foreach (var n in human_nj_List)
                    {
                        Destroy(n.gameObject);
                    }
                    human_nj_List.Clear();
                }

                human_nj_List.Remove(human_nj);
            }
            killer.MainUserAction();
            //killer.UpdateOtherPlayerStatic(killer.MoveV, killer.MoveH, killer.IsWalkStop);//Local
        }
        break;

        case Message.GameEnd:
        {
            var data     = JsonUtility.FromJson <GameEndMessage>(msg.Data);
            var human_nj = FindHumanNJ(data.UserID);
            _client.Dispose();
            GameStarted = false;
            MainCamera.transform.SetParent(null, false);
            foreach (var n in human_nj_List)
            {
                Destroy(n.gameObject);
            }
            human_nj_List.Clear();

            ExitBtn.SetActive(true);
            Retry.SetActive(false);
            Cursor.lockState = CursorLockMode.None;
        }
        break;
        }
    }