All checks were successful
Galvanic Corrosion Cross-Compile / build (push) Successful in 1m50s
* Commit hash shipped with builds
* Post & pre-build events
* Objective fixes
* Orientation challenge filler
* Custom Rooms base
- Currently cannot save rooms (CDN not set up)
* Moved root path to path.ts
* Room cloning
* Rewrote instances - the whole thing
* Relationships are still untested
* Charades Words
* AG Room fetch
* Private room matchmaking
* Socket fixes
63 lines
2.4 KiB
TypeScript
63 lines
2.4 KiB
TypeScript
/* Galvanic Corrosion - Rec Room custom server for communities.
|
|
<https://gitea.proxnet.dev/zombieb/galvanic-corrosion>
|
|
Copyright (C) 2025 @zombieb (Discord / proxnet Gitea)
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as published
|
|
by the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
|
|
|
import { Redis } from "../../db.ts";
|
|
import { ProfileContentManager } from "./base/profilemanagerbase.ts";
|
|
|
|
export interface AvatarSettings {
|
|
OutfitSelections: string,
|
|
HairColor: string,
|
|
SkinColor: string,
|
|
FaceFeatures: string
|
|
}
|
|
|
|
export class ProfileAvatarManager extends ProfileContentManager {
|
|
|
|
#rootKey = Redis.buildKey(
|
|
Redis.KeyGroups.Profiles.Root,
|
|
this.profileId.toString(),
|
|
Redis.KeyGroups.Profiles.Avatar.Root
|
|
);
|
|
|
|
async setAvatar(settings: AvatarSettings) {
|
|
const keys = Redis.KeyGroups.Profiles.Avatar;
|
|
await Promise.all([
|
|
Redis.Database.set(Redis.buildKey(this.#rootKey, keys.Outfit), settings.OutfitSelections),
|
|
Redis.Database.set(Redis.buildKey(this.#rootKey, keys.Hair), settings.HairColor),
|
|
Redis.Database.set(Redis.buildKey(this.#rootKey, keys.Skin), settings.SkinColor),
|
|
Redis.Database.set(Redis.buildKey(this.#rootKey, keys.Face), settings.FaceFeatures),
|
|
]);
|
|
}
|
|
|
|
async getAvatar() {
|
|
const keys = Redis.KeyGroups.Profiles.Avatar;
|
|
const [outfit, hair, skin, face] = await Promise.all([
|
|
Redis.Database.get(Redis.buildKey(this.#rootKey, keys.Outfit)),
|
|
Redis.Database.get(Redis.buildKey(this.#rootKey, keys.Hair)),
|
|
Redis.Database.get(Redis.buildKey(this.#rootKey, keys.Skin)),
|
|
Redis.Database.get(Redis.buildKey(this.#rootKey, keys.Face))
|
|
]);
|
|
|
|
return {
|
|
OutfitSelections: outfit ?? "",
|
|
HairColor: hair ?? "",
|
|
SkinColor: skin ?? "",
|
|
FaceFeatures: face ?? ""
|
|
} as AvatarSettings;
|
|
}
|
|
|
|
} |