summary refs log tree commit diff stats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Added debug console command history HEAD mainStar Rauchenberger2021-07-062-0/+19
| | | | #5
* Improved eight-direction pathfindingStar Rauchenberger2021-07-062-20/+39
| | | | | | | | | | In the past, not using the "cardinal directions only" flag resulted in awkward and unintuitive paths. Two changes were made to the algorithm to improve these paths. One, nodes in the graph are now a pair of a position and the direction taken to get there. This way, a small penalty can be applied whenever a turn is taken, which should incentivise paths with fewer turns (which should be simpler). This change theoretically affects the cardinal mode as well, but in practice it is unlikely to change the paths that would've been generated. This also multiplies the search space by eight (four in cardinal mode), but so far it does not appear to be a significant resource drain. Two, the heuristic used in eight-directions mode is now octile distance, instead of dominant axis distance. Additionally, the real cost of moving diagonally is ~sqrt(2) instead of 1. This somewhat disincentivises diagonal movement, since it is no longer considered the same as cardinal movement (even though cardinal and diagonal movement occurs at the same speed), but the turning penalty makes moving diagonally more favourable than zigzagging cardinally to reach a diagonal destination. Most scripted movement in the game is likely to use cardinal mode because that mirrors the way most scripted movement in Mother 3 works, but in some cases (the Hinawa event on the cliff) diagonal movement just looks better, and thus it's useful to have the improved pathfinding algorithm.
* Added moonwalking to pathfinding behaviourStar Rauchenberger2021-07-063-1/+8
| | | | This flag will make the sprite appear to be walking backwards.
* Added beginning of Hinawa eventStar Rauchenberger2021-07-061-2/+2
| | | | #28
* Added the ability to pan camera to a warp pointStar Rauchenberger2021-07-064-2/+25
|
* Added "floating" sprite attributeStar Rauchenberger2021-07-065-4/+13
| | | | Sprites with this flag enabled will ignore map collision.
* Added background scriptsStar Rauchenberger2021-07-055-2/+24
| | | | Background scripts are scripts that are launched when a map is loaded. They differ in use from a map's init script in that they are expected to contain an infinite loop. These scripts are linked to a sprite and will be killed when that sprite is destroyed (usually when the map is unloaded, but if the sprite is made persistent then it may last longer). The thread running the script is given no warning that it is being killed; the coroutine is simply never called again, and the thread is disposed of. Because of this, background scripts MUST ensure the game is in a consistent state before coroutine yielding, because it is not guaranteed that the coroutine will ever be called again.
* Added fading in/out spritesStar Rauchenberger2021-07-054-2/+24
|
* Added sprite opacityStar Rauchenberger2021-07-053-3/+9
|
* Added debug info to Script objectStar Rauchenberger2021-03-132-0/+5
|
* Sound volume is controllable from settings menuStar Rauchenberger2021-03-133-3/+21
| | | | #7
* Disabled mute shortcut while on menuStar Rauchenberger2021-03-131-5/+7
| | | | | | Mostly because pressing M while the settings menu is open would not cause the music slider to go down automatically. #7
* Music volume is controllable from settings menuStar Rauchenberger2021-03-134-2/+35
| | | | #7
* Added sliders to the settings menuStar Rauchenberger2021-03-135-4/+117
| | | | #7
* Added submenusStar Rauchenberger2021-03-136-53/+137
| | | | #7
* Sound effects are paused on the pause menuStar Rauchenberger2021-03-133-0/+14
| | | | #7
* Added pause menu open and close soundStar Rauchenberger2021-03-133-7/+25
| | | | #7
* Added option to exit area from pause menu on supported mapsStar Rauchenberger2021-03-133-2/+18
| | | | #7
* Pause menu commands can do somethingStar Rauchenberger2021-03-134-1/+30
| | | | #7
* Added cursor wrapping to pause menuStar Rauchenberger2021-03-131-10/+16
| | | | #7
* Menu cursor should start at the top when openedStar Rauchenberger2021-03-131-0/+2
| | | | Even if it was left on a different option before closing the menu.
* Player can move cursor on pause menuStar Rauchenberger2021-03-133-0/+32
| | | | #7
* Added cursor to pause menuStar Rauchenberger2021-03-133-0/+38
| | | | #7
* Rendered pause menu during animationStar Rauchenberger2021-03-132-62/+112
| | | | Also, the game is not rendered at all if the pause menu is totally open, which makes sense because why are we going to the effort to render it and then just colour over it.
* Rendered some menu optionsStar Rauchenberger2021-03-135-1/+87
| | | | #7
* Added pause menu opening and closing animationStar Rauchenberger2021-03-134-12/+86
| | | | #7
* Created Interpolation abstractionStar Rauchenberger2021-03-134-64/+64
| | | | This simplifies EffectSystem quite a bit, and will be useful in other classes.
* Created MenuSystemStar Rauchenberger2021-03-134-1/+26
| | | | | | It currently has nothing in it. #7
* Interacting with Kuma and Duster in the finaleStar Rauchenberger2021-03-121-1/+2
| | | | | | The hot spring is also a little bigger now, because I'm using an enclosure to keep Lucas in, instead of setting the tiles to being solid or not. #20
* Prevented bonking if you moved on at least one axisStar Rauchenberger2021-03-121-5/+6
| | | | #18
* Made default sprite hitboxes slightly narrowerStar Rauchenberger2021-03-112-6/+6
| | | | This includes the player characters. It was impossible to access the Time Passage mailbox with the wider hitbox because the player would continuously slide between the solid tiles to either side of it.
* Added sliding around solid tilesKelly Rauchenberger2021-03-115-3/+78
| | | | #3
* Simplified collision detection outputKelly Rauchenberger2021-03-115-87/+75
| | | | It is no longer split into horizontal and vertical results. Also, the collision detection routine now does the work of calculating an adjusted position, instead of the caller (CharacterSystem) having to do it. This will be useful for #3.
* Fixed improperly calculated sprite hitboxesKelly Rauchenberger2021-03-113-14/+14
| | | | | | Also made sprite hitboxes bigger. #15
* switch_claus starts talking when he gets yaKelly Rauchenberger2021-03-096-0/+28
| | | | | | Kumatora, Duster, and Boney had to be given hitboxes, but they are not considered solid. #10
* Added text for "yes" path of "let's switch places"Kelly Rauchenberger2021-03-091-0/+1
| | | | #10
* Added "let's switch places!" Claus spriteKelly Rauchenberger2021-03-093-16/+25
| | | | | | He will wander randomly until you get close, and will then run at you. Talking to him or bumping into him does nothing currently. If you move out of his range of interest he will go back to wandering at a walking pace. #10
* Split collision detection into two phases, horizontal and verticalKelly Rauchenberger2021-03-081-1/+24
| | | | | | The whole function should probably be refactored at some point, possibly like therapy5's but that may be too complicated. #14
* Added connection between mirror map and hallucination_interiorKelly Rauchenberger2021-03-071-2/+2
|
* Idling in front of the mirror faces you toward itKelly Rauchenberger2021-03-061-1/+8
|
* The mirror reflection changes to Claus, Ionia, and WessKelly Rauchenberger2021-03-061-0/+3
|
* Added MirrorSystemKelly Rauchenberger2021-03-059-0/+93
| | | | This is really just for letting one sprite mirror another's movement and animation. I tried doing it in the BehaviourSystem, but you get stuttering if you do it earlier in the loop than the CharacterSystem, so I ended up having to make a new system just for this thing that will not happen very often.
* Added the mask sprite layerKelly Rauchenberger2021-03-057-5/+49
| | | | This layer is below the normal sprite layer. Sprites on it are only rendered within the area of a zone that is defined per-map.
* Implemented circle transition effect (for exit area)Kelly Rauchenberger2021-03-054-1/+90
|
* Set default collision bounds for map spritesKelly Rauchenberger2021-03-031-2/+2
| | | | Since it's always the same ones anyway, might as well set defaults and allow them to be overridden.
* Handled case where a pathfollowing sprite overshoots its destinationKelly Rauchenberger2021-03-022-0/+16
| | | | This may happen due to lag or due to debugging with lldb. What happens is that 60 times a second, the engine will check whether the direction toward the current endpoint is equal to the direction in the pathfinding instruction, and if it isn't (because the sprite has gone past the endpoint) then it sets the sprite's position to the endpoint instantly so that the pathfinding can continue.
* Fixed inverted Y coordinate of directionFacingPoint functionsKelly Rauchenberger2021-03-011-2/+2
| | | | It's because the game's coordinate system has Y increasing downward, whereas the coordinate system used by the trig functions has Y increasing upward.
* Started writing the Mixolydia scene!Kelly Rauchenberger2021-03-015-3/+27
| | | | | | Looking pretty good so far. TODO: direction facing functions have inverted Y coordinate. confusion expression doesn't exist yet. rest of scene.
* Added (human) Mixolydia spriteKelly Rauchenberger2021-03-013-0/+4
|
* Simplified "animation" map sprite parameterKelly Rauchenberger2021-02-281-1/+1
| | | | The filenames for these are fairly regular, and we're gonna want to abstract it away further later on anyway.