Пример #1
0
    public void Damage(int damage, string boneName)
    {
        base.Damage(damage);
        SpriteRenderer target = null;

        if (boneName.Equals("head"))
        {
        }
        else if (boneName.Equals("Tail"))
        {
        }
        else
        {
            string num = Regex.Replace(boneName, @"\D", "");
            MDebug.Log(boneName);
            int index = int.Parse(num);
            target = m_destroyBoneList[index - 1].m_renderer;

            m_destroyBoneList[index - 1].m_hp -= 1;

            if (m_destroyBoneList[index - 1].m_hp <= 0)
            {
                m_destroyBoneList[index - 1].m_renderer.enabled = true;
                NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonPartDestroy(index - 1));
            }
        }
        NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonHPUdate(m_name, m_hp));
    }
    private void State_Complete(Spine.TrackEntry trackEntry)
    {
        if (trackEntry.animation.name == "transform")
        {
            m_rotate = m_me.GetComponent <Stage1BOSS>().m_patternDRotate;
            m_rotate.transform.position = m_me.transform.position;
            m_rotate.gameObject.SetActive(true);
            m_rotate.transform.localScale = new Vector3(3, 3);

            // 다시 생겼을 때
            if (m_moveEffect)
            {
                m_effect = false;
                iTween.ScaleTo(m_rotate, iTween.Hash("x", 0.0f, "y", 0.0f));
                m_skletonAnimation.state.SetAnimation(2, "move_fast_close", true);
                NetworkManager.Instance().SendOrderMessage(
                    JSONMessageTool.ToJsonAIMessage(m_aiTarget, "D", "move_fast_close", true));
            }
            else
            {
                m_effect = true;
                NetworkManager.Instance().SendOrderMessage(
                    JSONMessageTool.ToJsonAIMessage(m_aiTarget, "D", "attack_D_in", false));
                m_skletonAnimation.state.SetAnimation(2, "attack_D_in", false);
            }
        }
        if (trackEntry.animation.name == "attack_D_in")
        {
        }
    }
Пример #3
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);
                }
            }
        }
    }
    // 몬스터 HP Update
    public void MonsterHPUpdate(int curHP, int maxHP)
    {
        if (maxHP == 0)
        {
            return;
        }
        MDebug.Log("h " + curHP + " max " + maxHP);
        float         percent = ((float)curHP / (float)maxHP);
        float         width   = m_topEnemyHPBar.sprite.rect.size.x;
        RectTransform t       = m_topEnemyHPBar.GetComponent <RectTransform>();

        t.sizeDelta = new Vector2(width * percent, 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);

        m_enemyHPLeftArrow.transform.position  = left;
        m_enemyHPRightArrow.transform.position = right;

        NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonHPUdate("targetMon", percent));
    }
Пример #5
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);
                }
            }
        }
    }
Пример #6
0
    protected override void Move()
    {
        if (m_damageCoolTime)
        {
            return;
        }
        CheckAndSetAnimation(0, ANI_MOVE, true);
        bool  flip = m_skeletonAnimation.skeleton.flipX;
        float dir  = (flip) ? 1.0f : -1.0f;

        if (m_target == null)
        {
            m_curState = "move";
        }

        transform.Translate(
            new Vector3(GameSetting.HERO_MOVE_SPEED * Time.deltaTime * dir, 0.0f));

        if (m_curState != m_prevState)
        {
            NetworkManager.Instance().SendOrderMessage(
                JSONMessageTool.ToJsonAIMessage(m_name, "", ANI_MOVE, true));
        }

        MoveSend();
    }
    void OnCollisionStay2D(Collision2D col)
    {
        if (m_target == null)
        {
            return;
        }

        m_attackTick += Time.deltaTime;
        //     MDebug.Log("Tick " + string.Format("{0:F1}" , tick));
        if (m_attackTick <= 0.5f)
        {
            return;
        }
        m_attackTick = 0.0f;
        Hero hero = m_target.GetComponent <Hero>();

        if (hero != null)
        {
            if (hero.IS_PLAYER)
            {
                hero.Damage(1, m_skeletonAnimation.skeleton.flipX, 500.0f);
            }
            else
            {
                NetworkManager.Instance().SendOrderMessage(
                    JSONMessageTool.ToJsonCharacterHPUpdate(hero.USERNAME, 10, GameSetting.HERO_MAX_HP));
            }
        }
        CheckAndSetAnimation(0, ANI_MOVE, true);
    }
Пример #8
0
    public override void Damage(int damage)
    {
        base.Damage(damage);

        if (!m_tutorial)
        {
            NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonHPUdate(m_name, m_hp));
        }

        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);
        }
    }
Пример #9
0
 //Start
 public void StartButton()
 {
     // if(m_startButton.sprite == m_sprStart_setting)
     {
         NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonOrderGameSatart());
     }
 }
Пример #10
0
    public void ShootEgg(int[] index, bool randDir = false)
    {
        for (int i = 0; i < index.Length; i++)
        {
            Bullet     b    = BulletManager.Instance().AddBullet(BulletManager.BULLET_TYPE.EGG_BULLET);
            GameObject bone = m_boneList[index[i]];

            Vector3 dir = m_target.transform.position - bone.transform.position;
            dir.Normalize();

            if (randDir)
            {
                float t = (UnityEngine.Random.Range(0, 2) == 1) ? 1.0f : -1.0f;
                dir *= t;

                dir = new Vector3(dir.x + UnityEngine.Random.Range(-0.3f, 0.3f), dir.y + UnityEngine.Random.Range(-0.3f, 0.3f));
            }

            string name = GameManager.Instance().PLAYER.USER_NAME + "_boss2_" + Monster.m_index++;
            b.SetupBullet(name, false, dir);
            b.BULLET_SPEED = 20.0f + UnityEngine.Random.Range(-10.0f, 10.0f);
            Vector3 pos = bone.transform.position;
            b.transform.position = pos;

            NetworkManager.Instance().SendOrderMessage(
                JSONMessageTool.ToJsonCreateOrder(
                    name,
                    "boss1_bullet",
                    pos.x, pos.y,
                    b.transform.rotation.eulerAngles.y,
                    false));
        }
    }
Пример #11
0
    public override float Attack()
    {
        m_curState = "attack";

        if (m_heroTarget == null)
        {
            return(1.0f);
        }

        Vector3 pos  = transform.position;
        Vector3 hero = m_heroTarget.transform.position;

        if (pos.x <= hero.x)
        {
            m_skeletonAnimation.skeleton.flipX = true;
        }
        else
        {
            m_skeletonAnimation.skeleton.flipX = false;
        }

        if (Mathf.Abs(Vector3.Distance(pos, hero)) <= 51.0f)
        {
            CheckAndSetAnimation(0, ANI_ATTACK, false);
            if (!m_curState.Equals(m_prevState))
            {
                m_source.Play();
                NetworkManager.Instance().SendOrderMessage(
                    JSONMessageTool.ToJsonAIMessage(m_name, "", ANI_ATTACK, false));
            }
        }
        return(1.0f);
    }
Пример #12
0
    public override float Attack(GameObject hero, GameObject me, int index)
    {
        m_tick   += Time.deltaTime;
        m_hero    = hero;
        m_monster = me;
        // 패턴 A
        // 플레이어 위치를 추적하여 직선으로 날아가는 탄환 발사

        // 탄환 3발 발사
        // 2초마다 한번씩
        if (m_tick >= GameSetting.BOSS1_PATTERN_B_ATTACK_COOLTIME)
        {
            //  BulletManager.Instance().AddBullet(BulletManager.BULLET_TYPE.B_BOSS1_P1);
            m_skletonAnimation.state.SetAnimation(0, m_attackAni, true);
            NetworkManager.Instance().SendOrderMessage(
                JSONMessageTool.ToJsonAIMessage(
                    m_aiTarget,
                    "B",
                    m_attackAni,
                    false));
            return(GameSetting.BOSS1_PATTERN_B_ATTACK_COOL);
        }

        return(0.0f);
    }
    void Update()
    {
        //MDebug.Log("BULLET");
        float angle = 0.0f;

        if (Input.GetKey(KeyCode.U))
        {
            angle = -0.5f;
            transform.Rotate(new Vector3(0, 0, angle), Space.World);
        }

        if (Input.GetKey(KeyCode.J))
        {
            angle = 0.5f;
            transform.Rotate(new Vector3(0, 0, angle), Space.World);
        }

        if (Input.GetKeyUp(KeyCode.Space))
        {
            Bullet  b   = BulletManager.Instance().AddBullet(BulletManager.BULLET_TYPE.B_HERO_DEF);
            Vector3 pos = transform.position;
            //float width = (m_renderer.flipX) ? m_renderer.bounds.size.x / 2.0f : -m_renderer.bounds.size.x / 2.0f;
            b.transform.position = new Vector3(pos.x, pos.y, pos.z);

            b.transform.rotation = transform.rotation;

            string n = GameManager.Instance().PLAYER.USER_NAME + "_" + index;
            b.SetupBullet(n, false, Vector3.zero);
            //MDebug.Log("b " + n + "     " + JSONMessageTool.ToJsonCreateOrder(n, "myTeam_bullet", pos.x, pos.y, pos.z, bullet.GetComponent<SpriteRenderer>().flipX));
            NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonCreateOrder(n, "myTeam_bullet", pos.x, pos.y, pos.z, b.GetComponent <SpriteRenderer>().flipX));
            index++;
        }
    }
    // -- 적 생성 ----------------------------------------------------------------------------------------------- //


    public GameObject AddMonster(string prefabPath, string name, Vector3 pos)
    {
        GameObject monster = AddObject(prefabPath, pos);

        if (monster != null)
        {
            if (prefabPath.Equals(GamePath.BOSS1))
            {
                monster.GetComponent <Stage1BOSS>().MONSTER_NAME = name;

                NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonCreateOrder(name, "boss1", pos.x, pos.y, pos.z));
            }
            else if (prefabPath.Equals(GamePath.BOSS2))
            {
                monster.GetComponent <Stage2Boss>().MONSTER_NAME = name;

                NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonCreateOrder(name, "boss2", pos.x, pos.y, pos.z));
            }
            else if (prefabPath.Equals(GamePath.MONSTER1))
            {
                monster.GetComponent <Stage1Monster>().MONSTER_NAME = name;
                NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonCreateOrder(name, "monster1"));
            }
            else if (prefabPath.Equals(GamePath.MONSTER2))
            {
                monster.GetComponent <Stage1Monster>().MONSTER_NAME = name;
                NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonCreateOrder(name, "monster2"));
            }
            else if (prefabPath.Equals(GamePath.INSIDE_MONSTER))
            {
                monster.GetComponent <InsidePentrationMonster>().MONSTER_NAME = name;
            }
        }
        return(monster);
    }
Пример #15
0
    void CompleteAnimation(TrackEntry trackEntry)
    {
        if (trackEntry.animation.name.Equals(ANI_REPAIR))
        {
            m_curState = BitControl.Clear(m_curState, (int)HERO_STATE.ATTACK);
            m_skletonAnimation.state.ClearTrack(1);

            if (!m_isMe)
            {
                return;
            }
            if (m_damagePointFix != null)
            {
                m_damagePointFix.GetComponent <RoboDamagePoint>().DamageFix();
            }
            else if (m_monster != null)
            {
                if (m_monster.enabled)
                {
                    m_monster.Damage(1);
                }
                else
                {
                    NetworkManager.Instance().SendOrderMessage(
                        JSONMessageTool.ToJsonHPUdate(m_monster.MONSTER_NAME, 1));
                }
            }
        }
    }
Пример #16
0
 // 접속 끊기 이벤트
 void OnApplicationQuit()
 {
     NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonOrderUserLogOut(
                                                    GameManager.Instance().PLAYER.NETWORK_INDEX,
                                                    GameManager.Instance().PLAYER.STATUS,
                                                    GameManager.Instance().PLAYER.USER_NAME,
                                                    m_readyButton.sprite == m_sprReady_setting));
 }
Пример #17
0
 void OnApplicationQuit()
 {
     NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonOrderUserLogOut(
                                                    GameManager.Instance().PLAYER.NETWORK_INDEX,
                                                    GameManager.Instance().PLAYER.STATUS,
                                                    GameManager.Instance().PLAYER.USER_NAME,
                                                    false));
 }
    public override void PatternStart()
    {
        m_skletonAnimation.state.SetAnimation(2, "transform", false);

        NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonAIMessage(m_aiTarget, "D", "transform", false));

        m_skletonAnimation.state.Complete += State_Complete;
    }
 public void SendMessageToServer()
 {
     INPUT = false;
     NetworkManager.Instance().SendNetworkMessage(JSONMessageTool.ToJsonChat(m_inputField.text));
     //    m_messageStrs.Add(m_inputField.text);
     m_inputField.Select();
     m_inputField.text = "";
 }
    void Update()
    {
        if (NetworkOrderController.ORDER_NAME != null &&
            !NetworkOrderController.ORDER_NAME.Equals(GameManager.Instance().PLAYER.USER_NAME))
        {
            return;
        }
        float   cameraHalfWdith  = (Camera.main.orthographicSize * Screen.width / Screen.height);
        float   cameraHalfHeight = (cameraHalfWdith * Screen.height / Screen.width);
        Vector3 pos      = m_camera.transform.position;
        Vector3 checkPos = Vector3.zero;

        //Left Map  -- RightMap 일 경우
        if (m_leftMap.transform.position.x <= m_rightMap.transform.position.x)
        {
            // LEFT Check
            checkPos = m_leftMapLeftLimit.transform.position;
            if (pos.x - cameraHalfWdith <= checkPos.x)
            {
                m_rightMap.transform.localPosition = new Vector3(
                    m_leftMap.transform.localPosition.x - 50, 0, 0);
                NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonPlanetInfoSend(
                                                               m_mapName, m_leftMap.transform.localPosition.x, m_leftMap.transform.localPosition.x - 50));
            }

            // Right Check
            checkPos = m_rightMapRightLimit.transform.position;
            if (pos.x + cameraHalfWdith >= checkPos.x)
            {
                m_leftMap.transform.localPosition = new Vector3(
                    m_rightMap.transform.localPosition.x + 50, 0, 0);
                NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonPlanetInfoSend(
                                                               m_mapName, m_rightMap.transform.localPosition.x + 50, m_rightMap.transform.localPosition.x));
            }
        }
        // Right Map -- Left Map 일 경우
        else if (m_leftMap.transform.position.x >= m_rightMap.transform.position.x)
        {
            // LEFT Check
            checkPos = m_rightMapLeftLimit.transform.position;
            if (pos.x - cameraHalfWdith <= checkPos.x)
            {
                m_leftMap.transform.localPosition = new Vector3(
                    m_rightMap.transform.localPosition.x - 50, 0, 0);
                NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonPlanetInfoSend(
                                                               m_mapName, m_rightMap.transform.localPosition.x - 50, m_rightMap.transform.localPosition.x));
            }
            // Right Check
            checkPos = m_leftMapRightLimit.transform.position;
            if (pos.x + cameraHalfWdith >= checkPos.x)
            {
                m_rightMap.transform.localPosition = new Vector3(
                    m_leftMap.transform.localPosition.x + 50, 0, 0);
                NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonPlanetInfoSend(
                                                               m_mapName, m_leftMap.transform.localPosition.x, m_leftMap.transform.localPosition.x + 50));
            }
        }
    }
 // 현재 상태값 전송 (애니메이션용)
 void StateSend()
 {
     if (m_prevState != m_roboState)
     {
         NetworkManager.Instance().SendOrderMessage(
             JSONMessageTool.ToJsonOrderStateValueChange(
                 m_movePlayerName + "_robot",
                 m_roboState));
     }
 }
 // 총 각도 전송
 void GunAngleSend()
 {
     if (m_prevAngle != m_gunAngle)
     {
         NetworkManager.Instance().SendOrderMessage(
             JSONMessageTool.ToJsonOrderGunAngle(
                 m_gunPlayerName + "_gun",
                 m_gunAngle));
     }
 }
Пример #23
0
 void StateSend()
 {
     if (m_prevState != m_curState)
     {
         // if (!BitControl.Get(m_curState , (int)HERO_STATE.IDLE))
         NetworkManager.Instance().SendOrderMessage(
             JSONMessageTool.ToJsonOrderStateValueChange(
                 m_userName, m_curState));
     }
 }
Пример #24
0
 public PatternA(SkeletonAnimation ani, string moveAni, string attackAni, string aiTarget) : base(ani, moveAni, attackAni, aiTarget)
 {
     m_skletonAnimation.state.Complete += State_Complete;
     m_skletonAnimation.state.SetAnimation(0, m_moveAni, true);
     NetworkManager.Instance().SendOrderMessage(
         JSONMessageTool.ToJsonAIMessage(
             m_aiTarget,
             "A",
             m_moveAni,
             true));
 }
Пример #25
0
 public override void Damage(int damage)
 {
     base.Damage(damage);
     if (m_hp <= 0)
     {
         MapManager.Instance().AddObject(GamePath.EFFECT, transform.position);
         NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonRemoveOrder(m_name, "Monster"));
         GameObject.Destroy(gameObject);
         return;
     }
     NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonHPUdate(m_name, m_hp));
 }
Пример #26
0
    public override void Exit()
    {
        Stage1BOSS boss = m_me.GetComponent <Stage1BOSS>();

        boss.m_laser.SetInteger("laser", 1);
        boss.m_laser.Play("Wait");
        boss.m_laser.gameObject.SetActive(false);
        boss.m_laser.GetComponent <BoxCollider2D>().enabled = false;
        m_skletonAnimation.state.ClearTrack(2);

        NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonAIExitMessage(m_aiTarget, "C"));
    }
Пример #27
0
    void Update()
    {
        if (m_hp <= 0)
        {
            MapManager.Instance().AddObject(GamePath.EFFECT, transform.position);
            NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonRemoveOrder(m_name, "Monster"));
            GameObject.Destroy(gameObject);
            return;
        }
        if (Input.GetKeyUp(KeyCode.I))
        {
            GameManager.Instance().SetCurrentEnemy(this);

            Damage(20);
        }
        if (m_pattern != null)
        {
            m_pattern.Update(gameObject);
        }

        // 체력이 30% 이하로 떨어지면
        if (m_hp <= m_fullHp * GameSetting.BOSS1_PATTERN_D_HP_CONDITION)
        {
            // 광폭화 모드가 아니라면 광폭화 모드다 !!!!
            if (!(m_pattern is Boss2PatternD))
            {
                m_tail.gameObject.SetActive(false);
                m_pattern = new Boss2PatternD(m_skeletonAnimation, ANI_MOVE, null, m_name);
            }
        }
        else
        {
            if (!PatternA_AbleCheck())
            {
                if (!PatternB_AbleCheck())
                {
                    m_attackableTick = 0.0f;
                    m_patternATick   = 0.0f;
                    m_patternBTick   = 0.0f;
                    m_patternCTick   = 0.0f;
                }
            }
        }

        // Move
        Move();
        // 쿨타임 중이면 아~~무것도 안함
        if (CoolTime())
        {
            return;
        }
        SetCoolTime(Attack());
    }
Пример #28
0
    void MoveSend()
    {
        Vector3 pos      = transform.position;
        float   distance = Vector3.Distance(m_prevPos, pos);

        m_prevPos = transform.position;

        Vector3 velocity = (transform.position - m_prevPos) / Time.deltaTime;
        Vector3 sendPos  = m_prevPos + (velocity * (Time.deltaTime - m_lastSendTime));

        NetworkManager.Instance().SendEnemyMoveMessage(
            JSONMessageTool.ToJsonEnemyMove(m_name, sendPos.x, sendPos.y, 0, true, Vector3.zero));
    }
Пример #29
0
    // ---------------------------------------------------------------------//

    public override void PatternStart()
    {
        m_skletonAnimation.state.SetAnimation(2, "transform", false);
        m_skletonAnimation.state.AddAnimation(2, "attack_C_charge", false, 0.0f);
        m_skletonAnimation.state.AddAnimation(2, "attack_C_fire", false, 0.0f);


        NetworkManager.Instance().SendOrderMessage(
            JSONMessageTool.ToJsonAIMessage(m_aiTarget, "C", new string[] { "transform", "attack_C_charge", "attack_C_fire" }));

        m_skletonAnimation.gameObject.GetComponent <AudioSource>().Play();
        m_skletonAnimation.state.Complete += CompleteEvent;
        base.PatternStart();
    }
    // -- 게임 제어 ------------------------------------------------------//
    public void GameStart()
    {
        // 로그인 / 로비 세팅 완료되었다.



        // 옵저버일 경우 캐릭터 생성 명령을 하지 않음
        if (NetworkOrderController.OBSERVER_MODE)
        {
            //h.IS_PLAYER = false;
            //   h.USERNAME = NetworkOrderController.ORDER_NAME;
        }
        else
        {
            // 자기 자신 생성해야함 ---------------------------------//


            string prefab = "";
            switch (GameManager.Instance().PLAYER.SKELETON_DATA_ASSET)
            {
            case "char_01_SkeletonData": prefab = GamePath.CHARACTER1; break;

            case "char_02_SkeletonData": prefab = GamePath.CHARACTER2; break;

            case "char_03_SkeletonData": prefab = GamePath.CHARACTER3; break;
            }
            GameObject hero = MapManager.Instance().AddHero(prefab, m_playerStartPosition.transform.position);
            hero.transform.parent = m_playerStartPosition.transform.parent;
            Hero h = hero.GetComponent <Hero>();
            h.USERNAME = GameManager.Instance().PLAYER.USER_NAME + "_robo";
            h.m_isMe   = true;
            h.GetComponent <BoxCollider2D>().isTrigger = false;
            GameManager.Instance().PLAYER.PLAYER_HERO = h;
            GameManager.Instance().AddObserverInfo(h);
            // m_userNameList.Add(GameManager.Instance().PLAYER.USER_NAME);
            // ----------------------------------------------------- //



            //       GameStartUserSetup(GameManager.Instance().PLAYER.USER_NAME);

            SendOrderMessage(JSONMessageTool.ToJsonOrderUserCrateCharacter(
                                 GameManager.Instance().PLAYER.USER_NAME,
                                 GameManager.Instance().PLAYER.SKELETON_DATA_ASSET));
        }

        SoundManager.Instance().PlayBGM(2);
        m_chatUI.SetActive(true);
        GameManager.Instance().m_curSceneState = "play";
    }