@shipload/sdk 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/shipload.d.ts +55 -17
- package/lib/shipload.js +265 -117
- package/lib/shipload.js.map +1 -1
- package/lib/shipload.m.js +251 -113
- package/lib/shipload.m.js.map +1 -1
- package/package.json +1 -1
- package/src/contracts/server.ts +36 -12
- package/src/epoch.ts +2 -2
- package/src/goods.ts +57 -46
- package/src/market.ts +2 -2
- package/src/shipload.ts +18 -3
- package/src/travel.ts +178 -18
- package/src/types.ts +11 -1
package/lib/shipload.m.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
|
-
import { Blob, ABI, Struct, Name, UInt64, Checksum256, UInt32, TimePointSec, UInt16, Int64, TimePoint, UInt8, Bytes, Checksum512, APIClient } from '@wharfkit/antelope';
|
|
2
|
+
import { Blob, ABI, Struct, Name, UInt64, Checksum256, UInt32, TimePointSec, UInt16, Int64, TimePoint, UInt8, Float64, Bytes, Checksum512, BlockTimestamp, APIClient } from '@wharfkit/antelope';
|
|
3
3
|
import ContractKit, { Contract as Contract$2 } from '@wharfkit/contract';
|
|
4
4
|
|
|
5
5
|
const abiBlob$1 = Blob.from('DmVvc2lvOjphYmkvMS4yAA0KY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/C2NvbXBhbnlfcm93AAIHYWNjb3VudARuYW1lBG5hbWUGc3RyaW5nBmVuYWJsZQABB2VuYWJsZWQEYm9vbAplbmFibGVnYW1lAAIIY29udHJhY3QEbmFtZQdlbmFibGVkBGJvb2wMZm91bmRjb21wYW55AAIHYWNjb3VudARuYW1lBG5hbWUGc3RyaW5nC2dhbWVfY29uZmlnAAQEc2VlZAtjaGVja3N1bTI1NgllcG9jaHRpbWUGdWludDMyBXN0YXJ0DnRpbWVfcG9pbnRfc2VjA2VuZA50aW1lX3BvaW50X3NlYwlnYW1lX21ldGEABARuYW1lBnN0cmluZwtkZXNjcmlwdGlvbgZzdHJpbmcDdXJsBnN0cmluZwd2ZXJzaW9uBnN0cmluZwhnYW1lX3JvdwAECGNvbnRyYWN0BG5hbWUGY29uZmlnC2dhbWVfY29uZmlnBG1ldGEJZ2FtZV9tZXRhBXN0YXRlCmdhbWVfc3RhdGUKZ2FtZV9zdGF0ZQABB2VuYWJsZWQEYm9vbAlzdGFydGdhbWUABAhjb250cmFjdARuYW1lBmNvbmZpZwtnYW1lX2NvbmZpZwRtZXRhCWdhbWVfbWV0YQVzdGF0ZQpnYW1lX3N0YXRlCXN0YXRlX3JvdwABB2VuYWJsZWQEYm9vbAp1cGRhdGVnYW1lAAIIY29udHJhY3QEbmFtZQRtZXRhCWdhbWVfbWV0YQR3aXBlAAAHAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAACoeMxUBmVuYWJsZfMBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnRW5hYmxlL2Rpc2FibGUgcGxhdGZvcm0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGUgcGxhdGZvcm0gY29udHJhY3QuAICShql4zFQKZW5hYmxlZ2FtZfwBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZWdhbWUKc3VtbWFyeTogJ0VuYWJsZS9kaXNiYWJsZSBhIGdhbWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGUgc3BlY2lmaWVkIGdhbWUgY29udHJhY3Qu4KepkqI0NV0MZm91bmRjb21wYW55gwItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZm91bmRjb21wYW55CnN1bW1hcnk6ICdGb3VuZCBhIG5ldyBjb21wYW55JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU4MTEzNzgyI2QzYmYyOTBmZGRlZGRiYjdkMzJhYTg5N2U5ZjdlOWUxM2EyYWU0NDk1NjE0MmUyM2ViNDdiNzcwOTZhMmVhOGQKCi0tLQoKRm91bmQgYSBuZXcgY29tcGFueSBpbiB0aGUgU2hpcGxvYWQgcGxhdGZvcm0gY29udHJhY3QuAABQ0rB8TcYJc3RhcnRnYW1l/wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc3RhcnRnYW1lCnN1bW1hcnk6ICdTdGFydCBhIG5ldyBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU4MTEzNzgyI2QzYmYyOTBmZGRlZGRiYjdkMzJhYTg5N2U5ZjdlOWUxM2EyYWU0NDk1NjE0MmUyM2ViNDdiNzcwOTZhMmVhOGQKCi0tLQoKU3RhcnQgYSBuZXcgZ2FtZSBvZiBTaGlwbG9hZCBkZXBsb3llZCB0byBhIG5ldyBjb250cmFjdC4AgJKGqWxS1Qp1cGRhdGVnYW1ljQItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdXBkYXRlZ2FtZQpzdW1tYXJ5OiAnVXBkYXRlIGdhbWUgaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpVcGRhdGUgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzcGVjaWZpZWQgZ2FtZSBjb250cmFjdC4KCi0tLQAAAAAAoKrjBHdpcGWyAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlCnN1bW1hcnk6ICdERUJVRzogd2lwZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0DAAAAwE9TJUUDaTY0AAALY29tcGFueV9yb3cAAAAAAKykYQNpNjQAAAhnYW1lX3JvdwAAAAAAlU3GA2k2NAAACXN0YXRlX3JvdwETU2hpcGxvYWQgKFBsYXRmb3JtKRNTaGlwbG9hZCAoUGxhdGZvcm0pAAAAAA==');
|
|
@@ -205,7 +205,7 @@ var platform = /*#__PURE__*/Object.freeze({
|
|
|
205
205
|
Contract: Contract$1
|
|
206
206
|
});
|
|
207
207
|
|
|
208
|
-
const abiBlob = Blob.from('
|
|
208
|
+
const abiBlob = Blob.from('DmVvc2lvOjphYmkvMS4yAB4HYWR2YW5jZQACBnJldmVhbAZzdHJpbmcGY29tbWl0C2NoZWNrc3VtMjU2BmFycml2ZQABAmlkBnVpbnQ2NAhidXlnb29kcwADB3NoaXBfaWQGdWludDY0B2dvb2RfaWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NAljYXJnb19yb3cABQJpZAZ1aW50NjQHc2hpcF9pZAZ1aW50NjQHZ29vZF9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDE2BmxvYWRlZAZ1aW50MTYKY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/BmNvbW1pdAABBmNvbW1pdAtjaGVja3N1bTI1Ngtjb29yZGluYXRlcwACAXgFaW50NjQBeQVpbnQ2NAZlbmFibGUAAQdlbmFibGVkBGJvb2wKZ29vZF9wcmljZQACAmlkBnVpbnQxNgVwcmljZQZ1aW50NjQEaGFzaAABBXZhbHVlBnN0cmluZwdoYXNoNTEyAAEFdmFsdWUGc3RyaW5nBGluaXQAAQRzZWVkC2NoZWNrc3VtMjU2BGpvaW4AAQdhY2NvdW50BG5hbWUMbG9hZGVyX3N0YXRzAAMEbWFzcwZ1aW50MzIIcXVhbnRpdHkGdWludDE2BnRocnVzdAZ1aW50MzILbWFya2V0cHJpY2UAAghsb2NhdGlvbgtjb29yZGluYXRlcwdnb29kX2lkBnVpbnQxNgxtYXJrZXRwcmljZXMAAQhsb2NhdGlvbgtjb29yZGluYXRlcwpwbGF5ZXJfcm93AAMFb3duZXIEbmFtZQdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQ2NARzYWx0AAEEc2FsdAZ1aW50NjQJc2VsbGdvb2RzAAMHc2hpcF9pZAZ1aW50NjQHZ29vZF9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0DHNlcXVlbmNlX3JvdwACA2tleQRuYW1lBXZhbHVlBnVpbnQ2NAhzaGlwX3JvdwAKAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nCGxvY2F0aW9uC2Nvb3JkaW5hdGVzBHNraW4FdWludDgEdGllcgV1aW50OAVzdGF0ZQpzaGlwX3N0YXRlBXN0YXRzCnNoaXBfc3RhdHMHbG9hZGVycwxsb2FkZXJfc3RhdHMKdHJhdmVscGxhbgx0cmF2ZWxfcGxhbj8Kc2hpcF9zdGF0ZQABBmVuZXJneQZ1aW50MzIKc2hpcF9zdGF0cwAGCGNhcGFjaXR5BnVpbnQzMgVkcmFpbgZ1aW50MzIEbWFzcwZ1aW50NjQFb3JiaXQGdWludDE2CHJlY2hhcmdlBnVpbnQzMgZ0aHJ1c3QGdWludDY0CXN0YXRlX3JvdwAFB2VuYWJsZWQEYm9vbAVlcG9jaAZ1aW50NjQEc2FsdAZ1aW50NjQEc2VlZAtjaGVja3N1bTI1NgZjb21taXQLY2hlY2tzdW0yNTYGdHJhdmVsAAMCaWQGdWludDY0C2Rlc3RpbmF0aW9uC2Nvb3JkaW5hdGVzCHJlY2hhcmdlBGJvb2wLdHJhdmVsX3BsYW4ACAlkZXBhcnR1cmUKdGltZV9wb2ludAtkZXN0aW5hdGlvbgtjb29yZGluYXRlcwpmbGlnaHR0aW1lBnVpbnQzMghsb2FkdGltZQZ1aW50MzIMcmVjaGFyZ2V0aW1lBnVpbnQzMgRtYXNzBnVpbnQ2NAtlbmVyZ3l1c2FnZQZ1aW50MzIIZGlzdGFuY2UGdWludDY0DnRyYXZlbF9zdW1tYXJ5AAwFc3RhdHMKc2hpcF9zdGF0cwdsb2FkZXJzDGxvYWRlcl9zdGF0cwZvcmlnaW4LY29vcmRpbmF0ZXMLZGVzdGluYXRpb24LY29vcmRpbmF0ZXMIZGlzdGFuY2UGdWludDY0CXRvdGFsbWFzcwZ1aW50NjQMYWNjZWxlcmF0aW9uB2Zsb2F0NjQKZmxpZ2h0dGltZQZ1aW50NjQLZW5lcmd5dXNhZ2UGdWludDY0DHJlY2hhcmdldGltZQZ1aW50NjQIbG9hZHRpbWUGdWludDY0BHRpbWUGdWludDY0CnRyYXZlbHBsYW4ABAJpZAZ1aW50NjQGb3JpZ2luC2Nvb3JkaW5hdGVzC2Rlc3RpbmF0aW9uC2Nvb3JkaW5hdGVzCHJlY2hhcmdlBGJvb2wKdHJhdmVsdGltZQACAmlkBnVpbnQ2NAtkZXN0aW5hdGlvbgtjb29yZGluYXRlcwR3aXBlAAASAAAAQKFpdjIHYWR2YW5jZdMBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGFkdmFuY2UKc3VtbWFyeTogJ0FkdmFuY2UgdHVybicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQWR2YW5jZSB0aGUgZ2FtZSB0byB0aGUgbmV4dCB0dXJuLgAAAACo7e41BmFycml2ZbMCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGFycml2ZQpzdW1tYXJ5OiAnQ29tcGxldGUgdHJhdmVsJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDb21wbGV0ZSB0aGUgdHJhdmVsIG9mIGEgc2hpcCBieSB1cGRhdGluZyBpdHMgbG9jYXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNvb3JkaW5hdGVzIGFmdGVyIHRoZSB0cmF2ZWwgZHVyYXRpb24gaGFzIHBhc3NlZC4KCi0tLQAAADhRyrw+CGJ1eWdvb2Rz3QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5Z29vZHMKc3VtbWFyeTogJ0J1eSBnb29kcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUHVyY2hhc2UgZ29vZHMgYW5kIGFkZCB0aGVtIHRvIGEgc2hpcCdzIGNhcmdvLgCAisfka1RECmNsZWFydGFibGW+AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjbGVhcnRhYmxlCnN1bW1hcnk6ICdERUJVRzogY2xlYXJ0YWJsZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAZCclRQZjb21taXTxAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjb21taXQKc3VtbWFyeTogJ1NldCBjb21taXQgdmFsdWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClNldCB0aGUgaW5pdGlhbCBjb21taXQgdmFsdWUgZHVyaW5nIGdhbWUgaW5pdGlhbGl6YXRpb24uCgotLS0AAAAAqHjMVAZlbmFibGXiAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBlbmFibGUKc3VtbWFyeTogJ1NldCBlbmFibGVkIHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGlzIGdhbWUgb2YgU2hpcGxvYWQuCgotLS0AAAAAANCwaQRoYXNo/QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaApzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTI1NiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGEyNTYgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgoKLS0tAAAAQITSsGkHaGFzaDUxMvsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2g1MTIKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGE1MTIgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhNTEyIGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAAAAAJDddARpbml0+gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaW5pdApzdW1tYXJ5OiAnSW5pdGlhbGl6ZSBnYW1lIHNlZWQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYWxpemUgYSB0aGUgZ2FtZXMgc2VlZCBhbmQgc2VlZCB2YWx1ZXMgdG8gYm9vdHN0cmFwIGdhbWUgc3RhdGUuAAAAAAAwHX0Eam9pbskBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpvaW4Kc3VtbWFyeTogJ0pvaW4gYSBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpKb2luIGEgZ2FtZSBvZiBTaGlwbG9hZAoKLS0tABRyt2YFr5ELbWFya2V0cHJpY2WbAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBtYXJrZXRwcmljZQpzdW1tYXJ5OiAnR2V0IHByaWNlIG9mIGdvb2QgYXQgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIGRldGVybWluZXMgdGhlIG1hcmtldCBwcmljZSBvZiBhIHNwZWNpZmllZCBnb29kIGF0IGEgZ2l2ZW4gbG9jYXRpb24uCgotLS2AFXK3ZgWvkQxtYXJrZXRwcmljZXOVAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBtYXJrZXRwcmljZXMKc3VtbWFyeTogJ0dldCBwcmljZSBvZiBhbGwgZ29vZHMgYXQgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIGRldGVybWluZXMgdGhlIG1hcmtldCBwcmljZSBvZiBhbGwgZ29vZHMgYXQgYSBnaXZlbiBsb2NhdGlvbi4AAAAAAJCjwQRzYWx03QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2FsdApzdW1tYXJ5OiAnQXBwZW5kIFNhbHQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkZCBhZGRpdGlvbmFsIHNhbHQgdG8gdGhlIG5leHQgZXBvY2ggc2VlZC4KCi0tLQAAwIlSFqPCCXNlbGxnb29kc9UBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNlbGxnb29kcwpzdW1tYXJ5OiAnU2VsbCBnb29kcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2VsbCBnb29kcyBmcm9tIGEgc2hpcCdzIGNhcmdvLgoKLS0tAAAAAES1zc0GdHJhdmVsyAItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdHJhdmVsCnN1bW1hcnk6ICdNb3ZlIGEgc2hpcCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgdHJhdmVsIG9mIGEgc2hpcCBmcm9tIGl0cyBjdXJyZW50IGxvY2F0aW9uIHRvIGEgbmV3IGRlc3RpbmF0aW9uLgoKLS0tCgpUaGlzIGFjdGlvbiBkZXRlcm1pbmVzIHRoZSBtYXJrZXQgcHJpY2Ugb2YgYWxsIGdvb2RzIGF0IGEgZ2l2ZW4gbG9jYXRpb24uAMA0sUa1zc0KdHJhdmVscGxhbo4CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbHBsYW4Kc3VtbWFyeTogJ0VzdGltYXRlIGEgdHJhdmVsIHBsYW4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZSB3aGF0IHRoZSB0cmF2ZWwgcGxhbiBpcyBmb3IgYSBzaGlwIHRyYXZlbGluZyB0byBhIGdpdmVuIGxvY2F0aW9uLgoKLS0tAICSLke1zc0KdHJhdmVsdGltZYwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbHRpbWUKc3VtbWFyeTogJ0VzdGltYXRlIFRyYXZlbCBUaW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFc3RpbWF0ZSB0aGUgZHVyYXRpb24gb2YgYSBzaGlwIHRyYXZlbGluZyB3aXRob3V0IGNvbW1pdHRpbmcgdG8gdGhlIGFjdGlvbi4KCi0tLQAAAAAAoKrjBHdpcGWyAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlCnN1bW1hcnk6ICdERUJVRzogd2lwZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0FAAAAAADKrkEDaTY0AAAJY2FyZ29fcm93AAAAAFzlTawDaTY0AAAKcGxheWVyX3JvdwAAAApNpa3CA2k2NAAADHNlcXVlbmNlX3JvdwAAAAAAUF3DA2k2NAAACHNoaXBfcm93AAAAAACVTcYDaTY0AAAJc3RhdGVfcm93ARFTaGlwbG9hZCAoU2VydmVyKRFTaGlwbG9hZCAoU2VydmVyKQAAAAYAAAAAANCwaQtjaGVja3N1bTI1NgAAAECE0rBpC2NoZWNrc3VtNTEyABRyt2YFr5EKZ29vZF9wcmljZYAVcrdmBa+RDGdvb2RfcHJpY2VbXQDANLFGtc3NC3RyYXZlbF9wbGFuAICSLke1zc0OdHJhdmVsX3N1bW1hcnk=');
|
|
209
209
|
const abi = ABI.from(abiBlob);
|
|
210
210
|
var Types;
|
|
211
211
|
(function (Types) {
|
|
@@ -223,9 +223,6 @@ var Types;
|
|
|
223
223
|
Types.advance = advance;
|
|
224
224
|
let arrive = class arrive extends Struct {
|
|
225
225
|
};
|
|
226
|
-
__decorate([
|
|
227
|
-
Struct.field(Name)
|
|
228
|
-
], arrive.prototype, "owner", void 0);
|
|
229
226
|
__decorate([
|
|
230
227
|
Struct.field(UInt64)
|
|
231
228
|
], arrive.prototype, "id", void 0);
|
|
@@ -484,15 +481,30 @@ var Types;
|
|
|
484
481
|
Types.ship_stats = ship_stats;
|
|
485
482
|
let travel_plan = class travel_plan extends Struct {
|
|
486
483
|
};
|
|
484
|
+
__decorate([
|
|
485
|
+
Struct.field(TimePoint)
|
|
486
|
+
], travel_plan.prototype, "departure", void 0);
|
|
487
487
|
__decorate([
|
|
488
488
|
Struct.field(coordinates)
|
|
489
489
|
], travel_plan.prototype, "destination", void 0);
|
|
490
490
|
__decorate([
|
|
491
|
-
Struct.field(
|
|
492
|
-
], travel_plan.prototype, "
|
|
491
|
+
Struct.field(UInt32)
|
|
492
|
+
], travel_plan.prototype, "flighttime", void 0);
|
|
493
|
+
__decorate([
|
|
494
|
+
Struct.field(UInt32)
|
|
495
|
+
], travel_plan.prototype, "loadtime", void 0);
|
|
496
|
+
__decorate([
|
|
497
|
+
Struct.field(UInt32)
|
|
498
|
+
], travel_plan.prototype, "rechargetime", void 0);
|
|
499
|
+
__decorate([
|
|
500
|
+
Struct.field(UInt64)
|
|
501
|
+
], travel_plan.prototype, "mass", void 0);
|
|
493
502
|
__decorate([
|
|
494
503
|
Struct.field(UInt32)
|
|
495
|
-
], travel_plan.prototype, "
|
|
504
|
+
], travel_plan.prototype, "energyusage", void 0);
|
|
505
|
+
__decorate([
|
|
506
|
+
Struct.field(UInt64)
|
|
507
|
+
], travel_plan.prototype, "distance", void 0);
|
|
496
508
|
travel_plan = __decorate([
|
|
497
509
|
Struct.type('travel_plan')
|
|
498
510
|
], travel_plan);
|
|
@@ -556,9 +568,6 @@ var Types;
|
|
|
556
568
|
Types.state_row = state_row;
|
|
557
569
|
let travel = class travel extends Struct {
|
|
558
570
|
};
|
|
559
|
-
__decorate([
|
|
560
|
-
Struct.field(Name)
|
|
561
|
-
], travel.prototype, "owner", void 0);
|
|
562
571
|
__decorate([
|
|
563
572
|
Struct.field(UInt64)
|
|
564
573
|
], travel.prototype, "id", void 0);
|
|
@@ -593,7 +602,7 @@ var Types;
|
|
|
593
602
|
Struct.field(UInt64)
|
|
594
603
|
], travel_summary.prototype, "totalmass", void 0);
|
|
595
604
|
__decorate([
|
|
596
|
-
Struct.field(
|
|
605
|
+
Struct.field(Float64)
|
|
597
606
|
], travel_summary.prototype, "acceleration", void 0);
|
|
598
607
|
__decorate([
|
|
599
608
|
Struct.field(UInt64)
|
|
@@ -614,6 +623,24 @@ var Types;
|
|
|
614
623
|
Struct.type('travel_summary')
|
|
615
624
|
], travel_summary);
|
|
616
625
|
Types.travel_summary = travel_summary;
|
|
626
|
+
let travelplan = class travelplan extends Struct {
|
|
627
|
+
};
|
|
628
|
+
__decorate([
|
|
629
|
+
Struct.field(UInt64)
|
|
630
|
+
], travelplan.prototype, "id", void 0);
|
|
631
|
+
__decorate([
|
|
632
|
+
Struct.field(coordinates)
|
|
633
|
+
], travelplan.prototype, "origin", void 0);
|
|
634
|
+
__decorate([
|
|
635
|
+
Struct.field(coordinates)
|
|
636
|
+
], travelplan.prototype, "destination", void 0);
|
|
637
|
+
__decorate([
|
|
638
|
+
Struct.field('bool')
|
|
639
|
+
], travelplan.prototype, "recharge", void 0);
|
|
640
|
+
travelplan = __decorate([
|
|
641
|
+
Struct.type('travelplan')
|
|
642
|
+
], travelplan);
|
|
643
|
+
Types.travelplan = travelplan;
|
|
617
644
|
let traveltime = class traveltime extends Struct {
|
|
618
645
|
};
|
|
619
646
|
__decorate([
|
|
@@ -668,9 +695,9 @@ var server = /*#__PURE__*/Object.freeze({
|
|
|
668
695
|
Contract: Contract
|
|
669
696
|
});
|
|
670
697
|
|
|
671
|
-
|
|
698
|
+
function getCurrentEpoch(game) {
|
|
672
699
|
const current = new Date().getTime();
|
|
673
|
-
const difference = (current - game.config.start.
|
|
700
|
+
const difference = (current - game.config.start.toMilliseconds()) / 1000;
|
|
674
701
|
const epoch = Math.floor(difference / Number(game.config.epochtime)) + 1;
|
|
675
702
|
return epoch;
|
|
676
703
|
}
|
|
@@ -684,164 +711,266 @@ function hash512(seed, string) {
|
|
|
684
711
|
return Checksum512.hash(bytes);
|
|
685
712
|
}
|
|
686
713
|
|
|
687
|
-
|
|
688
|
-
if (ship.travelplan) {
|
|
689
|
-
const { departure, duration } = ship.travelplan;
|
|
690
|
-
return (+new Date() - +departure.toDate()) / (Number(duration) * 1000);
|
|
691
|
-
}
|
|
692
|
-
return 0;
|
|
693
|
-
}
|
|
694
|
-
function distanceBetweenCoordinates(origin, destination) {
|
|
695
|
-
return distanceBetweenPoints(origin.x, origin.y, destination.x, destination.y);
|
|
696
|
-
}
|
|
697
|
-
function distanceBetweenPoints(x1, y1, x2, y2) {
|
|
698
|
-
const x = Math.pow(x1 - x2, 2);
|
|
699
|
-
const y = Math.pow(y1 - y2, 2);
|
|
700
|
-
return UInt16.from(Math.sqrt(x + y));
|
|
701
|
-
}
|
|
702
|
-
function lerp(origin, destination, time) {
|
|
703
|
-
return {
|
|
704
|
-
x: (1 - time) * Number(origin.x) + time * Number(destination.x),
|
|
705
|
-
y: (1 - time) * Number(origin.y) + time * Number(destination.y),
|
|
706
|
-
};
|
|
707
|
-
}
|
|
708
|
-
function rotation(origin, destination) {
|
|
709
|
-
return Math.atan2(destination.y - origin.y, destination.x - origin.x) * (180 / Math.PI) + 90;
|
|
710
|
-
}
|
|
711
|
-
function hasPlanet(seed, coordinates) {
|
|
712
|
-
const str = ['system', coordinates.x, coordinates.y].join('-');
|
|
713
|
-
return String(hash512(seed, str)).slice(0, 2) === '00';
|
|
714
|
-
}
|
|
715
|
-
function findNearbyPlanets(seed, origin, maxDistance = 20) {
|
|
716
|
-
const nearbySystems = [];
|
|
717
|
-
const max = UInt16.from(maxDistance);
|
|
718
|
-
const xMin = Int64.from(origin.x).subtracting(max);
|
|
719
|
-
const xMax = Int64.from(origin.x).adding(max);
|
|
720
|
-
const yMin = Int64.from(origin.y).subtracting(max);
|
|
721
|
-
const yMax = Int64.from(origin.y).adding(max);
|
|
722
|
-
for (let x = Number(xMin); x <= Number(xMax); x++) {
|
|
723
|
-
for (let y = Number(yMin); y <= Number(yMax); y++) {
|
|
724
|
-
const samePlace = x === origin.x && y === origin.y;
|
|
725
|
-
if (!samePlace) {
|
|
726
|
-
const distance = distanceBetweenPoints(origin.x, origin.y, x, y);
|
|
727
|
-
if (Number(distance) <= Number(max)) {
|
|
728
|
-
const system = hasPlanet(seed, { x, y });
|
|
729
|
-
if (system) {
|
|
730
|
-
nearbySystems.push({ origin, destination: { x, y }, distance });
|
|
731
|
-
}
|
|
732
|
-
}
|
|
733
|
-
}
|
|
734
|
-
}
|
|
735
|
-
}
|
|
736
|
-
return nearbySystems;
|
|
737
|
-
}
|
|
714
|
+
const PRECISION = 10000;
|
|
738
715
|
|
|
739
716
|
const goods = [
|
|
740
717
|
{
|
|
741
|
-
id:
|
|
718
|
+
id: 1,
|
|
742
719
|
name: 'FizzGlo',
|
|
743
720
|
description: 'Pops with flavor! A neon drink that makes your burps glow.',
|
|
744
|
-
base_price:
|
|
745
|
-
mass:
|
|
721
|
+
base_price: 200,
|
|
722
|
+
mass: 5000,
|
|
746
723
|
},
|
|
747
724
|
{
|
|
748
|
-
id:
|
|
725
|
+
id: 2,
|
|
749
726
|
name: 'ZapSnacks',
|
|
750
727
|
description: 'Electric taste! Spicy edible energy sparks for a tongue-tingling experience.',
|
|
751
|
-
base_price:
|
|
752
|
-
mass:
|
|
728
|
+
base_price: 300,
|
|
729
|
+
mass: 2000,
|
|
753
730
|
},
|
|
754
731
|
{
|
|
755
|
-
id:
|
|
732
|
+
id: 3,
|
|
756
733
|
name: 'Blob Buddies',
|
|
757
734
|
description: 'Squishy friends! Clingy, cute and mood-matching pet blobs for every home!',
|
|
758
|
-
base_price:
|
|
759
|
-
mass:
|
|
735
|
+
base_price: 400,
|
|
736
|
+
mass: 10000,
|
|
760
737
|
},
|
|
761
738
|
{
|
|
762
|
-
id:
|
|
739
|
+
id: 4,
|
|
763
740
|
name: 'TuneTooth',
|
|
764
741
|
description: 'Whistle while you eat! Edible instrument treats that play tunes when chewed.',
|
|
765
|
-
base_price:
|
|
766
|
-
mass:
|
|
742
|
+
base_price: 600,
|
|
743
|
+
mass: 3000,
|
|
767
744
|
},
|
|
768
745
|
{
|
|
769
|
-
id:
|
|
746
|
+
id: 5,
|
|
770
747
|
name: 'SunPods',
|
|
771
748
|
description: 'Miniature suns in your pocket providing on-demand light & warmth.',
|
|
772
|
-
base_price:
|
|
773
|
-
mass:
|
|
749
|
+
base_price: 800,
|
|
750
|
+
mass: 1000,
|
|
774
751
|
},
|
|
775
752
|
{
|
|
776
|
-
id:
|
|
753
|
+
id: 6,
|
|
777
754
|
name: 'Fuzzix',
|
|
778
755
|
description: 'Pocket-sized quantum fluff generator for instant comfy.',
|
|
779
|
-
base_price:
|
|
780
|
-
mass:
|
|
756
|
+
base_price: 1000,
|
|
757
|
+
mass: 4000,
|
|
781
758
|
},
|
|
782
759
|
{
|
|
783
|
-
id:
|
|
760
|
+
id: 7,
|
|
784
761
|
name: 'GlowGo',
|
|
785
762
|
description: 'Ingestible bioluminescent jelly, your inside glows in the dark!',
|
|
786
|
-
base_price:
|
|
787
|
-
mass:
|
|
763
|
+
base_price: 140,
|
|
764
|
+
mass: 10000,
|
|
788
765
|
},
|
|
789
766
|
{
|
|
790
|
-
id:
|
|
767
|
+
id: 8,
|
|
791
768
|
name: 'KrackleKaps',
|
|
792
769
|
description: 'Capsules packed with tiny firecrackers, spice up meals and parties.',
|
|
793
|
-
base_price:
|
|
794
|
-
mass:
|
|
770
|
+
base_price: 180,
|
|
771
|
+
mass: 2000,
|
|
795
772
|
},
|
|
796
773
|
{
|
|
797
|
-
id:
|
|
774
|
+
id: 9,
|
|
798
775
|
name: 'PlasmaMints',
|
|
799
776
|
description: 'Hypercharged candy giving plasma breath capable of cutting through steel.',
|
|
800
|
-
base_price:
|
|
801
|
-
mass:
|
|
777
|
+
base_price: 220,
|
|
778
|
+
mass: 500,
|
|
802
779
|
},
|
|
803
780
|
{
|
|
804
|
-
id:
|
|
781
|
+
id: 10,
|
|
805
782
|
name: 'TimeTreats',
|
|
806
783
|
description: 'Confectionery morsels releasing slow-mo effect over a limited period.',
|
|
807
|
-
base_price:
|
|
808
|
-
mass:
|
|
784
|
+
base_price: 250,
|
|
785
|
+
mass: 3000,
|
|
809
786
|
},
|
|
810
787
|
{
|
|
811
|
-
id:
|
|
788
|
+
id: 11,
|
|
812
789
|
name: 'QuantumQuencher',
|
|
813
790
|
description: 'Bottled hyper-fluid quenching thirst across multiple parallel realities simultaneously.',
|
|
814
|
-
base_price:
|
|
815
|
-
mass:
|
|
791
|
+
base_price: 300,
|
|
792
|
+
mass: 6000,
|
|
816
793
|
},
|
|
817
794
|
{
|
|
818
|
-
id:
|
|
795
|
+
id: 12,
|
|
819
796
|
name: 'TransmatterTruffles',
|
|
820
797
|
description: 'Delectable chocolates instantly teleporting consumers short distances.',
|
|
821
|
-
base_price:
|
|
822
|
-
mass:
|
|
798
|
+
base_price: 350,
|
|
799
|
+
mass: 4000,
|
|
823
800
|
},
|
|
824
801
|
{
|
|
825
|
-
id:
|
|
802
|
+
id: 13,
|
|
826
803
|
name: 'MemoryGum',
|
|
827
804
|
description: 'Chewable gum storing or replaying memories while being chewed.',
|
|
828
|
-
base_price:
|
|
829
|
-
mass:
|
|
805
|
+
base_price: 400,
|
|
806
|
+
mass: 500,
|
|
830
807
|
},
|
|
831
808
|
{
|
|
832
|
-
id:
|
|
809
|
+
id: 14,
|
|
833
810
|
name: 'SymbioSnack',
|
|
834
811
|
description: 'Edible alien larvae adopting owner’s taste preference upon consumption.',
|
|
835
|
-
base_price:
|
|
836
|
-
mass:
|
|
812
|
+
base_price: 500,
|
|
813
|
+
mass: 10000,
|
|
837
814
|
},
|
|
838
815
|
];
|
|
816
|
+
const goodIds = goods.map((g) => g.id);
|
|
839
817
|
function getGood(good_id) {
|
|
840
|
-
const good = goods.find((g) =>
|
|
818
|
+
const good = goods.find((g) => UInt16.from(good_id).equals(g.id));
|
|
841
819
|
if (!good) {
|
|
842
820
|
throw new Error('Good does not exist');
|
|
843
821
|
}
|
|
844
|
-
return
|
|
822
|
+
return {
|
|
823
|
+
...good,
|
|
824
|
+
id: UInt16.from(good.id),
|
|
825
|
+
base_price: UInt64.from(good.base_price),
|
|
826
|
+
mass: UInt64.from(good.mass).multiplying(PRECISION),
|
|
827
|
+
};
|
|
828
|
+
}
|
|
829
|
+
function getGoods() {
|
|
830
|
+
return goods.map((g) => getGood(g.id));
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
function travelplanDuration(travelplan) {
|
|
834
|
+
return UInt32.from(travelplan.flighttime)
|
|
835
|
+
.adding(travelplan.rechargetime)
|
|
836
|
+
.adding(travelplan.loadtime);
|
|
837
|
+
}
|
|
838
|
+
function distanceTraveled(ship, current = new Date()) {
|
|
839
|
+
if (ship.travelplan) {
|
|
840
|
+
const { departure } = ship.travelplan;
|
|
841
|
+
const duration = travelplanDuration(ship.travelplan);
|
|
842
|
+
return (+current - +departure.toDate()) / (Number(duration) * 1000);
|
|
843
|
+
}
|
|
844
|
+
return 0;
|
|
845
|
+
}
|
|
846
|
+
function distanceBetweenCoordinates(origin, destination) {
|
|
847
|
+
return distanceBetweenPoints(origin.x, origin.y, destination.x, destination.y);
|
|
848
|
+
}
|
|
849
|
+
function distanceBetweenPoints(x1, y1, x2, y2) {
|
|
850
|
+
const x = Math.pow(x1 - x2, 2);
|
|
851
|
+
const y = Math.pow(y1 - y2, 2);
|
|
852
|
+
return UInt64.from(Math.sqrt(x + y) * PRECISION);
|
|
853
|
+
}
|
|
854
|
+
function lerp(origin, destination, time) {
|
|
855
|
+
return {
|
|
856
|
+
x: (1 - time) * Number(origin.x) + time * Number(destination.x),
|
|
857
|
+
y: (1 - time) * Number(origin.y) + time * Number(destination.y),
|
|
858
|
+
};
|
|
859
|
+
}
|
|
860
|
+
function rotation(origin, destination) {
|
|
861
|
+
return Math.atan2(destination.y - origin.y, destination.x - origin.x) * (180 / Math.PI) + 90;
|
|
862
|
+
}
|
|
863
|
+
function hasSystem(seed, coordinates) {
|
|
864
|
+
const str = ['system', coordinates.x, coordinates.y].join('-');
|
|
865
|
+
return String(hash512(seed, str)).slice(0, 2) === '00';
|
|
866
|
+
}
|
|
867
|
+
function findNearbyPlanets(seed, origin, maxDistance = 20 * PRECISION) {
|
|
868
|
+
const nearbySystems = [];
|
|
869
|
+
const max = UInt64.from(maxDistance / PRECISION);
|
|
870
|
+
const xMin = Int64.from(origin.x).subtracting(max);
|
|
871
|
+
const xMax = Int64.from(origin.x).adding(max);
|
|
872
|
+
const yMin = Int64.from(origin.y).subtracting(max);
|
|
873
|
+
const yMax = Int64.from(origin.y).adding(max);
|
|
874
|
+
for (let x = Number(xMin); x <= Number(xMax); x++) {
|
|
875
|
+
for (let y = Number(yMin); y <= Number(yMax); y++) {
|
|
876
|
+
const samePlace = x === origin.x && y === origin.y;
|
|
877
|
+
if (!samePlace) {
|
|
878
|
+
const distance = distanceBetweenPoints(origin.x, origin.y, x, y);
|
|
879
|
+
if (Number(distance) <= Number(maxDistance)) {
|
|
880
|
+
const system = hasSystem(seed, { x, y });
|
|
881
|
+
if (system) {
|
|
882
|
+
nearbySystems.push({ origin, destination: { x, y }, distance });
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
return nearbySystems;
|
|
889
|
+
}
|
|
890
|
+
function travelplan(game, ship, cargos, origin, destination, recharge) {
|
|
891
|
+
const valid = hasSystem(game.config.seed, destination);
|
|
892
|
+
if (!valid) {
|
|
893
|
+
throw new Error('Invalid destination');
|
|
894
|
+
}
|
|
895
|
+
const distance = distanceBetweenCoordinates(origin, destination);
|
|
896
|
+
const mass = calc_ship_mass(ship, cargos);
|
|
897
|
+
const loadtime = calc_ship_loadtime(ship, cargos);
|
|
898
|
+
const flighttime = calc_ship_flighttime(ship, mass, distance);
|
|
899
|
+
const rechargetime = recharge ? calc_ship_rechargetime(ship) : 0;
|
|
900
|
+
const energyusage = calc_energyusage(ship.stats.drain, flighttime);
|
|
901
|
+
return Types.travel_plan.from({
|
|
902
|
+
departure: BlockTimestamp.fromDate(new Date()),
|
|
903
|
+
destination,
|
|
904
|
+
loadtime,
|
|
905
|
+
flighttime,
|
|
906
|
+
rechargetime,
|
|
907
|
+
distance,
|
|
908
|
+
energyusage,
|
|
909
|
+
mass,
|
|
910
|
+
});
|
|
911
|
+
}
|
|
912
|
+
function calc_rechargetime(capacity, energy, recharge) {
|
|
913
|
+
return UInt32.from(capacity).subtracting(energy).dividing(recharge);
|
|
914
|
+
}
|
|
915
|
+
function calc_ship_rechargetime(ship) {
|
|
916
|
+
return calc_rechargetime(ship.stats.capacity, ship.state.energy, ship.stats.recharge);
|
|
917
|
+
}
|
|
918
|
+
function calc_ship_loadtime(ship, cargos) {
|
|
919
|
+
const loadtime = UInt32.from(0);
|
|
920
|
+
const mass_load = UInt64.from(0);
|
|
921
|
+
const mass_unload = UInt64.from(0);
|
|
922
|
+
for (const cargo of cargos) {
|
|
923
|
+
const cargo_delta = Number(cargo.quantity) - Number(cargo.loaded);
|
|
924
|
+
if (cargo_delta !== 0) {
|
|
925
|
+
const good_mass = getGood(cargo.good_id).mass;
|
|
926
|
+
const cargo_mass = good_mass.multiplying(Math.abs(cargo_delta));
|
|
927
|
+
if (cargo_delta > 0) {
|
|
928
|
+
mass_load.add(cargo_mass);
|
|
929
|
+
}
|
|
930
|
+
else {
|
|
931
|
+
mass_unload.add(cargo_mass);
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
if (Number(mass_load) > 0 || Number(mass_unload) > 0) {
|
|
936
|
+
mass_load.add(ship.loaders.mass);
|
|
937
|
+
loadtime.add(calc_loader_flighttime(ship, mass_load));
|
|
938
|
+
mass_unload.add(ship.loaders.mass);
|
|
939
|
+
loadtime.add(calc_loader_flighttime(ship, mass_unload));
|
|
940
|
+
}
|
|
941
|
+
return loadtime.dividing(ship.loaders.quantity);
|
|
942
|
+
}
|
|
943
|
+
function calc_flighttime(distance, acceleration) {
|
|
944
|
+
return UInt32.from(2 * Math.sqrt(Number(distance) / acceleration));
|
|
945
|
+
}
|
|
946
|
+
function calc_loader_flighttime(ship, mass) {
|
|
947
|
+
return calc_flighttime(ship.stats.orbit, calc_loader_acceleration(ship, mass));
|
|
948
|
+
}
|
|
949
|
+
function calc_loader_acceleration(ship, mass) {
|
|
950
|
+
return calc_acceleration(Number(ship.loaders.thrust), Number(mass) + Number(ship.loaders.mass));
|
|
951
|
+
}
|
|
952
|
+
function calc_ship_flighttime(ship, mass, distance) {
|
|
953
|
+
const acceleration = calc_ship_acceleration(ship, mass);
|
|
954
|
+
return calc_flighttime(distance, acceleration);
|
|
955
|
+
}
|
|
956
|
+
function calc_ship_acceleration(ship, mass) {
|
|
957
|
+
return calc_acceleration(Number(ship.stats.thrust), Number(mass));
|
|
958
|
+
}
|
|
959
|
+
function calc_acceleration(thrust, mass) {
|
|
960
|
+
return (thrust / mass) * PRECISION;
|
|
961
|
+
}
|
|
962
|
+
function calc_ship_mass(ship, cargos) {
|
|
963
|
+
const mass = UInt64.from(ship.stats.mass);
|
|
964
|
+
if (Number(ship.loaders.quantity) > 0) {
|
|
965
|
+
mass.add(ship.loaders.mass.multiplying(ship.loaders.quantity));
|
|
966
|
+
}
|
|
967
|
+
for (const cargo of cargos) {
|
|
968
|
+
mass.add(getGood(cargo.good_id).mass.multiplying(cargo.quantity));
|
|
969
|
+
}
|
|
970
|
+
return mass;
|
|
971
|
+
}
|
|
972
|
+
function calc_energyusage(drain, flighttime) {
|
|
973
|
+
return UInt32.from(drain).multiplying(flighttime);
|
|
845
974
|
}
|
|
846
975
|
|
|
847
976
|
function roll(game_seed, roll_seed) {
|
|
@@ -856,7 +985,7 @@ async function marketprice(location, good_id, gameSeed, epochSeed) {
|
|
|
856
985
|
return priceFromRoll(good.base_price, rollValue);
|
|
857
986
|
}
|
|
858
987
|
async function marketprices(location, gameSeed, epochSeed) {
|
|
859
|
-
return Promise.all(
|
|
988
|
+
return Promise.all(getGoods().map(async (good) => {
|
|
860
989
|
const price = await marketprice(location, good.id, gameSeed, epochSeed);
|
|
861
990
|
return { price, good: good };
|
|
862
991
|
}));
|
|
@@ -968,15 +1097,24 @@ class Shipload {
|
|
|
968
1097
|
const state = await this.getState();
|
|
969
1098
|
return marketprices(location, game.config.seed, state.seed);
|
|
970
1099
|
}
|
|
971
|
-
async
|
|
1100
|
+
async hasSystem(location) {
|
|
972
1101
|
const game = await this.getGame();
|
|
973
|
-
return
|
|
1102
|
+
return hasSystem(game.config.seed, location);
|
|
974
1103
|
}
|
|
975
1104
|
async findNearbyPlanets(origin, maxDistance = 20) {
|
|
976
1105
|
const game = await this.getGame();
|
|
977
1106
|
return findNearbyPlanets(game.config.seed, origin, maxDistance);
|
|
978
1107
|
}
|
|
1108
|
+
async travelplan(ship, origin, destination, recharge = false) {
|
|
1109
|
+
const game = await this.getGame();
|
|
1110
|
+
const cargos = await this.server.table('cargo').all({
|
|
1111
|
+
from: ship.id,
|
|
1112
|
+
to: ship.id,
|
|
1113
|
+
index_position: 'secondary',
|
|
1114
|
+
});
|
|
1115
|
+
return travelplan(game, ship, cargos, origin, destination, recharge);
|
|
1116
|
+
}
|
|
979
1117
|
}
|
|
980
1118
|
|
|
981
|
-
export { ERROR_SYSTEM_NOT_INITIALIZED, GOOD_DOES_NOT_EXIST, GOOD_NOT_AVAILABLE_AT_LOCATION, INSUFFICIENT_BALANCE, INSUFFICIENT_GOOD_QUANTITY, PLAYER_NOT_FOUND, platform as PlatformContract, REQUIRES_MORE_THAN_ONE, SHIP_CANNOT_BUY_TRAVELING, SHIP_NOT_FOUND, server as ServerContract, Shipload as default, distanceBetweenCoordinates, distanceBetweenPoints, distanceTraveled, findNearbyPlanets, getCurrentEpoch, getGood,
|
|
1119
|
+
export { ERROR_SYSTEM_NOT_INITIALIZED, GOOD_DOES_NOT_EXIST, GOOD_NOT_AVAILABLE_AT_LOCATION, INSUFFICIENT_BALANCE, INSUFFICIENT_GOOD_QUANTITY, PLAYER_NOT_FOUND, PRECISION, platform as PlatformContract, REQUIRES_MORE_THAN_ONE, SHIP_CANNOT_BUY_TRAVELING, SHIP_NOT_FOUND, server as ServerContract, calc_acceleration, calc_energyusage, calc_flighttime, calc_loader_acceleration, calc_loader_flighttime, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_loadtime, calc_ship_mass, calc_ship_rechargetime, Shipload as default, distanceBetweenCoordinates, distanceBetweenPoints, distanceTraveled, findNearbyPlanets, getCurrentEpoch, getGood, getGoods, goodIds, hasSystem, hash, hash512, lerp, marketprice, marketprices, priceFromRoll, rotation, travelplan, travelplanDuration };
|
|
982
1120
|
//# sourceMappingURL=shipload.m.js.map
|