From e18c2d44c52d1e06d6efdea7a94fd18241029fe4 Mon Sep 17 00:00:00 2001 From: Tau Date: Mon, 29 Apr 2019 13:50:05 -0400 Subject: [PATCH] wip augment TA stored data --- schema/init/idz.sql | 6 +++++- src/idz/db/timeAttack.ts | 7 +++++++ src/idz/decoder/saveTimeAttack.ts | 3 ++- src/idz/model/timeAttack.ts | 2 ++ src/idz/request/saveTimeAttack.ts | 2 +- 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/schema/init/idz.sql b/schema/init/idz.sql index 845cd1a..4671627 100644 --- a/schema/init/idz.sql +++ b/schema/init/idz.sql @@ -143,7 +143,9 @@ create table "idz"."ta_result" ( "total_time" float not null, "section_times" float[] not null, "flags" smallint not null, - "grade" smallint not null + "grade" smallint not null, + "car_selector" integer not null, + "timestamp" timestamp not null, ); create table "idz"."ta_best" ( @@ -156,6 +158,8 @@ create table "idz"."ta_best" ( "section_times" float[] not null, "flags" smallint not null, "grade" smallint not null, -- TODO enum + "car_selector" integer not null, + "timestamp" timestamp not null, constraint "ta_best_uq" unique ("profile_id", "route_no") ); diff --git a/src/idz/db/timeAttack.ts b/src/idz/db/timeAttack.ts index 9c63586..f5a545c 100644 --- a/src/idz/db/timeAttack.ts +++ b/src/idz/db/timeAttack.ts @@ -28,6 +28,7 @@ export class SqlTimeAttackRepository implements TimeAttackRepository { totalTime: row.total_time, sectionTimes: row.section_times, grade: row.grade, + carSelector: row.car_selector, })); } @@ -43,6 +44,8 @@ export class SqlTimeAttackRepository implements TimeAttackRepository { section_times: score.sectionTimes, flags: score.flags, grade: score.grade, + car_selector: score.carSelector, + timestamp: score.timestamp, }) .toParams(); @@ -68,6 +71,8 @@ export class SqlTimeAttackRepository implements TimeAttackRepository { section_times: score.sectionTimes, flags: score.flags, grade: score.grade, + car_selector: score.carSelector, + timestamp: score.timestamp, }) .toParams(); @@ -79,6 +84,8 @@ export class SqlTimeAttackRepository implements TimeAttackRepository { section_times: score.sectionTimes, flags: score.flags, grade: score.grade, + car_selector: score.carSelector, + timestamp: score.timestamp, }) .where("profile_id", profileId) .where("route_no", score.routeNo) diff --git a/src/idz/decoder/saveTimeAttack.ts b/src/idz/decoder/saveTimeAttack.ts index ce54cab..3dc7c83 100644 --- a/src/idz/decoder/saveTimeAttack.ts +++ b/src/idz/decoder/saveTimeAttack.ts @@ -1,5 +1,6 @@ import { RequestCode } from "./_defs"; import { ExtId, RouteNo } from "../model/base"; +import { CarSelector } from "../model/car"; import { Profile } from "../model/profile"; import { SaveTimeAttackRequest } from "../request/saveTimeAttack"; @@ -22,10 +23,10 @@ export function saveTimeAttack(buf: Buffer): SaveTimeAttackRequest { buf.readUInt32LE(0x002c) / 1000, ], grade: buf.readUInt8(0x0062), + carSelector: buf.readUInt16LE(0x000c) as CarSelector, }, field_0002: buf.readUInt16LE(0x0002), field_0008: buf.readUInt32LE(0x0008), - field_000C: buf.readUInt16LE(0x000c), field_0012: buf.readUInt8(0x0012), field_0015: buf.readUInt8(0x0015), field_005D: buf.readUInt8(0x005d), diff --git a/src/idz/model/timeAttack.ts b/src/idz/model/timeAttack.ts index 9cd0793..03cb552 100644 --- a/src/idz/model/timeAttack.ts +++ b/src/idz/model/timeAttack.ts @@ -1,4 +1,5 @@ import { RouteNo } from "./base"; +import { CarSelector } from "./car"; export interface TimeAttackScore { routeNo: RouteNo; @@ -7,4 +8,5 @@ export interface TimeAttackScore { totalTime: number; sectionTimes: number[]; grade: number; + carSelector: CarSelector; } diff --git a/src/idz/request/saveTimeAttack.ts b/src/idz/request/saveTimeAttack.ts index 8130557..73ea053 100644 --- a/src/idz/request/saveTimeAttack.ts +++ b/src/idz/request/saveTimeAttack.ts @@ -1,4 +1,5 @@ import { ExtId } from "../model/base"; +import { CarSelector } from "../model/car"; import { Profile } from "../model/profile"; import { TimeAttackScore } from "../model/timeAttack"; @@ -9,7 +10,6 @@ export interface SaveTimeAttackRequest { payload: TimeAttackScore; field_0002: number; // u16, always 1 field_0008: number; // u32 - field_000C: number; // u16, car type? field_0012: number; // u8 field_0015: number; // u8 field_005D: number; // u8