private void Factions_FactionStateChanged(MyFactionCollection.MyFactionStateChange action, long fromFactionId, long toFactionId, long playerId, long senderId)
        {
            if (MySession.Static.LocalHumanPlayer == null)
            {
                return;
            }
            // get player id
            long localPlayerID = MySession.Static.LocalHumanPlayer.Identity.IdentityId;

            // get player faction
            IMyFaction myFaction = MySession.Static.Factions.TryGetPlayerFaction(MySession.Static.LocalHumanPlayer.Identity.IdentityId);

            if (myFaction == null)
            {
                return;
            }

            if ((myFaction.IsLeader(localPlayerID) || myFaction.IsFounder(localPlayerID)) &&    // is leader or founder
                (myFaction.FactionId == fromFactionId || myFaction.FactionId == toFactionId) && // its our faction in this deal
                action == MyFactionCollection.MyFactionStateChange.AcceptPeace)                 // is it peace?
            {
                NotifyAchieved();
                MySession.Static.Factions.FactionStateChanged -= Factions_FactionStateChanged;
            }
        }
Пример #2
0
        private void Factions_FactionStateChanged(MyFactionCollection.MyFactionStateChange action, long fromFactionId, long toFactionId, long playerId, long senderId)
        {
            if (MySession.Static.LocalHumanPlayer == null)
            {
                return;
            }
            // get player id
            long localPlayerID = MySession.Static.LocalHumanPlayer.Identity.IdentityId;

            // get player faction
            IMyFaction myFaction = MySession.Static.Factions.TryGetPlayerFaction(localPlayerID);

            if (myFaction == null)
            {
                return;
            }

            // Player declaring war
            if ((myFaction.IsFounder(localPlayerID) || myFaction.IsLeader(localPlayerID)) && // is player leader/fouder of faction
                myFaction.FactionId == fromFactionId &&                                      // is sending war not recieving
                action == MyFactionCollection.MyFactionStateChange.DeclareWar)               // is it war?
            {
                NotifyAchieved();
                MySession.Static.Factions.FactionStateChanged -= Factions_FactionStateChanged;
            }
        }
Пример #3
0
 void Factions_FactionStateChanged(MyFactionCollection.MyFactionStateChange change, long fromFactionId, long toFactionId, long playerId, long sender)
 {
     if (change == MyFactionCollection.MyFactionStateChange.RemoveFaction)
     {
         DeleteEmptyFactionChat(fromFactionId);
     }
     if (change == MyFactionCollection.MyFactionStateChange.FactionMemberLeave || change == MyFactionCollection.MyFactionStateChange.FactionMemberKick)
     {
         DeletePendingFactionChat(fromFactionId, playerId);
     }
 }
        private void OnMemberStateChanged(MyFactionCollection.MyFactionStateChange action, IMyFaction fromFaction, long playerId)
        {
            var identity = Sync.Players.TryGetIdentity(playerId);

            System.Diagnostics.Debug.Assert(identity != null, "Identity does not exist!");
            if (identity == null)
            {
                MyLog.Default.WriteLine("ERROR: Faction " + fromFaction.Name + " member " + playerId + " does not exists! ");
                return;
            }

            RemoveMember(playerId);

            switch (action)
            {
            case MyFactionCollection.MyFactionStateChange.FactionMemberPromote:
                AddMember(playerId, identity.DisplayName, true, MyMemberComparerEnum.Leader, MySpaceTexts.Leader);
                break;

            case MyFactionCollection.MyFactionStateChange.FactionMemberCancelJoin:
            case MyFactionCollection.MyFactionStateChange.FactionMemberLeave:
            case MyFactionCollection.MyFactionStateChange.FactionMemberKick: break;

            case MyFactionCollection.MyFactionStateChange.FactionMemberAcceptJoin:
            case MyFactionCollection.MyFactionStateChange.FactionMemberDemote:
                AddMember(playerId, identity.DisplayName, false, MyMemberComparerEnum.Member, MySpaceTexts.Member);
                break;

            case MyFactionCollection.MyFactionStateChange.FactionMemberSendJoin:
                AddMember(playerId, identity.DisplayName, false, MyMemberComparerEnum.Applicant, MySpaceTexts.Applicant, COLOR_CUSTOM_GREY);
                break;
            }
            RefreshUserInfo();
            RefreshTableFactions();
            m_tableMembers.Sort(false);
        }
        private void OnFactionsStateChanged(MyFactionCollection.MyFactionStateChange action, long fromFactionId, long toFactionId, long playerId, long senderId)
        {
            System.Diagnostics.Debug.Assert(MySession.Static != null);
            if (MySession.Static == null)
            {
                return;
            }

            System.Diagnostics.Debug.Assert(MySession.Static.Factions != null);
            if (MySession.Static.Factions == null)
            {
                return;
            }

            System.Diagnostics.Debug.Assert(m_tableFactions != null);
            if (m_tableFactions == null)
            {
                return;
            }

            var fromFaction = MySession.Static.Factions.TryGetFactionById(fromFactionId);
            var toFaction   = MySession.Static.Factions.TryGetFactionById(toFactionId);

            switch (action)
            {
            case MyFactionCollection.MyFactionStateChange.SendPeaceRequest:
            {
                System.Diagnostics.Debug.Assert(m_userFaction != null);
                if (m_userFaction == null)
                {
                    return;
                }

                if (m_userFaction.FactionId == fromFactionId)
                {
                    RemoveFaction(toFactionId);
                    AddFaction(toFaction, COLOR_CUSTOM_RED, MyGuiConstants.TEXTURE_ICON_SENT_WHITE_FLAG, MyTexts.GetString(MySpaceTexts.TerminalTab_Factions_SentPeace));
                }
                else if (m_userFaction.FactionId == toFactionId)
                {
                    RemoveFaction(fromFactionId);
                    AddFaction(fromFaction, COLOR_CUSTOM_RED, MyGuiConstants.TEXTURE_ICON_WHITE_FLAG, MyTexts.GetString(MySpaceTexts.TerminalTab_Factions_PendingPeace));
                }
                break;
            }

            case MyFactionCollection.MyFactionStateChange.AcceptPeace:
            {
                System.Diagnostics.Debug.Assert(m_userFaction != null);
                if (m_userFaction == null)
                {
                    return;
                }

                if (m_userFaction.FactionId == fromFactionId)
                {
                    RemoveFaction(toFactionId);
                    AddFaction(toFaction);
                }
                else if (m_userFaction.FactionId == toFactionId)
                {
                    RemoveFaction(fromFactionId);
                    AddFaction(fromFaction);
                }
                break;
            }

            case MyFactionCollection.MyFactionStateChange.CancelPeaceRequest:
            case MyFactionCollection.MyFactionStateChange.DeclareWar:
            {
                System.Diagnostics.Debug.Assert(m_userFaction != null);
                if (m_userFaction == null)
                {
                    return;
                }

                if (m_userFaction.FactionId == fromFactionId)
                {
                    RemoveFaction(toFactionId);
                    AddFaction(toFaction, COLOR_CUSTOM_RED);
                }
                else if (m_userFaction.FactionId == toFactionId)
                {
                    RemoveFaction(fromFactionId);
                    AddFaction(fromFaction, COLOR_CUSTOM_RED);
                }
                break;
            }

            case MyFactionCollection.MyFactionStateChange.RemoveFaction:
                RemoveFaction(toFactionId);
                break;

            default:
                OnMemberStateChanged(action, fromFaction, playerId);
                break;
            }
            m_tableFactions.Sort(false);
            m_tableFactions.SelectedRowIndex = m_tableFactions.FindIndex((row) => ((MyFaction)row.UserData).FactionId == toFactionId);
            OnFactionsTableItemSelected(m_tableFactions, new Sandbox.Graphics.GUI.MyGuiControlTable.EventArgs());
            Refresh();
        }
Пример #6
0
 private void OnFactionStateChanged(MyFactionCollection.MyFactionStateChange action, long fromFactionId, long toFactionId, long playerId, long senderId)
 {
     Refresh();
 }