예제 #1
0
        public static Boolean CheckPlayerSameFaction(long playerId, long compareId)
        {
            if (compareId == playerId)
            {
                return(true);
            }

            MyObjectBuilder_FactionCollection m_factionCollection = (MyObjectBuilder_FactionCollection)InvokeEntityMethod(FactionsManager.Instance.BackingObject, FactionsManager.FactionManagerGetFactionCollectionMethod);

            if (m_factionCollection == null)
            {
                Console.WriteLine("No faction collection");
                return(false);
            }

            if (m_factionCollection.Factions == null)
            {
                Console.WriteLine("No factions");
                return(false);
            }

            MyObjectBuilder_Faction faction = m_factionCollection.Factions.FirstOrDefault(f => f.Members.FirstOrDefault(m => m.PlayerId == playerId).PlayerId != 0);

            if (faction != null)
            {
                if (faction.Members.FirstOrDefault(m => m.PlayerId == compareId).PlayerId != 0)
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #2
0
        public MyObjectBuilder_Faction GetObjectBuilder()
        {
            var builder = new MyObjectBuilder_Faction();

            builder.FactionId   = FactionId;
            builder.Tag         = Tag;
            builder.Name        = Name;
            builder.Description = Description;
            builder.PrivateInfo = PrivateInfo;

            builder.AutoAcceptMember   = AutoAcceptMember;
            builder.AutoAcceptPeace    = AutoAcceptPeace;
            builder.EnableFriendlyFire = EnableFriendlyFire;

            builder.Members = new List <MyObjectBuilder_FactionMember>(Members.Count());
            foreach (var member in Members)
            {
                builder.Members.Add(member.Value);
            }

            builder.JoinRequests = new List <MyObjectBuilder_FactionMember>(JoinRequests.Count());
            foreach (var request in JoinRequests)
            {
                builder.JoinRequests.Add(request.Value);
            }

            return(builder);
        }
예제 #3
0
        internal List <MyObjectBuilder_Faction> SaveFactions()
        {
            List <MyObjectBuilder_Faction> factionBuilders = new List <MyObjectBuilder_Faction>();

            foreach (var factionPair in m_factions)
            {
                MyObjectBuilder_Faction ob = factionPair.Value.GetObjectBuilder();
                factionBuilders.Add(ob);
            }

            return(factionBuilders);
        }
예제 #4
0
        public MyFaction(MyObjectBuilder_Faction obj)
        {
            FactionId   = obj.FactionId;
            Tag         = obj.Tag;
            Name        = obj.Name;
            Description = obj.Description;
            PrivateInfo = obj.PrivateInfo;

            AutoAcceptMember   = obj.AutoAcceptMember;
            AutoAcceptPeace    = obj.AutoAcceptPeace;
            EnableFriendlyFire = obj.EnableFriendlyFire;
            AcceptHumans       = obj.AcceptHumans;

            m_members = new Dictionary <long, MyFactionMember>(obj.Members.Count);

            foreach (var member in obj.Members)
            {
                m_members.Add(member.PlayerId, member);
                if (member.IsFounder)
                {
                    FounderId = member.PlayerId;
                }
            }

            if (obj.JoinRequests != null)
            {
                m_joinRequests = new Dictionary <long, MyFactionMember>(obj.JoinRequests.Count);

                foreach (var request in obj.JoinRequests)
                {
                    m_joinRequests.Add(request.PlayerId, request);
                }
            }
            else
            {
                m_joinRequests = new Dictionary <long, MyFactionMember>();
            }

            // Fix the faction settings if it was created from definition
            var factionDef = MyDefinitionManager.Static.TryGetFactionDefinition(Tag);

            if (factionDef != null)
            {
                AutoAcceptMember   = factionDef.AutoAcceptMember;
                AcceptHumans       = factionDef.AcceptHumans;
                EnableFriendlyFire = factionDef.EnableFriendlyFire;
                Name        = factionDef.DisplayNameText;
                Description = factionDef.DescriptionText;
            }

            CheckAndFixFactionRanks();
        }
        public Faction(MyObjectBuilder_Faction faction)
        {
            m_faction = faction;

            m_members = new Dictionary <long, FactionMember>( );
            foreach (MyObjectBuilder_FactionMember member in m_faction.Members)
            {
                m_members.Add(member.PlayerId, new FactionMember(this, member));
            }

            m_joinRequests = new Dictionary <long, FactionMember>( );
            foreach (MyObjectBuilder_FactionMember member in m_faction.JoinRequests)
            {
                m_joinRequests.Add(member.PlayerId, new FactionMember(this, member));
            }
        }
예제 #6
0
        public Faction( MyObjectBuilder_Faction faction )
        {
            m_faction = faction;

            m_members = new Dictionary<long, FactionMember>( );
            foreach ( MyObjectBuilder_FactionMember member in m_faction.Members )
            {
                m_members.Add( member.PlayerId, new FactionMember( this, member ) );
            }

            m_joinRequests = new Dictionary<long, FactionMember>( );
            foreach ( MyObjectBuilder_FactionMember member in m_faction.JoinRequests )
            {
                m_joinRequests.Add( member.PlayerId, new FactionMember( this, member ) );
            }
        }
예제 #7
0
        public MyFaction(MyObjectBuilder_Faction obj)
        {
            FactionId   = obj.FactionId;
            Tag         = obj.Tag;
            Name        = obj.Name;
            Description = obj.Description;
            PrivateInfo = obj.PrivateInfo;

            AutoAcceptMember = obj.AutoAcceptMember;
            AutoAcceptPeace  = obj.AutoAcceptPeace;
            EnableFriendlyFire = obj.EnableFriendlyFire;
            AcceptHumans = obj.AcceptHumans;

            m_members = new Dictionary<long, MyFactionMember>(obj.Members.Count);

            foreach (var member in obj.Members)
            {
                m_members.Add(member.PlayerId, member);
                if (member.IsFounder)
                    FounderId = member.PlayerId;
            }

            if (obj.JoinRequests != null)
            {
                m_joinRequests = new Dictionary<long, MyFactionMember>(obj.JoinRequests.Count);

                foreach (var request in obj.JoinRequests)
                    m_joinRequests.Add(request.PlayerId, request);
            }
            else
            {
                m_joinRequests = new Dictionary<long, MyFactionMember>();
            }

            // Fix the faction settings if it was created from definition
            var factionDef = MyDefinitionManager.Static.TryGetFactionDefinition(Tag);
            if (factionDef != null)
            {
                AutoAcceptMember = factionDef.AutoAcceptMember;
                AcceptHumans = factionDef.AcceptHumans;
                EnableFriendlyFire = factionDef.EnableFriendlyFire;
                Name = factionDef.DisplayNameText;
                Description = factionDef.DescriptionText;
            }

            CheckAndFixFactionRanks();
        }
예제 #8
0
        public static long GetFactionAstoids(MyObjectBuilder_Faction faction)
        {
            long NumCapturedAstoids = 0;
            List <MyObjectBuilder_FactionMember> currentfacitonmembers = faction.Members;

            foreach (MyObjectBuilder_FactionMember currentmember in currentfacitonmembers)
            {
                var leaders = GMConquest.Instance.Leaderboard.GroupBy(x => x.Value).Select(group => new { group.Key, Total = group.Count() }).OrderByDescending(x => x.Total);
                foreach (var p in leaders)
                {
                    if (p.Key == currentmember.PlayerId)
                    {
                        NumCapturedAstoids += p.Total;
                    }
                }
            }
            return(NumCapturedAstoids);
        }
예제 #9
0
        public MyFaction(MyObjectBuilder_Faction obj)
        {
            FactionId   = obj.FactionId;
            Tag         = obj.Tag;
            Name        = obj.Name;
            Description = obj.Description;
            PrivateInfo = obj.PrivateInfo;

            AutoAcceptMember   = obj.AutoAcceptMember;
            AutoAcceptPeace    = obj.AutoAcceptPeace;
            EnableFriendlyFire = obj.EnableFriendlyFire;

            m_members = new Dictionary <long, MyFactionMember>(obj.Members.Count);

            foreach (var member in obj.Members)
            {
                m_members.Add(member.PlayerId, member);
                if (member.IsFounder)
                {
                    FounderId = member.PlayerId;
                }
            }

            if (obj.JoinRequests != null)
            {
                m_joinRequests = new Dictionary <long, MyFactionMember>(obj.JoinRequests.Count);

                foreach (var request in obj.JoinRequests)
                {
                    m_joinRequests.Add(request.PlayerId, request);
                }
            }
            else
            {
                m_joinRequests = new Dictionary <long, MyFactionMember>();
            }
        }
예제 #10
0
        public MyObjectBuilder_Faction GetObjectBuilder()
        {
            var builder = new MyObjectBuilder_Faction();

            builder.FactionId   = FactionId;
            builder.Tag         = Tag;
            builder.Name        = Name;
            builder.Description = Description;
            builder.PrivateInfo = PrivateInfo;

            builder.AutoAcceptMember = AutoAcceptMember;
            builder.AutoAcceptPeace  = AutoAcceptPeace;
            builder.EnableFriendlyFire = EnableFriendlyFire;

            builder.Members = new List<MyObjectBuilder_FactionMember>(Members.Count());
            foreach (var member in Members)
                builder.Members.Add(member.Value);

            builder.JoinRequests = new List<MyObjectBuilder_FactionMember>(JoinRequests.Count());
            foreach (var request in JoinRequests)
                builder.JoinRequests.Add(request.Value);

            return builder;
        }