Beispiel #1
0
    public void TownUserLeave(PMsgMapLeaveMapS leaveInfo)
    {
        TownUnit unit = null;

        if (townUnitList.TryGetValue(leaveInfo.UllRoleId, out unit))
        {
            //다로딩이 완료된애만
            string     path  = "Effect/_UI/_INGAME/Fx_IN_goout_01";
            GameObject effGo = GameObject.Instantiate(Resources.Load(path)) as GameObject;
            effGo.transform.parent        = unit.transform;
            effGo.transform.localScale    = unit.transform.localScale;
            effGo.transform.localPosition = Vector3.zero;

            TempCoroutine.instance.FrameDelay(0.5f, () =>
            {
                Destroy(unit.gameObject);
            });

            townUnitList.Remove(leaveInfo.UllRoleId);
        }
        else
        {
            //내꺼는 보통 없다
            //Debug.LogError("not found TownUnit error " + leaveInfo.UllRoleId);
        }

        /*
         * if(townUnitList.ContainsKey(leaveInfo.UllRoleId))
         * {
         *  Destroy(townUnitList[leaveInfo.UllRoleId].gameObject);
         *  townUnitList.Remove(leaveInfo.UllRoleId);
         * }
         */
    }
    public static IEnumerator CreateTownUnitAsync(int x, int y, System.Action <TownUnit> callback, params object[] args)
    {
        GameObject _townUnit = new GameObject();

        _townUnit.name = "TownUnit";

        TownUnit tu  = _townUnit.AddComponent <TownUnit>();
        Vector3  pos = NaviTileInfo.instance.GetTilePos(x, y);

        NavMeshHit hit;

        if (NavMesh.SamplePosition(pos, out hit, 10, -1))
        {
            pos = hit.position;
        }

        tu.transform.position = pos;

        tu.Height = 2.47f;
        yield return(SceneManager.instance.StartCoroutine(tu.InitAsync(args)));

        tu.SetTrailRenderer(tu.gameObject, false);


        // 마을에서 스케일 1.2정도 크게해줘
        tu.gameObject.transform.localScale = new Vector3(1.4f, 1.4f, 1.4f);

        NGUITools.SetLayer(_townUnit, 14);

        callback(tu);
    }
Beispiel #3
0
    /// <summary> 마을 콜로세움, 멀티보스레이드 다른 유저 입장 </summary>
    public void OnInUser(NetData.RoomUserInfo userInfo)
    {
        int    arr = NetData.instance.GetGameRoomUserArr(userInfo.Id);
        string lv  = string.Format(_LowDataMgr.instance.GetStringCommon(453), userInfo.Lv);

        TakeParNames[arr].text = string.Format("{0} {1}", lv, userInfo.Name);
        PnTouchObj[arr].SetActive(true);

        TownUnit unit = null;

        if (SceneManager.instance.GetState <TownState>().GetTownUnits().TryGetValue((long)userInfo.Id, out unit))
        {
            UIHelper.CreatePcUIModel("ReadyPopup", PartnerModelRoot[arr]
                                     , unit.townunitData.character_id
                                     , unit.townunitData.EquipHeadItemIdx
                                     , unit.townunitData.costume_id
                                     , unit.townunitData.EquipClothItemIdx
                                     , unit.townunitData.EquipWeaponItemIdx
                                     , unit.townunitData.SkillSetID
                                     , 3
                                     , unit.townunitData.isHideCostume
                                     , false);
        }
        else
        {
            NetworkClient.instance.SendPMsgQueryRoleInfoC((long)userInfo.Id);
        }
    }
    public static TownUnit CreateTownUnit(int x, int y, params object[] args)
    {
        GameObject _townUnit = new GameObject();

        _townUnit.name = "TownUnit";

        TownUnit tu  = _townUnit.AddComponent <TownUnit>();
        Vector3  pos = NaviTileInfo.instance.GetTilePos(x, y);

        NavMeshHit hit;

        if (NavMesh.SamplePosition(pos, out hit, 10, -1))
        {
            pos = hit.position;
        }

        tu.transform.position = pos;

        tu.Height = 2.47f;
        tu.Init(args);

        tu.SetTrailRenderer(tu.gameObject, false);

        // 마을에서 스케일 1.2정도 크게해줘
        tu.gameObject.transform.localScale = new Vector3(1.4f, 1.4f, 1.4f);

        NGUITools.SetLayer(_townUnit, 14);

        return(tu);
    }
Beispiel #5
0
    public IEnumerator TownUserEnter(PMsgMapRoleInfoS anotherUserInfo)
    {
        //이미 있는경우는 추가하지 않는다.
        TownUnit unit = null;

        if (townUnitList.TryGetValue(anotherUserInfo.UllRoleId, out unit))
        {
            uint head = 0, cloth = 0, weapon = 0;
            int  equipCount = anotherUserInfo.UnEquipmentId.Count;
            for (int i = 0; i < equipCount; i++)
            {
                int equipId = anotherUserInfo.UnEquipmentId[i];
                if (equipId <= 0)
                {
                    continue;
                }

                Item.EquipmentInfo equipInfo = _LowDataMgr.instance.GetLowDataEquipItemInfo((uint)equipId);
                if (equipInfo == null)
                {
                    Debug.LogError(string.Format("friend equip item not found lowdataID={0} error", equipId));
                    continue;
                }

                if (equipInfo.UseParts == (byte)ePartType.CLOTH)
                {
                    cloth = (uint)equipId;
                }
                //else if (equipInfo.UseParts == (byte)ePartType.HELMET)
                //head = (uint)equipId;
                else if (equipInfo.UseParts == (byte)ePartType.WEAPON)
                {
                    weapon = (uint)equipId;
                }
            }

            unit.ChangeSkin(anotherUserInfo.UnCostumeShowFlag == (int)COSTUME_FLAG_TYPE.COSTUME_FLAG_HIDE, (uint)anotherUserInfo.UnCostumeId, head, cloth, weapon);
            unit.ChangeTitle(anotherUserInfo.UnTitlePrefix, anotherUserInfo.UnTitleSuffix);

            /*
             * UIBasePanel readyPopup = UIMgr.GetUIBasePanel("UIPopup/ReadyPopup");
             * if (readyPopup != null)
             * {
             *  if ((readyPopup as ReadyPopup).IsRoom)
             *  {
             *      (readyPopup as ReadyPopup).OnChangeUserInfo(anotherUserInfo.UllRoleId);
             *  }
             * }
             */
            yield break;
        }

        if (NetData.instance.GetUserInfo().GetCharUUID() == (ulong)anotherUserInfo.UllRoleId)
        {
            yield break;
        }

        NetData.RecommandFriendData friend = new NetData.RecommandFriendData();

        friend.c_usn         = (ulong)anotherUserInfo.UllRoleId;
        friend.character_id  = (uint)anotherUserInfo.UnType;
        friend.nickname      = anotherUserInfo.SzName;
        friend.level         = (uint)anotherUserInfo.UnLevel;
        friend.costume_id    = (uint)anotherUserInfo.UnCostumeId;
        friend.isHideCostume = (int)COSTUME_FLAG_TYPE.COSTUME_FLAG_HIDE == anotherUserInfo.UnCostumeShowFlag;
        friend.Prefix        = anotherUserInfo.UnTitlePrefix;
        friend.Sufffix       = anotherUserInfo.UnTitleSuffix;

        if (friend.character_id < 10000)
        {
            friend.character_id = 12000;
        }

        if (friend.costume_id <= 0)
        {
            Debug.LogError(string.Format("RoleID: {0}, costume idx = {1} error charIdx={2}", anotherUserInfo.UllRoleId, friend.costume_id, friend.character_id));

            if (friend.character_id == 11000)
            {
                friend.costume_id = 100;
            }
            else if (friend.character_id == 12000)
            {
                friend.costume_id = 110;
            }
            else if (friend.character_id == 13000)
            {
                friend.costume_id = 120;
            }
        }

        int count = anotherUserInfo.UnEquipmentId.Count;

        for (int i = 0; i < count; i++)
        {
            int equipId = anotherUserInfo.UnEquipmentId[i];
            if (equipId <= 0)
            {
                continue;
            }

            Item.EquipmentInfo equipInfo = _LowDataMgr.instance.GetLowDataEquipItemInfo((uint)equipId);
            if (equipInfo == null)
            {
                Debug.LogError(string.Format("friend equip item not found lowdataID={0} error", equipId));
                continue;
            }

            if (equipInfo.UseParts == (byte)ePartType.CLOTH)
            {
                friend.EquipClothItemIdx = (uint)equipId;
            }
            //else if (equipInfo.UseParts == (byte)ePartType.HELMET)
            //friend.EquipHeadItemIdx = (uint)equipId;
            else if (equipInfo.UseParts == (byte)ePartType.WEAPON)
            {
                friend.EquipWeaponItemIdx = (uint)equipId;
            }
        }

        /*
         * if (friend.character_id == 11000)
         * {
         *  friend.costume_id = (uint)100;
         * }
         * else if (friend.character_id == 12000)
         * {
         *  friend.costume_id = (uint)110;
         * }
         * else if (friend.character_id == 13000)
         * {
         *  friend.costume_id = (uint)120;
         * }
         * else
         * {
         *  Debug.LogError(string.Format("error not found character id {0}, is setting default id:{1}", friend.character_id, 11000));
         *  friend.character_id = 11000;
         *  friend.costume_id = (uint)100;
         * }
         */

        object[] initialData = new object[4] {
            0, 0, (int)UnitType.TownNpc, friend
        };

        //TownUnit tu = TownUnit.CreateTownUnit(anotherUserInfo.UnPosX, anotherUserInfo.UnPosY, initialData);
        TownUnit tu = null;

        yield return(StartCoroutine(TownUnit.CreateTownUnitAsync(anotherUserInfo.UnPosX, anotherUserInfo.UnPosY, (retval) => { tu = retval; }, initialData)));

        tu.ChangeState(UnitState.Idle);

        if (!townUnitList.ContainsKey(anotherUserInfo.UllRoleId))
        {
            townUnitList.Add(anotherUserInfo.UllRoleId, tu);
        }
        else
        {
            Debug.LogError(string.Format("is already key error key={0}, name={1}, isMyChar={2}"
                                         , anotherUserInfo.UllRoleId, anotherUserInfo.SzName, ((ulong)anotherUserInfo.UllRoleId) == NetData.instance.GetUserInfo()._charUUID));
        }

        UIBasePanel basePanel = UIMgr.GetTownBasePanel();

        if (basePanel != null)
        {
            (basePanel as TownPanel).CreateHeadObjet(tu.gameObject, friend.nickname, friend.Prefix, friend.Sufffix, false);

            //string path = string.Format("Effect/_UI/_INGAME/{0}", name);
            CreateAccessEff(tu.gameObject);
        }
        else
        {
            TownNickList.Add(new TownNickData(tu.gameObject, friend.nickname, friend.Prefix, friend.Sufffix));
        }
    }