Action blocker for changing direction

This commit is contained in:
zumorica
2020-05-13 19:26:39 +02:00
parent c3c5b87fd5
commit a524eca44b
4 changed files with 32 additions and 2 deletions

View File

@@ -93,6 +93,11 @@ namespace Content.Server.GameObjects
{
return true;
}
bool IActionBlocker.CanChangeDirection()
{
return true;
}
}
/// <summary>
@@ -169,6 +174,11 @@ namespace Content.Server.GameObjects
{
return false;
}
bool IActionBlocker.CanChangeDirection()
{
return true;
}
}
/// <summary>
@@ -255,5 +265,10 @@ namespace Content.Server.GameObjects
{
return false;
}
bool IActionBlocker.CanChangeDirection()
{
return false;
}
}
}

View File

@@ -151,6 +151,7 @@ namespace Content.Server.GameObjects.Components.Mobs
public bool CanEquip() => (!Stunned);
public bool CanUnequip() => (!Stunned);
public bool CanChangeDirection() => true;
#endregion
}
}

View File

@@ -24,6 +24,7 @@ namespace Content.Server.GameObjects.EntitySystems
bool CanAttack() => true;
bool CanEquip() => true;
bool CanUnequip() => true;
bool CanChangeDirection() => true;
}
public class ActionBlockerSystem : EntitySystem
@@ -145,5 +146,17 @@ namespace Content.Server.GameObjects.EntitySystems
return canunequip;
}
public static bool CanChangeDirection(IEntity entity)
{
bool canchangedirection = true;
foreach (var actionblockercomponents in entity.GetAllComponents<IActionBlocker>())
{
canchangedirection &= actionblockercomponents.CanChangeDirection();
}
return canchangedirection;
}
}
}

View File

@@ -451,13 +451,14 @@ namespace Content.Server.GameObjects.EntitySystems
var item = hands.GetActiveHand?.Owner;
if(ActionBlockerSystem.CanChangeDirection(player))
playerTransform.LocalRotation = new Angle(coordinates.ToMapPos(_mapManager) - playerTransform.MapPosition.Position);
if (!ActionBlockerSystem.CanInteract(player))
{
return;
}
playerTransform.LocalRotation = new Angle(coordinates.ToMapPos(_mapManager) - playerTransform.MapPosition.Position);
// TODO: Check if client should be able to see that object to click on it in the first place
// Clicked on empty space behavior, try using ranged attack