The Wait Is Over. (#49)
* Move submodule to Godot * Update submodule AGAIN. * Update project files. * Remove WearableAnimatedSprite from prototypes. * Remove content repo resource copier. * Update submodule. * Fix resource handling. * Content.Client compiles by commenting out hands GUI. * Update submodule. * Fix prototype textures and update submodule. * Update Submodule. * Update submodule SOME MORE! * Random WiP shit I guess * Make omnisharp not choke on buildchecker. * Update submodule. * Highly WiP broken HandsGui code. * Ok maybe let's not insult omnisharp. * Fix annoying Omnisharp warning. * Update submodule. * Update submodule. * Hey I forgot to push this but it didn't conflict! * Fix hands GUI on godot. * Update submodule. * Obligatory submodule update. * Work on exports. * Work on exports. * Update submodule. * Update submodule. * Fix dumb case mismatch between content and engine * work pls. * This maybe. * Now! * Update submodule. * update submodule. * Some WiP work on exporting aaah. * OK READY FOR THE BUILDS SERVER. * Probably should've made those commits in a different order. * DO THE THING * update submodule. * Updates for effects system. * Update submodule. * Make file/line numbers show up on Windows Godot. * Set submodule to master.
This commit is contained in:
committed by
GitHub
parent
128728bfcb
commit
6704245a41
@@ -17,43 +17,45 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Hitscan
|
||||
{
|
||||
public override string Name => "HitscanWeapon";
|
||||
|
||||
string spritename = "laser";
|
||||
|
||||
string spritename = "Objects/laser.png";
|
||||
|
||||
protected override void Fire(IEntity user, LocalCoordinates clicklocation)
|
||||
{
|
||||
var userposition = user.GetComponent<TransformComponent>().WorldPosition; //Remember world positions are ephemeral and can only be used instantaneously
|
||||
var angle = new Angle(clicklocation.Position - userposition);
|
||||
var theta = angle.Theta;
|
||||
|
||||
|
||||
var ray = new Ray(userposition, angle.ToVec());
|
||||
var raycastresults = IoCManager.Resolve<ICollisionManager>().IntersectRay(ray, 20, Owner.GetComponent<TransformComponent>().GetMapTransform().Owner);
|
||||
|
||||
Hit(raycastresults);
|
||||
AfterEffects(user, raycastresults, theta);
|
||||
AfterEffects(user, raycastresults, angle);
|
||||
}
|
||||
|
||||
protected virtual void Hit(RayCastResults ray)
|
||||
{
|
||||
if(ray.HitEntity != null && ray.HitEntity.TryGetComponent(out DamageableComponent damage))
|
||||
if (ray.HitEntity != null && ray.HitEntity.TryGetComponent(out DamageableComponent damage))
|
||||
{
|
||||
damage.TakeDamage(DamageType.Heat, 10);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void AfterEffects(IEntity user, RayCastResults ray, double theta)
|
||||
|
||||
protected virtual void AfterEffects(IEntity user, RayCastResults ray, Angle angle)
|
||||
{
|
||||
var time = IoCManager.Resolve<IGameTiming>().CurTime;
|
||||
var offset = angle.ToVec() * ray.Distance / 2;
|
||||
|
||||
EffectSystemMessage message = new EffectSystemMessage
|
||||
{
|
||||
EffectSprite = spritename,
|
||||
Born = time,
|
||||
DeathTime = time + TimeSpan.FromSeconds(1),
|
||||
Size = new Vector2(ray.Distance, 1f),
|
||||
Coordinates = user.GetComponent<TransformComponent>().LocalPosition,
|
||||
Coordinates = user.GetComponent<TransformComponent>().LocalPosition.Translated(offset),
|
||||
//Rotated from east facing
|
||||
Rotation = (float)theta,
|
||||
Rotation = (float)angle.Theta,
|
||||
ColorDelta = new Vector4(0, 0, 0, -1500f),
|
||||
Color = new Vector4(255,255,255,750)
|
||||
Color = new Vector4(255, 255, 255, 750),
|
||||
Shaded = false
|
||||
};
|
||||
IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<EffectSystem>().CreateParticle(message);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user