public void attackLivingObject(LivingObject _Target, int _Damage) { if (Configuration.Configuration.isHost || Configuration.Configuration.isSinglePlayer) { _Target.onAttacked(this, _Damage); } }
private static void handleUpdateObjectPositionMessage(NetIncomingMessage _Im) { var message = new UpdateObjectPositionMessage(_Im); var timeDelay = (float)(NetTime.Now - _Im.SenderConnection.GetLocalTime(message.MessageTime)); GameLibrary.Object.LivingObject var_LivingObject = (GameLibrary.Object.LivingObject)GameLibrary.Map.World.World.world.getObject(message.Id); Client var_Client = Configuration.networkManager.getClient(_Im.SenderEndPoint); if (var_Client.PlayerObject == var_LivingObject) { if (var_LivingObject != null) { if (var_LivingObject.LastUpdateTime < message.MessageTime) { //var_LivingObject.Position += (message.Velocity * timeDelay); var_LivingObject.NextPosition = message.Position;// +(message.Velocity * timeDelay); var_LivingObject.MoveUp = message.MoveUp; var_LivingObject.MoveDown = message.MoveDown; var_LivingObject.MoveLeft = message.MoveLeft; var_LivingObject.MoveRight = message.MoveRight; var_LivingObject.checkChangedBlock(); var_LivingObject.LastUpdateTime = message.MessageTime; } } else { //GameLibrary.Logger.Logger.LogErr("Object mit Id: " + message.Id + " konnte nicht im Quadtree gefunden werden -> Position wird nicht geupdatet"); //GameLibrary.Connection.Event.EventList.Add(new GameLibrary.Connection.Event(new GameLibrary.Connection.Message.RequestLivingObjectMessage(message.Id), GameLibrary.Connection.GameMessageImportance.UnImportant)); } } }
public void getInteracted(LivingObject _Interactor) { foreach (LivingObjectInteraction var_Interaction in this.interactions) { var_Interaction.doInteraction(_Interactor); } }
public virtual void onAttacked(LivingObject _Attacker, int _DamageAmount) { this.damage(_DamageAmount); this.aggroSystem.addAggro(_Attacker, _DamageAmount * 100f); Vector3 knockBackVector = this.Position - _Attacker.Position; knockBackVector.X = knockBackVector.X / knockBackVector.Length() * 20; knockBackVector.Y = knockBackVector.Y / knockBackVector.Length() * 20; knockBackVector.Z = knockBackVector.Z / knockBackVector.Length() * 20; //this.knockBack(knockBackVector); Configuration.Configuration.networkManager.addEvent(new GameLibrary.Connection.Message.UpdateObjectPositionMessage(this), GameMessageImportance.VeryImportant); Configuration.Configuration.networkManager.addEvent(new GameLibrary.Connection.Message.UpdateObjectHealthMessage(this), GameMessageImportance.VeryImportant); this.checkChangedBlock(); }
private static void handleRequestLivingObjectMessage(NetIncomingMessage _Im) { var message = new RequestLivingObjectMessage(_Im); var timeDelay = (float)(NetTime.Now - _Im.SenderConnection.GetLocalTime(message.MessageTime)); Client var_Client = Configuration.networkManager.getClient(_Im.SenderEndPoint); GameLibrary.Object.LivingObject var_LivingObject = (GameLibrary.Object.LivingObject)GameLibrary.Map.World.World.world.getObject(message.Id); if (var_LivingObject != null) { Configuration.networkManager.SendMessageToClient(new UpdateObjectMessage(var_LivingObject), var_Client); } else { GameLibrary.Logger.Logger.LogErr("ServerIGameMessageManager->handleRequestLivingObjectMessage(...) LivingObject mit Id " + message.Id + " existiert nicht!"); } }