public bool ShouldDetectRelation(VRage.Game.MyRelationsBetweenPlayerAndBlock relation) { switch (relation) { case VRage.Game.MyRelationsBetweenPlayerAndBlock.Owner: return(DetectOwner); break; case VRage.Game.MyRelationsBetweenPlayerAndBlock.NoOwnership: case VRage.Game.MyRelationsBetweenPlayerAndBlock.FactionShare: return(DetectFriendly); break; case VRage.Game.MyRelationsBetweenPlayerAndBlock.Neutral: return(DetectNeutral); break; case VRage.Game.MyRelationsBetweenPlayerAndBlock.Enemies: return(DetectEnemy); break; default: throw new InvalidBranchException(); break; } return(false); }
void OpenRequest(bool open, long identityId) { VRage.Game.MyRelationsBetweenPlayerAndBlock relation = GetUserRelationToOwner(identityId); if (relation.IsFriendly()) { Open = open; } }
void OpenRequest(bool open, long identityId) { VRage.Game.MyRelationsBetweenPlayerAndBlock relation = GetUserRelationToOwner(identityId); MyIdentity identity = MySession.Static.Players.TryGetIdentity(identityId); MyPlayer player = identity != null && identity.Character != null?MyPlayer.GetPlayerFromCharacter(identity.Character) : null; if (relation.IsFriendly() || (identity != null && identity.Character != null && player != null && MySession.Static.IsUserSpaceMaster(player.Client.SteamUserId))) { Open = open; } }
public virtual bool HasPlayerAccess(long playerId) { if (!MyFakes.SHOW_FACTIONS_GUI) { return(true); } VRage.Game.MyRelationsBetweenPlayerAndBlock relation = GetUserRelationToOwner(playerId); bool accessAllowed = relation.IsFriendly(); return(accessAllowed); }
public bool CheckConnection(MyIdentity sender, MyIdentity receiver) { if (sender == receiver) { return(true); } var senderRelayedBroadcasters = sender.Character.RadioReceiver.GetRelayedBroadcastersForPlayer(sender.IdentityId); var receiverRelayedBroadcasters = receiver.Character.RadioReceiver.GetRelayedBroadcastersForPlayer(receiver.IdentityId); foreach (var senderRelayedBroadcaster in senderRelayedBroadcasters) { //Is the broadcaster in range of sender broadcaster? if (VRageMath.Vector3D.Distance(senderRelayedBroadcaster.BroadcastPosition, sender.Character.PositionComp.GetPosition()) > sender.Character.RadioBroadcaster.BroadcastRadius) { continue; } //Relayed broadcasters include antennas and characters if (senderRelayedBroadcaster.Entity is IMyComponentOwner <MyIDModule> ) { MyIDModule broadcasterId; if ((senderRelayedBroadcaster.Entity as IMyComponentOwner <MyIDModule>).GetComponent(out broadcasterId)) { VRage.Game.MyRelationsBetweenPlayerAndBlock relation = broadcasterId.GetUserRelationToOwner(sender.IdentityId); if (relation == VRage.Game.MyRelationsBetweenPlayerAndBlock.Enemies || relation == VRage.Game.MyRelationsBetweenPlayerAndBlock.Neutral || broadcasterId.Owner == 0) { continue; } } } if (senderRelayedBroadcaster.Entity is MyCharacter) { var relation = (senderRelayedBroadcaster.Entity as MyCharacter).GetRelationTo(sender.IdentityId); if (relation == VRage.Game.MyRelationsBetweenPlayerAndBlock.Enemies || relation == VRage.Game.MyRelationsBetweenPlayerAndBlock.Neutral) { continue; } } if (receiverRelayedBroadcasters.Contains(senderRelayedBroadcaster)) { return(true); } } return(false); }
/// <summary> /// Uncomplete function as some of the essential informations are not available via Mod-API /// </summary> /// <param name="userId"></param> /// <param name="relation"></param> /// <returns></returns> public static bool IsWithinBlockLimits(long userId, VRage.Game.MyRelationsBetweenPlayerAndBlock relation) { //if (MyAPIGateway.Session.SessionSettings.BlockLimitsEnabled == MyBlockLimitsEnabledEnum.NONE) return true; return(true); /* BlockLimits are not available to Modding API * var identities = new List<IMyIdentity>(); * MyAPIGateway.Players.GetAllIdentites(identities, (i) => i.IdentityId == userId); * var identity = identities.Count > 0 ? identities[0] : null; * if (identity == null) return true; * * bool allowed = identity.BlockLimits.BlocksBuilt < identity.BlockLimits.MaxBlocks; * return false; * * //relation = base.IDModule.GetUserRelationToOwner(base.BuiltBy) */ }
public int GetStyleForRelation(VRage.Game.MyRelationsBetweenPlayerAndBlock relation) { return(m_markerStylesForBlocks[(int)relation]); }
public void OverrideStyleForRelation(VRage.Game.MyRelationsBetweenPlayerAndBlock relation, MyFontEnum font, MyHudTexturesEnum directionIcon, MyHudTexturesEnum targetIcon, Color color) { int handle = GetStyleForRelation(relation); m_markerStyles[handle] = new MyMarkerStyle(font, directionIcon, targetIcon, color); }
bool IsNotFriendly(VRage.Game.MyRelationsBetweenPlayerAndBlock relationship) { return(relationship != VRage.Game.MyRelationsBetweenPlayerAndBlock.FactionShare && relationship != VRage.Game.MyRelationsBetweenPlayerAndBlock.Owner); }