import { Application } from "express"; import {Module} from "module"; import { Config } from "../config"; import * as wm from "../wmmt/wm.proto"; import * as wmsrv from "../wmmt/service.proto"; import { prisma } from ".."; import { count } from "console"; export default class StartupModule extends Module { register(app: Application): void { app.post('/method/register_system_info', (req, res) => { let msg = { error: wm.wm.protobuf.ErrorCode.ERR_SUCCESS, regionId: 1, placeId: "JPN0123", allowedClientLogTypes: [], ghostSelectionMinRedoWait: 30, ghostSelectionMaxRedoWait: 4000, featureVersion: { version: 9, year: 2022, month: 7, pluses: 0, releaseAt: 0 // idk what this is } } let resp = wm.wm.protobuf.RegisterSystemInfoResponse.encode(msg); let end = resp.finish(); let r = res .header('Server', 'v388 wangan') .header('Content-Type', 'application/x-protobuf; revision=8053') .header('Content-Length', end.length.toString()) .status(200); r.send(Buffer.from(end)); }) app.get('/resource/place_list', (req, res) => { console.log('place list'); let places: wm.wm.protobuf.Place[] = []; places.push(new wm.wm.protobuf.Place({ placeId: "JPN0123", regionId: 1, shopName: Config.getConfig().shopName, country: "JPN" })); let resp = wm.wm.protobuf.PlaceList.encode({places}); let end = resp.finish(); let r = res .header('Server', 'v388 wangan') .header('Content-Type', 'application/x-protobuf; revision=8053') .header('Content-Length', end.length.toString()) .status(200); r.send(Buffer.from(end)); }) app.get('/resource/ranking', async (req, res) => { console.log('ranking'); let lists: wmsrv.wm.protobuf.Ranking.List[] = []; // Get TA Ranking for(let i=0; i<25; i++){ let ta_time = await prisma.timeAttackRecord.findMany({ where: { course: i }, orderBy: { time: 'asc' }, take: 20, }); if(ta_time.length !== 0){ let list_ta: wmsrv.wm.protobuf.Ranking.Entry[] = []; for(let j=0; j { console.log('ping'); let body = wm.wm.protobuf.PingRequest.decode(req.body); let ping = { error: wm.wm.protobuf.ErrorCode.ERR_SUCCESS, pong: body.ping || 1 }; let resp = wm.wm.protobuf.PingResponse.encode(ping); let end = resp.finish(); let r = res .header('Server', 'v388 wangan') .header('Content-Type', 'application/x-protobuf; revision=8053') .header('Content-Length', end.length.toString()) .status(200); r.send(Buffer.from(end)); }) app.get('/resource/crown_list', async (req, res) => { console.log('crown_list'); //-------------FOR TESTING PURPOSE--------------- let list_crown: wmsrv.wm.protobuf.Crown[] = []; /*let car_crown = await prisma.car.findFirst({ where: { OR: [ { name: { startsWith: 'KITSU'}, visualModel: 32 }, { name: { startsWith: 'きつ', }, visualModel: 32 }, ], }, include: { gtWing: true }, orderBy: { carId: 'asc' } });*/ let car_crown = await prisma.carCrown.findMany({ orderBy: { area: 'asc' } }); if(car_crown.length !== 0){ let counter = 0; for(let i=0; i<19; i++){ if(i >= 14){ i = 18; } if(car_crown[counter].area === i){ let car = await prisma.car.findFirst({ where: { carId: car_crown[counter].carId }, include: { gtWing: true } }); car!.regionId = 1; // Hokkaido //car!.aura = 0; car!.tunePower = car_crown[counter].tunePower; car!.tuneHandling = car_crown[counter].tuneHandling; car!.lastPlayedAt = car_crown[counter].playedAt; list_crown.push(wmsrv.wm.protobuf.Crown.create({ carId: car_crown[counter].carId, area: car_crown[counter].area, // GID_RUNAREA_C1 - GID_RUNAREA_TURNPIKE & GID_RUNAREA_HIROSHIMA unlockAt: car_crown[counter].playedAt, car: car })); if(counter < car_crown.length-1){ counter++; } } else{ list_crown.push(wmsrv.wm.protobuf.Crown.create({ carId: i, area: i, // GID_RUNAREA_C1 - GID_RUNAREA_TURNPIKE & GID_RUNAREA_HIROSHIMA unlockAt: 0, })); } } } else{ for(let i=0; i<14; i++){ list_crown.push(wmsrv.wm.protobuf.Crown.create({ carId: i, area: i, // GID_RUNAREA_C1 - GID_RUNAREA_TURNPIKE unlockAt: 0, })); } list_crown.push(wmsrv.wm.protobuf.Crown.create({ carId: 18, area: 18, // GID_RUNAREA_HIROSHIMA unlockAt: 0, })); } let msg = { crowns: list_crown }; //----------------------------------------------- let resp = wmsrv.wm.protobuf.CrownList.encode(msg); let end = resp.finish(); let r = res .header('Server', 'v388 wangan') .header('Content-Type', 'application/x-protobuf; revision=8053') .header('Content-Length', end.length.toString()) .status(200); r.send(Buffer.from(end)); }) } }