Commit Graph

226 Commits

Author SHA1 Message Date
Imbris
65efa779b5 Steps towards properly synchronizing when a client exits in-game to
return to the character screeen. And other related improvements.

* Uid now optional when removing an entity from IdMaps since that Uid
  may have been transferred to the new entity created when the client
  exits "in-game".
* Added notes about making sure to update the CharacterId mapping when
  changing the `kind` field of `Presence`.
* Add a parameter to `delete_entity_recorded` that indicates whether it
  is being called from `handle_exit_ingame` and that provides the `Uid`
  that was removed from the entity so that we can more explicitly and
  correctly handle that case.
* We now add the Uid of the client to the deleted entities list when it
  exits "ingame". (still need to rework code so that the client doesn't
  delete its own entity).
* Improved integration of possession code with ForceUpdate logic.
* Don't remove `Presence` component from old entity in possession so
  that deleting that entity will properly handle updating the
  CharacterId unmapping (if the old entity isn't going to be deleted we
  still remove the `Presence` component so that it doesn't keep terrain
  loaded).
* Added a couple TODOs on existing tangential things I noticed.
2023-06-04 12:58:16 -04:00
Imbris
a8fbfc026a Fix compilation errors from recent changes 2023-06-04 12:58:16 -04:00
Imbris
c60f994c7f Some random changes and a fmt 2023-06-04 12:58:16 -04:00
Imbris
f11baed9fa Adapting various things to the new interface, fixing compilation errors,
and progressing on half done things. Also, added a few TODO comments.
2023-06-04 12:58:16 -04:00
Imbris
4094887997 Rename UidAllocator to IdMaps everywhere, also rename lookup_entity to
uid_entity.

Also made more progress on changes in common/src/uid.rs

(does not compile so don't know if all rebase quirks resolved)
2023-06-04 12:58:16 -04:00
Imbris
35922866a8 Start refactoring UidAllocator to contain mappings for different Id
types.

* Add new `IdMaps` type that contains mappings to Entity from Uid, CharacterId, and
  RtsimEntity.
* Add PresenceKind::LoadingCharacter variant for when the CharacterId
  has not actually been confirmed to exist and belong to the logged in
  client. Switches to the regular PresenceKind::Character once the
  character is loaded from the database and that is used to update the
  entity.
* Start refactoring `delete_entity_recorded` to check for CharacterId
  and RtsimEntity values that may need to be removed from the map (just
  very start, not near complete).
* Other misc tweaks.
2023-06-04 12:58:16 -04:00
Imbris
3277d18265 Rename retrieve_entity_internal to lookup_entity 2023-06-04 12:58:16 -04:00
Imbris
ea725fffde Cleanup UidAllocator and Uid a bit:
* Remove unnecessary Marker/MarkAllocator trait implementations.
* Delete excess functions
* Change some methods to take Uid instead of u64
2023-06-04 12:58:15 -04:00
Joshua Barretto
ec3a7d1898 Make items vanish after 5 minutes 2023-06-01 14:51:19 +01:00
Maxicarlos08
777a69e576
adressed review comments 2023-05-22 23:20:11 +02:00
Joshua Barretto
ec5e3fe716 Avoid re-fetching system data on every link persist 2023-05-13 12:31:19 +01:00
Isse
6674cce2cc intercat with sprites on ships 2023-05-09 19:43:09 +02:00
Joshua Barretto
73c84dfcc2 Clippy 2023-05-05 00:04:13 +01:00
Joshua Barretto
8d9625d6ee Addressed comments 2023-05-04 23:18:40 +01:00
Joshua Barretto
ee971e4056 Added item merging 2023-05-04 22:12:25 +01:00
Isse
3548b464da orient airships correctly on load 2023-04-14 11:25:59 +02:00
Joshua Barretto
16e3227f78 Correct localisation of numeric values, use coordinate conversions in rtsim 2023-04-12 10:36:11 +01:00
Isse
0bb6fa7946 add flag to clamp to ground for RepositionOnChunkLoad 2023-04-12 10:17:49 +02:00
Isse
6be4a2b33f only add RepositionOnChunkLoad to rtsim npcs and don't add Waypoint if it doesn't exist 2023-04-12 09:24:07 +02:00
Joshua Barretto
edcc2f1870 Overhauled chat message representation to allow for more exhaustive localisation 2023-04-11 15:46:36 +01:00
Joshua Barretto
d7ba4ecef7 Allow OnDeath event to handle all actors 2023-04-09 19:25:58 +01:00
Joshua Barretto
3e0f5295c0 Added CharacterActivity, made NPCs look at the player when speaking to them 2023-04-09 19:25:57 +01:00
Joshua Barretto
364255c7fe Allowed rtsim NPCs to greet nearby actors 2023-04-09 19:25:55 +01:00
Joshua Barretto
6035234c6e Removed old rtsim 2023-04-09 19:25:55 +01:00
Isse
1a117f1331 rtsim vehicles 2023-04-09 19:25:54 +01:00
Joshua Barretto
0b4d3c9e20 Fixed scaling of airships 2023-04-09 19:25:53 +01:00
Joshua Barretto
e8b489a71a sync 2023-04-09 19:25:53 +01:00
IsseW
afd9ea5462 site pathing 2023-04-09 19:25:52 +01:00
Joshua Barretto
c168ff2f9b Added rtsim saving, chunk resources, chunk resource depletion 2023-04-09 19:25:51 +01:00
Isse
c34e5ad4ed Small fixes 2023-03-29 23:11:59 +00:00
Sam
a3d655970e Heavy stance required abilities 2023-03-21 19:56:32 -04:00
Sam
9875008efa Added stance component that persists even after sheathing weapon (does not yet work with M1 replacement). 2023-03-21 19:29:34 -04:00
Sam
4c79936c07 Added wrapper type to durations related to buffs and auras. 2023-03-11 16:47:11 -05:00
Sam
663db06844 Made auras no longer need to be mutably accessed every tick. 2023-03-11 16:45:12 -05:00
Sam
9efac9957d Changed buff effects so they did not need to mutably change buffs every tick. Buff system now no longer mutably accesses buffs component. 2023-03-11 16:45:11 -05:00
Sam
b1b41e95f6 Queueable buffs now work with buffs without using a timer, tests too 2023-03-11 16:45:11 -05:00
Sam
89aa934c3c Initial work 2023-03-11 16:45:10 -05:00
Joseph Donofry
74ee861dde Add glow to dropped lanterns 2023-01-23 16:13:43 +00:00
Avi Weinstock
78845a0d73 Implement potion sickness, which causes diminishing returns on healing from potions. 2023-01-19 15:06:12 -05:00
Sam
500e0ae3d0 Heavy abilities 2022-10-27 20:06:34 -04:00
Avi Weinstock
ff781198d3 Fix 18-slot pets (they now properly get inventories based on their body type, which is usually 1-slot).
Also fixes a related issue where pets lose their natural weapons/armour.
2022-09-30 14:51:49 -04:00
Joshua Yanovski
986d104faa Update Rust toolchain. 2022-09-08 15:43:53 -07:00
Imbris
334937568e Add an entity view distance setting that allows limiting the distance
entities are synced from and displayed in.

NOTE: Syncing entities work at the granularity regions which are
multi-chunk squares but the display of entities in voxygen is limited in
a circle with the radiues of the supplied distance.

Additional details and changes:
* Added `ViewDistances` struct in `common` that contains separate
  terrain and entity view distances (the entity view distance will be
  clamped by the terrain view distance in uses of this).
* View distance requests from the client to the server now use this
  type.
* When requesting the character or spectate state the client now passes
  its desired view distances. This is exposed as a new parameter on
  `Client::request_character`/`Client::request_spectate`. And the client
  no longer needs to send a view distance request after entering these
  states. This also allows us to avoid needing to initialize `Presence`
  with a default view distance value on the server.
* Removed `DerefFlaggedStorage` from `Presence` and `RegionSubscription` since the
  change tracking isn't used for these components.
* Add sliders in voxygen graphics and network tabs for this new setting.
  Show the clamped value as well as the selected value next to the
  slider.
* Rename existing "Entities View Distance" slider (which AFAIK controls
  the distance at which different LOD levels apply to figures) to
  "Entities Detail Distance" so we can use the former name for this new
  slider.
2022-08-25 23:24:43 -04:00
Imbris
c36d6e873f Fix issue with the region subscription system not updating on view
distance changes (until the player crossed a chunk boundary and
triggered the normal update).

This introduces a `ViewDistance` struct that provides an abstraction
around limiting the rate the view distance can be cycled up and down.
This helps avoid unnecessary sending, deleting, and then resending of
synced things like entities (the client will still delete its terrain
locally and re-request it though).

The second part of this fix is storing the last view distance in the
`RegionSubscription` struct and then updating region subscriptions if
this doesn't match the current view distance in the `Presence`
component.
2022-08-25 23:24:43 -04:00
Joshua Barretto
51d90707b5 Relaxed automod somewhat 2022-08-23 10:03:06 +01:00
Imbris
7439d09708 Ensure that the client clears pending trades on its side when exiting to
the character screen (and similar actions). When any entity is
deleted cancel any existing trades associated with it.
2022-08-20 18:47:09 -04:00
juliancoffee
6319dcfc22 Add more components in /body
* Add mass
* Add density
* Add collider.
This one is strange as always, I don't know what's wrong, but debug hitbox
changes only after death. Real one seems to work.
2022-08-20 17:02:08 +03:00
Joshua Barretto
602de267b1 Perform validation on all kinds of chat message 2022-08-11 11:11:33 +01:00
IsseW
87821d5c1d force update counter 2022-08-09 19:22:09 +02:00
Isse
0471e78f41 spectate mode :D 2022-08-09 18:43:13 +02:00