From b009c7b93addd422cdcf8b637c75a1fe737da1ff Mon Sep 17 00:00:00 2001 From: Ed Date: Tue, 12 Nov 2024 22:09:14 +0300 Subject: [PATCH] paddle setup --- .../Shuttle/CP14WatershipPaddleComponent.cs | 11 +++ .../_CP14/Shuttle/CP14WatershipSystem.cs | 66 ++++++++++++++++++ .../_CP14/Entities/watershipTEST.yml | 59 ++++++++++++++++ .../Structures/Shuttle/paddle.rsi/meta.json | 17 +++++ .../Shuttle/paddle.rsi/wooden_l.png | Bin 0 -> 486 bytes .../Shuttle/paddle.rsi/wooden_r.png | Bin 0 -> 468 bytes 6 files changed, 153 insertions(+) create mode 100644 Content.Shared/_CP14/Shuttle/CP14WatershipPaddleComponent.cs create mode 100644 Content.Shared/_CP14/Shuttle/CP14WatershipSystem.cs create mode 100644 Resources/Prototypes/_CP14/Entities/watershipTEST.yml create mode 100644 Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/wooden_l.png create mode 100644 Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/wooden_r.png diff --git a/Content.Shared/_CP14/Shuttle/CP14WatershipPaddleComponent.cs b/Content.Shared/_CP14/Shuttle/CP14WatershipPaddleComponent.cs new file mode 100644 index 0000000000..2527ebd823 --- /dev/null +++ b/Content.Shared/_CP14/Shuttle/CP14WatershipPaddleComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Shared._CP14.Shuttle; + +/// +/// +/// +[RegisterComponent, Access(typeof(CP14WatershipSystem))] +public sealed partial class CP14WaterShipPaddleComponent : Component +{ + [DataField] + public float Power = 10f; +} diff --git a/Content.Shared/_CP14/Shuttle/CP14WatershipSystem.cs b/Content.Shared/_CP14/Shuttle/CP14WatershipSystem.cs new file mode 100644 index 0000000000..2d0e9928b2 --- /dev/null +++ b/Content.Shared/_CP14/Shuttle/CP14WatershipSystem.cs @@ -0,0 +1,66 @@ +using Content.Shared.Construction.Components; +using Content.Shared.Construction.EntitySystems; +using Content.Shared.Verbs; +using Robust.Shared.Physics.Systems; + +namespace Content.Shared._CP14.Shuttle; + +public sealed class CP14WatershipSystem : EntitySystem +{ + [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly SharedPhysicsSystem _physics = default!; + + public override void Initialize() + { + SubscribeLocalEvent>(OnPaddleForward); + SubscribeLocalEvent>(OnPaddleBackward); + } + + private void OnPaddleForward(Entity ent, ref GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract) + return; + + var paddleTransform = Transform(ent); + + if (!paddleTransform.Anchored) + return; + + var verb = new ActivationVerb + { + Text = "Forward", + Priority = 1, + Act = () => Bulb(ent, paddleTransform, 1) + }; + args.Verbs.Add(verb); + } + + private void OnPaddleBackward(Entity ent, ref GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract) + return; + + var paddleTransform = Transform(ent); + + if (!paddleTransform.Anchored) + return; + + var verb = new AlternativeVerb + { + Text = "Backward", + Priority = 2, + Act = () => Bulb(ent, paddleTransform, -1) + }; + args.Verbs.Add(verb); + } + + private void Bulb(Entity ent, TransformComponent paddleTransform, float modifier) + { + if (paddleTransform.GridUid is null) + return; + + var impulseDirection = paddleTransform.LocalRotation.ToVec(); + + _physics.ApplyLinearImpulse(paddleTransform.GridUid.Value, impulseDirection * ent.Comp.Power * modifier, paddleTransform.LocalPosition); + } +} diff --git a/Resources/Prototypes/_CP14/Entities/watershipTEST.yml b/Resources/Prototypes/_CP14/Entities/watershipTEST.yml new file mode 100644 index 0000000000..6a35bdfd80 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/watershipTEST.yml @@ -0,0 +1,59 @@ +- type: entity + name: ship paddle + id: CP14BaseWatershipPaddle + abstract: true + parent: + - BaseStructure + description: bulb bulb + categories: [ ForkFiltered ] + components: + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.45,-0.45,0.45,0.05" + density: 190 + mask: + - TableMask + - type: Sprite + sprite: _CP14/Structures/Shuttle/paddle.rsi + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 75 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:SpawnEntitiesBehavior + spawn: + CP14WoodenPlanks1: + min: 2 + max: 4 + - type: Transform + anchored: true + - type: Anchorable + - type: Pullable + - type: CP14WaterShipPaddle + +- type: entity + parent: CP14BaseWatershipPaddle + id: CP14WatershipPaddleLeft + suffix: Left + components: + - type: Sprite + state: wooden_l + +- type: entity + parent: CP14BaseWatershipPaddle + id: CP14WatershipPaddleRight + suffix: Right + components: + - type: Sprite + state: wooden_r \ No newline at end of file diff --git a/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/meta.json b/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/meta.json new file mode 100644 index 0000000000..7d1a6d7a0d --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/meta.json @@ -0,0 +1,17 @@ +{ + "version": 1, + "license": "CLA", + "copyright": "Created by TheShuEd (Github) for CrystallPunk14", + "size": { + "x": 96, + "y": 32 + }, + "states": [ + { + "name": "wooden_l" + }, + { + "name": "wooden_r" + } + ] +} diff --git a/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/wooden_l.png b/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/wooden_l.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5d31850dd3110235271cd22c5b54d6106c6716 GIT binary patch literal 486 zcmV@P)Px$ph-kQRA_^z`o1@Xn6zX?Ao2z-*XD@v!Sd;=bQReVbf{ZNJHuPDEp?3^=AL-c;nEqZA;`5x8|SA75J3Pyw?Fv)-0crgYqS9Xnm*eUuM1mL z%BM|DpQ2|>@TrY(b#ZK|^Re1Q&zK;hjBFP`EXI5f0FXI}IsRs~sc*Ik8?JvtMX`Pl z`zN_%!i*?;mb0EQ!Smbu+I1GQDN{Ue`M$vj^;XOCzW>x<*O5ymEKBp7;S&)N5fKp) c5fS<63t^9{ZW586A^-pY07*qoM6N<$f?Yk{)&Kwi literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/wooden_r.png b/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/wooden_r.png new file mode 100644 index 0000000000000000000000000000000000000000..669175bca861872ddc1646d24765d703300ef432 GIT binary patch literal 468 zcmV;_0W1EAP)Px$j!8s8RA_(I6@(7$AkuD~1P7rX!rhPL-VY%-2%X$4 z+Cc|j(4vEc8WI~C5{QFDo2E%1{9o>J0f>l*h=_=Yh%%E~b^!m`$>F}A zG~a4>b8Fjx)8kqwxwDJTQgfM9?Cs5b;xhxsThARZUi`pl6Vg`Syu=lG;CQL`u0#W7 zDO6h0X)AA0R3RnK_jD7$Uwo>NkV&L*MV_Tl1IL3ZB=jviG_DE>1IG*{m!-aCM`9W` zDc^-Rpjof_Nrj%iP&SH+97#493*Hy3wt3Pm51PnBx1yhy+MXJT=ke_$_FbxwP*mi_ zH^8u6)Px#4-+Atbu7d4VBIEMr6^8AiAPu33JX-B; z#-G>f?=IIw9zET}j;5ff$e}n#-9Ei%a|TpPCBGnVg~kff1_0pv`flnN8kMpiJRdM@ z7gzTWOFz>_HS0f3nY5UIHUAB5RLY@qWz~vLL_|bHL_|bHH0~Siz=3~RoOm<<0000< KMNUMnLSTZdoz3h3 literal 0 HcmV?d00001