243 lines
7.6 KiB
C#
243 lines
7.6 KiB
C#
/********************************************************************************
|
||
* 文件名: GuildList.cs
|
||
* 全路径: \Script\Player\Guild\GuildList.cs
|
||
* 创建人: 李嘉
|
||
* 创建时间:2014-04-24
|
||
*
|
||
* 功能说明:帮会列表基础数据
|
||
* 修改记录:
|
||
*********************************************************************************/
|
||
using UnityEngine;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using Games.GlobeDefine;
|
||
using System;
|
||
|
||
public class GuildList
|
||
{
|
||
public GuildList()
|
||
{
|
||
CleanUp();
|
||
}
|
||
|
||
public void CleanUp()
|
||
{
|
||
if (null == m_GuildInfoList)
|
||
{
|
||
m_GuildInfoList = new List<GuildPreviewInfo>();
|
||
}
|
||
|
||
if(null == m_RGuildInfoList)
|
||
{
|
||
m_RGuildInfoList = new List<GuildPreviewInfo>();
|
||
}
|
||
m_RGuildInfoList.Clear();
|
||
m_GuildInfoList.Clear();
|
||
}
|
||
|
||
private List<GuildPreviewInfo> m_RGuildInfoList;//全服可响应帮会列表
|
||
public List<GuildPreviewInfo> RGuildInfoList
|
||
{
|
||
get { return m_RGuildInfoList; }
|
||
set { m_RGuildInfoList = value; }
|
||
}
|
||
|
||
private List<GuildPreviewInfo> m_GuildInfoList;//全服可加入帮会列表
|
||
public List<GuildPreviewInfo> GuildInfoList
|
||
{
|
||
get { return m_GuildInfoList; }
|
||
set { m_GuildInfoList = value; }
|
||
}
|
||
|
||
public UInt64 m_HadRespond = GlobeVar.INVALID_GUID;
|
||
public UInt64 HadRespond
|
||
{
|
||
get { return m_HadRespond; }
|
||
}
|
||
|
||
public void SetNewInfo(ulong guildGuid,int type,int result)
|
||
{
|
||
if (result == 0)
|
||
return;
|
||
if(type == (int)GC_GUILD_OPERATE_RESULT.OPERATE_TYPE.OPERATE_TYPE_JOIN)
|
||
{
|
||
for(int i=0;i< m_GuildInfoList.Count;i++)
|
||
{
|
||
if(m_GuildInfoList[i].GuildGuid == guildGuid)
|
||
{
|
||
m_GuildInfoList[i].IsEnemyGuild = true;
|
||
}
|
||
}
|
||
}
|
||
if (type == (int)GC_GUILD_OPERATE_RESULT.OPERATE_TYPE.OPERATE_TYPE_RESPOND)
|
||
{
|
||
m_HadRespond = GlobeVar.INVALID_GUID;
|
||
for (int i = 0; i < RGuildInfoList.Count; i++)
|
||
{
|
||
if (RGuildInfoList[i].GuildGuid == guildGuid)
|
||
{
|
||
if(result <= 0)
|
||
{
|
||
RGuildInfoList[i].IsEnemyGuild = false;
|
||
RGuildInfoList[i].GuildCurMemberNum = Math.Abs(result);
|
||
}
|
||
if(result > 0)
|
||
{
|
||
RGuildInfoList[i].IsEnemyGuild = true;
|
||
RGuildInfoList[i].GuildCurMemberNum = result;
|
||
}
|
||
}
|
||
if(RGuildInfoList[i].IsEnemyGuild == true)
|
||
{
|
||
m_HadRespond = RGuildInfoList[i].GuildGuid;
|
||
}
|
||
}
|
||
}
|
||
SortGuildInfoList();
|
||
Games.Events.EventDispatcher.Instance.SendMessage(Games.Events.EventId.OperatorResult, null);
|
||
}
|
||
|
||
public void SortGuildInfoList()
|
||
{
|
||
m_GuildInfoList.Sort(delegate (GuildPreviewInfo info1, GuildPreviewInfo info2)
|
||
{
|
||
if (info1.GuildLevel < info2.GuildLevel)
|
||
return 1;
|
||
if (info1.GuildLevel == info2.GuildLevel)
|
||
{
|
||
if (info1.GuildCurMemberNum < info2.GuildCurMemberNum)
|
||
return 1;
|
||
if (info1.GuildCurMemberNum == info2.GuildCurMemberNum)
|
||
{
|
||
if (info1.GuildGuid <= info2.GuildGuid)
|
||
return 1;
|
||
}
|
||
}
|
||
return -1;
|
||
});
|
||
}
|
||
|
||
public void UpdateData(GC_GUILD_RET_LIST list)
|
||
{
|
||
|
||
List<UInt64> oldList = new List<UInt64>();
|
||
if(list.IsRespond == 0)
|
||
{
|
||
for(int i=0;i<m_GuildInfoList.Count;i++)
|
||
{
|
||
oldList.Add(m_GuildInfoList[i].GuildGuid);
|
||
}
|
||
m_GuildInfoList.Clear();
|
||
}
|
||
if (list.IsRespond == 1)
|
||
{
|
||
m_HadRespond = GlobeVar.INVALID_GUID;
|
||
for (int i = 0; i < m_RGuildInfoList.Count; i++)
|
||
{
|
||
oldList.Add(m_RGuildInfoList[i].GuildGuid);
|
||
}
|
||
m_RGuildInfoList.Clear();
|
||
}
|
||
float startTime = Time.realtimeSinceStartup;
|
||
for (int i = 0; i < list.guildGuidCount; ++i)
|
||
{
|
||
GuildPreviewInfo info = new GuildPreviewInfo();
|
||
info.GuildGuid = list.GetGuildGuid(i);
|
||
if (info.GuildGuid == GlobeVar.INVALID_GUID)
|
||
{
|
||
continue;
|
||
}
|
||
|
||
if (i < list.guildNameCount)
|
||
{
|
||
info.GuildName = list.GetGuildName(i);
|
||
}
|
||
if(i<list.guildNoticeCount)
|
||
{
|
||
info.GuildNotice = list.GetGuildNotice(i);
|
||
}
|
||
if(i<list.guildChiefGuidCount)
|
||
{
|
||
info.GuildChiefGUID = list.GetGuildChiefGuid(i);
|
||
}
|
||
if (i < list.guildLevelCount)
|
||
{
|
||
info.GuildLevel = list.GetGuildLevel(i);
|
||
}
|
||
|
||
if (i < list.guildChiefNameCount)
|
||
{
|
||
info.GuildChiefName = list.GetGuildChiefName(i);
|
||
}
|
||
|
||
if (i < list.guildMemberNumCount)
|
||
{
|
||
info.GuildCurMemberNum = list.GetGuildMemberNum(i);
|
||
}
|
||
if (i < list.guildMemberNumMaxCount)
|
||
{
|
||
info.GuildMaxMemberNum = list.GetGuildMemberNumMax(i);
|
||
}
|
||
if (i < list.guildCombatCount)
|
||
{
|
||
info.GuildCombatValue = list.GetGuildCombat(i);
|
||
}
|
||
if (i< list.isEnemyGuildCount)
|
||
{
|
||
info.IsEnemyGuild = (list.GetIsEnemyGuild(i) == 1);
|
||
if (list.IsRespond == 1)
|
||
{
|
||
if (list.GetIsEnemyGuild(i) == 1)
|
||
m_HadRespond = info.GuildGuid;
|
||
}
|
||
}
|
||
if (i < list.guildApplyNumCount)
|
||
{
|
||
info.GuildCurApplyNum = (list.GetGuildApplyNum(i));
|
||
}
|
||
if (i < list.guildApplyMaxNumCount)
|
||
{
|
||
info.GuildMaxApplyNum = (list.GetGuildApplyMaxNum(i));
|
||
}
|
||
if(i<list.validTimeCount)
|
||
{
|
||
info.RespondOverTime = startTime + list.GetValidTime(i);
|
||
}
|
||
if(list.IsRespond==0)
|
||
{
|
||
m_GuildInfoList.Add(info);
|
||
oldList.Remove(info.GuildGuid);
|
||
}
|
||
|
||
if (list.IsRespond == 1)
|
||
{
|
||
m_RGuildInfoList.Add(info);
|
||
oldList.Remove(info.GuildGuid);
|
||
}
|
||
}
|
||
|
||
m_RGuildInfoList.Sort(delegate(GuildPreviewInfo info1, GuildPreviewInfo info2)
|
||
{
|
||
return (info1.RespondOverTime > info2.RespondOverTime) ? 1 : -1;
|
||
});
|
||
m_GuildInfoList.Sort(delegate (GuildPreviewInfo info1, GuildPreviewInfo info2)
|
||
{
|
||
if (info1.GuildLevel < info2.GuildLevel)
|
||
return 1;
|
||
if(info1.GuildLevel == info2.GuildLevel)
|
||
{
|
||
if (info1.GuildCurMemberNum < info2.GuildCurMemberNum)
|
||
return 1;
|
||
if(info1.GuildCurMemberNum == info2.GuildCurMemberNum)
|
||
{
|
||
if (info1.GuildGuid <= info2.GuildGuid)
|
||
return 1;
|
||
}
|
||
}
|
||
return -1;
|
||
});
|
||
|
||
Games.Events.EventDispatcher.Instance.SendMessage(Games.Events.EventId.JoinGuildListInfo, null);
|
||
}
|
||
}
|