示例#1
0
 private void Factions_FactionStateChanged(VRage.Game.ModAPI.MyFactionStateChange arg1, long arg2, long arg3, long arg4, long arg5)
 {
     _log.Debug($"Factions_FactionStateChanged {arg1} {arg2} {arg3} {arg4} {arg5}");
 }
        private void Factions_FactionStateChanged(VRage.Game.ModAPI.MyFactionStateChange action, long fromFactionId, long toFactionId, long playerId, long senderId)
        {
            _log.Warn($"Factions_FactionStateChanged {action} {fromFactionId} {toFactionId} {playerId} {senderId}");
            switch (action)
            {
            case VRage.Game.ModAPI.MyFactionStateChange.RemoveFaction:
                _uplinkManager.PublishChange(new HiveChangeEvent
                {
                    type = EVENT_TYPE_FACTION_REMOVED,
                    raw  = new JavaScriptSerializer().Serialize(new FactionRemoveEvent
                    {
                        FactionId = toFactionId,
                    }),
                });
                break;

            case VRage.Game.ModAPI.MyFactionStateChange.SendPeaceRequest:
                _uplinkManager.PublishChange(new HiveChangeEvent
                {
                    type = EVENT_TYPE_FACTION_SEND_PEACE_REQUEST,
                    raw  = new JavaScriptSerializer().Serialize(new FactionPeaceWarEvent
                    {
                        FromFactionId = fromFactionId,
                        ToFactionId   = toFactionId,
                    }),
                });
                break;

            case VRage.Game.ModAPI.MyFactionStateChange.CancelPeaceRequest:
                _uplinkManager.PublishChange(new HiveChangeEvent
                {
                    type = EVENT_TYPE_FACTION_CANCEL_PEACE_REQUEST,
                    raw  = new JavaScriptSerializer().Serialize(new FactionPeaceWarEvent
                    {
                        FromFactionId = fromFactionId,
                        ToFactionId   = toFactionId,
                    }),
                });
                break;

            case VRage.Game.ModAPI.MyFactionStateChange.AcceptPeace:
                _uplinkManager.PublishChange(new HiveChangeEvent
                {
                    type = EVENT_TYPE_FACTION_ACCEPT_PEACE,
                    raw  = new JavaScriptSerializer().Serialize(new FactionPeaceWarEvent
                    {
                        FromFactionId = fromFactionId,
                        ToFactionId   = toFactionId,
                    }),
                });
                break;

            case VRage.Game.ModAPI.MyFactionStateChange.DeclareWar:
                _uplinkManager.PublishChange(new HiveChangeEvent
                {
                    type = EVENT_TYPE_FACTION_DECLARE_WAR,
                    raw  = new JavaScriptSerializer().Serialize(new FactionPeaceWarEvent
                    {
                        FromFactionId = fromFactionId,
                        ToFactionId   = toFactionId,
                    }),
                });
                break;

            case VRage.Game.ModAPI.MyFactionStateChange.FactionMemberSendJoin:
                var steamId = MySession.Static.Players.TryGetSteamId(playerId);
                var name    = MySession.Static.Players.TryGetIdentityNameFromSteamId(steamId);
                _uplinkManager.PublishChange(new HiveChangeEvent
                {
                    type = EVENT_TYPE_FACTION_MEMBER_SEND_JOIN,
                    raw  = new JavaScriptSerializer().Serialize(new FactionMemberEvent
                    {
                        FactionId     = toFactionId,
                        PlayerId      = playerId,
                        PlayerSteamId = steamId,
                        PlayerName    = name,
                    }),
                });
                break;

            case VRage.Game.ModAPI.MyFactionStateChange.FactionMemberCancelJoin:
                steamId = MySession.Static.Players.TryGetSteamId(playerId);
                name    = MySession.Static.Players.TryGetIdentityNameFromSteamId(steamId);
                _uplinkManager.PublishChange(new HiveChangeEvent
                {
                    type = EVENT_TYPE_FACTION_MEMBER_CANCEL_JOIN,
                    raw  = new JavaScriptSerializer().Serialize(new FactionMemberEvent
                    {
                        FactionId     = toFactionId,
                        PlayerId      = playerId,
                        PlayerSteamId = steamId,
                        PlayerName    = name,
                    }),
                });
                break;

            case VRage.Game.ModAPI.MyFactionStateChange.FactionMemberAcceptJoin:
                steamId = MySession.Static.Players.TryGetSteamId(playerId);
                name    = MySession.Static.Players.TryGetIdentityNameFromSteamId(steamId);
                _uplinkManager.PublishChange(new HiveChangeEvent
                {
                    type = EVENT_TYPE_FACTION_MEMBER_ACCEPT_JOIN,
                    raw  = new JavaScriptSerializer().Serialize(new FactionMemberEvent
                    {
                        FactionId     = toFactionId,
                        PlayerId      = playerId,
                        PlayerSteamId = steamId,
                        PlayerName    = name,
                    }),
                });
                break;

            case VRage.Game.ModAPI.MyFactionStateChange.FactionMemberKick:
                steamId = MySession.Static.Players.TryGetSteamId(playerId);
                name    = MySession.Static.Players.TryGetIdentityNameFromSteamId(steamId);
                _uplinkManager.PublishChange(new HiveChangeEvent
                {
                    type = EVENT_TYPE_FACTION_MEMBER_KICK,
                    raw  = new JavaScriptSerializer().Serialize(new FactionMemberEvent
                    {
                        FactionId     = toFactionId,
                        PlayerId      = playerId,
                        PlayerSteamId = steamId,
                        PlayerName    = name,
                    }),
                });
                break;

            case VRage.Game.ModAPI.MyFactionStateChange.FactionMemberPromote:
                steamId = MySession.Static.Players.TryGetSteamId(playerId);
                name    = MySession.Static.Players.TryGetIdentityNameFromSteamId(steamId);
                _uplinkManager.PublishChange(new HiveChangeEvent
                {
                    type = EVENT_TYPE_FACTION_MEMBER_PROMOTE,
                    raw  = new JavaScriptSerializer().Serialize(new FactionMemberEvent
                    {
                        FactionId     = toFactionId,
                        PlayerId      = playerId,
                        PlayerSteamId = steamId,
                        PlayerName    = name,
                    }),
                });
                break;

            case VRage.Game.ModAPI.MyFactionStateChange.FactionMemberDemote:
                steamId = MySession.Static.Players.TryGetSteamId(playerId);
                name    = MySession.Static.Players.TryGetIdentityNameFromSteamId(steamId);
                _uplinkManager.PublishChange(new HiveChangeEvent
                {
                    type = EVENT_TYPE_FACTION_MEMBER_PROMOTE,
                    raw  = new JavaScriptSerializer().Serialize(new FactionMemberEvent
                    {
                        FactionId     = toFactionId,
                        PlayerId      = playerId,
                        PlayerSteamId = steamId,
                        PlayerName    = name,
                    }),
                });
                break;

            case VRage.Game.ModAPI.MyFactionStateChange.FactionMemberLeave:
                steamId = MySession.Static.Players.TryGetSteamId(playerId);
                name    = MySession.Static.Players.TryGetIdentityNameFromSteamId(steamId);
                _uplinkManager.PublishChange(new HiveChangeEvent
                {
                    type = EVENT_TYPE_FACTION_MEMBER_LEAVE,
                    raw  = new JavaScriptSerializer().Serialize(new FactionMemberEvent
                    {
                        FactionId     = toFactionId,
                        PlayerId      = playerId,
                        PlayerSteamId = steamId,
                        PlayerName    = name,
                    }),
                });
                break;
            }
        }