diff --git a/config.json b/config.json index a05a3e89..3807b95d 100644 --- a/config.json +++ b/config.json @@ -1,8 +1,8 @@ { "autoCreateAccount": true, - "buildLabel": "2023.08.31.08.49/GF1WtVJD8oH48xuIF4Cm-A", - "matchmakingBuildId": "2303555329115379348", - "version": "33.6.7", + "buildLabel": "2023.08.31.08.49/brZhF2aVfaQsmU9STfvSqQ", + "matchmakingBuildId": "5359904157077190191", + "version": "33.6.8", "worldSeed": "Y7nz7/N46OXUuG0UFBiaQhuY59a8IR8fIpwPJu3Uw0y0WGqS1BTISQ3FiQ4RV2Q4L19X7rr9864tDFU2xklR+PvdayCI+/+07iHK2LzxoaSRysylW/3U5rINPDLA4akw5LwsMltL3VuEyxvn9MXKamUO27i+lP5Bsg6Fbmx4UwgqOjQaYMjAqPn0yy+VY6vZsQJFCCLM5wDghhpcwDuTFzakKiq4N5nKPc7+VPNDRKE6qlMzPRt9DCzrtpakn6/WdFecmt9Gzl/HFe1fmZSYE1bEbvL93d1Nvi391YZNLIlRqSg/h+Hirbw8pT7xxbgsXVyJo/TbyivwyQt/ay70Vw==", "skipStoryModeChoice": true, "skipTutorial": true, diff --git a/src/constants/timeConstants.ts b/src/constants/timeConstants.ts new file mode 100644 index 00000000..4a5a374f --- /dev/null +++ b/src/constants/timeConstants.ts @@ -0,0 +1,14 @@ +const millisecondsPerSecond = 1000; +const secondsPerMinute = 60; +const minutesPerHour = 60; +const hoursPerDay = 24; + +const unixMinute = secondsPerMinute * millisecondsPerSecond; +const unixHour = unixMinute * minutesPerHour; +const unixDay = hoursPerDay * unixHour; + +export const unixTimesInMs = { + minute: unixMinute, + hour: unixHour, + day: unixDay +}; diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index f2bf0408..078532dc 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -5,7 +5,6 @@ import { Request, RequestHandler, Response } from "express"; import config from "@/config.json"; import testMissions from "@/static/fixed_responses/testMissions.json"; import testQuestKeys from "@/static/fixed_responses/testQuestKeys.json"; -import testInventory from "../../../static/testInventory.json"; const inventoryController: RequestHandler = async (request: Request, response: Response) => { const accountId = request.query.accountId; @@ -29,10 +28,6 @@ const inventoryController: RequestHandler = async (request: Request, response: R if (config.testMission) inventoryResponse.Missions = testMissions; if (config.testQuestKey) inventoryResponse.QuestKeys = testQuestKeys; - const now = Math.floor(Date.now()) - 129600; - const date: string = (now + 24 * 60 * 60 * 1000).toString(); - inventoryResponse.TrainingDate = { $date: { $numberLong: "1693769173000" } }; - console.log(inventoryResponse.TrainingDate); response.json(inventoryResponse); }; diff --git a/src/controllers/api/trainingResultController.ts b/src/controllers/api/trainingResultController.ts index 88f8e42d..9feffe38 100644 --- a/src/controllers/api/trainingResultController.ts +++ b/src/controllers/api/trainingResultController.ts @@ -2,50 +2,43 @@ import { parseString } from "@/src/helpers/general"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { Inventory } from "@/src/models/inventoryModel"; import { getInventory } from "@/src/services/inventoryService"; +import { IMongoDate } from "@/src/types/commonTypes"; import { RequestHandler } from "express"; +import { unixTimesInMs } from "@/src/constants/timeConstants"; interface ITrainingResultsRequest { numLevelsGained: number; } -const epochDay = 86400 * 1000; // in ms -const timeNow = Date.now() + epochDay; +interface ITrainingResultsResponse { + NewTrainingDate: IMongoDate; + NewLevel: number; + InventoryChanges: any[]; +} // eslint-disable-next-line @typescript-eslint/no-misused-promises const trainingResultController: RequestHandler = async (req, res): Promise => { - console.log(req.body.toString()); const accountId = parseString(req.query.accountId); const trainingResults = getJSONfromString(req.body.toString()) as ITrainingResultsRequest; - const nextTrainingDate = Date.now().toString; - - if (trainingResults.numLevelsGained == 0) { - res.json({ - NewTrainingDate: { - $date: { $numberLong: nextTrainingDate } - }, - NewLevel: 0, - InventoryChanges: [] - }); - } - const inventory = await getInventory(accountId); - console.log("inventory", inventory.TrainingDate); - inventory.TrainingDate = new Date(Date.now() + epochDay * 500); - console.log("inventory after", inventory.TrainingDate); - await inventory.save(); + inventory.TrainingDate = new Date(Date.now() + unixTimesInMs.day); if (trainingResults.numLevelsGained == 1) { - res.json({ - NewTrainingDate: { - $date: { $numberLong: nextTrainingDate } - }, - NewLevel: 1, - InventoryChanges: [] - }); + inventory.PlayerLevel += 1; } + + const changedinventory = await inventory.save(); + + res.json({ + NewTrainingDate: { + $date: { $numberLong: changedinventory.TrainingDate.getTime().toString() } + }, + NewLevel: trainingResults.numLevelsGained == 1 ? changedinventory.PlayerLevel : inventory.PlayerLevel, + InventoryChanges: [] + } satisfies ITrainingResultsResponse); }; export { trainingResultController }; diff --git a/src/controllers/dynamic/worldStateController.ts b/src/controllers/dynamic/worldStateController.ts index 474cb442..de87a2bf 100644 --- a/src/controllers/dynamic/worldStateController.ts +++ b/src/controllers/dynamic/worldStateController.ts @@ -3,9 +3,6 @@ import config from "@/config.json"; import worldState from "@/static/fixed_responses/worldState.json"; const worldStateController: RequestHandler = (_req, res) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - worldState.WorldSeed = config.worldSeed; - worldState.BuildLabel = config.buildLabel; res.json(worldState); }; diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index b13b6791..5368d1a4 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -9,7 +9,7 @@ import { IInventoryDatabaseDocument, IInventoryResponseDocument } from "../types/inventoryTypes/inventoryTypes"; -import { Oid } from "../types/commonTypes"; +import { IMongoDate, Oid } from "../types/commonTypes"; import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; @@ -163,7 +163,7 @@ FlavourItemSchema.set("toJSON", { } }); -const inventorySchema = new Schema({ +const inventorySchema = new Schema({ accountOwnerId: Schema.Types.ObjectId, SubscribedToEmails: Number, Created: Schema.Types.Mixed, @@ -336,17 +336,17 @@ const inventorySchema = new Schema({ }); inventorySchema.set("toJSON", { - transform(_document, returnedObject: IInventoryDatabaseDocument) { + transform(_document, returnedObject) { delete returnedObject._id; delete returnedObject.__v; - const trainingDate = returnedObject.TrainingDate; + const trainingDate = (returnedObject as IInventoryDatabaseDocument).TrainingDate; - (returnedObject as unknown as IInventoryResponse).TrainingDate = { + (returnedObject as IInventoryResponse).TrainingDate = { $date: { $numberLong: trainingDate.getTime().toString() } - }; + } satisfies IMongoDate; } }); diff --git a/src/types/commonTypes.ts b/src/types/commonTypes.ts index b69c1a3d..a044aae3 100644 --- a/src/types/commonTypes.ts +++ b/src/types/commonTypes.ts @@ -2,7 +2,7 @@ export interface Oid { $oid: string; } -export interface BSONDate { +export interface IMongoDate { $date: { $numberLong: string; }; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 8d632cc8..d75b1243 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { Document, Types } from "mongoose"; -import { Oid, BSONDate } from "../commonTypes"; +import { Oid, IMongoDate } from "../commonTypes"; import { AbilityOverride, Color, FocusSchool, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; import { OperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; @@ -13,9 +13,10 @@ export interface IInventoryDatabase extends Omit