Files
JJBB/Assets/Project/Script/Player/Guild/GuildList.cs
2024-08-23 15:49:34 +08:00

243 lines
7.6 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/********************************************************************************
* 文件名: 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);
}
}