Exemplo n.º 1
0
 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();
 }
Exemplo n.º 2
0
 public bool Ally(ForceDesc f1, ForceDesc f2)
 {
     if (f1 != null && f2 != null)
     {
         return(f1.Allies.Contains(f2.ID));
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 3
0
    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);
            }
        }
    }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
    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);
        }
    }
Exemplo n.º 6
0
    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);
                }
            }
        }
    }
Exemplo n.º 7
0
    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();
    }