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
@@ -44,6 +44,7 @@ struct Color
|
||||
constexpr Color BLACK = {0, 0, 0, 1};
|
||||
constexpr Color GRAY = {128 / 255.0f, 128 / 255.0f, 128 / 255.0f, 1};
|
||||
constexpr Color WHITE = {1, 1, 1, 1};
|
||||
constexpr Color CLEAR = {0, 0, 0, 0};
|
||||
|
||||
inline Vec2 operator+(Vec2 a, Vec2 b)
|
||||
{
|
||||
@@ -184,6 +185,13 @@ inline Color color_fade(Color color, float alpha)
|
||||
return {color.r, color.g, color.b, color.a * alpha};
|
||||
}
|
||||
|
||||
// A colour amount of the way from one to another.
|
||||
inline Color color_mix(Color from, Color to, float amount)
|
||||
{
|
||||
return {from.r + (to.r - from.r) * amount, from.g + (to.g - from.g) * amount, from.b + (to.b - from.b) * amount,
|
||||
from.a + (to.a - from.a) * amount};
|
||||
}
|
||||
|
||||
// A list of up to N items held in place, without the heap: game state kept in one, unlike in a std::vector, is plain
|
||||
// bytes that mean the same on every platform (see Fighter). Pushing past N drops the item.
|
||||
template <class T, int N> struct FixedList
|
||||
|
||||
Reference in new issue
Block a user