public void UpdateStats() { MyEventStatsUpdate msg = new MyEventStatsUpdate(); msg.StatsBuilder = PlayerStatistics.GetObjectBuilder(); Peers.SendToAll(ref msg, NetDeliveryMethod.Unreliable); }
public void SendFaction(MyMwcObjectBuilder_FactionEnum faction) { Log("Set faction: " + MyFactionConstants.GetFactionProperties(faction).Name); var factionMsg = new MyEventSetFaction(); factionMsg.Faction = faction; Peers.SendToAll(ref factionMsg, NetDeliveryMethod.ReliableOrdered); }
public void SendGlobalFlag(MyGlobalFlagsEnum eventFlag) { var msg = new MyEventGlobalFlag(); msg.Flag = eventFlag; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered); }
public void FriendlyFire(MyFriendlyFireEnum type) { var msg = new MyEventFriendlyFire(); msg.FriendlyFireType = type; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0); }
public void SendHeadshake(float amount) { var msg = new MyEventHeadshake(); msg.Amount = amount; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableSequenced, 3); }
public void SendPlayDialogue(MyDialogueEnum id) { var msg = new MyEventPlayDialogue(); msg.DialogueEnum = (int)id; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered); }
public void SendPlaySound(Vector3?position, MySoundCuesEnum id) { var msg = new MyEventPlaySound(); msg.Position = position; msg.SoundEnum = (int)id; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered); }
public void SendSetActorFaction(MyActorEnum actor, MyMwcObjectBuilder_FactionEnum faction) { var msg = new MyEventSetActorFaction(); msg.ActorId = (int)actor; msg.Faction = faction; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered); }
public void SendEvent(Vector3 position, MyGlobalEventEnum eventType, int seed, Vector3 up, Vector3 forward) { var msg = new MyEventEvent(); msg.Position = new MyMwcPositionAndOrientation(position, forward, up); msg.EventTypeEnum = (int)eventType; msg.Seed = seed; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered); }
public void SendSetFactionRelation(MyMwcObjectBuilder_FactionEnum factionA, MyMwcObjectBuilder_FactionEnum factionB, float relation) { var msg = new MyEventSetFactionRelation(); msg.FactionA = factionA; msg.FactionB = factionB; msg.Relation = relation; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered); }
public void NewEntity(MyMwcObjectBuilder_Base objectBuilder, Matrix matrix) { Debug.Assert(objectBuilder.EntityId.HasValue, "EntityId must be set"); var msg = new MyEventNewEntity(); msg.ObjectBuilder = objectBuilder; msg.Position = new MyMwcPositionAndOrientation(matrix); Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0, DEFAULT_LARGE_MESSAGE_SIZE); }
public void SendMissionProgress(MyMissionBase mission, MyMissionProgressType progressType, MyTextsWrapperEnum?messageEnum = null) { MyEventMissionProgress message = new MyEventMissionProgress(); message.MissionId = mission != null ? (int)mission.ID : (int?)null; message.ProgressType = progressType; message.MessageEnum = messageEnum.HasValue ? (int)messageEnum.Value : (int?)null; Peers.SendToAll(ref message, NetDeliveryMethod.ReliableOrdered); }
public void SpeacialWeaponEvent(MySpecialWeaponEventEnum eventType, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon) { MyEventSpeacialWeapon msg = new MyEventSpeacialWeapon(); msg.ShipEntityId = MySession.PlayerShip.EntityId.Value.NumericValue; msg.Weapon = weapon; msg.WeaponEvent = eventType; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered); }
public void ExplodeAmmo(MyAmmoBase ammo) { // Explode only my missiles to prevent circullar SEND/RECEIVE if (IsControlledByMe(ammo)) { var msg = new MyEventAmmoExplosion(); msg.AmmoBaseEntityId = ammo.EntityId.Value.NumericValue; msg.Position = new MyMwcPositionAndOrientation(ammo.WorldMatrix); Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered); } }
/// <summary> /// Try lock entity and announce to other players (runs only on host) /// </summary> bool TryLockEntity(uint entityId, byte playerId, bool enable) { bool success = true; if (enable) { using (m_lockedEntitiesLock.AcquireExclusiveUsing()) { success = !m_lockedEntities.ContainsKey(entityId); if (success) { m_lockedEntities[entityId] = playerId; MyEntities.GetEntityById(entityId.ToEntityId()).OnClosing += m_unlockOnClosing; } } } else { using (m_lockedEntitiesLock.AcquireExclusiveUsing()) { success = m_lockedEntities.Remove(entityId); MyEntity entity; if (MyEntities.TryGetEntityById(entityId.ToEntityId(), out entity)) { entity.OnClosing -= m_unlockOnClosing; } } } if (success) { // Send lock to all MyEventLock response = new MyEventLock(); response.EntityId = entityId; response.LockType = enable ? MyLockEnum.LOCK : MyLockEnum.UNLOCK; Peers.SendToAll(ref response, NetDeliveryMethod.ReliableOrdered, 0); } if (enable) { // Send response to player MyPlayerRemote player; if (Peers.TryGetPlayer(playerId, out player)) { MyEventLockResult response = new MyEventLockResult(); response.EntityId = entityId; response.IsSuccess = success; Peers.NetworkClient.Send(ref response, player.Connection, NetDeliveryMethod.ReliableOrdered, 0); } } return(success); }
public void ResetEntity(MyEntity entity) { Debug.Assert(entity.EntityId.HasValue); if (IsControlledByMe(entity)) { MyEventEntityReset msg = new MyEventEntityReset(); msg.EntityId = entity.EntityId.Value.NumericValue; Peers.SendToAll(ref msg); } }
public void SendSetEntityFaction(MyEntity entity, MyMwcObjectBuilder_FactionEnum faction) { Debug.Assert(entity.EntityId.HasValue, "Entity must have id"); var msg = new MyEventSetEntityFaction(); msg.Faction = faction; msg.EntityId = entity.EntityId.Value.NumericValue; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered); }
private void SendMusicTransition(MyMusicEventEnum musicEventType, int?priority, MyMusicTransitionEnum?transitionEnum, string category, bool loop) { var msg = new MyEventMusicTransition(); msg.MusicEventType = musicEventType; msg.TransitionEnum = transitionEnum.HasValue ? (int)transitionEnum.Value : 0; msg.Priority = priority ?? 0; msg.Category = category; msg.Loop = loop; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered); }
public void CutOut(MyVoxelMap voxelMap, ref BoundingSphere cutOutSphere) { Debug.Assert(voxelMap.EntityId.HasValue); var msg = new MyEventCutOut(); msg.Position = cutOutSphere.Center; msg.Radius = cutOutSphere.Radius; msg.VoxelMapEntityId = voxelMap.EntityId.Value.NumericValue; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0); }
public void AddVoxelHand(uint voxelMapId, uint entityId, float radius, MyMwcVoxelHandModeTypeEnum handMode, MyMwcVoxelMaterialsEnum?material) { var msg = new MyEventAddVoxelHand(); msg.EntityId = entityId; msg.Radius = radius; msg.HandMode = handMode; msg.VoxelMaterial = material; msg.VoxelMapEntityId = voxelMapId; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered, 0); }
public void UpdateAmmo(MyAmmoBase ammo) { Debug.Assert(ammo.EntityId.HasValue, "All guided projectiles must have entity ID, this type hasn't: " + ammo.GetType().Name); if (ammo.EntityId.Value.PlayerId == MyEntityIdentifier.CurrentPlayerId) // Make sure to update only my ammo { MyEventAmmoUpdate msg = new MyEventAmmoUpdate(); msg.EntityId = ammo.EntityId.Value.NumericValue; msg.Velocity = ammo.Physics.LinearVelocity; msg.Position = new MyMwcPositionAndOrientation(ammo.WorldMatrix); Peers.SendToAll(ref msg, ammo.EntityId.Value, m_multiplayerConfig.ProjectilesTickRate, NetDeliveryMethod.Unreliable); } }
public void SendNotification(MyNotificationType type, MyTextsWrapperEnum text, string arg0 = null, string arg1 = null, string arg2 = null, string arg3 = null) { var msg = new MyEventNotification(); msg.Text = (int)text; msg.Type = type; msg.Arg0 = arg0; msg.Arg1 = arg1; msg.Arg2 = arg2; msg.Arg3 = arg3; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered); }
public void AddExplosion(Vector3 position, MyExplosionTypeEnum explosionType, float damage, float radius, bool forceDebris, bool createDecals) { var msg = new MyEventAddExplosion(); msg.CreateDecals = createDecals; msg.ForceDebris = forceDebris; msg.Damage = damage; msg.Position = position; msg.EntityId = null; msg.ExplosionType = (byte)explosionType; msg.Radius = radius; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered); }
private void SendChatMessage(string message, MyMwcObjectBuilder_FactionEnum?senderFaction) { MyEventChat msg = new MyEventChat(); msg.Message = message; if (senderFaction.HasValue) { Peers.SendToTeam(ref msg, senderFaction.Value, NetDeliveryMethod.ReliableUnordered); } else { Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered); } }
public void SendCountdown(TimeSpan countdown, bool forceSend = false) { MyEventCountdown msg = new MyEventCountdown(); msg.Timespan = countdown; if (forceSend) { Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered); } else { Peers.SendToAll(ref msg, Multiplayer.MyUpdateTypeId.MissionTimer, 0, 1.2f, NetDeliveryMethod.ReliableOrdered); } }
public void ProjectileHit(MyEntity target, Vector3 position, Vector3 direction, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType, MyEntity source) { if (target.EntityId.HasValue) { MyEventProjectileHit msg = new MyEventProjectileHit(); msg.TargetEntityId = target.EntityId.Value.NumericValue; msg.Position = position; msg.Direction = direction; msg.AmmoType = ammoType; msg.SourceEntityId = source != null?MyEntityIdentifier.ToNullableInt(source.EntityId) : null; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered); } }
public void ClearLocks(byte playerId) { foreach (var l in m_lockedEntities.ToArray()) { if (l.Value == playerId) { m_lockedEntities.Remove(l.Key); // Announce to all MyEventLock unlockMsg = new MyEventLock(); unlockMsg.EntityId = l.Key; unlockMsg.LockType = MyLockEnum.UNLOCK; Peers.SendToAll(ref unlockMsg); } } }
public void AddExplosion(MyEntity entity, MyExplosionTypeEnum explosionType, float damage, float radius, bool forceDebris, bool createDecals, MyParticleEffectsIDEnum?particleIDOverride = null) { Debug.Assert(entity != null && entity.EntityId.HasValue); var msg = new MyEventAddExplosion(); msg.Damage = damage; msg.EntityId = entity.EntityId.Value.NumericValue; msg.ExplosionType = (byte)explosionType; msg.Radius = radius; msg.ParticleIDOverride = (int?)particleIDOverride; msg.CreateDecals = createDecals; msg.ForceDebris = forceDebris; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableOrdered); }
public void DoDamage(MyEntity target, float player, float normal, float emp, MyDamageType damageType, MyAmmoType ammoType, MyEntity source, float newHealthRatio) { if (IsControlledByMe(target)) { MyEventDoDamage msg = new MyEventDoDamage(); msg.TargetEntityId = target.EntityId.Value.NumericValue; msg.PlayerDamage = player; msg.Damage = normal; msg.EmpDamage = emp; msg.DamageType = (byte)damageType; msg.AmmoType = (byte)ammoType; msg.DamageSource = source != null?MyEntityIdentifier.ToNullableInt(source.EntityId) : null; msg.NewHealthRatio = newHealthRatio; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered); } }
public void Shoot(MyEntity entity, Matrix shooterMatrix, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo, MyEntity target, MyEntityIdentifier?projectileId) { if (!IsControlledByMe(entity)) { return; } MyEventShoot msg = new MyEventShoot(); msg.Position = new MyMwcPositionAndOrientation(shooterMatrix); msg.ShooterEntityId = entity.EntityId.Value.NumericValue; msg.ProjectileEntityId = MyEntityIdentifier.ToNullableInt(projectileId); msg.Ammo = ammo; msg.TargetEntityId = (target != null && target.EntityId.HasValue) ? target.EntityId.Value.NumericValue : (uint?)null; msg.Weapon = weapon; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered); }