diff --git a/modules/factorio-events-data-model/build.gradle.kts b/modules/factorio-events-data-model/build.gradle.kts index 0b363db..a3f5c6c 100644 --- a/modules/factorio-events-data-model/build.gradle.kts +++ b/modules/factorio-events-data-model/build.gradle.kts @@ -130,7 +130,7 @@ afterEvaluate { "--ts_proto_opt=useOptionals=true", "--ts_proto_opt=outputServices=false", "--ts_proto_opt=outputJsonMethods=false", - "--ts_proto_opt=outputEncodeMethods=false", +// "--ts_proto_opt=outputEncodeMethods=false", "--ts_proto_opt=forceLong=string", "--ts_proto_opt=forceLong=number", "--ts_proto_opt=esModuleInterop=true", diff --git a/modules/mod/build.gradle.kts b/modules/mod/build.gradle.kts index aa0a501..26e634f 100644 --- a/modules/mod/build.gradle.kts +++ b/modules/mod/build.gradle.kts @@ -45,31 +45,31 @@ val tsProtoFetch by tasks.creating(Sync::class) { from(genSrcDir) into(targetDir) - doLast { - - fileTree(targetDir).forEach { - var text = it.readText() - - text = text.replace( - Regex( - """if \(_m0\.util\.Long !== Long\)\s*\{\s*_m0\.util\.Long = Long as any;\s*_m0\.configure\(\);\s*\}""" - ), - "" - ) - - text = text.replace( - Regex("""import Long from "long";"""), - "" - ) - - text = text.replace( - Regex("""import _m0 from "protobufjs\/minimal";"""), - "" - ) - - it.writeText(text) - } - } +// doLast { +// +// fileTree(targetDir).forEach { +// var text = it.readText() +// +// text = text.replace( +// Regex( +// """if \(_m0\.util\.Long !== Long\)\s*\{\s*_m0\.util\.Long = Long as any;\s*_m0\.configure\(\);\s*\}""" +// ), +// "" +// ) +// +// text = text.replace( +// Regex("""import Long from "long";"""), +// "" +// ) +// +// text = text.replace( +// Regex("""import _m0 from "protobufjs\/minimal";"""), +// "" +// ) +// +// it.writeText(text) +// } +// } } @@ -267,7 +267,7 @@ tasks.register("downloadFactorioApiDocs") { val target = uri("https://lua-api.factorio.com/latest/runtime-api.json") val apiFilename = File(target.path).name - val downloadedFile = file(temporaryDir.path + "/" + apiFilename) + val downloadedFile = file("$temporaryDir/$apiFilename") val apiFile = modBuildDir.file(apiFilename) outputs.file(apiFile) @@ -290,3 +290,33 @@ tasks.register("downloadFactorioApiDocs") { logger.lifecycle("Downloaded Factorio API json: $apiFile") } } + +//tasks.register("downloadLuaProtobuf") { +// group = projectId +// +// val luaProtobufVersion = "0.3.3" +// +// val target = uri("https://github.com/starwing/lua-protobuf/archive/refs/tags/$luaProtobufVersion.zip") +// val downloadedFile = file("$temporaryDir/luaProtobuf-$luaProtobufVersion.zip") +// +// val luaProto = modBuildDir.file(apiFilename) +// outputs.file(apiFile) +// +// doLast { +// +// ant.invokeMethod( +// "get", mapOf( +// "src" to target, +// "dest" to downloadedFile, +// "verbose" to true, +// ) +// ) +// +// val json = downloadedFile.readText() +// val prettyJson = groovy.json.JsonOutput.prettyPrint(json) +// +// apiFile.asFile.writeText(prettyJson) +// +// logger.lifecycle("Downloaded Factorio API json: $apiFile") +// } +//} \ No newline at end of file diff --git a/modules/mod/src/main/typescript/package-lock.json b/modules/mod/src/main/typescript/package-lock.json index b0ae77b..621dcc5 100644 --- a/modules/mod/src/main/typescript/package-lock.json +++ b/modules/mod/src/main/typescript/package-lock.json @@ -4,11 +4,85 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, "@types/node": { "version": "12.20.33", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.33.tgz", "integrity": "sha512-5XmYX2GECSa+CxMYaFsr2mrql71Q4EvHjKS+ox/SiwSdaASMoBIWE6UmZqFO+VX1jIcsYLStI4FFoB6V7FeIYw==" }, + "@types/object-hash": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/object-hash/-/object-hash-1.3.4.tgz", + "integrity": "sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA==" + }, + "@types/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==" + }, + "dataloader": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz", + "integrity": "sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==" + }, "enhanced-resolve": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", @@ -44,16 +118,63 @@ "has": "^1.0.3" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "lua-types": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/lua-types/-/lua-types-2.11.0.tgz", "integrity": "sha512-J/8qHrOjkZuPBDhnuAg0DWoaJEImqXNzgEnUigCTVrSVCcchM5Y5zpcI3aWAZPhuZlb0QKC/f3nc7VGmZmBg7w==" }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==" + }, + "protobufjs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", + "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" + } + } + }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -73,6 +194,38 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" }, + "ts-poet": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/ts-poet/-/ts-poet-4.6.1.tgz", + "integrity": "sha512-DXJ+mBJIDp+jiaUgB4N5I/sczHHDU2FWacdbDNVAVS4Mh4hb7ckpvUWVW7m7/nAOcjR0r4Wt+7AoO7FeJKExfA==", + "requires": { + "@types/prettier": "^1.19.0", + "lodash": "^4.17.15", + "prettier": "^2.0.2" + } + }, + "ts-proto": { + "version": "1.83.3", + "resolved": "https://registry.npmjs.org/ts-proto/-/ts-proto-1.83.3.tgz", + "integrity": "sha512-r6MKFjoc4Og2kB4cNJ/bddLebdIwhouG5plu0Rry1jJMEqp2GKA7AE4FrR/FnTCIGbNPYP4622lBqckZd7UHcQ==", + "requires": { + "@types/object-hash": "^1.3.0", + "dataloader": "^1.4.0", + "object-hash": "^1.3.1", + "protobufjs": "^6.8.8", + "ts-poet": "^4.5.0", + "ts-proto-descriptors": "^1.2.1" + } + }, + "ts-proto-descriptors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ts-proto-descriptors/-/ts-proto-descriptors-1.3.1.tgz", + "integrity": "sha512-Cybb3fqceMwA6JzHdC32dIo8eVGVmXrM6TWhdk1XQVVHT/6OQqk0ioyX1dIdu3rCIBhRmWUhUE4HsyK+olmgMw==", + "requires": { + "long": "^4.0.0", + "protobufjs": "^6.8.8" + } + }, "typed-factorio": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/typed-factorio/-/typed-factorio-0.8.0.tgz", diff --git a/modules/mod/src/main/typescript/package.json b/modules/mod/src/main/typescript/package.json index 4a2cd61..dd451c1 100644 --- a/modules/mod/src/main/typescript/package.json +++ b/modules/mod/src/main/typescript/package.json @@ -14,7 +14,8 @@ "lua-types": "^2.11.0", "@types/node": "^12.0.8", "typescript-to-lua": "1.0.1", - "typed-factorio": "0.8.0" + "typed-factorio": "0.8.0", + "ts-proto": "1.83.3" }, "peerDependencies": {}, "optionalDependencies": {}, diff --git a/modules/mod/src/main/typescript/proto/FactorioServerLogRecord.ts b/modules/mod/src/main/typescript/proto/FactorioServerLogRecord.ts index c305e96..009a229 100644 --- a/modules/mod/src/main/typescript/proto/FactorioServerLogRecord.ts +++ b/modules/mod/src/main/typescript/proto/FactorioServerLogRecord.ts @@ -1,6 +1,6 @@ /* eslint-disable */ - - +import Long from "long"; +import _m0 from "protobufjs/minimal"; export interface FactorioServerLogRecord { modVersion: string; @@ -82,4 +82,826 @@ export interface Colour { alpha: number; } +const baseFactorioServerLogRecord: object = { + modVersion: "", + tick: 0, + eventType: "", +}; +export const FactorioServerLogRecord = { + encode( + message: FactorioServerLogRecord, + writer: _m0.Writer = _m0.Writer.create() + ): _m0.Writer { + if (message.modVersion !== "") { + writer.uint32(10).string(message.modVersion); + } + if (message.tick !== 0) { + writer.uint32(16).uint32(message.tick); + } + if (message.eventType !== "") { + writer.uint32(26).string(message.eventType); + } + if (message.data !== undefined) { + FactorioLuaObject.encode(message.data, writer.uint32(34).fork()).ldelim(); + } + return writer; + }, + + decode( + input: _m0.Reader | Uint8Array, + length?: number + ): FactorioServerLogRecord { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { + ...baseFactorioServerLogRecord, + } as FactorioServerLogRecord; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.modVersion = reader.string(); + break; + case 2: + message.tick = reader.uint32(); + break; + case 3: + message.eventType = reader.string(); + break; + case 4: + message.data = FactorioLuaObject.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromPartial( + object: DeepPartial + ): FactorioServerLogRecord { + const message = { + ...baseFactorioServerLogRecord, + } as FactorioServerLogRecord; + if (object.modVersion !== undefined && object.modVersion !== null) { + message.modVersion = object.modVersion; + } else { + message.modVersion = ""; + } + if (object.tick !== undefined && object.tick !== null) { + message.tick = object.tick; + } else { + message.tick = 0; + } + if (object.eventType !== undefined && object.eventType !== null) { + message.eventType = object.eventType; + } else { + message.eventType = ""; + } + if (object.data !== undefined && object.data !== null) { + message.data = FactorioLuaObject.fromPartial(object.data); + } else { + message.data = undefined; + } + return message; + }, +}; + +const baseFactorioLuaObject: object = { objectName: "" }; + +export const FactorioLuaObject = { + encode( + message: FactorioLuaObject, + writer: _m0.Writer = _m0.Writer.create() + ): _m0.Writer { + if (message.objectName !== "") { + writer.uint32(10).string(message.objectName); + } + if (message.luaControl !== undefined) { + LuaControl.encode(message.luaControl, writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FactorioLuaObject { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseFactorioLuaObject } as FactorioLuaObject; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.objectName = reader.string(); + break; + case 2: + message.luaControl = LuaControl.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromPartial(object: DeepPartial): FactorioLuaObject { + const message = { ...baseFactorioLuaObject } as FactorioLuaObject; + if (object.objectName !== undefined && object.objectName !== null) { + message.objectName = object.objectName; + } else { + message.objectName = ""; + } + if (object.luaControl !== undefined && object.luaControl !== null) { + message.luaControl = LuaControl.fromPartial(object.luaControl); + } else { + message.luaControl = undefined; + } + return message; + }, +}; + +const baseLuaControl: object = { + isPlayer: false, + surfaceIndex: 0, + forceIndex: 0, +}; + +export const LuaControl = { + encode( + message: LuaControl, + writer: _m0.Writer = _m0.Writer.create() + ): _m0.Writer { + if (message.isPlayer === true) { + writer.uint32(16).bool(message.isPlayer); + } + if (message.surfaceIndex !== 0) { + writer.uint32(24).uint32(message.surfaceIndex); + } + if (message.position !== undefined) { + Position.encode(message.position, writer.uint32(34).fork()).ldelim(); + } + if (message.forceIndex !== 0) { + writer.uint32(40).uint32(message.forceIndex); + } + if (message.player !== undefined) { + LuaPlayer.encode(message.player, writer.uint32(82).fork()).ldelim(); + } + if (message.entity !== undefined) { + LuaEntity.encode(message.entity, writer.uint32(90).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): LuaControl { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseLuaControl } as LuaControl; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + message.isPlayer = reader.bool(); + break; + case 3: + message.surfaceIndex = reader.uint32(); + break; + case 4: + message.position = Position.decode(reader, reader.uint32()); + break; + case 5: + message.forceIndex = reader.uint32(); + break; + case 10: + message.player = LuaPlayer.decode(reader, reader.uint32()); + break; + case 11: + message.entity = LuaEntity.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromPartial(object: DeepPartial): LuaControl { + const message = { ...baseLuaControl } as LuaControl; + if (object.isPlayer !== undefined && object.isPlayer !== null) { + message.isPlayer = object.isPlayer; + } else { + message.isPlayer = false; + } + if (object.surfaceIndex !== undefined && object.surfaceIndex !== null) { + message.surfaceIndex = object.surfaceIndex; + } else { + message.surfaceIndex = 0; + } + if (object.position !== undefined && object.position !== null) { + message.position = Position.fromPartial(object.position); + } else { + message.position = undefined; + } + if (object.forceIndex !== undefined && object.forceIndex !== null) { + message.forceIndex = object.forceIndex; + } else { + message.forceIndex = 0; + } + if (object.player !== undefined && object.player !== null) { + message.player = LuaPlayer.fromPartial(object.player); + } else { + message.player = undefined; + } + if (object.entity !== undefined && object.entity !== null) { + message.entity = LuaEntity.fromPartial(object.entity); + } else { + message.entity = undefined; + } + return message; + }, +}; + +const baseLuaPlayer: object = { + index: 0, + name: "", + data: 0, + isConnected: false, + isAdmin: false, + afkTimeTicks: 0, + onlineTimeTicks: 0, + lastOnlineTicks: 0, +}; + +export const LuaPlayer = { + encode( + message: LuaPlayer, + writer: _m0.Writer = _m0.Writer.create() + ): _m0.Writer { + if (message.index !== 0) { + writer.uint32(8).uint32(message.index); + } + if (message.name !== "") { + writer.uint32(18).string(message.name); + } + writer.uint32(34).fork(); + for (const v of message.data) { + writer.int32(v); + } + writer.ldelim(); + if (message.colour !== undefined) { + Colour.encode(message.colour, writer.uint32(66).fork()).ldelim(); + } + if (message.isConnected === true) { + writer.uint32(80).bool(message.isConnected); + } + if (message.isAdmin === true) { + writer.uint32(88).bool(message.isAdmin); + } + if (message.afkTimeTicks !== 0) { + writer.uint32(800).uint32(message.afkTimeTicks); + } + if (message.onlineTimeTicks !== 0) { + writer.uint32(808).uint32(message.onlineTimeTicks); + } + if (message.lastOnlineTicks !== 0) { + writer.uint32(816).uint32(message.lastOnlineTicks); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): LuaPlayer { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseLuaPlayer } as LuaPlayer; + message.data = []; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.index = reader.uint32(); + break; + case 2: + message.name = reader.string(); + break; + case 4: + if ((tag & 7) === 2) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.data.push(reader.int32()); + } + } else { + message.data.push(reader.int32()); + } + break; + case 8: + message.colour = Colour.decode(reader, reader.uint32()); + break; + case 10: + message.isConnected = reader.bool(); + break; + case 11: + message.isAdmin = reader.bool(); + break; + case 100: + message.afkTimeTicks = reader.uint32(); + break; + case 101: + message.onlineTimeTicks = reader.uint32(); + break; + case 102: + message.lastOnlineTicks = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromPartial(object: DeepPartial): LuaPlayer { + const message = { ...baseLuaPlayer } as LuaPlayer; + message.data = []; + if (object.index !== undefined && object.index !== null) { + message.index = object.index; + } else { + message.index = 0; + } + if (object.name !== undefined && object.name !== null) { + message.name = object.name; + } else { + message.name = ""; + } + if (object.data !== undefined && object.data !== null) { + for (const e of object.data) { + message.data.push(e); + } + } + if (object.colour !== undefined && object.colour !== null) { + message.colour = Colour.fromPartial(object.colour); + } else { + message.colour = undefined; + } + if (object.isConnected !== undefined && object.isConnected !== null) { + message.isConnected = object.isConnected; + } else { + message.isConnected = false; + } + if (object.isAdmin !== undefined && object.isAdmin !== null) { + message.isAdmin = object.isAdmin; + } else { + message.isAdmin = false; + } + if (object.afkTimeTicks !== undefined && object.afkTimeTicks !== null) { + message.afkTimeTicks = object.afkTimeTicks; + } else { + message.afkTimeTicks = 0; + } + if ( + object.onlineTimeTicks !== undefined && + object.onlineTimeTicks !== null + ) { + message.onlineTimeTicks = object.onlineTimeTicks; + } else { + message.onlineTimeTicks = 0; + } + if ( + object.lastOnlineTicks !== undefined && + object.lastOnlineTicks !== null + ) { + message.lastOnlineTicks = object.lastOnlineTicks; + } else { + message.lastOnlineTicks = 0; + } + return message; + }, +}; + +const baseLuaEntity: object = { + name: "", + type: "", + status: "", + isActive: false, + isMoving: false, +}; + +export const LuaEntity = { + encode( + message: LuaEntity, + writer: _m0.Writer = _m0.Writer.create() + ): _m0.Writer { + if (message.unitNumber !== undefined) { + writer.uint32(8).uint32(message.unitNumber); + } + if (message.name !== "") { + writer.uint32(18).string(message.name); + } + if (message.type !== "") { + writer.uint32(26).string(message.type); + } + if (message.status !== "") { + writer.uint32(34).string(message.status); + } + if (message.isActive === true) { + writer.uint32(64).bool(message.isActive); + } + if (message.isMoving === true) { + writer.uint32(72).bool(message.isMoving); + } + if (message.playerIndex !== undefined) { + writer.uint32(400).uint32(message.playerIndex); + } + if (message.lastUserIndex !== undefined) { + writer.uint32(408).uint32(message.lastUserIndex); + } + if (message.colour !== undefined) { + Colour.encode(message.colour, writer.uint32(802).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): LuaEntity { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseLuaEntity } as LuaEntity; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.unitNumber = reader.uint32(); + break; + case 2: + message.name = reader.string(); + break; + case 3: + message.type = reader.string(); + break; + case 4: + message.status = reader.string(); + break; + case 8: + message.isActive = reader.bool(); + break; + case 9: + message.isMoving = reader.bool(); + break; + case 50: + message.playerIndex = reader.uint32(); + break; + case 51: + message.lastUserIndex = reader.uint32(); + break; + case 100: + message.colour = Colour.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromPartial(object: DeepPartial): LuaEntity { + const message = { ...baseLuaEntity } as LuaEntity; + if (object.unitNumber !== undefined && object.unitNumber !== null) { + message.unitNumber = object.unitNumber; + } else { + message.unitNumber = undefined; + } + if (object.name !== undefined && object.name !== null) { + message.name = object.name; + } else { + message.name = ""; + } + if (object.type !== undefined && object.type !== null) { + message.type = object.type; + } else { + message.type = ""; + } + if (object.status !== undefined && object.status !== null) { + message.status = object.status; + } else { + message.status = ""; + } + if (object.isActive !== undefined && object.isActive !== null) { + message.isActive = object.isActive; + } else { + message.isActive = false; + } + if (object.isMoving !== undefined && object.isMoving !== null) { + message.isMoving = object.isMoving; + } else { + message.isMoving = false; + } + if (object.playerIndex !== undefined && object.playerIndex !== null) { + message.playerIndex = object.playerIndex; + } else { + message.playerIndex = undefined; + } + if (object.lastUserIndex !== undefined && object.lastUserIndex !== null) { + message.lastUserIndex = object.lastUserIndex; + } else { + message.lastUserIndex = undefined; + } + if (object.colour !== undefined && object.colour !== null) { + message.colour = Colour.fromPartial(object.colour); + } else { + message.colour = undefined; + } + return message; + }, +}; + +const baseLuaSurface: object = { index: 0, name: "", daytime: 0 }; + +export const LuaSurface = { + encode( + message: LuaSurface, + writer: _m0.Writer = _m0.Writer.create() + ): _m0.Writer { + if (message.index !== 0) { + writer.uint32(8).uint32(message.index); + } + if (message.name !== "") { + writer.uint32(18).string(message.name); + } + if (message.daytime !== 0) { + writer.uint32(29).float(message.daytime); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): LuaSurface { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseLuaSurface } as LuaSurface; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.index = reader.uint32(); + break; + case 2: + message.name = reader.string(); + break; + case 3: + message.daytime = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromPartial(object: DeepPartial): LuaSurface { + const message = { ...baseLuaSurface } as LuaSurface; + if (object.index !== undefined && object.index !== null) { + message.index = object.index; + } else { + message.index = 0; + } + if (object.name !== undefined && object.name !== null) { + message.name = object.name; + } else { + message.name = ""; + } + if (object.daytime !== undefined && object.daytime !== null) { + message.daytime = object.daytime; + } else { + message.daytime = 0; + } + return message; + }, +}; + +const baseLuaForce: object = { index: 0, forceName: "", playerIds: 0 }; + +export const LuaForce = { + encode( + message: LuaForce, + writer: _m0.Writer = _m0.Writer.create() + ): _m0.Writer { + if (message.index !== 0) { + writer.uint32(8).uint32(message.index); + } + if (message.forceName !== "") { + writer.uint32(18).string(message.forceName); + } + writer.uint32(802).fork(); + for (const v of message.playerIds) { + writer.uint32(v); + } + writer.ldelim(); + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): LuaForce { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseLuaForce } as LuaForce; + message.playerIds = []; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.index = reader.uint32(); + break; + case 2: + message.forceName = reader.string(); + break; + case 100: + if ((tag & 7) === 2) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.playerIds.push(reader.uint32()); + } + } else { + message.playerIds.push(reader.uint32()); + } + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromPartial(object: DeepPartial): LuaForce { + const message = { ...baseLuaForce } as LuaForce; + message.playerIds = []; + if (object.index !== undefined && object.index !== null) { + message.index = object.index; + } else { + message.index = 0; + } + if (object.forceName !== undefined && object.forceName !== null) { + message.forceName = object.forceName; + } else { + message.forceName = ""; + } + if (object.playerIds !== undefined && object.playerIds !== null) { + for (const e of object.playerIds) { + message.playerIds.push(e); + } + } + return message; + }, +}; + +const basePosition: object = { x: 0, y: 0 }; + +export const Position = { + encode( + message: Position, + writer: _m0.Writer = _m0.Writer.create() + ): _m0.Writer { + if (message.x !== 0) { + writer.uint32(8).int32(message.x); + } + if (message.y !== 0) { + writer.uint32(16).int32(message.y); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Position { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...basePosition } as Position; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.int32(); + break; + case 2: + message.y = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromPartial(object: DeepPartial): Position { + const message = { ...basePosition } as Position; + if (object.x !== undefined && object.x !== null) { + message.x = object.x; + } else { + message.x = 0; + } + if (object.y !== undefined && object.y !== null) { + message.y = object.y; + } else { + message.y = 0; + } + return message; + }, +}; + +const baseColour: object = { red: 0, green: 0, blue: 0, alpha: 0 }; + +export const Colour = { + encode( + message: Colour, + writer: _m0.Writer = _m0.Writer.create() + ): _m0.Writer { + if (message.red !== 0) { + writer.uint32(13).float(message.red); + } + if (message.green !== 0) { + writer.uint32(21).float(message.green); + } + if (message.blue !== 0) { + writer.uint32(29).float(message.blue); + } + if (message.alpha !== 0) { + writer.uint32(37).float(message.alpha); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Colour { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = { ...baseColour } as Colour; + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.red = reader.float(); + break; + case 2: + message.green = reader.float(); + break; + case 3: + message.blue = reader.float(); + break; + case 4: + message.alpha = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }, + + fromPartial(object: DeepPartial): Colour { + const message = { ...baseColour } as Colour; + if (object.red !== undefined && object.red !== null) { + message.red = object.red; + } else { + message.red = 0; + } + if (object.green !== undefined && object.green !== null) { + message.green = object.green; + } else { + message.green = 0; + } + if (object.blue !== undefined && object.blue !== null) { + message.blue = object.blue; + } else { + message.blue = 0; + } + if (object.alpha !== undefined && object.alpha !== null) { + message.alpha = object.alpha; + } else { + message.alpha = 0; + } + return message; + }, +}; + +type Builtin = + | Date + | Function + | Uint8Array + | string + | number + | boolean + | undefined; +type DeepPartial = T extends Builtin + ? T + : T extends Array + ? Array> + : T extends ReadonlyArray + ? ReadonlyArray> + : T extends {} + ? { [K in keyof T]?: DeepPartial } + : Partial; + +if (_m0.util.Long !== Long) { + _m0.util.Long = Long as any; + _m0.configure(); +} diff --git a/modules/mod/src/main/typescript/tsconfig.json b/modules/mod/src/main/typescript/tsconfig.json index 4b05c31..989f0ae 100644 --- a/modules/mod/src/main/typescript/tsconfig.json +++ b/modules/mod/src/main/typescript/tsconfig.json @@ -10,7 +10,9 @@ "types": [ "typescript-to-lua/language-extensions", "lua-types/5.2", - "typed-factorio/runtime" + "typed-factorio/runtime", + "protobufjs/minimal.d.ts", + "@types/long" ], "explainFiles": true, "forceConsistentCasingInFileNames": true, @@ -22,7 +24,8 @@ "strict": true, "strictFunctionTypes": true, "strictNullChecks": true, - "traceResolution": true + "traceResolution": true, + "esModuleInterop": true }, "tstl": { "luaTarget": "5.2", @@ -38,7 +41,6 @@ "node_modules" ], "exactOptionalPropertyTypes": true, - "luaTarget": "5.2", "skipLibCheck": true, "skipDefaultLibCheck": true, "types": [