XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFESpaceNinjaServer

feat: basic implementation of endlessXp.php we can play The Circuit (#596)

b84258a8
Sainan <sainan@calamity.inc>
提交于

代码差异

4 个文件 +83 -2
Added src/controllers/api/endlessXpController.ts +60 -0
@@ -0,0 +1,60 @@
1 import { RequestHandler } from "express";
2 import { getAccountIdForRequest } from "@/src/services/loginService";
3 import { getInventory } from "@/src/services/inventoryService";
4 import { getJSONfromString } from "@/src/helpers/stringHelpers";
5 import { TEndlessXpCategory } from "@/src/types/inventoryTypes/inventoryTypes";
6
7 export const endlessXpController: RequestHandler = async (req, res) => {
8 const accountId = await getAccountIdForRequest(req);
9 const inventory = await getInventory(accountId);
10 const payload = getJSONfromString(String(req.body)) as IEndlessXpRequest;
11
12 inventory.EndlessXP ??= [];
13 const entry = inventory.EndlessXP.find(x => x.Category == payload.Category);
14 if (entry) {
15 entry.Choices = payload.Choices;
16 } else {
17 inventory.EndlessXP.push({
18 Category: payload.Category,
19 Choices: payload.Choices
20 });
21 }
22 await inventory.save();
23
24 res.json({
25 NewProgress: {
26 Category: payload.Category,
27 Earn: 0,
28 Claim: 0,
29 BonusAvailable: {
30 $date: {
31 $numberLong: "9999999999999"
32 }
33 },
34 Expiry: {
35 $date: {
36 $numberLong: "9999999999999"
37 }
38 },
39 Choices: payload.Choices,
40 PendingRewards: [
41 {
42 RequiredTotalXp: 190,
43 Rewards: [
44 {
45 StoreItem: "/Lotus/StoreItems/Upgrades/Mods/Aura/PlayerHealthAuraMod",
46 ItemCount: 1
47 }
48 ]
49 }
50 // ...
51 ]
52 }
53 });
54 };
55
56 interface IEndlessXpRequest {
57 Mode: string; // "r"
58 Category: TEndlessXpCategory;
59 Choices: string[];
60 }
Modified src/models/inventoryModels/inventoryModel.ts +13 -2
@@ -37,7 +37,8 @@ import {
37 37 IPeriodicMissionCompletionDatabase,
38 38 IPeriodicMissionCompletionResponse,
39 39 ILoreFragmentScan,
40 IEvolutionProgress
40 IEvolutionProgress,
41 IEndlessXpProgress
41 42 } from "../../types/inventoryTypes/inventoryTypes";
42 43 import { IOid } from "../../types/commonTypes";
43 44 import {
@@ -581,6 +582,14 @@ const evolutionProgressSchema = new Schema<IEvolutionProgress>(
581 582 { _id: false }
582 583 );
583 584
585 const endlessXpProgressSchema = new Schema<IEndlessXpProgress>(
586 {
587 Category: String,
588 Choices: [String]
589 },
590 { _id: false }
591 );
592
584 593 const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
585 594 {
586 595 accountOwnerId: Schema.Types.ObjectId,
@@ -938,7 +947,9 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
938 947 //Zanuka
939 948 Harvestable: Boolean,
940 949 //Grustag three
941 DeathSquadable: Boolean
950 DeathSquadable: Boolean,
951
952 EndlessXP: { type: [endlessXpProgressSchema], default: undefined }
942 953 },
943 954 { timestamps: { createdAt: "Created" } }
944 955 );
Modified src/routes/api.ts +2 -0
@@ -8,6 +8,7 @@ import { createGuildController } from "@/src/controllers/api/createGuildControll
8 8 import { deleteSessionController } from "@/src/controllers/api/deleteSessionController";
9 9 import { dojoController } from "@/src/controllers/api/dojoController";
10 10 import { dronesController } from "@/src/controllers/api/dronesController";
11 import { endlessXpController } from "@/src/controllers/api/endlessXpController";
11 12 import { evolveWeaponController } from "@/src/controllers/api/evolveWeaponController";
12 13 import { findSessionsController } from "@/src/controllers/api/findSessionsController";
13 14 import { focusController } from "@/src/controllers/api/focusController";
@@ -108,6 +109,7 @@ apiRouter.post("/arcaneCommon.php", arcaneCommonController);
108 109 apiRouter.post("/artifacts.php", artifactsController);
109 110 apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController);
110 111 apiRouter.post("/createGuild.php", createGuildController);
112 apiRouter.post("/endlessXp.php", endlessXpController);
111 113 apiRouter.post("/evolveWeapon.php", evolveWeaponController);
112 114 apiRouter.post("/findSessions.php", findSessionsController);
113 115 apiRouter.post("/focus.php", focusController);
Modified src/types/inventoryTypes/inventoryTypes.ts +8 -0
@@ -301,6 +301,7 @@ export interface IInventoryResponse {
301 301 PendingCoupon: IPendingCoupon;
302 302 Harvestable: boolean;
303 303 DeathSquadable: boolean;
304 EndlessXP?: IEndlessXpProgress[];
304 305 }
305 306
306 307 export interface IAffiliation {
@@ -932,3 +933,10 @@ export interface IEvolutionProgress {
932 933 Rank: number;
933 934 ItemType: string;
934 935 }
936
937 export type TEndlessXpCategory = "EXC_NORMAL" | "EXC_HARD";
938
939 export interface IEndlessXpProgress {
940 Category: TEndlessXpCategory;
941 Choices: string[];
942 }