- serialization improvements (the tests work at least)

- fixing some version mis-alignments
This commit is contained in:
Adam 2021-12-01 13:35:32 +01:00
parent babe0161ae
commit 53862ef1b5
19 changed files with 305 additions and 260 deletions

View file

@ -309,7 +309,7 @@ tasks.register("downloadFactorioApiDocs") {
)
val json = downloadedFile.readText()
val prettyJson = groovy.json.JsonOutput.prettyPrint(json)
val prettyJson = JsonOutput.prettyPrint(json)
apiFile.asFile.writeText(prettyJson)

View file

@ -13,8 +13,8 @@ interface FactorioEvent<T extends FactorioObjectData> {
}
interface PositionData {
x: int;
y: int;
x: double;
y: double;
}
interface PlayerData extends FactorioObjectData {
@ -27,8 +27,8 @@ interface PlayerData extends FactorioObjectData {
interface EntityData extends FactorioObjectData {
active: boolean;
health: float | null;
health_ratio: float;
health: double | null;
health_ratio: double;
name: string;
object_name: string;
player_index: uint | null;
@ -39,7 +39,7 @@ interface EntityData extends FactorioObjectData {
}
interface SurfaceData extends FactorioObjectData {
daytime: float;
daytime: double;
index: uint;
name: string;
object_name: string;

View file

@ -1,60 +0,0 @@
// import {Serdes} from "../serdes/serdes";
// import FactorioObjectData = Serdes.FactorioObjectData;
//
// export type JsonPrimitiveType = number | string | boolean | undefined | null | void
//
// export type JsonArray<T extends JsonPrimitiveType = void> = T[]
//
// export type JsonTableValueType =
// JsonPrimitiveType
// | JsonTable
// | JsonArray<JsonPrimitiveType>
// | undefined
// | null
//
// export interface JsonTable {
// [key: string]: JsonTableValueType
// }
// export interface FactorioEvent extends JsonTable {
// /** Schema versioning */
// mod_version: string,
// /** game time */
// tick: uint,
// /** the initial Factorio event ({defines.events}) trigger */
// event_type: string,
// data: FactorioObjectData,
// }
//
// export const FactorioEvent =
// (<DataType extends FactorioObjectData>(
// tick: uint,
// eventType: string,
// data: DataType
// ) => {
// return {
// mod_version: MOD_VERSION,
// tick: tick,
// event_type: eventType,
// data: data,
// } as FactorioEvent
// }
// )
// export type JsonArray<TValue extends JsonPrimitiveType> = TValue[]
// export class JsonArray extends Array<JsonPrimitiveTypes> {
// }
// export type JsonArray = Array<JsonPrimitiveTypes>
// declare type JsonArrayConstructor = (new () => JsonArray)
// declare const JsonArray: JsonArrayConstructor
// export class JsonTable extends LuaTable<string, JsonTableValueType> {
// }
// export type JsonTable = LuaTable<string, JsonTableValueType>
// const JsonTable = () => new LuaTable<string, JsonTableValueType>()
// export type JsonTableConstructor = (new () => JsonTable)
// declare const JsonTable: JsonTableConstructor

View file

@ -1,6 +1,6 @@
{
"name": "factorio-web-map-mod",
"version": "0.0.4",
"version": "0.0.6",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -83,9 +83,9 @@
}
},
"typescript": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz",
"integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw=="
"version": "4.4.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
"integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA=="
},
"typescript-to-lua": {
"version": "1.1.1",

View file

@ -1,6 +1,6 @@
{
"name": "factorio-web-map-mod",
"version": "0.0.5",
"version": "0.0.7",
"private": true,
"scripts": {
"build": "tstl",
@ -16,7 +16,7 @@
"@types/node": "^12.0.8",
"typescript-to-lua": "1.1.1",
"typed-factorio": "0.12.0",
"typescript": "4.5.2"
"typescript": "4.4.4"
},
"//": {
"typed-factorio": "0.10.0"

View file

@ -1,18 +1,12 @@
// import {JsonTable, JsonArray} from "../model/model";
export namespace Serdes {
// export interface FactorioObjectData extends JsonTable {
// object_name: string
// }
export namespace Player {
export function playerToTable(player: LuaPlayer): PlayerData {
let charIds = Entity.entitiesToUnitNumbers(player.get_associated_characters())
return {
object_name: player.object_name,
name: player.name,
character_unit_number: player.character?.unit_number ?? null,
associated_characters_unit_numbers: charIds,
@ -30,6 +24,8 @@ export namespace Serdes {
return {
object_name: entity.object_name,
// entity data
name: entity.name,
type: entity.type,
active: entity.active,
@ -39,7 +35,7 @@ export namespace Serdes {
unit_number: entity.unit_number ?? null,
position: DataClasses.positionTableToTable(entity.position),
// player data:
// player data
player_index: player?.index ?? null
}
}
@ -61,6 +57,7 @@ export namespace Serdes {
export function surfaceToTable(surface: LuaSurface): SurfaceData {
return {
object_name: surface.object_name,
name: surface.name,
index: surface.index,
daytime: surface.daytime,