Пример #1
0
    public static int SortRoleList(CliProto.GC_ROLELIST refRoleList)
    {
        if (refRoleList.m_Count == 0)
        {
            return(-1);
        }
        if (refRoleList.m_Count == 1)
        {
            return(0);
        }
        UInt64[] arrayInfo = new UInt64[4];
        for (int i = 0; i < refRoleList.m_Count; i++)
        {
            arrayInfo[i] = UInt64.Parse(Encoding.UTF8.GetString(refRoleList.m_RoleInfoList[i].m_RoleInfo.m_createtime));
        }
        if (refRoleList.m_Count == 2)
        {
            SwitchPosIfLess(refRoleList, 0, 1, arrayInfo);
        }
        else
        {
            for (int i = 0; i < refRoleList.m_Count - 1; i++)
            {
                for (int j = i + 1; j < refRoleList.m_Count; j++)
                {
                    SwitchPosIfLess(refRoleList, i, j, arrayInfo);
                }
            }
        }

        return(GetLastLoginRoleIndex(refRoleList));
    }
Пример #2
0
    public static void OnMessage_GCID_ROLELIST(int iMsgID, ref CMessage msg)
    {
        SDGlobal.Log("rolelist received");

        CliProto.GC_ROLELIST refMSG = (CliProto.GC_ROLELIST)msg;

        SDNetGlobal.roleCount = refMSG.m_Count;
        if (!SDNetGlobal.bReConnectGate)
        {
            SDNetGlobal.lastSelectRole = SelectRole.SortRoleList(refMSG);
        }

        for (int i = 0; i < SDNetGlobal.roleCount; i++)
        {
            if (SDNetGlobal.playerList[i] == null)
            {
                SDNetGlobal.playerList[i] = new sdPlayerInfo();
            }

            sdPlayerInfo kPlayerInfo = SDNetGlobal.playerList[i];
            kPlayerInfo.mRoleName   = System.Text.Encoding.UTF8.GetString(refMSG.m_RoleInfoList[i].m_RoleInfo.m_RoleName);
            kPlayerInfo.mDBID       = refMSG.m_RoleInfoList[i].m_RoleInfo.m_DBRoleId;
            kPlayerInfo.mGender     = refMSG.m_RoleInfoList[i].m_RoleInfo.m_Gender;
            kPlayerInfo.mSkinColor  = refMSG.m_RoleInfoList[i].m_RoleInfo.m_SkinColor;
            kPlayerInfo.mHairStyle  = refMSG.m_RoleInfoList[i].m_RoleInfo.m_HairStyle;
            kPlayerInfo.mBaseJob    = refMSG.m_RoleInfoList[i].m_RoleInfo.m_BaseJob;
            kPlayerInfo.mJob        = refMSG.m_RoleInfoList[i].m_RoleInfo.m_Job;
            kPlayerInfo.mLevel      = refMSG.m_RoleInfoList[i].m_RoleInfo.m_Level;
            kPlayerInfo.mEquipCount = refMSG.m_RoleInfoList[i].m_Equip.m_ItemCount;

            if (kPlayerInfo.mEquipCount > 0)
            {
                kPlayerInfo.mEquipID = new uint[kPlayerInfo.mEquipCount];
                for (int j = 0; j < kPlayerInfo.mEquipCount; ++j)
                {
                    kPlayerInfo.mEquipID[j] = (uint)refMSG.m_RoleInfoList[i].m_Equip.m_Items[j].m_TID;
                }
            }
        }

        for (int i = SDNetGlobal.roleCount; i < 4; i++)
        {
            SDNetGlobal.playerList[i] = null;
        }

        SelectRole sr = sdGameLevel.instance.NGUIRoot.GetComponentInChildren <SelectRole>();

        if (sr != null)
        {
            sr.OnRoleList();
        }

        if (SDNetGlobal.bReConnectGate)
        {
            SDNetGlobal.OnMessage_GCID_ROLELIST(iMsgID, ref msg);
        }
    }
Пример #3
0
    public static void SwitchPosIfLess(CliProto.GC_ROLELIST refRoleList, int x, int y, UInt64[] arrayInfo)
    {
        if (arrayInfo[x] > arrayInfo[y])
        {
            HeaderProto.SRoleInfoWithEquip role = refRoleList.m_RoleInfoList[x];
            refRoleList.m_RoleInfoList[x] = refRoleList.m_RoleInfoList[y];
            refRoleList.m_RoleInfoList[y] = role;

            UInt64 tempTime = arrayInfo[y];
            arrayInfo[y] = arrayInfo[x];
            arrayInfo[x] = tempTime;
        }
    }
Пример #4
0
    //
    protected void OnMessage_GCID_ROLELIST(int iMsgID, ref CMessage msg)
    {
        SDGlobal.Log("rolelist received");

        CliProto.GC_ROLELIST refMSG = (CliProto.GC_ROLELIST)msg;

        SDNetGlobal.roleCount      = refMSG.m_Count;
        SDNetGlobal.lastSelectRole = SelectRole.SortRoleList(refMSG);

        for (int i = 0; i < SDNetGlobal.roleCount; i++)
        {
            if (SDNetGlobal.playerList[i] == null)
            {
                SDNetGlobal.playerList[i] = new sdPlayerInfo();
            }

            sdPlayerInfo kPlayerInfo = SDNetGlobal.playerList[i];
            kPlayerInfo.mRoleName   = System.Text.Encoding.UTF8.GetString(refMSG.m_RoleInfoList[i].m_RoleInfo.m_RoleName).Trim('\0');
            kPlayerInfo.mDBID       = refMSG.m_RoleInfoList[i].m_RoleInfo.m_DBRoleId;
            kPlayerInfo.mGender     = refMSG.m_RoleInfoList[i].m_RoleInfo.m_Gender;
            kPlayerInfo.mSkinColor  = refMSG.m_RoleInfoList[i].m_RoleInfo.m_SkinColor;
            kPlayerInfo.mHairStyle  = refMSG.m_RoleInfoList[i].m_RoleInfo.m_HairStyle;
            kPlayerInfo.mBaseJob    = refMSG.m_RoleInfoList[i].m_RoleInfo.m_BaseJob;
            kPlayerInfo.mJob        = refMSG.m_RoleInfoList[i].m_RoleInfo.m_Job;
            kPlayerInfo.mLevel      = refMSG.m_RoleInfoList[i].m_RoleInfo.m_Level;
            kPlayerInfo.mEquipCount = refMSG.m_RoleInfoList[i].m_Equip.m_ItemCount;

            if (kPlayerInfo.mEquipCount > 0)
            {
                kPlayerInfo.mEquipID = new uint[kPlayerInfo.mEquipCount];
                for (int j = 0; j < kPlayerInfo.mEquipCount; ++j)
                {
                    kPlayerInfo.mEquipID[j] = (uint)refMSG.m_RoleInfoList[i].m_Equip.m_Items[j].m_TID;
                }
            }
        }

        for (int i = SDNetGlobal.roleCount; i < 4; i++)
        {
            SDNetGlobal.playerList[i] = null;
        }

        m_bRoleListRec = true;
    }
Пример #5
0
    public static int GetLastLoginRoleIndex(CliProto.GC_ROLELIST refRoleList)
    {
        UInt64 t   = 0;
        int    idx = 0;

        for (int i = 0; i < refRoleList.m_Count; i++)
        {
            UInt64 lastTime = refRoleList.m_RoleInfoList[i].m_RoleInfo.m_LastLoginTime;
            if (lastTime == 0)
            {
                continue;
            }
            if (lastTime > t)
            {
                t   = lastTime;
                idx = i;
            }
        }
        return(idx);
    }