Files
JJBB/Assets/Project/Script/Player/Guild/GuildList.cs

243 lines
7.6 KiB
C#
Raw Permalink Normal View History

2024-08-23 15:49:34 +08:00
/********************************************************************************
* 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);
}
}