Weapons built from traits, fashion, Hourglass, About tab, and Ithaca
- Every attack is now assembled from traits on its definition instead of per-weapon code: an anchor and path (thrusts, out-and-back, arcs), shared flight physics (gravity, drag, acceleration, homing, and one wall response: end, burst, stick, crawl, bounce, stop, pass, return, latch), and flags like bouncy, drifting, tethered, orbiting, instant and arming. Melee are projectiles too. - Shots have a lifetime and a fade (when damage bottoms out). Range is speed times lifetime. Ricochets and the Vacuum wind lifetime back. - The Vacuum pulls anyone's shots, and its airblast flips them out along the aim, claiming enemies' (fading into your colour). - New trinket: Hourglass, longer projectile lifetime and range. Ropes and chains lengthen with it and the Accelerator. - Fashion: 23 items worn on the head, face or torso, chosen in Profile. - Flamethrower flames hit continuously, the whip coils and sweeps, bouncing shots roll over ramps, and Ricochet relights grenade fuses. - Profile tab, colour tooltips, option hints on every setting, an About tab with credits and links, and the Ithaca font. - Loadouts lock once readied, tomatoes clear with the match, and the round-over pause is 4 seconds. - CC0 license. Tools and CLAUDE.md are no longer tracked, and the web shell moves to web/.
This commit is contained in:
1 parent
e55596b276
commit
e9d8cac926
101 files changed
+5787
-7148
No files matched your search
+17
-2
@@ -59,12 +59,24 @@ enum MouseButton
|
||||
MOUSE_COUNT
|
||||
};
|
||||
|
||||
// Which half of a binding: the keyboard side or the gamepad side.
|
||||
enum BindingSide
|
||||
{
|
||||
SIDE_KEY,
|
||||
SIDE_PAD
|
||||
};
|
||||
|
||||
// A control's two bindings: one on the keyboard side (a key's scancode, or past the keys a mouse button or wheel
|
||||
// direction) and one on the gamepad (a button, or past the buttons a stick or trigger direction). -1 is unbound.
|
||||
struct Binding
|
||||
{
|
||||
int key = -1;
|
||||
int pad = -1;
|
||||
|
||||
int& side_get(BindingSide side)
|
||||
{
|
||||
return side == SIDE_PAD ? pad : key;
|
||||
}
|
||||
};
|
||||
|
||||
constexpr int PAD_MAX = 4;
|
||||
@@ -144,8 +156,10 @@ public:
|
||||
int captureControl = -1;
|
||||
int erases = 0;
|
||||
int slotPressed = -1;
|
||||
// A loadout picked with Shift and a number key, kept until the settings take it (they update once a frame).
|
||||
int loadoutPressed = -1;
|
||||
bool isBindingChanged = false;
|
||||
bool isCaptureGamepad = false;
|
||||
BindingSide captureSide = SIDE_KEY;
|
||||
bool isClicked = false;
|
||||
bool isConfirmed = false;
|
||||
bool isMouseMoved = false;
|
||||
@@ -174,7 +188,8 @@ public:
|
||||
bool is_mouse_down(MouseButton button);
|
||||
bool is_mouse_pressed(MouseButton button);
|
||||
bool is_mouse_released(MouseButton button);
|
||||
void binding_name_get(int binding, bool isGamepad, char* text, int size);
|
||||
void binding_name_get(int binding, BindingSide side, char* text, int size);
|
||||
void control_name_get(Control control, char* text, int size);
|
||||
|
||||
bool is_control_down(int device, Control control);
|
||||
|
||||
|
||||
Reference in new issue
Block a user