Commit graph

283 commits

Author SHA1 Message Date
Andrei Alexeyev
da2f5a3b0e
player: implement powersurge discharge bullet cancel as a task 2021-02-22 01:39:29 +02:00
Andrei Alexeyev
30ebd1d3f5
player: implement powersurge particles as a task
Fixes some deprecation warnings
2021-02-22 01:31:48 +02:00
Andrei Alexeyev
f329a9f016
Extended enemy properties
ENEMY_IMMUNE is now deprecated. Spawning an enemy with ENEMY_IMMUNE hp
sets up the new flags field to match old behavior. The hp value itself
has (almost) no special meaning anymore.
2020-07-09 15:25:57 +03:00
Andrei Alexeyev
b3d3e76d6a
Fix player_add_lives and player_add_bombs
The bug never manifested because these functions are only called with 1
as the argument
2020-07-02 06:09:01 +03:00
Andrei Alexeyev
8480d41b7b
Audio rewrite (#236)
This replaces SDL_mixer with an internal streaming and mixing system,
relying only on basic SDL audio support. It's also a partial refactor of
the audio API, most notably BGM-related. The BGM metadata resource type
is gone, as well as the `.bgm` files. The metadata is now stored inside
the `.opus` files directly, using standard Opus tags.
2020-06-22 17:41:03 +03:00
Andrei Alexeyev
89ecc0c55e
Establish more-or-less consistent resource getter functions
Deprecate old ad-hoc stuff like get_sprite, r_texture_get, etc.
2020-06-09 04:33:22 +03:00
Andrei Alexeyev
54ca97587c
Rename cmplx32 into cmplxf for better consistency 2020-05-09 09:31:20 +03:00
Andrei Alexeyev
f5f8f9fb49
Get rid of custom min() and max() functions
Use the standard fmin() and fmax() for floating point values, and ours
imin(), imax(), umin(), umax() for integers.
2020-05-09 09:16:07 +03:00
Andrei Alexeyev
a7eb246664
Purge some dead code 2020-04-28 00:13:15 +03:00
Andrei Alexeyev
9f10dfef21
bunch of portrait and dialog-related shuffling around 2020-04-27 22:59:16 +03:00
Alice D
56e64498a6
Player Statistics (#219) 2020-04-26 22:27:13 +03:00
Andrei Alexeyev
83d4197e86
Remove Player.lastmovedir
This is only relevant for YoumuA, so track it there
2020-04-23 00:35:06 +03:00
Andrei Alexeyev
d4fb6ab5bd
player: remove "focus" property and "focus_circle"
focus_circle is replaced with a custom PlayerIndicators entity
(responsible for drawing the focus hitbox/cross and powersurge bar)
2020-04-23 00:17:40 +03:00
Andrei Alexeyev
42956c2ace
Remove Player.slaves 2020-04-22 22:37:04 +03:00
Andrei Alexeyev
e16e2184a3
Refactor entity system (#214)
* Smarter generic entity macros

The list of "core" entities is now defined in one macro, and hardcoded
_Generic dispatch tables are eliminated

* Get rid of "custom" entities

All entities are now "first-class". The list of known entity types has
been moved to known_entities.h. The system no longer needs to know the
definition of all entity structs.

* Refactor guts of ENT_BOX/ENT_UNBOX

Made the functions inline, Box::ent is now a proper pointer type (but
please don't use it directly), ENT_UNBOX returns NULL if the box is
"empty" (references NULL entity)

* Merge TASK_BIND_UNBOXED with TASK_BIND

* s/YoumuMyon/YoumuAMyon for consistency
2020-04-17 10:18:53 +03:00
Andrei Alexeyev
45a4283225
use custom ents for Reimu; cleanup Marisa; etc. 2020-04-06 04:34:55 +03:00
Andrei Alexeyev
431237f0f2
Coroutinize MarisaA (#206) 2020-04-01 23:08:40 +03:00
Andrei Alexeyev
b6a6496c39
Coroutinize ReimuB (#205) 2020-03-25 08:52:18 +02:00
Andrei Alexeyev
01e7ea8a33
Coroutinize ReimuA (#199) 2020-03-13 22:54:07 +02:00
Andrei Alexeyev
a9604b1109
some sprite batching optimizations 2020-03-05 21:14:31 +02:00
Andrei Alexeyev
fb19028ed5
New dialogue system powered by coroutines 2020-03-04 22:26:50 +02:00
Andrei Alexeyev
77a65432d6
fix remaining deprecations (except in legacy stages) 2020-03-04 22:26:48 +02:00
Andrei Alexeyev
9fd9dfcf94
fix some trivial deprecations 2020-03-04 22:26:48 +02:00
Andrei Alexeyev
2647c25c4a
fix and tweak player death effect 2020-03-04 22:26:47 +02:00
Andrei Alexeyev
17f6f159c1
replace remaining GrowFade usage in non-stage code 2020-03-04 22:26:47 +02:00
Andrei Alexeyev
c73b05bdd1
Make animation_get_frame never return transient sprites
Animations now store flipped copies of frames as needed.
2020-03-04 22:26:47 +02:00
Andrei Alexeyev
cfbc697936
replace remaining Shrink usage in non-stage code 2020-03-04 22:26:46 +02:00
Andrei Alexeyev
3d1c0eee4e
WIP proj draw rule revamp; YoumuB revamp; misc changes; giant mess
cursed commit
2020-03-04 22:26:45 +02:00
Andrei Alexeyev
d7579606a3
use new RNG api in player.c 2020-03-04 22:26:43 +02:00
Andrei Alexeyev
7474ff3a25
OpenGL ES 2.0 support (#187)
* WIP gles2 compat

* More gles2 compat. Playable with ANGLE now, with some rendering bugs.

* fix matrix mult. order in generic laser shader

* gles20: fix indexed rendering

* Update docs about gles20 status

* fix formatting
2020-02-15 19:45:09 +02:00
Andrei Alexeyev
80b1026d08
Don't redefine standard complex macro; use a new cmplx typedef
This also introduces `float32`, `float64`, and `real` typedefs to be
used in place of `float` and `double` later. `real` is for game code and
other places where we don't particularly care about the precision and
format of the underlying type, and is currently defined to `double`.
`float32` and `float64` should replace `float` and `double` respectively
2019-11-22 05:38:48 +02:00
Andrei Alexeyev
9d3bf87559
Refactor matrix stack API to get rid of matrix mode (#177)
This replaces the r_mat_foo functions with specialized r_mat_{mv,tex,proj}_foo counterparts that operate explicitly on the modelview, texture, and projection matrix stacks respectively.
2019-10-12 15:02:15 +03:00
Andrei Alexeyev
5a23fb95fc
make upkeep script preserve existing copyrights 2019-08-03 20:44:22 +03:00
Andrei Alexeyev
cf1ab225cb
basic support for portrait faces; make charselect menu more fun 2019-07-08 03:51:15 +03:00
Andrei Alexeyev
3055901998
update my email 2019-07-03 21:00:56 +03:00
Andrei Alexeyev
c2cd91463c
New character art by Afensorm + other visual tweaks (#170)
* implement player spellcard declarations on bomb

* stagedraw: move "bottom text" to a separate (higher) layer

* update boss spell declaration effect

* import afensorm's character portrait art

* improve dialog visuals

* acknowledge afensorm in credits and COPYING

* 'alphamap' functionality; effects for wriggle and youmu portraits

* update afens art

* add cirno alphamap

* dialog: draw active speaker above other other

* charselect: use r_draw_sprite
2019-07-03 20:50:43 +03:00
Andrei Alexeyev
5c404d0547
remove references to "full_power" sfx, we don't have it 2019-04-25 02:43:50 +03:00
laochailan
5b389336f7
add power surge sfx 2019-04-16 21:06:10 +02:00
Andrei Alexeyev
f554768cfc
fix rendering of lasers and a few effects during view shake
this is a regression introduced in eea6aa09
2019-04-14 16:15:40 +03:00
Andrei Alexeyev
48b0e31b2e
Enhance ScoreText™ with the SmartCombineⓡ technology 2019-04-14 07:16:10 +03:00
Andrei Alexeyev
28bf0fc0f4
stagetext: separate custom updates from drawing 2019-04-11 12:23:24 +03:00
Andrei Alexeyev
fd09bf02c8
Enforce explicit form and .proto usage for PROJECTILE/PARTICLE calls
Remove kludge code converting sprite names to prototypes
2019-04-11 07:12:17 +03:00
Andrei Alexeyev
ce1eecaf49
add distortion effect for powersurge discharge 2019-04-08 19:57:41 +03:00
Andrei Alexeyev
f14d229244
powersurge: apply hazard-clear on discharge over 10 frames 2019-04-08 07:34:52 +03:00
Andrei Alexeyev
50bcafacda
delay gameover slightly 2019-04-08 06:19:42 +03:00
Andrei Alexeyev
5f940e31fa
autistic optimization 2019-04-07 01:57:28 +03:00
Andrei Alexeyev
488ff43f85
add optional floating scoring text 2019-04-07 01:55:13 +03:00
Andrei Alexeyev
bfea580ce1
fix player being able to get lives/bombs in spellstages 2019-04-03 21:48:25 +03:00
Andrei Alexeyev
ebee4eb00f
Remove the bomb cancellation system
Bombs may now persist into a boss spellcard without failing it, if they
were used before the spellcard was declared.
2019-04-01 00:12:45 +03:00
Andrei Alexeyev
df3427d09a
powersurge: rebalance charge/bonus gain in favor of neg. charge maintenance 2019-03-28 17:56:06 +02:00