Commit Graph

1410 Commits (c170984471b9017646f7cf58f8ed059a3d187cd9)

Author SHA1 Message Date
MysterD 974d9b52cf Prevented initial level dialog from appearing twice 2021-06-26 20:36:18 -07:00
MysterD 3625ad8883 Made clients send keep-alive packets again 2021-06-26 20:25:38 -07:00
MysterD 6c687a5a73 Prevent walking through warp doors 2021-06-26 20:20:19 -07:00
MysterD b7795fd9d1 Prevent packet_save_set_flag from looping 2021-06-26 16:54:43 -07:00
MysterD e85e6b9983 Bumped version to unst 6 2021-06-26 15:29:59 -07:00
MysterD f13b7990a0 More networking adjustments
Adjusted when a join request is sent, and who it is sent to
Adjusted default course/act/level/area for new players
Added a sequence id to level area inform
Adjusted reliable packets to be sent half as frequently
2021-06-26 15:28:51 -07:00
MysterD 8b403d4509 DJUI: Added selectionbox 2021-06-26 14:20:39 -07:00
MysterD 1e4acef2e0 DJUI: Added checkbox and camera panel 2021-06-25 23:03:38 -07:00
MysterD bf54a305d4 Hide cursor regardless of window mode 2021-06-25 15:56:28 -07:00
MysterD 28ce5e9cdf DJUI: Added sliders, made Sound menu work 2021-06-25 15:50:31 -07:00
MysterD 05c32ea73e DJUI: Wrote active panel system 2021-06-24 18:15:59 -07:00
MysterD 5131665be2 DJUI: Added 'Three Panel' component 2021-06-23 19:17:46 -07:00
MysterD 56a6532d9c DJUI: Improved keyboard/gamepad input 2021-06-22 21:35:55 -07:00
MysterD 580f19dcc9 DJUI: Added keyboard/gamepad support 2021-06-22 20:01:16 -07:00
MysterD a3947b3800 DJUI: started adding options menu 2021-06-22 00:13:37 -07:00
MysterD dfef74e727 Added custom title font
Adjusted text system to have multiple fonts
Added color escape to text
2021-06-21 21:18:27 -07:00
MysterD 7aec232450 Added quit menu
create enabled switch to disable interactables
fixed djui_base_destroy()
added on_click() event
2021-06-21 03:11:53 -07:00
MysterD c0b093b11f DJUI: Created main menu panel
Added ability to make a DjuiBase keep its aspect ration
Added on_render_pre callback
Added ability to display 32b images
Added DjuiFlowLayout
Added logo
2021-06-20 23:34:14 -07:00
MysterD 99308a3145 Many small adjustments to networking code
In an attempt to track down an issue that causes packet flooding and
hanging, I've looked at every step of the networking process and tried
to clean up anything strange I saw.
2021-06-20 04:36:33 -07:00
MysterD ac85a7e4a7 Re-disable Discord until issues are sorted 2021-06-20 00:49:52 -07:00
MysterD 3eef4076b9 Possibly fixed Discord issues 2021-06-19 21:59:06 -07:00
MysterD 5e6eb8e833 DJUI: Added interactable mousedown events 2021-06-19 19:50:59 -07:00
MysterD 6e23c952f9 DJUI: Rendering, interactable, and mouse adjustments
Made DJUI render at 60 fps
Added mouse cursor and hooks in SDL for capturing the window-relative mouse position
Started creating an interable system where elements can respond to events such as on_mouse_hover
2021-06-19 18:22:44 -07:00
MysterD 63e9621d56 DJUI: Added drop shadow to text 2021-06-19 01:21:25 -07:00
MysterD b80cc50cd0 DJUI: Added padding to DjuiBase 2021-06-19 01:10:24 -07:00
MysterD f27a6b2469 DJUI: Added borders to DjuiBase 2021-06-18 18:53:41 -07:00
MysterD 368157fbcd DJUI: added ability for x/y/w/h values to be relative to parent's size 2021-06-18 16:16:41 -07:00
MysterD 038c1135b3 Initial DJUI commit
The birth of a custom user interface system.

Has the ability to draw things to the screen at native resolution
regardless of window size.

Components can be nested within one another to an arbitrary depth.

Text rendering is completely rewritten.

Text and images can be clipped by their parent container.
2021-06-18 15:23:59 -07:00
MysterD 52d07c4dde Bump version number to 5 2021-06-15 21:27:59 -07:00
MysterD 939318041e Bowser, cannon door, and eyerok no longer require server to be in level
All have been switched from being owned by the server to being owned by
the player with the lowest global ID in the level.
2021-06-15 21:04:51 -07:00
MysterD f60b861d73 BBH bookshelf manager no longer requires the server to be in BBH
Instead of only allowing the server to update the bookshelf manager, allow the
lowest global ID player to update it.
2021-06-15 21:01:28 -07:00
MysterD 4c401f9ba8 Resynchronized DDD poles to use area timer system 2021-06-15 18:01:03 -07:00
MysterD 4396381d60 Change unstable build disclaimer 2021-06-15 00:20:29 -07:00
MysterD 15f8b12770 Fixed Discord packet system for >2 players 2021-06-15 00:15:03 -07:00
MysterD 10e8af83ba Fixed how Linux registers the discord executable 2021-06-14 23:31:22 -07:00
MysterD 0c459294bb Fixed the merry go round in BBH
Fixed releasing of sync objects that otherwise don't sync their death events
Fixed using/releasing reserved objects in an area that the server isn't in
2021-06-14 21:06:07 -07:00
MysterD ef2287a5d5 Resynchronized checkerboard elevators to use area timer 2021-06-14 20:29:08 -07:00
MysterD e7d0f8ec8b Resynchronized LLL puzzle pieces
Created a timer based on area that is shared. The puzzle pieces will
execute rapidly to catch up to the timer on level join. This keeps them
in sync without constantly needing to acknowledge that a puzzle piece
had moved before continuing.
2021-06-14 20:14:47 -07:00
MysterD 6aded174e9 Synchronized moat draining and cap switch unlocks 2021-06-14 19:59:11 -07:00
MysterD 02fbdca868 Fix bowser key unlock sync 2021-06-14 19:21:47 -07:00
MysterD 8e52960cf7 Added indication of which players are in which acts 2021-06-14 19:11:26 -07:00
MysterD 361a57edb6 Instance levels based on which star was selected
Previously the levels were instanced based on "act" which is a concept
that is invisible and unintuitive to the user.
2021-06-14 18:25:24 -07:00
MysterD cd48d177b0 Additional synchronization + misc fixes
Prevented crash that happened when an upstairs painting was entered
Synchronized TTC speed setting
Synchronized WDW water level on late join
Player packets no longer broadcasted to clients in a different location
2021-06-14 18:13:58 -07:00
MysterD b1ac0c9f7f Adjusted how "static" sync entities are removed
No longer needs hacky stuff like relying on the macro for goomba triplet removal.
Instead we simply keep a list of sync ids of objects that were removed (but were
around at the start of level loading)
2021-06-13 19:00:55 -07:00
MysterD 3ab1b0b4b5 Synchronized red coin count on join. 2021-06-13 18:32:35 -07:00
MysterD 518a1fda4b Server makes sure the client can receive the packet before sending/tunnelling 2021-06-13 17:57:54 -07:00
MysterD 59d08a90b9 Fixed how "levelAreaMustMatch" packets are sent/processed
Instead of the server dropping them immediately, the server only drops the processing. This allows it to broadcast/send the packet to the correct client without the server processing it.

Fixed how "static" level objects were detected. The old way was error prone and would consider spawned objects to be static anyway.

Made ERROR_LOGs always show up, "disabling" logging only turns off INFO_LOGs now.
2021-06-13 17:47:58 -07:00
MysterD 7ae26b3ea0 Complete rewrite of entity ID reservation system
Now "syncId"s can only be reserved at ID 127+. This ensures that static level
objects and spawned reserved objects never clash. The server keeps track of
every player's list of reserved IDs, as well as when an ID is used, or when
an entity using that ID is destroyed. This is much more complicated than it
used to be, but this complication is required due to players being allowed to
be in different areas of the game.
2021-06-13 16:04:28 -07:00
MysterD fde6eaf0a3 Added ordered packet system
Now packets can be grouped up and sent separately, but still be processed
sequentially regardless of how much they get scrambled over the network.
If a packet group isn't received for 15 seconds, all unprocessed packets
in that group will be dropped. Packet ordering is required for level and
area synchronization information when someone joins the level late.
2021-06-11 19:37:32 -07:00
MysterD b6959dc7ea Informed players of ent deletions in a different area (but same level)
Added packet_level_respawn_info to inform the players of entity
deletions in a different area of the same level. Currently it's
massively noisy due to sending out a new packet for each entity
destroyed. This can cause chaos when collecting a series of coins.

Ideally this information would be batched and sent in one big blob every
so often.
2021-06-11 16:19:24 -07:00