1
0
Fork 0

feat: add Hard Resources for system-managed game resources

This commit is contained in:
Jason Fraley 2025-12-22 12:00:34 -05:00
parent c1360da9c2
commit 877f8531aa
3 changed files with 727 additions and 645 deletions

View file

@ -0,0 +1,35 @@
import { CollectionConfig } from "payload";
import { isDeveloper } from "@/utils/access-control/isRole";
export const GameHardResources: CollectionConfig = {
slug: "game-hard-resources",
access: {
create: isDeveloper,
update: isDeveloper,
delete: isDeveloper,
},
admin: {
group: "Game",
useAsTitle: "name",
description: "\"Hard Resources\" represent the hard-coded, integral resource types used to power the game. It includes things like Intelligence Points, Command Points, and other non-physical resources that are essential for gameplay mechanics. Unlike regular (\"soft\") resources, hard resources are not calculated by transactions and are instead stored as numeric amounts that are updated by the backend. Soft resources are designed by the players, are defined in the Resources category under Logistics, and are calculated by transactions (ledgers) to ensure their accuracy.",
},
fields: [
{
name: "name",
type: "text",
required: true,
unique: true,
},
{
name: "amount",
type: "number",
required: true,
defaultValue: 0,
},
{
name: "description",
type: "richText",
required: true,
},
],
};

File diff suppressed because it is too large Load diff

View file

@ -27,6 +27,7 @@ import { Assignments } from "@/collections/users/Assignments";
import { Technologies } from "@/collections/intelligence/Technologies";
import { GameRules } from "@/collections/game/GameRules";
import { GameStructures } from "@/collections/game/GameStructures";
import { GameHardResources } from "@/collections/game/GameHardResources";
const filename = fileURLToPath(import.meta.url);
const dirname = path.dirname(filename);
@ -60,6 +61,10 @@ export default buildConfig({
collections: [
Media,
// Game
GameHardResources,
GameStructures,
// Users
Users,
Ranks,
@ -87,9 +92,6 @@ export default buildConfig({
// Server
MissionFiles,
ModLists,
// Game
GameStructures
],
editor: lexicalEditor(),
secret: process.env.PAYLOAD_SECRET || "",