FLINT AND STEEL!!!! THE NETHER!!!!!! RELEASE!!!!!!!!!

* Account bio support (fetch only route right now)
* Room cloning fixes
    - Dorm Room cloning is still broken
* Instance changing fixes
* Presence: VRMovementMode and StatusVisibility updates automatically
* Routes for the above two properties
* Settings can take numbers, too (enums)
* No microtransations in my game (parental controls)
* A whole lotta routes for various unfinished but planned features
    - Equipment
    - Consumables
    - Objectives
    - Checklist (orientation rewards)
    - Objectives (three daily tasks)
    - Image metadata
    - Community Board
    - Player Events
    - Storefronts
* Matchmaking instance querying
    - Empty instances are not yet cleared
* Avatar items, saved avatars, save current avatar routes
* No loading screen tips for now
* Send presence at an interval over the socket
    - Error FROSTBITE is reported in the game logs during bootup sometimes. Maybe due to the lack of ping messages?
* Socket push notifications

Note to self: Set up deno compilation in runners on gitea
This commit is contained in:
2025-04-02 23:56:18 -04:00
parent bcee414004
commit 1cfd0426dd
35 changed files with 758 additions and 64 deletions

View File

@@ -19,6 +19,7 @@ import Logging from "@proxnet/undead-logging";
import { Profile } from "../profiles.ts";
import { RoomInstance, InstanceOptions } from "./types.ts";
import { Config } from "../../config.ts";
import Presence from "./presence.ts";
const log = new Logging("Instances");
@@ -150,7 +151,7 @@ class InstancesBase {
*
* Synchronizes profile instance to `instance` and adds player to instance.
*/
setPlayerInstance(player: Profile, instance: RoomInstance) {
async setPlayerInstance(player: Profile, instance: RoomInstance) {
const currentInstance = player.getInstance();
if (currentInstance === instance) return;
@@ -161,7 +162,11 @@ class InstancesBase {
if (this.instanceCanFitPlayer(instance)) {
this.getInstancePlayers(instance).add(player);
player.setInstance(instance);
const pres = await Presence.get(player);
pres.update();
this.updateSingleInstanceIsFull(instance);
} else log.w(`Instance ${instance.roomInstanceId} is full. Cannot add player ${player.getId()}`);
}