コード例 #1
0
    public void ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        if (NetworkOrderController.OBSERVER_MODE)
        {
            if (e.msgType.Equals(NetworkManager.USER_PLACE_CHANGE))
            {
                if (m_gameUserInfo == null)
                {
                    return;
                }
                for (int i = 0; i < m_gameUserInfo.Count; i++)
                {
                    if (m_gameUserInfo[i].player.USERNAME.Equals(e.user + "_robo"))
                    {
                        m_gameUserInfo[i].place = (PLACE)e.msg.GetField(NetworkManager.USER_PLACE_CHANGE).i;

                        if (i == m_curIndex)
                        {
                            ChangeUser(m_curIndex);
                        }
                        return;
                    }
                }
            }
        }
    }
コード例 #2
0
    void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        if (e.msgType.Equals(NetworkManager.HP_UPDATE))
        {
            // 데미지 입은것이 들어옴
            if (e.targetName.Equals(m_name) && !GameManager.Instance().PLAYER.USER_NAME.Equals(e.user))
            {
                if (m_damageCoolTime)
                {
                    return;
                }
                m_damageCoolTime = true;
                GameManager.Instance().SetCurrentEnemy(this);

                base.Damage((int)e.msg.GetField(NetworkManager.HP_UPDATE).i);
                if (m_hp <= 0)
                {
                    MapManager.Instance().AddObject(GamePath.EFFECT, transform.position);
                    NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonRemoveOrder(m_name, "Monster"));
                    NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this);
                    GameObject.Destroy(gameObject);
                    return;
                }

                m_damageCoolTime = true;
                if (!IsInvoking("DamageEffect"))
                {
                    InvokeRepeating("DamageEffect", 0.1f, 0.1f);
                }
            }
        }
    }
コード例 #3
0
    // 상태값 교환으로 애니메이션
    void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        if (e.msgType == NetworkManager.STATE_CHANGE)
        {
            if (GameManager.Instance().PLAYER.USER_NAME == m_movePlayerName)
            {
                return;
            }
            //상태값 뽑기
            m_roboState = (int)e.msg.GetField(NetworkManager.STATE_CHANGE).i;

            // 공격 애니메이션을 gun 을 작동시키는 녀석이 재생할 필요가 없다고 가정하고 해보자
            if (BitControl.Get(m_roboState, (int)ROBO_STATE.ATTACK) || BitControl.Get(m_roboState, (int)ROBO_STATE.COOLTIME))
            {
                if (m_gunPlayerName == GameManager.Instance().PLAYER.USER_NAME)
                {
                    m_roboState = BitControl.Clear(m_roboState, (int)ROBO_STATE.ATTACK);
                    m_roboState = BitControl.Clear(m_roboState, (int)ROBO_STATE.COOLTIME);
                }
            }
        }
        else if (e.msgType == NetworkManager.GUN_ANGLE_CHANGE)
        {
            // 앵글 또한 보간해야함
            if (GameManager.Instance().PLAYER.USER_NAME == m_gunPlayerName)
            {
                return;
            }
            m_targetAngle = e.msg.GetField(NetworkManager.GUN_ANGLE_CHANGE).f;

            m_syncTime_angle    = 0.0f;
            m_delay_angle       = Time.time - m_lastSyncTimeAngle;
            m_lastSyncTimeAngle = Time.time;
        }
        else if (e.msgType == NetworkManager.HP_UPDATE)
        {
            if (GameManager.Instance().PLAYER.USER_NAME.Equals(e.user) || !e.targetName.EndsWith("robo"))
            {
                return;
            }
            m_hp = (int)e.msg.GetField(NetworkManager.HP_UPDATE).i;
        }
        else if (e.msgType == NetworkManager.ENERGY_UPDATE)
        {
            if (GameManager.Instance().PLAYER.USER_NAME.Equals(e.user) || !e.targetName.EndsWith("robo"))
            {
                return;
            }
            m_roboEnergy = e.msg.GetField(NetworkManager.ENERGY_UPDATE).f;
        }
        else if (e.msgType.Equals(NetworkManager.ROBOT_PLACE))
        {
            if (!string.IsNullOrEmpty(m_movePlayerName) &&
                m_movePlayerName.Equals(e.user) || (!string.IsNullOrEmpty(m_gunPlayerName) && m_gunPlayerName.Equals(e.user)))
            {
                return;
            }
            m_controllName = e.targetName;
        }
    }
コード例 #4
0
    void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        if (e.msgType.Equals(NetworkManager.HP_UPDATE))
        {
            // 데미지 입은것이 들어옴
            if (e.targetName.Equals(m_name) &&
                !GameManager.Instance().PLAYER.USER_NAME.Equals(e.user))
            {
                GameManager.Instance().SetCurrentEnemy(this);
                base.Damage((int)e.msg.GetField(NetworkManager.HP_UPDATE).i);
                if (m_hp <= 0)
                {
                    MapManager.Instance().AddObject(GamePath.EFFECT, transform.position);

                    if (!m_tutorial)
                    {
                        NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonRemoveOrder(m_name, "Monster"));
                        NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this);
                    }
                    else
                    {
                        m_tutoRobo.TutoKillMonster();
                    }

                    GameObject.Destroy(gameObject);
                }
            }
        }
    }
コード例 #5
0
 void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e)
 {
     if (e.targetName.Equals(m_name))
     {
         m_index = (int)e.msg.GetField(NetworkManager.STATE_CHANGE).i;
         DamageFix();
     }
 }
    public void ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        switch (e.msgType)
        {
        case NetworkManager.REMOVE:
            if (e.targetName.Equals(m_name))
            {
                NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this);
                NetworkManager.Instance().RemoveNetworkEnemyMoveEventListener(this.GetComponent <NetworkMoving>());

                GameObject.Destroy(gameObject);
            }
            break;

        case NetworkManager.HP_UPDATE:
            if (e.targetName.Equals(m_name))
            {
                GameManager.Instance().SetCurrentEnemy(GetComponent <Monster>());
                if (IsInvoking("DamageEffect") || IsInvoking("DamageEffectEnd"))
                {
                    CancelInvoke();
                    m_meshRenderer.material.color = Color.white;
                }

                InvokeRepeating("DamageEffect", 0.1f, 0.1f);
            }
            break;

        case NetworkManager.STATE_CHANGE:

            break;

        case NetworkManager.AI_ANI_NAME:
            if (!e.targetName.Equals(m_name) || m_skeletonAnimation == null ||
                e.msg.GetField(NetworkManager.AI_ANI_NAME) == null ||
                m_skeletonAnimation.state.GetCurrent(0) == null ||
                m_skeletonAnimation.state.GetCurrent(0).animation == null ||
                m_skeletonAnimation.state.GetCurrent(0).animation.name == null)
            {
                return;
            }
            if (m_skeletonAnimation.state.GetCurrent(0).animation.name.Equals(e.msg.GetField(NetworkManager.AI_ANI_NAME).str))
            {
                return;
            }

            m_skeletonAnimation.state.SetAnimation(0,
                                                   e.msg.GetField(NetworkManager.AI_ANI_NAME).str,
                                                   e.msg.GetField(NetworkManager.AI_ANI_LOOP).b);

            AudioSource source = GetComponent <AudioSource>();
            if (source != null && !source.isPlaying)
            {
                source.Play();
            }
            break;
        }
    }
コード例 #7
0
 public void ReceiveNetworkMessage(NetworkManager.MessageEvent e)
 {
     if (e.msgType.Equals(NetworkManager.DAMAGE))
     {
         if (e.targetName.Equals(m_name))
         {
             GameManager.Instance().SetCurrentEnemy(this);
             Damage((int)e.msg.GetField(NetworkManager.DAMAGE).i);
         }
     }
 }
コード例 #8
0
 void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e)
 {
     if (e.msgType.Equals(NetworkManager.DAMAGE))
     {
         if (e.targetName.Equals(m_name) &&
             !GameManager.Instance().PLAYER.USER_NAME.Equals(e.user))
         {
             GameManager.Instance().SetCurrentEnemy(this);
             Damage((int)e.msg.GetField(NetworkManager.DAMAGE).i);
         }
     }
 }
コード例 #9
0
    public void ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        if (e.msgType.Equals(NetworkManager.ENERGY_UPDATE))
        {
            if (!e.targetName.Equals("robo"))
            {
                return;
            }

            GameManager.Instance().ROBO.ENERGY = e.msg.GetField(NetworkManager.ENERGY_UPDATE).f;
            UpdateEnergy();
        }
    }
コード例 #10
0
    void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        if (e.msgType != NetworkManager.CHAT)
        {
            return;
        }

        m_messageStrs.Add(e.user + " : " + e.msg.GetField(NetworkManager.MSG));
        transform.GetChild(0).gameObject.SetActive(true);
        transform.GetComponent <Image>().enabled = true;
        CancelInvoke("HideChatUI");
        Invoke("HideChatUI", 2.0f);
    }
コード例 #11
0
 public void ReceiveNetworkMessage(NetworkManager.MessageEvent e)
 {
     if (e.msgType.Equals(NetworkManager.PART_DESTROY))
     {
         m_destroyBoneList[(int)e.msg.GetField(NetworkManager.PART_DESTROY).i].enabled = true;
     }
     else if (e.msgType.Equals(NetworkManager.HP_UPDATE))
     {
         if (e.targetName.Equals(m_name))
         {
             GameManager.Instance().SetCurrentEnemy(GetComponent <Monster>());
         }
     }
 }
コード例 #12
0
    void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        switch (e.msgType)
        {
        case NetworkManager.REMOVE:
            if (e.targetName.Equals(m_name))
            {
                NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this);
                NetworkManager.Instance().RemoveNetworkEnemyMoveEventListener(this.GetComponent <NetworkMoving>());

                GameObject.Destroy(gameObject);
            }
            break;

        case NetworkManager.HP_UPDATE:
            if (e.targetName.Equals(m_name))
            {
                GameManager.Instance().SetCurrentEnemy(GetComponent <Monster>());
            }
            break;

        case NetworkManager.AI_ANI_NAME:
            if (!e.targetName.Equals(m_name) || m_skeletonAnimation == null ||
                e.msg.GetField(NetworkManager.AI_ANI_NAME) == null ||
                m_skeletonAnimation.state.GetCurrent(0) == null ||
                m_skeletonAnimation.state.GetCurrent(0).animation == null ||
                m_skeletonAnimation.state.GetCurrent(0).animation.name == null)
            {
                return;
            }
            if (m_skeletonAnimation.state.GetCurrent(0).animation.name.Equals(e.msg.GetField(NetworkManager.AI_ANI_NAME).str))
            {
                return;
            }

            m_skeletonAnimation.state.SetAnimation(0,
                                                   e.msg.GetField(NetworkManager.AI_ANI_NAME).str,
                                                   e.msg.GetField(NetworkManager.AI_ANI_LOOP).b);

            break;
        }
    }
コード例 #13
0
    public void ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        if (NetworkOrderController.ORDER_NAME != null &&
            NetworkOrderController.ORDER_NAME.Equals(GameManager.Instance().PLAYER.USER_NAME))
        {
            return;
        }

        if (e.msgType.Equals(NetworkManager.PLANET_INFO))
        {
            if (e.targetName.Equals(m_mapName))
            {
                float leftX  = e.msg.GetField(NetworkManager.PLANET_INFO)[0].f;
                float rightX = e.msg.GetField(NetworkManager.PLANET_INFO)[1].f;

                Vector3 lPos = m_leftMap.transform.localPosition;
                Vector3 rPos = m_rightMap.transform.localPosition;
                m_leftMap.transform.localPosition  = new Vector3(leftX, lPos.y, lPos.z);
                m_rightMap.transform.localPosition = new Vector3(rightX, rPos.y, rPos.z);
            }
        }
    }
コード例 #14
0
    // 다른 플레이어의 체력 갱신용 ( 옵저버일 경우 전부 갱신용 )
    public void ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        if (e.msgType.Equals(NetworkManager.CHARACTER_HPUPDATE))
        {
            // HP UPDATE
            int    curHP = (int)e.msg.GetField(NetworkManager.CHARACTER_HPUPDATE).i;
            int    maxHP = GameSetting.HERO_MAX_HP;//(int)e.msg.GetField(NetworkManager.CHARACTER_MAXHP).i;
            string name  = e.user;

            for (int i = 0; i < m_userList.Count; i++)
            {
                PlayerInfo info = m_userList[i];
                if (info.userName.text.Equals(name))
                {
                    CharacterHPUpdate(i, curHP, maxHP);
                    return;
                }
            }
        }
        else if (e.msgType.Equals(NetworkManager.HP_UPDATE))
        {
            if (e.targetName.Equals("robo"))
            {
                ((GameUI.RobotHPUpdateEvent) this).HPUpdate(
                    (int)e.msg.GetField(NetworkManager.HP_UPDATE).i, GameSetting.HERO_ROBO_MAX_HP);
            }
            else if (e.targetName.Equals("targetMon"))
            {
                if (!NetworkOrderController.OBSERVER_MODE || e.user.Equals(GameManager.Instance().PLAYER.USER_NAME))
                {
                    return;
                }

                gameObject.SetActive(true);

                m_topEnemyHPBar.transform.parent.gameObject.SetActive(true);
                float         width = m_topEnemyHPBar.sprite.rect.size.x;
                RectTransform t     = m_topEnemyHPBar.GetComponent <RectTransform>();
                t.sizeDelta = new Vector2(width * e.msg.GetField(NetworkManager.HP_UPDATE).f, t.sizeDelta.y);

                float arrowWidth = m_enemyHPLeftArrow.sprite.rect.size.x * 0.5f;

                Vector3 left = new Vector3(
                    m_topEnemyHPBar.transform.position.x - (t.sizeDelta.x / 2.0f) - arrowWidth,
                    m_enemyHPLeftArrow.transform.position.y);
                Vector3 right = new Vector3(
                    m_topEnemyHPBar.transform.position.x + (t.sizeDelta.x / 2.0f) + arrowWidth,
                    m_enemyHPLeftArrow.transform.position.y);
                CancelInvoke("MonsterHPOutCheck");
                Invoke("MonsterHPOutCheck", 3.0f);
            }
        }
        else if (e.msgType.Equals(NetworkManager.ENERGY_UPDATE))
        {
            if (e.targetName.Equals("robo"))
            {
                ((GameUI.ENERGYUpdateEvent) this).EnergyUpdate(
                    e.msg.GetField(NetworkManager.ENERGY_UPDATE).f);
            }
        }
    }
コード例 #15
0
    // Order 받는용
    void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        if (e.msgType == NetworkManager.CHARACTER_HPUPDATE &&
            (e.user).Equals(USERNAME))
        {
            InvokeRepeating("DamageEffect", 0.1f, 0.1f);
        }
        if (e.msgType == NetworkManager.CHARACTER_HPUPDATE && e.targetName.Equals(USERNAME))
        {
            Damage(1);
        }
        // 상태 체인지
        else if (e.msgType == NetworkManager.STATE_CHANGE && (e.targetName).Equals(m_userName))
        {
            if (m_isMe)
            {
                return;
            }
            m_curState = (int)e.msg.GetField(NetworkManager.STATE_CHANGE).i;
        }
        // 로봇 조종자
        else if (e.msgType == NetworkManager.ROBOT_DRIVER)
        {
            if (e.msg.GetField(NetworkManager.ROBOT_DRIVER).b)
            {
                GameManager.Instance().ROBO.MOVE_PLYAER = e.user;

                //test


                if (m_isMe && m_userName.Equals(e.user + "_robo"))
                {
                    GameManager.Instance().ChangeScene(GameManager.PLACE.ROBO, gameObject, "InteractionEffect", false);
                }
            }
            else
            {
                if (m_isMe && m_userName.Equals(e.user + "_robo"))
                {
                    m_curState = BitControl.Clear(m_curState, (int)HERO_STATE.CONTROL_DRIVE);
                    GameManager.Instance().ChangeScene(GameManager.PLACE.ROBO_IN_DRIVE);
                    GameManager.Instance().HeroSetup(this);
                }
                GameManager.Instance().ROBO.MOVE_PLYAER = null;
            }
        }
        // 이녀석은 총기를 조작하는 사람
        else if (e.msgType == NetworkManager.ROBOT_GUNNER)
        {
            if (e.msg.GetField(NetworkManager.ROBOT_GUNNER).b)
            {
                GameManager.Instance().ROBO.GUN_PLAYER = e.user;

                if (m_isMe && m_userName.Equals(e.user + "_robo"))
                {
                    GameManager.Instance().ChangeScene(GameManager.PLACE.ROBO, gameObject, "InteractionEffect", false);
                }
            }
            else
            {
                if (m_isMe && m_userName.Equals(e.user + "_robo"))
                {
                    m_curState = BitControl.Clear(m_curState, (int)HERO_STATE.CONTROL_GUN);
                    GameManager.Instance().ChangeScene(GameManager.PLACE.ROBO_IN_GUN);
                    GameManager.Instance().HeroSetup(this);
                }

                GameManager.Instance().ROBO.GUN_PLAYER = null;
            }
        }
    }
コード例 #16
0
    // 다른 사람 정보

    void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(
        NetworkManager.MessageEvent e)
    {
        //연결된게 아닌 경우 /
        if (e.msgType != NetworkManager.USER_CONNECT)
        {
            // 다른사람이 내게 요청을 했다. 나의 정보를
            if (e.msgType == NetworkManager.USER_INFO_REQ)
            {
                NetworkManager.Instance().SendOrderMessage(
                    JSONMessageTool.ToJsonOrderUserEnter(
                        GameManager.Instance().PLAYER.NETWORK_INDEX,
                        GameManager.Instance().PLAYER.STATUS,
                        GameManager.Instance().PLAYER.USER_NAME,
                        GameManager.Instance().PLAYER.SKELETON_DATA_ASSET,
                        m_readyButton.sprite.name == m_sprReady_setting.name));
            }
            //유저가 나갔다
            else if (e.msgType == NetworkManager.USER_LOGOUT)
            {
                // 로그아웃
                GameObject user = m_playerList[(int)e.msg
                                               .GetField(NetworkManager.USER_LOGOUT)
                                               .GetField(NetworkManager.USER_LOGOUT).i - 2];
                if (GetProfileWait(user) != null)
                {
                    GetProfileWait(user).enabled = true;
                }
                GetProfileHide(user).enabled = true;
                GetProfileName(user).enabled = false;
                GetProfileImage(user).color  = Color.black;
                SetPlayerStatus(user, 0, 0);
                SetPlayerStatus(user, 1, 0);
                SetPlayerStatus(user, 2, 0);

                // 레디 정보를 받아와야함
                if (e.msg.GetField(NetworkManager.USER_LOGOUT)
                    .GetField(NetworkManager.READY_STATE).b)
                {
                    m_readyCount--;
                    GetRush(m_playerList[(int)e.orders.GetField(NetworkManager.MSG)
                                         .GetField(NetworkManager.USER_LOGOUT)
                                         .GetField(NetworkManager.USER_INDEX).i - 2]).SetActive(false);
                }

                if (m_readyCount >= 3)
                {
                    m_startButton.sprite = m_sprStart_setting;
                }
                else
                {
                    m_startButton.sprite = m_sprStart_normal;
                }
            }
            else if (e.msgType == NetworkManager.USER_READY)
            {
                //레디
                bool b = e.msg.GetField(NetworkManager.USER_READY)
                         .GetField(NetworkManager.USER_READY).b;

                if (b)
                {
                    GetRushName(
                        m_playerList[(int)e.msg
                                     .GetField(NetworkManager.USER_READY)
                                     .GetField(NetworkManager.USER_INDEX).i - 2])
                    .text = e.targetName;
                    GetRush(m_playerList[(int)e.msg
                                         .GetField(NetworkManager.USER_READY)
                                         .GetField(NetworkManager.USER_INDEX).i - 2]).SetActive(true);
                    m_readyCount++;

                    SoundManager.Instance().PlaySound(m_ready);
                }
                else
                {
                    GetRush(m_playerList[(int)e.msg
                                         .GetField(NetworkManager.USER_READY).GetField(NetworkManager.USER_INDEX).i - 2])
                    .SetActive(false);
                    m_readyCount--;
                }
                if (m_readyCount >= 3)
                {
                    m_startButton.sprite = m_sprStart_setting;
                }
                else
                {
                    m_startButton.sprite = m_sprStart_normal;
                }
            }
            else if (e.msgType == NetworkManager.GAME_START)
            {
                SoundManager.Instance().PlaySound(m_gameStart);

                // 여기서 게임 시작 처리
                List <string> users = new List <string>();
                for (int i = 0; i < m_playerList.Count; i++)
                {
                    MDebug.Log(" " + i + " " + GetProfileName(m_playerList[i]).text);
                    if (string.IsNullOrEmpty(GetProfileName(m_playerList[i]).text))
                    {
                        continue;
                    }
                    users.Add(GetProfileName(m_playerList[i]).text);
                }
                GameManager.Instance().HudSetup(users);
                //NetworkManager.Instance().GameStartSetup(m_playerAssetList);

                NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this);



                PopupManager.Instance().ClosePopup(gameObject);
            }
            return;
        }
        //##########################################################################################
        //#### 다른 유저의 정보가 넘어왔으니 세팅 ##################################################


        int index = (int)e.msg
                    .GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.USER_CONNECT).i;

        bool check = false;

        foreach (Test t in m_playerAssetList)
        {
            if (index == 1)
            {
                check = true;
                break;
            }
            if (t.networkIndex == index)
            {
                check = true;
                break;
            }
        }
        if (!check)
        {
            m_playerAssetList.Add(new Test(e.msg.GetField(NetworkManager.USER_CONNECT)
                                           .GetField(NetworkManager.USER_SKELETON_DATA_ASSET).str,
                                           e.orders.GetField(NetworkManager.MSG)
                                           .GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.CLIENT_ID).str, index));
        }

        // 나자신을 세팅할 필요는 없음
        if (index == GameManager.Instance().PLAYER.NETWORK_INDEX)
        {
            return;
        }

        if (index - 2 < 0)
        {
            return;
        }

        if (index - 2 == 0 && NetworkOrderController.OBSERVER_MODE)
        {
            GameManager.Instance().PLAYER.SKELETON_DATA_ASSET =
                e.msg.GetField(NetworkManager.USER_CONNECT)
                .GetField(NetworkManager.USER_SKELETON_DATA_ASSET).str;
        }

        GameObject player = m_playerList[index - 2];

        if (player == null)
        {
            return;
        }

        // 이미 세팅되어있다면 패스
        if (GetProfileName(player).text == e.msg
            .GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.CLIENT_ID).str)
        {
            return;
        }
        else
        {
            // 정보를 던져줘야함
            NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonOrderUserEnter(
                                                           GameManager.Instance().PLAYER.NETWORK_INDEX,
                                                           GameManager.Instance().PLAYER.STATUS,
                                                           GameManager.Instance().PLAYER.USER_NAME,
                                                           GameManager.Instance().PLAYER.SKELETON_DATA_ASSET,
                                                           false));
        }

        if (GetProfileWait(player) != null)
        {
            GetProfileWait(player).enabled = false;
        }
        GetProfileHide(player).enabled = false;
        GetProfileName(player).enabled = true;
        GetProfileImage(player).color  = Color.white;
        GetProfileName(player).text    = e.orders.GetField(NetworkManager.MSG)
                                         .GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.CLIENT_ID).str;

        SetPlayerStatus(player, 0, (int)e.msg.GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.STATUS_SPEED).i);
        SetPlayerStatus(player, 1, (int)e.msg.GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.STATUS_POWER).i);
        SetPlayerStatus(player, 2, (int)e.msg.GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.STATUS_REPAIR).i);

        try
        {
            GetRush(player).SetActive(e.orders.GetField(NetworkManager.MSG).GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.READY_STATE).b);
            GetRushName(player).text = e.orders.GetField(NetworkManager.MSG).GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.CLIENT_ID).str;
        }catch (Exception)
        {
        }
    }
コード例 #17
0
    public void ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        switch (e.msgType)
        {
        case NetworkManager.DAMAGE:
        {
            if (!e.targetName.Equals(m_bossName))
            {
                return;
            }
        }
        break;

        case NetworkManager.HP_UPDATE:
            if (e.targetName.Equals(m_bossName))
            {
                GameManager.Instance().SetCurrentEnemy(GetComponent <Monster>());
            }
            break;

        case NetworkManager.AI_ANI_NAME:
        {
            if (e.targetName.Equals(m_bossName))
            {
                switch (e.msg.GetField(NetworkManager.AI_PATTERN_NAME).str)
                {
                //A 패턴과 B패턴은 단순 이동 / 공격 애니메이션 처리만 함
                case "A":
                case "B":
                case "D":
                    m_skeletonAnimation.state.SetAnimation(0,
                                                           e.msg.GetField(NetworkManager.AI_ANI_NAME).str,
                                                           e.msg.GetField(NetworkManager.AI_ANI_LOOP).b);
                    break;

                case "C":
                    m_skeletonAnimation.state.SetAnimation(2, e.msg.GetField(NetworkManager.AI_ANI_NAME)[0].str, false);
                    for (int i = 1; i < e.msg.GetField(NetworkManager.AI_ANI_NAME).Count; i++)
                    {
                        m_skeletonAnimation.state.AddAnimation(2, e.msg.GetField(NetworkManager.AI_ANI_NAME)[i].str, false, 0.0f);
                    }
                    AudioSource source = GetComponent <AudioSource>();
                    if (source != null && !source.isPlaying)
                    {
                        source.Play();
                    }
                    break;
                }
                m_curPattern = e.msg.GetField(NetworkManager.AI_PATTERN_NAME).str;
            }
        }
        break;

        case NetworkManager.AI_PATTERN_EXIT:
        {
            if (e.targetName.Equals(m_bossName))
            {
                switch (e.msg.GetField(NetworkManager.AI_PATTERN_NAME).str)
                {
                case "C":

                    m_boss.m_laser.SetInteger("laser", 1);
                    m_boss.m_laser.Play("Wait");
                    m_boss.m_laser.gameObject.SetActive(false);
                    m_skeletonAnimation.state.ClearTrack(2);
                    break;
                }
            }
            break;
        }
        }
    }
    //ORDER 타겟 변경
    // msg orderName 이름 / orderTarget 어떤 내용의 오더를 내리는지
    // 우주 / 로봇안 / 행성   - space - robot - planet   z값 0  / 1  / 2로 구별
    // TODO
    // ORDER
    void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e)
    {
        switch (e.msgType)
        {
        case NetworkManager.PLACE_CHANGE:
            GameManager.Instance().CUR_PLACE =
                (GameManager.ROBO_PLACE)((int)e.msg.GetField(NetworkManager.PLACE_CHANGE).i);
            break;

        case NetworkManager.CREATE:     // 생성해라

            switch (e.msg
                    .GetField(NetworkManager.CREATE)
                    .GetField(NetworkManager.CREATE_TARGET).str)
            {
            case "effect":
            {
                if (e.user.Equals(GameManager.Instance().PLAYER.USER_NAME))
                {
                    return;
                }
                JSONObject json   = e.msg;
                GameObject effect = MapManager.Instance().AddObject(
                    GamePath.EFFECT, new Vector3(json.GetField("X").f, json.GetField("Y").f, -1.0f));
            }

            break;

            case "DamagePoint":
                if (e.targetName.IndexOf(GameManager.Instance().PLAYER.USER_NAME) >= 0)
                {
                    return;
                }
                JSONObject dpJson = e.msg;
                GameObject dp     = MapManager.Instance().AddObject(
                    GamePath.DAMAGE_POINT, new Vector3(
                        dpJson.GetField("X").f, dpJson.GetField("Y").f, -1.0f));

                RoboDamagePoint dps = dp.GetComponent <RoboDamagePoint>();
                dps.name           = e.targetName;
                dps.NETWORK_OBJECT = true;
                break;

            case "boss1_bullet":
            {
                if (e.targetName.IndexOf(GameManager.Instance().PLAYER.USER_NAME) >= 0)
                {
                    return;
                }

                Bullet bullet = BulletManager.Instance().AddBullet(BulletManager.BULLET_TYPE.B_BOSS1_P1);
                //   MDebug.Log("Target " + e.targetName);
                bullet.SetupBullet(e.targetName, true, Vector3.zero);

                JSONObject json = e.msg;

                Vector3 pos = new Vector3(json.GetField("X").f, json.GetField("Y").f, -1.0f);
                //bullet.GetComponent<SpriteRenderer>().flipX = e.orders.GetField(NetworkManager.MSG).GetField(NetworkManager.DIR).b;

                bullet.transform.position = new Vector3(pos.x, pos.y);
            }
            break;

            case "myTeam_bullet":
            {
                if (e.targetName.IndexOf(GameManager.Instance().PLAYER.USER_NAME) >= 0)
                {
                    return;
                }
                Bullet bullet = BulletManager.Instance().AddBullet(BulletManager.BULLET_TYPE.B_HERO_DEF);

                //   MDebug.Log("Target " + e.targetName);
                bullet.SetupBullet(e.targetName, true, Vector3.zero);

                JSONObject json = e.msg;

                Vector3 pos = new Vector3(json.GetField("X").f, json.GetField("Y").f, -1.0f);
                //bullet.GetComponent<SpriteRenderer>().flipX = e.orders.GetField(NetworkManager.MSG).GetField(NetworkManager.DIR).b;

                bullet.transform.position = new Vector3(pos.x, pos.y);
                //총알을 생성하고 좌표 및 로테이션 처리를 해주고 업데이트는 Recvieve 에서
            }
            break;

            case "boss1":
            {
                CreateBOSS(1, e.user, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f);
            }
            break;

            case "boss2":
            {
                CreateBOSS(2, e.user, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f);
            }
            break;

            case "monster1":
            {
                CreateMonster(e.user, GamePath.MONSTER1, e.targetName,
                              e.msg.GetField("X").f, e.msg.GetField("Y").f);
            }
            break;

            case "monster2":
            {
                CreateMonster(e.user, GamePath.MONSTER2, e.targetName,
                              e.msg.GetField("X").f, e.msg.GetField("Y").f);
            }
            break;

            case "SpaceMonster1":
            {
                CreateMonster(e.user, GamePath.SPACE_MONSTER1, e.targetName,
                              e.msg.GetField("X").f, e.msg.GetField("Y").f);
            }
            break;

            case "SpaceMonster2":
            {
                CreateMonster(e.user, GamePath.SPACE_MONSTER2, e.targetName,
                              e.msg.GetField("X").f, e.msg.GetField("Y").f);
            }
            break;

            case "InsidePentrationMonster":
            {
                CreateInsideMonster(e.user, e.targetName,
                                    e.msg.GetField("X").f, e.msg.GetField("Y").f);
            }
            break;

            case "PentrationMonsterSpace":
            {
                CreatePentrationMonster(e.user, e.targetName,
                                        e.msg.GetField("X").f, e.msg.GetField("Y").f);
            }
            break;

            case "PlanetMonster1":
            {
                CreatePlanetMonster(e.user, GamePath.PLANET_MONSTER1, e.targetName,
                                    e.msg.GetField("X").f, e.msg.GetField("Y").f);
            }
            break;

            case "PlanetMonster2":
            {
                CreatePlanetMonster(e.user, GamePath.PLANET_MONSTER2, e.targetName,
                                    e.msg.GetField("X").f, e.msg.GetField("Y").f);
            }
            break;

            case "PlanetMonster3":
            {
                CreatePlanetMonster(e.user, GamePath.PLANET_MONSTER3, e.targetName,
                                    e.msg.GetField("X").f, e.msg.GetField("Y").f);
            }
            break;
            }

            break;

        case NetworkManager.CH_ORIGINUSER:     // 조작자를 바꿔라
            ORDER_NAME  = e.msg.GetField(NetworkManager.ORDER).GetField(NetworkManager.ORDER).str;
            ORDER_SPACE = (short)e.msg.GetField(NetworkManager.ORDER).GetField("order_space").i;

            if (ORDER_NAME == GameManager.Instance().PLAYER.USER_NAME&& ORDER_SPACE == 0)
            {
            }
            else
            {
            }
            break;

        case NetworkManager.CH_ORIGINUSER_REQ:

            //호스트 요청이 왔으므로 호스트를 쏜다
            if (ORDER_NAME == GameManager.Instance().PLAYER.USER_NAME)
            {
                NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonOrderChange(ORDER_NAME, 0));
            }
            break;

        case NetworkManager.REMOVE:     // 지워라
            string removeTarget = e.targetName;

            if (e.user == GameManager.Instance().PLAYER.USER_NAME)
            {
                return;
            }
            switch (e.msg.GetField(NetworkManager.REMOVE).str)
            {
            case "myTeam_bullet":
                BulletManager.Instance().RemoveBullet(removeTarget, Bullet.BULLET_TARGET.PLAYER);
                break;

            case "boss1_bullet":
                BulletManager.Instance().RemoveBullet(removeTarget, Bullet.BULLET_TARGET.ENEMY);
                break;

            case "Monster":
                MapManager.Instance().RemoveObjectName(removeTarget);
                break;
            }
            break;

        case NetworkManager.USER_LOGOUT:
            NetworkManager.Instance().LogOutUser(e.user);
            break;

        case NetworkManager.ROBOT_DRIVER:     // 로봇 조종자
            if (e.msg.GetField(NetworkManager.ROBOT_DRIVER).b)
            {
                GameManager.Instance().ROBO.MOVE_PLYAER = e.user;
            }
            else
            {
                GameManager.Instance().ROBO.MOVE_PLYAER = null;
            }
            //GameManager.Instance().ROBO.name = e.user + "_robot";
            break;

        case NetworkManager.ROBOT_GUNNER:     // 로봇 총 쏘는사람
            if (e.msg.GetField(NetworkManager.ROBOT_GUNNER).b)
            {
                GameManager.Instance().ROBO.GUN_PLAYER = e.user;
            }
            else
            {
                GameManager.Instance().ROBO.GUN_PLAYER = null;
            }
            break;

        case NetworkManager.GAME_START:
            break;

        case NetworkManager.USER_CHARACTER_CREATE:
            if (e.user.Equals(GameManager.Instance().PLAYER.USER_NAME))
            {
                return;
            }

            NetworkManager.Instance().CreateUserCharacter(
                e.user, e.msg.GetField(NetworkManager.USER_CHARACTER_CREATE).str);
            break;
        }
    }