2 using Microsoft.Xna.Framework;
5 using Microsoft.Xna.Framework.Graphics;
18 private float useState;
24 public float Force {
get;
set; }
29 private string particles;
31 public string Particles
33 get {
return particles; }
34 set { particles = value; }
43 public override bool Use(
float deltaTime,
Character character =
null)
45 if (character ==
null || character.Removed) {
return false; }
46 if (!character.IsKeyDown(
InputType.Aim) || character.Stun > 0.0f) {
return false; }
52 if (character.AnimController.InWater)
61 Vector2 dir = character.CursorPosition - character.Position;
62 if (!MathUtils.IsValid(dir)) {
return true; }
64 dir = dir.ClampLength(length) / length;
65 Vector2 propulsion = dir *
Force * character.PropulsionSpeedMultiplier * (1.0f + character.GetStatValue(
StatTypes.PropulsionSpeed));
66 if (character.AnimController.InWater &&
Force > 0.0f) { character.AnimController.TargetMovement = dir; }
68 foreach (
Limb limb
in character.AnimController.Limbs)
70 if (limb.
WearingItems.Find(w => w.WearableComponent.Item ==
item) ==
null) {
continue; }
74 character.AnimController.Collider.ApplyForce(propulsion);
80 character.AnimController.GetLimb(
LimbType.RightHand)?.body.ApplyForce(propulsion);
84 character.AnimController.GetLimb(
LimbType.LeftHand)?.body.ApplyForce(propulsion);
89 if (!
string.IsNullOrWhiteSpace(particles))
101 useState -= deltaTime;
103 if (useState <= 0.0f)
The base class for components holding the different functionalities of the item
override void Update(float deltaTime, Camera cam)
override bool Use(float deltaTime, Character character=null)
Propulsion(Item item, ContentXElement element)
readonly List< WearableSprite > WearingItems
void ApplyForce(Vector2 force, float maxVelocity=NetConfig.MaxPhysicsBodyVelocity)
StatTypes
StatTypes are used to alter several traits of a character. They are mostly used by talents.