public void SetForceInfo(ForceDesc forceInfo, List <PlayerDesc> roleInfos) { this.m_ForceDesc = forceInfo; this.InitRoleInfo(roleInfos); this.UpdateForceName(this.m_ForceDesc.Name); this.UpdateForceColor(this.m_ForceDesc.Color); this.UpdateForcePlayerCount(); }
public bool Ally(ForceDesc f1, ForceDesc f2) { if (f1 != null && f2 != null) { return(f1.Allies.Contains(f2.ID)); } else { return(false); } }
public void AddForceDesc(ForceDesc desc) { if (desc != null) { int index = GetForceIndex(desc.ID); if (index == -1) { m_Forces.Add(desc); } else { m_Forces[index] = desc; if (LogFilter.logDebug) { Debug.LogWarningFormat("replace force id:{0}", desc.ID); } } if (Pathea.PeGameMgr.IsMulti) { ReputationSystem.Instance.AddForceID(desc.ID); } } }
public static bool PlayerCheck(int curr_player_id, int query_player, OBJECT player) { if (player.type != OBJECT.OBJECTTYPE.Player) { return(false); } // 判断 player id if (player.isAnyPlayer) { return(true); } if (player.isPlayerId) { return(player.Id == query_player); } if (player.isCurrentPlayer) { return(curr_player_id == query_player); } if (player.isAnyOtherPlayer) { return(curr_player_id != query_player); } // 根据 player_id 在 ForceSettings 里面获取 player_force int curr_player_force = CustomGameData.Mgr.Instance.curGameData.curPlayer.Force; int query_player_force = 0; PlayerDesc pd = CustomGameData.Mgr.Instance.curGameData.mPlayerDescs.Find(iter => iter.ID == query_player); if (pd != null) { query_player_force = pd.Force; } if (player.isForceId) { return(query_player_force == player.Group); } if (player.isAnyOtherForce) { return(curr_player_force != query_player_force); } // 对 Ally force 和 Enemy force 进行判断 ForceDesc fd = CustomGameData.Mgr.Instance.curGameData.mForceDescs.Find(iter => iter.ID == curr_player_force); if (fd != null) { if (player.isAllyForce) { return(fd.Allies.Contains(query_player_force)); } else if (player.isEnemyForce) { return(!fd.Allies.Contains(query_player_force)); } } return(false); }
public static ForceDesc AddForce(int id, int maxNum, Pathea.PeGameMgr.EGameType type) { if (Pathea.PeGameMgr.IsMultiCoop) { id = 1; } if (!Instance.HasForce(id)) { ForceDesc desc = new ForceDesc(); desc.ID = id; desc.Allies = new List <int>(); desc.Allies.Add(id); desc.EnemyConflict = true; desc.InternalConflict = false; desc.JoinablePlayerCount = maxNum; desc.Name = id.ToString(); switch (type) { case Pathea.PeGameMgr.EGameType.Cooperation: desc.AllyConflict = true; desc.ItemShare = true; desc.ItemUseShare = true; desc.PublicInventory = true; desc.Color = Color.green; break; case Pathea.PeGameMgr.EGameType.Survive: desc.AllyConflict = false; desc.ItemShare = false; desc.ItemUseShare = false; desc.PublicInventory = false; desc.Color = Color.red; break; case Pathea.PeGameMgr.EGameType.VS: desc.AllyConflict = false; desc.ItemShare = true; desc.ItemUseShare = true; desc.PublicInventory = true; desc.Color = Color.red; break; } Instance.AddForceDesc(desc); return(desc); } int index = Instance.GetForceIndex(id); if (-1 != index) { return(Instance.m_Forces[index]); } else { return(null); } }
public void InitRoomForces(int teamNum, int numPerTeam) { m_TeamNum = teamNum; m_NumPerTeam = numPerTeam; HumanForce.Clear(); HumanPlayer.Clear(); if (Pathea.PeGameMgr.IsCustom) { m_Forces.Clear(); m_Players.Clear(); m_Forces.AddRange(Pathea.CustomGameData.Mgr.Instance.curGameData.mForceDescs); m_Players.AddRange(Pathea.CustomGameData.Mgr.Instance.curGameData.mPlayerDescs); foreach (PlayerDesc pd in m_Players) { if (pd.Type == EPlayerType.Human) { int fdIndex = GetForceIndex(pd.Force); if (-1 == fdIndex) { continue; } if (!HumanPlayer.Contains(pd)) { HumanPlayer.Add(pd); } if (!HumanForce.Contains(m_Forces[fdIndex])) { HumanForce.Add(m_Forces[fdIndex]); } } } foreach (ForceDesc fd in m_Forces) { if (fd.JoinablePlayerCount != 0) { if (!HumanForce.Contains(fd)) { HumanForce.Add(fd); } } } } else { if (Pathea.PeGameMgr.IsCooperation) { ForceDesc desc = new ForceDesc(); desc.Allies = new List <int>(); desc.ID = 1; desc.Allies.Add(desc.ID); desc.AllyConflict = true; desc.EnemyConflict = true; desc.InternalConflict = false; desc.ItemShare = true; desc.ItemUseShare = true; desc.JoinablePlayerCount = m_NumPerTeam; desc.Name = "Cooperation"; desc.PublicInventory = true; desc.Color = Color.green; HumanForce.Add(desc); } else if (Pathea.PeGameMgr.IsSurvive) { int forceId = -1; ForceDesc desc = new ForceDesc(); desc.ID = forceId; desc.Allies = new List <int>(); desc.Allies.Add(forceId); desc.AllyConflict = false; desc.EnemyConflict = true; desc.InternalConflict = false; desc.ItemShare = false; desc.ItemUseShare = false; desc.JoinablePlayerCount = m_NumPerTeam; desc.Name = "Survive"; desc.PublicInventory = false; desc.Color = Color.red; HumanForce.Add(desc); } else if (Pathea.PeGameMgr.IsVS) { int minTeamId = GroupNetwork.minTeamID; for (int i = 0; i < teamNum; i++) { ++minTeamId; ForceDesc desc = new ForceDesc(); desc.ID = minTeamId; desc.Allies = new List <int>(); desc.Allies.Add(minTeamId); desc.AllyConflict = false; desc.EnemyConflict = true; desc.InternalConflict = false; desc.ItemShare = true; desc.ItemUseShare = true; desc.JoinablePlayerCount = m_NumPerTeam; desc.Name = "Team" + minTeamId; desc.PublicInventory = true; desc.Color = Color.red; HumanForce.Add(desc); } } } }
public void Load(string s) { //if(Pathea.PeGameMgr.IsSingle) { m_Forces.Clear(); m_Players.Clear(); } XmlDocument doc = new XmlDocument(); StringReader reader = new StringReader(s); doc.Load(reader); XmlNode root = doc.SelectSingleNode("ForceSetting"); //add force XmlNode forceNode = root.SelectSingleNode("Force"); XmlNodeList forceList = ((XmlElement)forceNode).GetElementsByTagName("ForceDesc"); foreach (XmlNode node in forceList) { XmlElement xe = node as XmlElement; ForceDesc force = new ForceDesc(); force.ID = XmlUtil.GetAttributeInt32(xe, "ID"); force.Name = XmlUtil.GetAttributeString(xe, "Name"); force.Color = XmlUtil.GetNodeColor32(xe, "Color"); force.Allies = XmlUtil.GetNodeInt32List(xe, "Ally"); force.JoinablePlayerCount = XmlUtil.GetNodeInt32(xe, "JoinablePlayerCount"); force.JoinStr = XmlUtil.GetNodeString(xe, "JoinLocation"); force.ItemUseShare = XmlUtil.GetNodeBool(xe, "ItemUseShare"); force.ItemShare = XmlUtil.GetNodeBool(xe, "ItemShare"); force.InternalConflict = XmlUtil.GetNodeBool(xe, "InternalConflict"); force.AllyConflict = XmlUtil.GetNodeBool(xe, "AllyConflict"); force.EnemyConflict = XmlUtil.GetNodeBool(xe, "EnemyConflict"); force.Color.a = 255; AddForceDesc(force); } //add player XmlNode playerNode = root.SelectSingleNode("Player"); XmlNodeList playerList = ((XmlElement)playerNode).GetElementsByTagName("PlayerDesc"); foreach (XmlNode node in playerList) { XmlElement xe = node as XmlElement; PlayerDesc player = new PlayerDesc(); player.ID = XmlUtil.GetAttributeInt32(xe, "ID"); player.Name = XmlUtil.GetAttributeString(xe, "Name"); player.Force = XmlUtil.GetAttributeInt32(xe, "Force"); player.StartStr = XmlUtil.GetAttributeString(xe, "Start"); player.Type = (EPlayerType)System.Enum.Parse(typeof(EPlayerType), XmlUtil.GetAttributeString(xe, "Type")); AddPlayerDesc(player); } reader.Close(); }