mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-06 08:38:30 +09:00
Compare commits
759 Commits
v0.4.0-24w
...
b547914865
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b547914865 | ||
|
|
c3c6f70e38 | ||
|
|
8824bad9bf | ||
|
|
9edf3a6573 | ||
|
|
f3fb8a96f0 | ||
|
|
281146dd92 | ||
|
|
8eff89a7cb | ||
|
|
73c7c8942e | ||
|
|
6118f30d5f | ||
|
|
981418d0c7 | ||
|
|
3cbfb5c10f | ||
|
|
1a0b754cde | ||
|
|
db3a1f9a39 | ||
|
|
247fd6195f | ||
|
|
97d22913bf | ||
|
|
2dea82bb9c | ||
|
|
7c8baa151f | ||
|
|
04b49b8a5c | ||
|
|
661d516800 | ||
|
|
9efb800d47 | ||
|
|
93c5822c7b | ||
|
|
4d9252dd80 | ||
|
|
232bc0297d | ||
|
|
612871eb2a | ||
|
|
8bbe79acfe | ||
|
|
54715e41b0 | ||
|
|
e91b7ceb0d | ||
|
|
855e0ea12a | ||
|
|
5394f17686 | ||
|
|
72aae3cffd | ||
|
|
b5b9e22091 | ||
|
|
5b1d0ca049 | ||
|
|
623ee14d93 | ||
|
|
b328b609cc | ||
|
|
ff9f02322b | ||
|
|
4997353f83 | ||
|
|
068d0bf1b2 | ||
|
|
e838991826 | ||
|
|
63566a507b | ||
|
|
104481a7d5 | ||
|
|
a4df761359 | ||
|
|
aa22fe69ff | ||
|
|
e14e689dce | ||
|
|
767aa09a17 | ||
|
|
99bd56317d | ||
|
|
3f6f599865 | ||
|
|
c803ddfae8 | ||
|
|
f11ea557be | ||
|
|
3f787108b2 | ||
|
|
6bdf585b49 | ||
|
|
fa56fc14bf | ||
|
|
d922aa5d67 | ||
|
|
0ca5e6435c | ||
|
|
3b755f52da | ||
|
|
b167f20935 | ||
|
|
41c47a0777 | ||
|
|
5495e017d5 | ||
|
|
488a214a19 | ||
|
|
946824f861 | ||
|
|
dabcfe03ed | ||
|
|
06a8fd38d1 | ||
|
|
a4b6ad1d5f | ||
|
|
1c0162ec25 | ||
|
|
b6ee5ee0f7 | ||
|
|
51da0612d2 | ||
|
|
0c35faa548 | ||
|
|
852c0b7dcc | ||
|
|
759f8a4c4e | ||
|
|
506ca7a7b1 | ||
|
|
42eee2bba7 | ||
|
|
d77e1f38dc | ||
|
|
e5f8e3b76d | ||
|
|
f5744550a4 | ||
|
|
bbd0bc7eb2 | ||
|
|
7188fddc7e | ||
|
|
5c2d201151 | ||
|
|
c54cafae0f | ||
|
|
3c8f272d4a | ||
|
|
bbe28903d8 | ||
|
|
b19b7c7e79 | ||
|
|
73bf7f8793 | ||
|
|
5631b8e807 | ||
|
|
dba941d4de | ||
|
|
27b4137455 | ||
|
|
9af3f3b883 | ||
|
|
b577df0155 | ||
|
|
18feeb1826 | ||
|
|
d598ef497d | ||
|
|
e652ace37b | ||
|
|
bdd00676e6 | ||
|
|
19bc779ae1 | ||
|
|
16cac2f1ab | ||
|
|
a362ade9af | ||
|
|
fea4e34733 | ||
|
|
f861a2727d | ||
|
|
2bb1c8400e | ||
|
|
ef4a5d6eb9 | ||
|
|
f74b7218b0 | ||
|
|
f154b2348b | ||
|
|
e889b397d0 | ||
|
|
65f771e9de | ||
|
|
8a26f328c7 | ||
|
|
37d6d3004b | ||
|
|
ad68e04b83 | ||
|
|
4aae0bf733 | ||
|
|
c2d0803ee3 | ||
|
|
3d5672bc4d | ||
|
|
22786f9a28 | ||
|
|
34d8f1504f | ||
|
|
497782b428 | ||
|
|
fd0732cd39 | ||
|
|
d4e81c8c06 | ||
|
|
69ebdbc542 | ||
|
|
a2006b0354 | ||
|
|
150b4e6b6b | ||
|
|
b3b86b0965 | ||
|
|
ff2a022394 | ||
|
|
bb1da3b1ec | ||
|
|
29034e2104 | ||
|
|
daa6c09b52 | ||
|
|
879cc79bbf | ||
|
|
6b4b7917d9 | ||
|
|
ed9d8cffd6 | ||
|
|
3d34b9162b | ||
|
|
1b69d74291 | ||
|
|
15e3276f46 | ||
|
|
51dd99fd80 | ||
|
|
c14720d649 | ||
|
|
f4fb7cccfb | ||
|
|
c10823ddce | ||
|
|
c1a5624167 | ||
|
|
3eee0dcd62 | ||
|
|
cc3e59796f | ||
|
|
9dc2dffef9 | ||
|
|
fe4318877a | ||
|
|
3322878074 | ||
|
|
869b751488 | ||
|
|
450129f650 | ||
|
|
bf626e35da | ||
|
|
e581099aec | ||
|
|
95af4e8f53 | ||
|
|
661c4cdc4d | ||
|
|
a24eab209b | ||
|
|
6ec5ba5603 | ||
|
|
8cf4b5d9a9 | ||
|
|
5bf60cfa82 | ||
|
|
5cc7db8ecc | ||
|
|
89b12aabb4 | ||
|
|
f5846d9bae | ||
|
|
d460447331 | ||
|
|
63fe28eee2 | ||
|
|
2d7ef6e9ff | ||
|
|
fa3a129991 | ||
|
|
4cc74a85d1 | ||
|
|
3de4018d75 | ||
|
|
dbb0c60976 | ||
|
|
66c2ffa598 | ||
|
|
6a8f139ad8 | ||
|
|
2b4ff12659 | ||
|
|
60e54c2bc0 | ||
|
|
048777a845 | ||
|
|
4545ea22ea | ||
|
|
75249bc44b | ||
|
|
6dd633d2bf | ||
|
|
b428273fa2 | ||
|
|
e0fcd00d82 | ||
|
|
b4523b8492 | ||
|
|
07b4f3bff1 | ||
|
|
253ca85790 | ||
|
|
02db6b8fed | ||
|
|
9a33375286 | ||
|
|
41fa1e6903 | ||
|
|
ad734a7561 | ||
|
|
af0be41a82 | ||
|
|
0e58879216 | ||
|
|
dd643005a4 | ||
|
|
551fbcd3c2 | ||
|
|
dbd95cd2a2 | ||
|
|
f103d9ae0c | ||
|
|
70f2a23354 | ||
|
|
83ad86c818 | ||
|
|
6e1d3c3bb7 | ||
|
|
da4a850ee9 | ||
|
|
740e5f7b94 | ||
|
|
f89c2618fd | ||
|
|
b344b3b161 | ||
|
|
e4634045c2 | ||
|
|
468949a22c | ||
|
|
ae587beddd | ||
|
|
fbd7cd8f6a | ||
|
|
1c54b40898 | ||
|
|
b4f512ddef | ||
|
|
ae57e710bc | ||
|
|
bffc9fd860 | ||
|
|
a2dc001909 | ||
|
|
e14c832028 | ||
|
|
f5d4caaad5 | ||
|
|
180cf217f8 | ||
|
|
9520b5985f | ||
|
|
94f4f1980a | ||
|
|
c42f776f81 | ||
|
|
e8eae1e961 | ||
|
|
dfac9ed9a8 | ||
|
|
35bec7bc26 | ||
|
|
1924ed1fbc | ||
|
|
8f34fb41ed | ||
|
|
35da5927c8 | ||
|
|
2743198866 | ||
|
|
ec59000ae9 | ||
|
|
34a7a9285d | ||
|
|
831114ef15 | ||
|
|
8d9159528f | ||
|
|
212afae027 | ||
|
|
3a719bcbfa | ||
|
|
7ed37cf355 | ||
|
|
4a0f740e03 | ||
|
|
ff16ca5b1a | ||
|
|
35c330d253 | ||
|
|
79d0fe3572 | ||
|
|
f50c2a385b | ||
|
|
180d36eb10 | ||
|
|
29c1a69222 | ||
|
|
b3467d538c | ||
|
|
43d65fb10b | ||
|
|
e4742a40dd | ||
|
|
56c12949f8 | ||
|
|
11cdcbe2fc | ||
|
|
ab31986cf2 | ||
|
|
e3b663b4aa | ||
|
|
68854d3573 | ||
|
|
a9e6aab94c | ||
|
|
1af82e4d5c | ||
|
|
bd8f455ce6 | ||
|
|
694a727a3e | ||
|
|
849271328d | ||
|
|
56b98f3086 | ||
|
|
c17d742d68 | ||
|
|
eb3822553b | ||
|
|
3fcb2f9996 | ||
|
|
f5f1f536cf | ||
|
|
1615afb81b | ||
|
|
ef0c9c8447 | ||
|
|
5cbe96033b | ||
|
|
aef5fd307a | ||
|
|
cdfb5c4daa | ||
|
|
6f48bd9f04 | ||
|
|
fa03e5d14a | ||
|
|
54d1218b4a | ||
|
|
84f0353f09 | ||
|
|
85c1e3ba96 | ||
|
|
da14c75278 | ||
|
|
56a1723e4f | ||
|
|
d405302c9d | ||
|
|
85a4c46240 | ||
|
|
d8922485ad | ||
|
|
43e8d1a8d0 | ||
|
|
d02282a64d | ||
|
|
7554459281 | ||
|
|
02a549c406 | ||
|
|
e691222741 | ||
|
|
45550d0444 | ||
|
|
86c7f7925b | ||
|
|
55ae0b61af | ||
|
|
feed1ee6c0 | ||
|
|
63322321ce | ||
|
|
472fcfc05b | ||
|
|
23cae8ed73 | ||
|
|
ccaaac03d0 | ||
|
|
50adfc08bb | ||
|
|
96cdefb800 | ||
|
|
ff66b65831 | ||
|
|
657ab2b2be | ||
|
|
5c1c526128 | ||
|
|
9bd1471a64 | ||
|
|
bdb1c3e1ea | ||
|
|
a74d4bbced | ||
|
|
7b23e34907 | ||
|
|
b0480e6225 | ||
|
|
ebcc2ef4bf | ||
|
|
186733e4f8 | ||
|
|
e12a049e70 | ||
|
|
02f9303767 | ||
|
|
1867bf8de0 | ||
|
|
88680fb0fc | ||
|
|
e18f6512bc | ||
|
|
fc92fe6f55 | ||
|
|
1c27966322 | ||
|
|
81c75a762b | ||
|
|
fdbfad9633 | ||
|
|
9c9806f622 | ||
|
|
ff4bf42922 | ||
|
|
c2b624546b | ||
|
|
036347082f | ||
|
|
97286e7d99 | ||
|
|
af81bb0e0f | ||
|
|
1fddb5f0da | ||
|
|
91e25da54f | ||
|
|
3386cfbd46 | ||
|
|
42b3b9e02f | ||
|
|
082e1b7ec0 | ||
|
|
85c6b87cea | ||
|
|
ca4c0d0d03 | ||
|
|
3cf636629e | ||
|
|
4316072bc1 | ||
|
|
37b8bacd36 | ||
|
|
dcd75eb642 | ||
|
|
14538dd10b | ||
|
|
49fb419d35 | ||
|
|
3d1d38dc60 | ||
|
|
57b3d355ae | ||
|
|
d7f6e253d4 | ||
|
|
22d70e0a0a | ||
|
|
b0827ae8c8 | ||
|
|
b26462b248 | ||
|
|
0757764654 | ||
|
|
d9c1cfb3b2 | ||
|
|
d4ac5b887c | ||
|
|
9f0094c371 | ||
|
|
d72bbb0355 | ||
|
|
e77aa0c33f | ||
|
|
6399f609a9 | ||
|
|
5f1b860555 | ||
|
|
bddd871c9d | ||
|
|
01ce5fb3e2 | ||
|
|
23d99c0c86 | ||
|
|
96f858fa51 | ||
|
|
4f6b66b049 | ||
|
|
92f28887ec | ||
|
|
5a4c300612 | ||
|
|
c1ca06c8e0 | ||
|
|
836d287fa9 | ||
|
|
4db090aba0 | ||
|
|
7f5f11780c | ||
|
|
24e43edafb | ||
|
|
7b6d7f2b93 | ||
|
|
d8e6a01735 | ||
|
|
a236f49641 | ||
|
|
86c6f008f9 | ||
|
|
657c8051f8 | ||
|
|
63070a19d5 | ||
|
|
c211f67e38 | ||
|
|
e75575228a | ||
|
|
90f7e82325 | ||
|
|
ff433703f4 | ||
|
|
68ed16aa5a | ||
|
|
69571b6a3f | ||
|
|
7582eae1ee | ||
|
|
86fbe65e01 | ||
|
|
417f00117e | ||
|
|
a4629c3ea8 | ||
|
|
83b539e872 | ||
|
|
fd124062cf | ||
|
|
9948566ce4 | ||
|
|
408e976dd8 | ||
|
|
8c6050528d | ||
|
|
33acbcea4d | ||
|
|
3137297745 | ||
|
|
de38561eb2 | ||
|
|
4607abbbd0 | ||
|
|
32991b7ba8 | ||
|
|
87ff1abe96 | ||
|
|
3896da3db9 | ||
|
|
17e25c9cf7 | ||
|
|
fc509de98f | ||
|
|
08d18af500 | ||
|
|
493a15c6db | ||
|
|
19095140c6 | ||
|
|
20922e3c4f | ||
|
|
5e9087f961 | ||
|
|
10f3721407 | ||
|
|
bcf13d5ec6 | ||
|
|
d0251ffa54 | ||
|
|
48b6c842be | ||
|
|
0682862821 | ||
|
|
9979153caf | ||
|
|
4401b7377f | ||
|
|
49e9b6bcdc | ||
|
|
7d58c9f1ae | ||
|
|
48703a7c38 | ||
|
|
9e9ab5bfe0 | ||
|
|
1cb70c4620 | ||
|
|
82627a8ab4 | ||
|
|
6857ab266b | ||
|
|
02d1a4f5f7 | ||
|
|
297846f9ef | ||
|
|
163216707e | ||
|
|
c7ca5a61c8 | ||
|
|
efbdc806ea | ||
|
|
e308e9a356 | ||
|
|
b963e0d3f2 | ||
|
|
7320a14a4d | ||
|
|
1aecfc781f | ||
|
|
fc69c6f5b7 | ||
|
|
1c86162ff8 | ||
|
|
f08857530a | ||
|
|
23f4557bf2 | ||
|
|
ba09633b45 | ||
|
|
c230f96ac2 | ||
|
|
56fa7783e0 | ||
|
|
ef7138939d | ||
|
|
162b7862bc | ||
|
|
35768e6c72 | ||
|
|
68f5d5c5da | ||
|
|
f595e44edd | ||
|
|
28d303e1f2 | ||
|
|
15de0c8352 | ||
|
|
27d4466f63 | ||
|
|
c4ff23361a | ||
|
|
464fc5c404 | ||
|
|
f09ac75932 | ||
|
|
d758c79289 | ||
|
|
4d14eeea3a | ||
|
|
b2664e309a | ||
|
|
f45a2ce1d9 | ||
|
|
92a4084e95 | ||
|
|
56b7b47039 | ||
|
|
6494d7c29b | ||
|
|
e51504f881 | ||
|
|
f2ef4df762 | ||
|
|
51861c9a09 | ||
|
|
de7aeee351 | ||
|
|
8fe653d82f | ||
|
|
48dc26781d | ||
|
|
739734732e | ||
|
|
62d321b150 | ||
|
|
a68a1d29bb | ||
|
|
1f633f5ca2 | ||
|
|
3244ad4a8a | ||
|
|
bf07a16842 | ||
|
|
5dbc0e6f41 | ||
|
|
73f5a67c8a | ||
|
|
cd51276c16 | ||
|
|
fa8054adac | ||
|
|
e1b577b781 | ||
|
|
45b1a344f2 | ||
|
|
54663657bd | ||
|
|
8a1ff32fa7 | ||
|
|
30e9f3e2ef | ||
|
|
6889ce34a7 | ||
|
|
a7ea83af16 | ||
|
|
900ce1248c | ||
|
|
1137afebac | ||
|
|
6264e0d963 | ||
|
|
f16944d000 | ||
|
|
2534ca4ff7 | ||
|
|
bb10c55739 | ||
|
|
6de340bde6 | ||
|
|
40be60865b | ||
|
|
f154756439 | ||
|
|
76dd9a98e4 | ||
|
|
e2a87d0e14 | ||
|
|
1ddc696e78 | ||
|
|
5e85d560b0 | ||
|
|
f0f358a15c | ||
|
|
875efc883e | ||
|
|
24b5204560 | ||
|
|
c19184a55f | ||
|
|
96954983f0 | ||
|
|
9762f38868 | ||
|
|
4fba0f70c9 | ||
|
|
670a308c78 | ||
|
|
3e12966e84 | ||
|
|
cb4462b1ff | ||
|
|
3ef3f3f653 | ||
|
|
7416f15def | ||
|
|
54e38b114d | ||
|
|
728d609268 | ||
|
|
3e396c63ed | ||
|
|
4094457ab9 | ||
|
|
9a8c91562e | ||
|
|
94152afcac | ||
|
|
918276a1be | ||
|
|
53f54a450d | ||
|
|
a1a70274dd | ||
|
|
576e868996 | ||
|
|
f72ed0f706 | ||
|
|
742b63a8fa | ||
|
|
aa2172b396 | ||
|
|
f3e2fa8441 | ||
|
|
a3d132d26c | ||
|
|
a4afb0bfe9 | ||
|
|
67092d4ab9 | ||
|
|
07680592d2 | ||
|
|
844ec6bd4f | ||
|
|
c87bd182b0 | ||
|
|
6d2764933f | ||
|
|
d4672df208 | ||
|
|
4d1ea45a0f | ||
|
|
8e1c586a5c | ||
|
|
7690d3d672 | ||
|
|
8e8c206e3a | ||
|
|
d35a73c7a5 | ||
|
|
ec76eb2685 | ||
|
|
a1a6dc5801 | ||
|
|
708dccb015 | ||
|
|
4e739963d3 | ||
|
|
8bf3d9666f | ||
|
|
b856574d20 | ||
|
|
f696a54d2d | ||
|
|
ca766719d3 | ||
|
|
d027ff7d7e | ||
|
|
2785a67823 | ||
|
|
33671d6e52 | ||
|
|
7bfff29a79 | ||
|
|
aef1db49d6 | ||
|
|
09e5b175b8 | ||
|
|
37b4fa1e7b | ||
|
|
d63be072cc | ||
|
|
d22f421bc4 | ||
|
|
cb756cbf3a | ||
|
|
b24a3da2ed | ||
|
|
b0adc9efc7 | ||
|
|
c0a8118717 | ||
|
|
336dfad207 | ||
|
|
ef7199fd8b | ||
|
|
3481502c1a | ||
|
|
5b462a2559 | ||
|
|
6abb6f84ef | ||
|
|
2abc8b19b9 | ||
|
|
7c2b5468bd | ||
|
|
c829245b41 | ||
|
|
b05ae829cc | ||
|
|
8aa866f040 | ||
|
|
5a18ba4b06 | ||
|
|
707abe8c6d | ||
|
|
60eeeae759 | ||
|
|
ef2413f33d | ||
|
|
2943f4119c | ||
|
|
a298d6663b | ||
|
|
fa49874971 | ||
|
|
247cf9bd33 | ||
|
|
c6999e0794 | ||
|
|
877d26667b | ||
|
|
3e81b80bb1 | ||
|
|
47c82aba49 | ||
|
|
c627096503 | ||
|
|
9994235342 | ||
|
|
bfaa50aea4 | ||
|
|
0d09a21028 | ||
|
|
d480a735a0 | ||
|
|
2340cb7419 | ||
|
|
dbff2610ac | ||
|
|
9f399b8722 | ||
|
|
9a6f45756b | ||
|
|
bbbc5e22a5 | ||
|
|
8d3d6242d7 | ||
|
|
3182843a48 | ||
|
|
1dcdd8867a | ||
|
|
a3bf1ed3f6 | ||
|
|
10f8e4a662 | ||
|
|
bb1a45db27 | ||
|
|
5b5534bcb9 | ||
|
|
0090cc7d40 | ||
|
|
5014381cbd | ||
|
|
caf238d6df | ||
|
|
4602cb5bc1 | ||
|
|
1c39036cc8 | ||
|
|
6c224c79bf | ||
|
|
88c9bc4a27 | ||
|
|
659976b880 | ||
|
|
3959de68b1 | ||
|
|
fbe887b039 | ||
|
|
91798436cb | ||
|
|
34415f720d | ||
|
|
33b739f34f | ||
|
|
f3825c0bfb | ||
|
|
84f1c48159 | ||
|
|
514a972bcf | ||
|
|
f19a27065e | ||
|
|
324128e86a | ||
|
|
39fca59ea7 | ||
|
|
f07a6f6430 | ||
|
|
6c5ee14402 | ||
|
|
ec7ff3199d | ||
|
|
f400a5afe7 | ||
|
|
ea1702ace4 | ||
|
|
01b5569169 | ||
|
|
374cd5d4f7 | ||
|
|
c0cf9ab17d | ||
|
|
db0d3379cc | ||
|
|
42e7da2a4a | ||
|
|
30caac283a | ||
|
|
5da4cee22e | ||
|
|
ddfa2f5bf0 | ||
|
|
7d38ba866c | ||
|
|
a773786c9e | ||
|
|
43e16bf785 | ||
|
|
7906de1711 | ||
|
|
6c3ec20b3d | ||
|
|
902a086a4f | ||
|
|
91bf11a3e0 | ||
|
|
410456e173 | ||
|
|
9caf2a0d7e | ||
|
|
9525441dc0 | ||
|
|
f7b0dfb5bb | ||
|
|
549c03c2b4 | ||
|
|
91c5105a12 | ||
|
|
063483cfda | ||
|
|
a5953b8c87 | ||
|
|
c568276df6 | ||
|
|
19405b7f8d | ||
|
|
2e89dcc73a | ||
|
|
d3fe2e2bc6 | ||
|
|
5c18e03bad | ||
|
|
11a7a1f48d | ||
|
|
d24ec8296f | ||
|
|
2c1727e495 | ||
|
|
b9e7a4ba84 | ||
|
|
165a9b4e88 | ||
|
|
55cba3e16a | ||
|
|
1cbf0f4582 | ||
|
|
0911e70a69 | ||
|
|
2bf47a2aed | ||
|
|
f400416a7c | ||
|
|
3bee121686 | ||
|
|
4a375ec5a3 | ||
|
|
0b683f33e1 | ||
|
|
c9f6246cd3 | ||
|
|
84222f0d98 | ||
|
|
701edbeaff | ||
|
|
6da155d4f3 | ||
|
|
a7ba39a43c | ||
|
|
9caf9ab2fa | ||
|
|
ffd470f2b4 | ||
|
|
b11bbf0130 | ||
|
|
902341bd78 | ||
|
|
95f03c74c1 | ||
|
|
cac9e947f7 | ||
|
|
693ad05352 | ||
|
|
26bdd2253a | ||
|
|
76586baba5 | ||
|
|
ae0a2e2564 | ||
|
|
a4e3474563 | ||
|
|
84dcc95fc0 | ||
|
|
2363a5c51f | ||
|
|
f224d0718b | ||
|
|
c84e01646c | ||
|
|
c66f5cbb54 | ||
|
|
d2acacb531 | ||
|
|
e5ac560966 | ||
|
|
6e1af36a63 | ||
|
|
2b8497133e | ||
|
|
45b141fd57 | ||
|
|
3e3c1078d7 | ||
|
|
43a5014564 | ||
|
|
0a2d15e417 | ||
|
|
16c52a5e11 | ||
|
|
5f1e63e370 | ||
|
|
a14f2697fb | ||
|
|
7d871c5d49 | ||
|
|
7ac6bd6a9c | ||
|
|
0d036bb7c0 | ||
|
|
1333ece2b1 | ||
|
|
d3f7818710 | ||
|
|
1f0a4429e3 | ||
|
|
346800d356 | ||
|
|
fcee6b5be3 | ||
|
|
49c595319b | ||
|
|
57d25431bd | ||
|
|
93f2e706c5 | ||
|
|
77bc646991 | ||
|
|
8e97914834 | ||
|
|
9c29cbb409 | ||
|
|
273e56cb35 | ||
|
|
87081b0a33 | ||
|
|
b93e987011 | ||
|
|
ea940e93ba | ||
|
|
26dac5e853 | ||
|
|
afd3656302 | ||
|
|
a1ef80b2c0 | ||
|
|
afa2aef4c6 | ||
|
|
9068143239 | ||
|
|
238dbfc3c4 | ||
|
|
ff15a3a8cf | ||
|
|
316bfbcc08 | ||
|
|
f04548f9ab | ||
|
|
866b8fed83 | ||
|
|
a143887375 | ||
|
|
6d941a3841 | ||
|
|
ae0dbbf02a | ||
|
|
b09f6ce5c5 | ||
|
|
3d81d7870a | ||
|
|
34bc9d45a0 | ||
|
|
3491926e7c | ||
|
|
2d42525092 | ||
|
|
1685d0f045 | ||
|
|
90eb51e96b | ||
|
|
17c7571915 | ||
|
|
23921c7f7c | ||
|
|
4d14b950fe | ||
|
|
839886531a | ||
|
|
cc00e1eff9 | ||
|
|
9ec66109a1 | ||
|
|
11e326ec80 | ||
|
|
87e2917d48 | ||
|
|
09ef9717ed | ||
|
|
1054360d8d | ||
|
|
3c6c49e493 | ||
|
|
e94ad57058 | ||
|
|
2cbc6fad11 | ||
|
|
360d6e9dcb | ||
|
|
9f8f9ceaa5 | ||
|
|
72d1f849dd | ||
|
|
04c54204b5 | ||
|
|
5dacbe18a3 | ||
|
|
559f5a9a9d | ||
|
|
808862c520 | ||
|
|
f91fbf6cf0 | ||
|
|
8cb4709cd7 | ||
|
|
93e0c8742a | ||
|
|
d9adbda6f6 | ||
|
|
40ab816dcb | ||
|
|
71ce4f8b20 | ||
|
|
c33dae658a | ||
|
|
a569a34005 | ||
|
|
cfd0f0302e | ||
|
|
0769899b55 | ||
|
|
99e17d32e1 | ||
|
|
6e1ad9f768 | ||
|
|
55bb33b4ce | ||
|
|
62d30fb6e9 | ||
|
|
a839cc9f49 | ||
|
|
3c6e7665fa | ||
|
|
e1935fb659 | ||
|
|
d1a6873bc0 | ||
|
|
38e60678e1 | ||
|
|
7fb068517a | ||
|
|
cbe11ce5dc | ||
|
|
1aee8a963a | ||
|
|
6fc87d9ae9 | ||
|
|
111833f5d3 | ||
|
|
9fa28760fa | ||
|
|
a027506ad2 | ||
|
|
3214f11375 | ||
|
|
8aedd7c78a | ||
|
|
9c2b2c6a13 | ||
|
|
60a1b8f76b | ||
|
|
3781470afb | ||
|
|
d3cd3465c7 | ||
|
|
6e69fb3872 | ||
|
|
9f376e93b2 | ||
|
|
b5f487fe2f | ||
|
|
add263620e | ||
|
|
0af1e7004d | ||
|
|
253ce1054f | ||
|
|
46b55f6303 | ||
|
|
8b1331770d | ||
|
|
03b002126a | ||
|
|
0290ff1b11 | ||
|
|
0c64cea220 | ||
|
|
9849769c7b | ||
|
|
fd8cdb94bc | ||
|
|
b1ca1a9351 | ||
|
|
b02f4d7703 | ||
|
|
3042b0659e | ||
|
|
2832f7123d | ||
|
|
54061f64a8 | ||
|
|
46557c0f91 | ||
|
|
d71527cff1 |
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -10,6 +10,8 @@
|
||||
*.icns filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.bin filter=lfs diff=lfs merge=lfs -text
|
||||
*.btxbook filter=lfs diff=lfs merge=lfs -text
|
||||
*.btxform filter=lfs diff=lfs merge=lfs -text
|
||||
|
||||
*.tga binary diff=hex
|
||||
*.kra binary diff=hex
|
||||
|
||||
2
.github/FUNDING.yml
vendored
Normal file
2
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
github: [curioustorvald]
|
||||
custom: ["https://paypal.me/curioustorvald"]
|
||||
99
.github/workflows/codeql.yml
vendored
Normal file
99
.github/workflows/codeql.yml
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL Advanced"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "master" ]
|
||||
pull_request:
|
||||
branches: [ "master" ]
|
||||
schedule:
|
||||
- cron: '41 4 * * 0'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze (${{ matrix.language }})
|
||||
# Runner size impacts CodeQL analysis time. To learn more, please see:
|
||||
# - https://gh.io/recommended-hardware-resources-for-running-codeql
|
||||
# - https://gh.io/supported-runners-and-hardware-resources
|
||||
# - https://gh.io/using-larger-runners (GitHub.com only)
|
||||
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
|
||||
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
|
||||
permissions:
|
||||
# required for all workflows
|
||||
security-events: write
|
||||
|
||||
# required to fetch internal or private CodeQL packs
|
||||
packages: read
|
||||
|
||||
# only required for workflows in private repositories
|
||||
actions: read
|
||||
contents: read
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- language: java-kotlin
|
||||
build-mode: none
|
||||
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
|
||||
# Use `c-cpp` to analyze code written in C, C++ or both
|
||||
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
|
||||
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
|
||||
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
|
||||
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
|
||||
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
|
||||
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Add any setup steps before running the `github/codeql-action/init` action.
|
||||
# This includes steps like installing compilers or runtimes (`actions/setup-node`
|
||||
# or others). This is typically only required for manual builds.
|
||||
# - name: Setup runtime (example)
|
||||
# uses: actions/setup-example@v1
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v4
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
build-mode: ${{ matrix.build-mode }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
|
||||
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
||||
# queries: security-extended,security-and-quality
|
||||
|
||||
# If the analyze step fails for one of the languages you are analyzing with
|
||||
# "We were unable to automatically build your code", modify the matrix above
|
||||
# to set the build mode to "manual" for that language. Then modify this step
|
||||
# to build your code.
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||
- name: Run manual build steps
|
||||
if: matrix.build-mode == 'manual'
|
||||
shell: bash
|
||||
run: |
|
||||
echo 'If you are using a "manual" build mode for one or more of the' \
|
||||
'languages you are analyzing, replace this with the commands to build' \
|
||||
'your code, for example:'
|
||||
echo ' make bootstrap'
|
||||
echo ' make release'
|
||||
exit 1
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v4
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
||||
124
.idea/artifacts/SpriteAssemblerApp.xml
generated
124
.idea/artifacts/SpriteAssemblerApp.xml
generated
@@ -1,7 +1,7 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="jar" name="SpriteAssemblerApp">
|
||||
<output-path>$PROJECT_DIR$/out</output-path>
|
||||
<root id="archive" name="terrarum.terrarum.jar">
|
||||
<root id="archive" name="SpriteAssemblerApp.jar">
|
||||
<element id="directory" name="META-INF">
|
||||
<element id="file-copy" path="$PROJECT_DIR$/src/net/torvald/terrarum/spriteassembler/META-INF/MANIFEST.MF" />
|
||||
</element>
|
||||
@@ -25,62 +25,72 @@
|
||||
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk7.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/graal-sdk-22.3.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/icu4j-71.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-22.3.1-edit.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-scriptengine-22.3.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/regex-22.3.1-edit.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-api-22.3.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-1.12.0.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.12.0.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/polyglot-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-language-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-scriptengine-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/regex-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-api-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-runtime-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-compiler-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/compiler-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/compiler-management-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/icu4j-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/collections-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/word-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/nativeimage-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jniutils-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-1.12.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.12.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jlayer-1.0.1-gdx.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jorbis-0.0.17.jar" path-in-jar="/" />
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
||||
141
.idea/artifacts/TerrarumBuild.xml
generated
141
.idea/artifacts/TerrarumBuild.xml
generated
@@ -13,83 +13,88 @@
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-controllers-desktop-2.2.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/GetCpuName.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jxinput-1.0.0.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-csv-1.8.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/prtree.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/Terrarum_Joise.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/TerrarumSansBitmap.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-jnigen-loader-2.3.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-scriptengine-22.3.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-api-22.3.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/icu4j-71.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/regex-22.3.1-edit.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-22.3.1-edit.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/graal-sdk-22.3.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/polyglot-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-language-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-scriptengine-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/regex-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-api-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-runtime-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-compiler-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/compiler-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/compiler-management-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/icu4j-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/collections-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/word-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/nativeimage-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jniutils-23.1.10.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-math3-3.6.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-1.12.0.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.12.0.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-platform-1.12.0-natives-arm64-v8a.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-platform-1.12.0-natives-desktop.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-platform-1.12.0-natives-x86_64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/JTransforms-3.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/JLargeArrays-1.5.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/aircompressor-0.25.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.22/kotlin-stdlib-1.8.22.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.22/kotlin-stdlib-common-1.8.22.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-test/1.8.22/kotlin-test-1.8.22.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-1.12.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.12.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-linux.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-linux-arm32.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-linux-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-macos.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-macos-arm64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-windows.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-windows-x86.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-platform-1.12.1-natives-arm64-v8a.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-platform-1.12.1-natives-desktop.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-platform-1.12.1-natives-x86_64.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/TerranVirtualDisk.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/2.0.0/kotlin-stdlib-jdk8-2.0.0.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/2.0.0/kotlin-stdlib-2.0.0.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/2.0.0/kotlin-stdlib-jdk7-2.0.0.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/GetBatteryStatus.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/aircompressor-2.0.2.jar" path-in-jar="/" />
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
||||
1
.idea/codeStyles/Project.xml
generated
1
.idea/codeStyles/Project.xml
generated
@@ -1,5 +1,6 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<option name="RIGHT_MARGIN" value="999" />
|
||||
<JetCodeStyleSettings>
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
</JetCodeStyleSettings>
|
||||
|
||||
8
.idea/kotlinc.xml
generated
8
.idea/kotlinc.xml
generated
@@ -1,13 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Kotlin2JvmCompilerArguments">
|
||||
<option name="jvmTarget" value="17" />
|
||||
<option name="jvmTarget" value="1.8" />
|
||||
</component>
|
||||
<component name="KotlinCommonCompilerArguments">
|
||||
<option name="apiVersion" value="1.8" />
|
||||
<option name="languageVersion" value="1.8" />
|
||||
<option name="apiVersion" value="2.0" />
|
||||
<option name="languageVersion" value="2.0" />
|
||||
</component>
|
||||
<component name="KotlinJpsPluginSettings">
|
||||
<option name="version" value="1.8.0" />
|
||||
<option name="version" value="2.0.0" />
|
||||
</component>
|
||||
</project>
|
||||
9
.idea/libraries/GetBatteryStatus.xml
generated
Normal file
9
.idea/libraries/GetBatteryStatus.xml
generated
Normal file
@@ -0,0 +1,9 @@
|
||||
<component name="libraryTable">
|
||||
<library name="GetBatteryStatus">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/GetBatteryStatus.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
23
.idea/libraries/KotlinJavaRuntime.xml
generated
23
.idea/libraries/KotlinJavaRuntime.xml
generated
@@ -1,26 +1,23 @@
|
||||
<component name="libraryTable">
|
||||
<library name="KotlinJavaRuntime" type="repository">
|
||||
<properties maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22" />
|
||||
<properties maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.0" />
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.22/kotlin-stdlib-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.22/kotlin-stdlib-common-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/2.0.0/kotlin-stdlib-jdk8-2.0.0.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/2.0.0/kotlin-stdlib-2.0.0.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/2.0.0/kotlin-stdlib-jdk7-2.0.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.22/kotlin-stdlib-1.8.22-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.22/kotlin-stdlib-common-1.8.22-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/2.0.0/kotlin-stdlib-jdk8-2.0.0-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/2.0.0/kotlin-stdlib-2.0.0-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/2.0.0/kotlin-stdlib-jdk7-2.0.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.22/kotlin-stdlib-1.8.22-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.22/kotlin-stdlib-common-1.8.22-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/2.0.0/kotlin-stdlib-jdk8-2.0.0-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/2.0.0/kotlin-stdlib-2.0.0-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/2.0.0/kotlin-stdlib-jdk7-2.0.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
11
.idea/libraries/TerranVirtualDisk.xml
generated
Normal file
11
.idea/libraries/TerranVirtualDisk.xml
generated
Normal file
@@ -0,0 +1,11 @@
|
||||
<component name="libraryTable">
|
||||
<library name="TerranVirtualDisk">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/TerranVirtualDisk.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/TerranVirtualDisk-src.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
8
.idea/libraries/badlogicgames_gdx.xml
generated
8
.idea/libraries/badlogicgames_gdx.xml
generated
@@ -1,16 +1,16 @@
|
||||
<component name="libraryTable">
|
||||
<library name="badlogicgames.gdx" type="repository">
|
||||
<properties maven-id="com.badlogicgames.gdx:gdx:1.12.0" />
|
||||
<properties maven-id="com.badlogicgames.gdx:gdx:1.12.1" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.12.0.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.12.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-jnigen-loader-2.3.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.12.0-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.12.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-jnigen-loader-2.3.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.12.0-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.12.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-jnigen-loader-2.3.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
|
||||
302
.idea/libraries/badlogicgames_gdx_backend_lwjgl3.xml
generated
302
.idea/libraries/badlogicgames_gdx_backend_lwjgl3.xml
generated
@@ -1,168 +1,168 @@
|
||||
<component name="libraryTable">
|
||||
<library name="badlogicgames.gdx.backend.lwjgl3" type="repository">
|
||||
<properties maven-id="com.badlogicgames.gdx:gdx-backend-lwjgl3:1.12.0" />
|
||||
<properties maven-id="com.badlogicgames.gdx:gdx-backend-lwjgl3:1.12.1" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.12.0.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.12.0.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.12.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.12.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-jnigen-loader-2.3.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-linux-arm32.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-linux-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-macos-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-natives-windows-x86.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-linux-arm32.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-linux-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-macos-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-natives-windows-x86.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-linux-arm32.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-linux-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-macos-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-natives-windows-x86.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-linux-arm32.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-linux-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-macos-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-natives-windows-x86.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-linux-arm32.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-linux-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-macos-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-natives-windows-x86.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-linux-arm32.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-linux-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-macos-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-natives-windows-x86.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-linux-arm32.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-linux-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-macos-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-natives-windows-x86.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-linux-arm32.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-linux-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-macos-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-natives-windows-x86.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-linux-arm32.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-linux-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-macos-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-natives-windows-x86.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-linux-arm32.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-linux-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-macos-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-natives-windows-x86.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-linux-arm32.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-linux-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-macos-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-natives-windows-x86.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-linux-arm32.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-linux-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-macos-arm64.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-natives-windows-x86.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jlayer-1.0.1-gdx.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jorbis-0.0.17.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.12.0-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.12.0-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.12.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.12.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-jnigen-loader-2.3.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jlayer-1.0.1-gdx-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jorbis-0.0.17-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.12.0-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.12.0-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.12.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.12.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-jnigen-loader-2.3.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.2-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-stb-3.3.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jlayer-1.0.1-gdx-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jorbis-0.0.17-sources.jar!/" />
|
||||
</SOURCES>
|
||||
|
||||
11
.idea/libraries/gdx_platform_1_12_0_natives.xml
generated
11
.idea/libraries/gdx_platform_1_12_0_natives.xml
generated
@@ -1,11 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="gdx-platform-1.12.0-natives">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-platform-1.12.0-natives-arm64-v8a.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-platform-1.12.0-natives-desktop.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-platform-1.12.0-natives-x86_64.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
11
.idea/libraries/gdx_platform_1_12_1_natives_arm64_v8a.xml
generated
Normal file
11
.idea/libraries/gdx_platform_1_12_1_natives_arm64_v8a.xml
generated
Normal file
@@ -0,0 +1,11 @@
|
||||
<component name="libraryTable">
|
||||
<library name="gdx-platform-1.12.1-natives-arm64-v8a">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-platform-1.12.1-natives-arm64-v8a.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-platform-1.12.1-natives-desktop.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-platform-1.12.1-natives-x86_64.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
62
.idea/libraries/graalvm_js_22_3_1.xml
generated
62
.idea/libraries/graalvm_js_22_3_1.xml
generated
@@ -1,28 +1,52 @@
|
||||
<component name="libraryTable">
|
||||
<library name="graalvm-js 22.3.1">
|
||||
<library name="graalvm-js 23.1.10">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/graal-sdk-22.3.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/icu4j-71.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/js-22.3.1-edit.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/js-scriptengine-22.3.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/regex-22.3.1-edit.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/truffle-api-22.3.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/polyglot-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/icu4j-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/js-language-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/js-scriptengine-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/regex-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/truffle-api-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/truffle-runtime-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/truffle-compiler-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/compiler-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/compiler-management-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/collections-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/word-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/nativeimage-23.1.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jniutils-23.1.10.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/graal-sdk-22.3.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/icu4j-71.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/js-22.3.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/js-scriptengine-22.3.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/regex-22.3.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/truffle-api-22.3.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/polyglot-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/icu4j-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/js-language-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/js-scriptengine-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/regex-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/truffle-api-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/truffle-runtime-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/truffle-compiler-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/compiler-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/compiler-management-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/collections-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/word-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/nativeimage-23.1.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jniutils-23.1.10-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/graal-sdk-22.3.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/icu4j-71.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/js-22.3.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/js-scriptengine-22.3.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/regex-22.3.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/truffle-api-22.3.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/polyglot-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/icu4j-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/js-language-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/js-scriptengine-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/regex-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/truffle-api-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/truffle-runtime-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/truffle-compiler-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/compiler-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/compiler-management-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/collections-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/word-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/nativeimage-23.1.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jniutils-23.1.10-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
8
.idea/libraries/io_airlift_aircompressor.xml
generated
8
.idea/libraries/io_airlift_aircompressor.xml
generated
@@ -1,14 +1,14 @@
|
||||
<component name="libraryTable">
|
||||
<library name="io.airlift.aircompressor" type="repository">
|
||||
<properties maven-id="io.airlift:aircompressor:0.25" />
|
||||
<properties maven-id="io.airlift:aircompressor:2.0.2" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/aircompressor-0.25.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/aircompressor-2.0.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/aircompressor-0.25-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/aircompressor-2.0.2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/aircompressor-0.25-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/aircompressor-2.0.2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
.idea/libraries/jetbrains_kotlin_reflect.xml
generated
13
.idea/libraries/jetbrains_kotlin_reflect.xml
generated
@@ -1,13 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="jetbrains.kotlin.reflect" type="repository">
|
||||
<properties maven-id="org.jetbrains.kotlin:kotlin-reflect:1.8.22" />
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-reflect/1.8.22/kotlin-reflect-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.22/kotlin-stdlib-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.22/kotlin-stdlib-common-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
26
.idea/libraries/jetbrains_kotlin_test.xml
generated
26
.idea/libraries/jetbrains_kotlin_test.xml
generated
@@ -1,26 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="jetbrains.kotlin.test" type="repository">
|
||||
<properties maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22" />
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.22/kotlin-stdlib-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.22/kotlin-stdlib-common-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.22/kotlin-stdlib-1.8.22-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.22/kotlin-stdlib-common-1.8.22-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.22/kotlin-stdlib-jdk8-1.8.22-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.22/kotlin-stdlib-1.8.22-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.22/kotlin-stdlib-common-1.8.22-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.22/kotlin-stdlib-jdk7-1.8.22-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
.idea/libraries/jetbrains_kotlin_test1.xml
generated
13
.idea/libraries/jetbrains_kotlin_test1.xml
generated
@@ -1,13 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="jetbrains.kotlin.test1" type="repository">
|
||||
<properties maven-id="org.jetbrains.kotlin:kotlin-test:1.8.22" />
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-test/1.8.22/kotlin-test-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.22/kotlin-stdlib-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.22/kotlin-stdlib-common-1.8.22.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -38,7 +38,7 @@
|
||||
<property name="caretWidth" class="java.lang.Integer" />
|
||||
</properties>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
<component name="SuppressKotlinCodeStyleNotification">
|
||||
|
||||
1
.idea/runConfigurations/Build_Version_Number.xml
generated
1
.idea/runConfigurations/Build_Version_Number.xml
generated
@@ -1,7 +1,6 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Build Version Number" type="Application" factoryName="Application">
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="17" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
|
||||
<option name="MAIN_CLASS_NAME" value="net.torvald.terrarum.PrebuildKt" />
|
||||
<module name="TerrarumBuild" />
|
||||
<method v="2">
|
||||
|
||||
1
.idea/runConfigurations/QuickDirtyLint.xml
generated
1
.idea/runConfigurations/QuickDirtyLint.xml
generated
@@ -1,7 +1,6 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="QuickDirtyLint" type="Application" factoryName="Application">
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="17" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
|
||||
<option name="MAIN_CLASS_NAME" value="net.torvald.terrarum.QuickDirtyLintKt" />
|
||||
<module name="TerrarumBuild" />
|
||||
<method v="2">
|
||||
|
||||
3
.idea/runConfigurations/SpriteAssemblerApp.xml
generated
3
.idea/runConfigurations/SpriteAssemblerApp.xml
generated
@@ -1,9 +1,8 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="SpriteAssemblerApp" type="JarApplication">
|
||||
<option name="JAR_PATH" value="$PROJECT_DIR$/out/SpriteAssemblerApp.jar" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="VM_PARAMETERS" value="-ea --upgrade-module-path=lib/compiler-23.1.10.jar:lib/compiler-management-23.1.10.jar:lib/truffle-compiler-23.1.10.jar:lib/truffle-api-23.1.10.jar:lib/truffle-runtime-23.1.10.jar:lib/polyglot-23.1.10.jar:lib/collections-23.1.10.jar:lib/word-23.1.10.jar:lib/nativeimage-23.1.10.jar:lib/jniutils-23.1.10.jar -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI --add-exports=java.base/jdk.internal.misc=jdk.internal.vm.compiler" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="17" />
|
||||
<module name="TerrarumBuild" />
|
||||
<method v="2">
|
||||
|
||||
3
.idea/runConfigurations/Terrarum.xml
generated
3
.idea/runConfigurations/Terrarum.xml
generated
@@ -1,9 +1,8 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Terrarum" type="JarApplication">
|
||||
<option name="JAR_PATH" value="$PROJECT_DIR$/out/TerrarumBuild.jar" />
|
||||
<option name="VM_PARAMETERS" value="-ea -Dswing.aatext=true -Dawt.useSystemAAFontSettings=lcd" />
|
||||
<option name="VM_PARAMETERS" value="-ea --upgrade-module-path=lib/compiler-23.1.10.jar:lib/compiler-management-23.1.10.jar:lib/truffle-compiler-23.1.10.jar:lib/truffle-api-23.1.10.jar:lib/truffle-runtime-23.1.10.jar:lib/polyglot-23.1.10.jar:lib/collections-23.1.10.jar:lib/word-23.1.10.jar:lib/nativeimage-23.1.10.jar:lib/jniutils-23.1.10.jar -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI --add-exports=java.base/jdk.internal.misc=jdk.internal.vm.compiler -Dswing.aatext=true -Dawt.useSystemAAFontSettings=lcd" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="17" />
|
||||
<module name="TerrarumBuild" />
|
||||
<method v="2">
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Terrarum (no DEV MODE)" type="JarApplication">
|
||||
<option name="JAR_PATH" value="$PROJECT_DIR$/out/TerrarumBuild.jar" />
|
||||
<option name="VM_PARAMETERS" value="-Dswing.aatext=true -Dawt.useSystemAAFontSettings=lcd" />
|
||||
<option name="VM_PARAMETERS" value="--upgrade-module-path=lib/compiler-23.1.10.jar:lib/compiler-management-23.1.10.jar:lib/truffle-compiler-23.1.10.jar:lib/truffle-api-23.1.10.jar:lib/truffle-runtime-23.1.10.jar:lib/polyglot-23.1.10.jar:lib/collections-23.1.10.jar:lib/word-23.1.10.jar:lib/nativeimage-23.1.10.jar:lib/jniutils-23.1.10.jar -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI --add-exports=java.base/jdk.internal.misc=jdk.internal.vm.compiler -Dswing.aatext=true -Dawt.useSystemAAFontSettings=lcd" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="17" />
|
||||
<module name="TerrarumBuild" />
|
||||
<method v="2">
|
||||
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Build Version Number" run_configuration_type="Application" />
|
||||
<option name="BuildArtifacts" enabled="true">
|
||||
<artifact name="ModuleComputers" />
|
||||
<artifact name="MusicPlayer" />
|
||||
<artifact name="TerrarumBuild" />
|
||||
</option>
|
||||
<option name="RunConfigurationTask" enabled="true" run_configuration_name="QuickDirtyLint" run_configuration_type="Application" />
|
||||
|
||||
16
.idea/runConfigurations/Terrarum__no_prebuild__release_mode_assets_.xml
generated
Normal file
16
.idea/runConfigurations/Terrarum__no_prebuild__release_mode_assets_.xml
generated
Normal file
@@ -0,0 +1,16 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Terrarum (no prebuild, release-mode assets)" type="JarApplication">
|
||||
<option name="JAR_PATH" value="$PROJECT_DIR$/out/TerrarumBuild.jar" />
|
||||
<option name="VM_PARAMETERS" value="-ea --upgrade-module-path=lib/compiler-23.1.10.jar:lib/compiler-management-23.1.10.jar:lib/truffle-compiler-23.1.10.jar:lib/truffle-api-23.1.10.jar:lib/truffle-runtime-23.1.10.jar:lib/polyglot-23.1.10.jar:lib/collections-23.1.10.jar:lib/word-23.1.10.jar:lib/nativeimage-23.1.10.jar:lib/jniutils-23.1.10.jar -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI --add-exports=java.base/jdk.internal.misc=jdk.internal.vm.compiler -Dswing.aatext=true -Dawt.useSystemAAFontSettings=lcd" />
|
||||
<option name="PROGRAM_PARAMETERS" value="--assets buildapp/out/assets.tevd" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="17" />
|
||||
<module name="TerrarumBuild" />
|
||||
<method v="2">
|
||||
<option name="BuildArtifacts" enabled="true">
|
||||
<artifact name="TerrarumBuild" />
|
||||
</option>
|
||||
<option name="RunConfigurationTask" enabled="false" run_configuration_name="QuickDirtyLint" run_configuration_type="Application" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
||||
1
.idea/vcs.xml
generated
1
.idea/vcs.xml
generated
@@ -2,5 +2,6 @@
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/Terrarum.wiki" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
176
CLAUDE.md
Normal file
176
CLAUDE.md
Normal file
@@ -0,0 +1,176 @@
|
||||
# Terrarum
|
||||
|
||||
A modular 2D side-scrolling tilemap platformer engine and game, built on LibGDX with Kotlin/Java. GPL-3.0.
|
||||
|
||||
## Build & Run
|
||||
|
||||
- **IDE**: IntelliJ IDEA (project files: `Terrarum_renewed.iml`, `TerrarumBuild.iml`)
|
||||
- **JDK**: 21
|
||||
- **Language**: Kotlin + Java mixed; Kotlin is primary, `App.java` and `FrameBufferManager.java` are Java
|
||||
- **Dependencies**: All libraries are in `lib/` (fat-jar approach, no Maven/Gradle). Includes LibGDX, GraalVM JS (modified), dyn4j (Vector2 only), custom bitmap font lib
|
||||
- **Entry point**: `net.torvald.terrarum.Principii.main()` (Java) which launches `App` (the LibGDX `ApplicationListener`)
|
||||
- **Distribution**: `buildapp/` scripts produce per-platform bundles with jlink'd runtimes
|
||||
- **Assets**: `assets/` for development, `assets_release/` for distribution. Custom `.tevd` archive format for release assets (`AssetCache.kt`)
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
src/net/torvald/terrarum/
|
||||
App.java -- Main application class (LibGDX ApplicationListener). GL thread, render loop, splash screen
|
||||
CommonResourcePool.kt -- Thread-safe GL resource loading with dispatch queues
|
||||
ModMgr.kt -- Module manager. Scans/loads game modules, provides getGdxFile/getJavaClass
|
||||
IngameInstance.kt -- Base class for game screens (show/hide/render/resize lifecycle)
|
||||
Terrarum.kt -- Game-level singleton (ingame instance management, extension functions)
|
||||
GameUpdateGovernor.kt -- Update/render tick governors (ConsistentUpdateRate, Anarchy)
|
||||
MusicService.kt -- Music playback management
|
||||
|
||||
modulebasegame/
|
||||
EntryPoint.kt -- Basegame module entry point (registers items, fixtures, blocks, weather)
|
||||
TitleScreen.kt -- Title screen (demo world rendering, async loading)
|
||||
TerrarumIngame.kt -- Main gameplay screen
|
||||
IngameRenderer.kt -- World rendering pipeline (FBO composition, lightmap, blur, shadows)
|
||||
BuildingMaker.kt -- Building editor screen
|
||||
|
||||
worlddrawer/
|
||||
WorldCamera.kt -- Camera position tracking (follows player, interpolated movement)
|
||||
LightmapRenderer.kt -- Per-tile RGB+UV light calculation and rasterisation
|
||||
BlocksDrawer.kt -- Tile rendering
|
||||
FeaturesDrawer.kt -- Wire/feature overlay rendering
|
||||
|
||||
gamecontroller/
|
||||
IME.kt -- Input Method Engine (GraalVM JS keyboard layouts, loaded on daemon thread)
|
||||
|
||||
weather/
|
||||
WeatherMixer.kt -- Weather state machine, skybox rendering
|
||||
SkyboxModelHosek.kt -- Physically-based sky model
|
||||
```
|
||||
|
||||
## Architecture: Threading & GL Dispatch
|
||||
|
||||
All OpenGL calls (Texture, ShaderProgram, FrameBuffer creation) **must** happen on the GL thread. The codebase uses a dispatch mechanism to safely create GL resources from background threads.
|
||||
|
||||
### CommonResourcePool (the dispatch hub)
|
||||
|
||||
```
|
||||
Background Thread GL Thread (App.render)
|
||||
| |
|
||||
|-- addToLoadingList("name", { Texture() })|
|
||||
|-- loadAll() |
|
||||
| | |
|
||||
| +-- if on GL thread: run directly |
|
||||
| +-- if not: enqueue to |
|
||||
| glDispatchQueue + latch.await() |
|
||||
| CommonResourcePool.update()
|
||||
| |-- poll glDispatchQueue
|
||||
| | run loadfun, latch.countDown()
|
||||
| |-- poll glRunnableQueue
|
||||
| | run block, latch.countDown()
|
||||
| |-- poll slowLoadingQueue (one per tick)
|
||||
| |
|
||||
+-- latch released, continues <------------+
|
||||
```
|
||||
|
||||
Key methods:
|
||||
- `loadAll()` -- batch load; blocks background thread until GL thread processes
|
||||
- `loadAllSlowly()` -- timesliced; one resource per tick via `update()`
|
||||
- `runOnGLThread { }` -- run arbitrary block on GL thread, blocking caller
|
||||
- `update()` -- called every tick from `App.render()`, processes all queues
|
||||
- `getOrPut(name, loadfun, killfun)` -- thread-safe get-or-create with GL dispatch
|
||||
|
||||
### App.java Boot Sequence
|
||||
|
||||
```
|
||||
create()
|
||||
-> postInit() [GL thread, synchronous]
|
||||
|-- load shaders, fonts, audio device, IME
|
||||
|-- CommonResourcePool.setGLThread(currentThread)
|
||||
|-- spawn Terrarum-PostInitLoader thread:
|
||||
| ModMgr.invoke() // module entry points (dispatched to GL via runOnGLThread)
|
||||
| CommonResourcePool.loadAllSlowly() // timesliced resource loading
|
||||
| loadingThreadDone = true
|
||||
+-- return (non-blocking)
|
||||
|
||||
render() loop [GL thread]
|
||||
while currentScreen == null:
|
||||
|-- drawSplash()
|
||||
|-- CommonResourcePool.update() // process GL dispatch queues
|
||||
|-- when loadingThreadDone && loaded:
|
||||
| postLoadInit() // tile atlas, audio mixer, Terrarum.initialise()
|
||||
| setScreen(titleScreen) // transitions to title screen
|
||||
```
|
||||
|
||||
### TitleScreen Async Loading
|
||||
|
||||
`TitleScreen.show()` returns immediately after starting a background thread. The splash screen continues displaying until all loading completes.
|
||||
|
||||
```
|
||||
show()
|
||||
|-- quick GL setup (viewport, input processor, FBO, savegame list)
|
||||
|-- spawn Terrarum-TitleScreenLoader thread:
|
||||
| load demo world, compute camera nodes, bogoflops, audio reset
|
||||
| backgroundLoadDone = true
|
||||
+-- return
|
||||
|
||||
renderImpl() [GL thread, every frame]
|
||||
if !loadDone:
|
||||
|-- App.drawSplash()
|
||||
|-- processGLLoadStep() // state machine, one step per frame:
|
||||
| 0: wait for backgroundLoadDone
|
||||
| 1: SkyboxModelHosek.loadlut()
|
||||
| 2: IngameRenderer.setRenderedWorld + WeatherMixer init
|
||||
| 3: load halfgrad texture
|
||||
| 4: UIFakeGradOverlay
|
||||
| 5: UIFakeBlurOverlay
|
||||
| 6: UIRemoCon
|
||||
| 7: MusicService.enterScene, gameUpdateGovernor.reset(), loadDone=true
|
||||
else:
|
||||
normal title screen rendering (world + UI via IngameRenderer)
|
||||
```
|
||||
|
||||
### IME Loading
|
||||
|
||||
`IME.kt` object `init {}` spawns a `Terrarum-IMELoader` daemon thread for GraalVM JS context binding and key layout/IME file scanning. Icon texture loading remains synchronous (requires GL thread).
|
||||
|
||||
### ModMgr Class Initialisation
|
||||
|
||||
`ModMgr.kt` object `init {}` only does metadata loading and class instantiation (fast). The heavy `invoke()` method runs entry points wrapped in `CommonResourcePool.runOnGLThread { }` to avoid GL calls on the wrong thread. This separation prevents `<clinit>` lock deadlocks where a background thread holding the class init lock blocks on a GL dispatch latch while the GL thread tries to access the same class.
|
||||
|
||||
## Architecture: Rendering Pipeline
|
||||
|
||||
### IngameRenderer
|
||||
|
||||
Singleton object. Lazily initialised on first `invoke()` call via `invokeInit()`.
|
||||
|
||||
Render path (per frame):
|
||||
1. `LightmapRenderer.recalculate()` -- every 3 frames, computes per-tile RGBA light values
|
||||
2. `prepLightmapRGBA()` -- Kawase blur on lightmap into `lightmapFbo`
|
||||
3. `BlocksDrawer.renderData()` -- prepare tile draw data
|
||||
4. `drawToRGB()` -- render world tiles + actors into `fboRGB` (with shadow FBOs)
|
||||
5. `drawToA()` -- render alpha/glow channel
|
||||
6. Composite: sky -> world -> light multiply -> emissive blend -> vibrancy -> UI
|
||||
7. Output to `App.renderFBO`, then `TerrarumPostProcessor.draw()` applies final effects
|
||||
|
||||
**Critical ordering in `resize()`**: `BlocksDrawer.resize()` and `LightmapRenderer.resize()` must be called **before** `lightmapFbo` creation, because `lightmapFbo` dimensions derive from `LightmapRenderer.lightBuffer` size.
|
||||
|
||||
### WorldCamera
|
||||
|
||||
Follows an `ActorWithBody` (player or camera actor). Position interpolated per frame. `WorldCamera.x/y` = top-left corner of visible area. `gdxCamX/Y` = centre of visible area. `moveCameraToWorldCoord()` positions the IngameRenderer camera for world-space drawing; `setCameraPosition(0,0)` positions it for screen-space drawing.
|
||||
|
||||
### FBO Extension Functions
|
||||
|
||||
- `FrameBuffer.inAction(camera, batch) { }` -- bind FBO, set camera to FBO dimensions (Y-down), run block, restore camera to screen dimensions
|
||||
- `FrameBuffer.inActionF(camera, batch) { }` -- same but Y-up (for flipped FBO content)
|
||||
|
||||
Both save/restore `camera.position` and call `setToOrtho` with `App.scr.wf/hf` on exit.
|
||||
|
||||
## Key Conventions
|
||||
|
||||
- **GL thread safety**: Any code creating `Texture`, `TextureRegion`, `TextureRegionPack`, `ShaderProgram`, `FrameBuffer`, or `Pixmap` must run on the GL thread. Use `CommonResourcePool.runOnGLThread { }` when on a background thread.
|
||||
- **Kotlin `object` singletons**: First access triggers `<clinit>`. Keep `init {}` blocks fast (no blocking, no GL dispatch). Defer heavy work to explicit `invoke()` methods.
|
||||
- **`ConcurrentHashMap` cannot store null values**. Use `HashMap` for maps that need nullable values (e.g. `poolKillFun`).
|
||||
- **`@Volatile`** for cross-thread boolean flags (`loadDone`, `backgroundLoadDone`, etc.)
|
||||
- **`lateinit var` guards**: Use `::prop.isInitialized` checks in `resize()` and `dispose()` for properties set during async loading steps.
|
||||
- **`ConsistentUpdateRate`**: Accumulates delta time; may call `updateFunction` multiple times before `renderFunction`. Call `.reset()` before transitioning to active rendering to avoid catch-up storms.
|
||||
- **Textures**: Use TGA format. Images with semitransparency must be TGA; opaque images may be PNG.
|
||||
- **Coordinate system**: Y-down (camera `setToOrtho(true, ...)`). `setCameraPosition(0, 0)` places origin at screen top-left, which is not LibGDX nor OpenGL works natively, hence the existence of `FlippingSpriteBatch`. If the user reports renders are flipped vertically, try draw()/drawFlipped() accordingly.
|
||||
- **ROUNDWORLD**: World wraps horizontally. `WorldCamera.x` uses `fmod worldWidth`. Lightmap and tile drawing account for wrapping.
|
||||
@@ -9,14 +9,13 @@
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="ModuleComputersLib" level="project" />
|
||||
<orderEntry type="module" module-name="TerrarumBuild" scope="PROVIDED" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="graalvm-js 22.3.1" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="graalvm-js 23.1.10" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="TerrarumSansBitmap" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="badlogicgames.gdx" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="badlogicgames.gdx.backend.lwjgl3" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="KotlinJavaRuntime" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="jetbrains.kotlin.reflect" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="jetbrains.kotlin.test" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="io.airlift.aircompressor" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="jetbrains.kotlin.test1" level="project" />
|
||||
<orderEntry type="library" name="gdx-platform-1.12.1-natives-arm64-v8a" level="project" />
|
||||
<orderEntry type="library" name="TerranVirtualDisk" level="project" />
|
||||
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -1,5 +1,7 @@
|
||||
package net.torvald.terrarum.modulecomputers
|
||||
|
||||
import net.torvald.terrarum.CommonResourcePool
|
||||
import net.torvald.terrarum.ItemSheet
|
||||
import net.torvald.terrarum.ModMgr
|
||||
import net.torvald.terrarum.ModuleEntryPoint
|
||||
|
||||
@@ -11,7 +13,17 @@ class EntryPoint : ModuleEntryPoint() {
|
||||
private val moduleName = "dwarventech"
|
||||
|
||||
override fun invoke() {
|
||||
|
||||
// load common resources to the AssetsManager
|
||||
CommonResourcePool.addToLoadingList("$moduleName.items") {
|
||||
ItemSheet(ModMgr.getGdxFile(moduleName, "items/items.tga"))
|
||||
}
|
||||
CommonResourcePool.loadAll()
|
||||
|
||||
|
||||
ModMgr.GameItemLoader.invoke(moduleName)
|
||||
ModMgr.GameBlockLoader.invoke(moduleName)
|
||||
ModMgr.GameWatchdogLoader.register(moduleName, NetFrameWatchdog())
|
||||
println("[${moduleName[0].toUpperCase()}${moduleName.substring(1)}] Dirtboard(tm) go drrrrr")
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package net.torvald.terrarum.modulecomputers
|
||||
|
||||
import net.torvald.terrarum.App
|
||||
import net.torvald.terrarum.gameworld.GameWorld
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumWorldWatchdog
|
||||
import net.torvald.terrarum.modulebasegame.gameworld.NetRunner
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-03-02.
|
||||
*/
|
||||
class NetFrameWatchdog : TerrarumWorldWatchdog(App.TICK_SPEED * 60) {
|
||||
override fun invoke(world: GameWorld) {
|
||||
(world.extraFields["tokenring"] as? NetRunner)?.let {
|
||||
it.purgeDeadFrames()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
package net.torvald.terrarum.modulecomputers.gameactors
|
||||
|
||||
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
||||
import net.torvald.terrarum.langpack.Lang
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.BlockBox
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.Electric
|
||||
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
|
||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-03-30.
|
||||
*/
|
||||
class FixtureComputerConsole : Electric {
|
||||
|
||||
@Transient override val spawnNeedsStableFloor = true
|
||||
@Transient override val spawnNeedsWall = false
|
||||
|
||||
constructor() : super(
|
||||
BlockBox(BlockBox.ALLOW_MOVE_DOWN, 2, 2),
|
||||
nameFun = { Lang["ITEM_COMPUTER_CONSOLE"] }
|
||||
)
|
||||
|
||||
init {
|
||||
val itemImage = FixtureItemBase.getItemImageFromSingleImage("dwarventech", "sprites/fixtures/computer_operator_terminal.tga")
|
||||
makeNewSprite(TextureRegionPack(itemImage.texture, 2*TILE_SIZE, 2*TILE_SIZE)).let {
|
||||
it.setRowsAndFrames(1,1)
|
||||
}
|
||||
|
||||
setWireSinkAt(0, 1, "io_bus")
|
||||
setWireSinkAt(1, 1, "power_low")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-03-30.
|
||||
*/
|
||||
class FixtureComputerProcessor : Electric {
|
||||
|
||||
@Transient override val spawnNeedsStableFloor = true
|
||||
@Transient override val spawnNeedsWall = false
|
||||
|
||||
constructor() : super(
|
||||
BlockBox(BlockBox.ALLOW_MOVE_DOWN, 2, 3),
|
||||
nameFun = { Lang["ITEM_COMPUTER_PROCESSOR"] }
|
||||
)
|
||||
|
||||
init {
|
||||
val itemImage = FixtureItemBase.getItemImageFromSingleImage("dwarventech", "sprites/fixtures/computer_cpu.tga")
|
||||
makeNewSprite(TextureRegionPack(itemImage.texture, 2*TILE_SIZE, 3*TILE_SIZE)).let {
|
||||
it.setRowsAndFrames(1,1)
|
||||
}
|
||||
|
||||
setWireSinkAt(0, 0, "memory_bus")
|
||||
setWireSinkAt(0, 1, "serial")
|
||||
setWireSinkAt(1, 1, "serial")
|
||||
setWireSinkAt(0, 2, "io_bus")
|
||||
setWireSinkAt(1, 2, "power_low")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-04-01.
|
||||
*/
|
||||
class FixtureNetworkInterface : Electric {
|
||||
|
||||
@Transient override val spawnNeedsStableFloor = true
|
||||
@Transient override val spawnNeedsWall = false
|
||||
|
||||
constructor() : super(
|
||||
BlockBox(BlockBox.ALLOW_MOVE_DOWN, 2, 3),
|
||||
nameFun = { Lang["ITEM_NETWORK_INTERFACE"] }
|
||||
)
|
||||
|
||||
init {
|
||||
val itemImage = FixtureItemBase.getItemImageFromSingleImage("dwarventech", "sprites/fixtures/computer_network_interface.tga")
|
||||
makeNewSprite(TextureRegionPack(itemImage.texture, 2*TILE_SIZE, 3*TILE_SIZE)).let {
|
||||
it.setRowsAndFrames(1,1)
|
||||
}
|
||||
|
||||
setWireSinkAt(0, 0, "token_ring")
|
||||
setWireSinkAt(1, 0, "token_ring")
|
||||
setWireSinkAt(0, 2, "serial")
|
||||
setWireSinkAt(1, 2, "power_low")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-04-01.
|
||||
*/
|
||||
class FixtureNetworkBridge : Electric {
|
||||
|
||||
@Transient override val spawnNeedsStableFloor = true
|
||||
@Transient override val spawnNeedsWall = false
|
||||
|
||||
constructor() : super(
|
||||
BlockBox(BlockBox.ALLOW_MOVE_DOWN, 2, 3),
|
||||
nameFun = { Lang["ITEM_NETWORK_BRIDGE"] }
|
||||
)
|
||||
|
||||
init {
|
||||
val itemImage = FixtureItemBase.getItemImageFromSingleImage("dwarventech", "sprites/fixtures/computer_network_bridge.tga")
|
||||
makeNewSprite(TextureRegionPack(itemImage.texture, 2*TILE_SIZE, 3*TILE_SIZE)).let {
|
||||
it.setRowsAndFrames(1,1)
|
||||
}
|
||||
|
||||
setWireSinkAt(0, 0, "token_ring")
|
||||
setWireSinkAt(1, 0, "token_ring")
|
||||
setWireSinkAt(0, 1, "token_ring")
|
||||
setWireSinkAt(1, 1, "token_ring")
|
||||
setWireSinkAt(1, 2, "power_low")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-04-01.
|
||||
*/
|
||||
class FixtureMemoryCabinet : Electric {
|
||||
|
||||
@Transient override val spawnNeedsStableFloor = true
|
||||
@Transient override val spawnNeedsWall = false
|
||||
|
||||
constructor() : super(
|
||||
BlockBox(BlockBox.ALLOW_MOVE_DOWN, 2, 3),
|
||||
nameFun = { Lang["ITEM_MEMORY_CABINET"] }
|
||||
)
|
||||
|
||||
init {
|
||||
val itemImage = FixtureItemBase.getItemImageFromSingleImage("dwarventech", "sprites/fixtures/computer_memory_stack_1.tga")
|
||||
makeNewSprite(TextureRegionPack(itemImage.texture, 1*TILE_SIZE, 3*TILE_SIZE)).let {
|
||||
it.setRowsAndFrames(1,1)
|
||||
}
|
||||
|
||||
setWireSinkAt(0, 0, "memory_bus")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,289 @@
|
||||
package net.torvald.terrarum.modulecomputers.gameactors
|
||||
|
||||
import com.badlogic.gdx.utils.Queue
|
||||
import net.torvald.random.HQRNG
|
||||
import net.torvald.terrarum.INGAME
|
||||
import net.torvald.terrarum.Point2i
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.BlockBox
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.Electric
|
||||
import net.torvald.terrarum.modulebasegame.gameworld.NetFrame
|
||||
import net.torvald.terrarum.modulebasegame.gameworld.NetRunner
|
||||
import net.torvald.terrarum.ui.UICanvas
|
||||
import org.dyn4j.geometry.Vector2
|
||||
import kotlin.math.sign
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-03-01.
|
||||
*/
|
||||
open class FixtureRingBusCore : Electric {
|
||||
|
||||
@Transient private val rng = HQRNG()
|
||||
|
||||
val mac = rng.nextInt()
|
||||
|
||||
companion object {
|
||||
const val INITIAL_LISTENING_TIMEOUT = 300
|
||||
const val SIGNAL_TOO_WEAK_THRESHOLD = 1.0 / 16.0
|
||||
}
|
||||
|
||||
private constructor() : super()
|
||||
|
||||
private var portEmit = Point2i(0, 0)
|
||||
private var portSink = Point2i(1, 0)
|
||||
|
||||
constructor(portEmit: Point2i, portSink: Point2i, blockBox: BlockBox, nameFun: () -> String) : super(
|
||||
blockBox0 = blockBox,
|
||||
nameFun = nameFun,
|
||||
) {
|
||||
this.portEmit = portEmit
|
||||
this.portSink = portSink
|
||||
}
|
||||
|
||||
private fun setEmitterAndSink() {
|
||||
clearStatus()
|
||||
setWireEmitterAt(portEmit.x, portEmit.y, "10base2")
|
||||
setWireSinkAt(portSink.x, portSink.y, "10base2")
|
||||
}
|
||||
|
||||
init {
|
||||
setEmitterAndSink()
|
||||
|
||||
if (!INGAME.world.extraFields.containsKey("tokenring")) {
|
||||
INGAME.world.extraFields["tokenring"] = NetRunner()
|
||||
}
|
||||
}
|
||||
|
||||
override fun reload() {
|
||||
super.reload()
|
||||
setEmitterAndSink()
|
||||
if (!INGAME.world.extraFields.containsKey("tokenring")) {
|
||||
INGAME.world.extraFields["tokenring"] = NetRunner()
|
||||
}
|
||||
}
|
||||
|
||||
internal val msgQueue = Queue<Pair<Int, ByteArray>>()
|
||||
internal val msgLog = Queue<Pair<Int, NetFrame>>()
|
||||
|
||||
private var statusAbort = false
|
||||
private var activeMonitorStatus = 0 // 0: unknown, 1: known and not me, 2: known and it's me
|
||||
|
||||
private var lastAccessTime = -1L
|
||||
|
||||
open protected val ringBusFirmware = RingBusFirmware(0)
|
||||
|
||||
private enum class RingBusState {
|
||||
NORMAL,
|
||||
ABORT, // will "eat away" any receiving frames unless the frame is a ballot frame
|
||||
ELECTING,
|
||||
IVE_GOT_ELECTED
|
||||
}
|
||||
|
||||
private var currentState = RingBusState.NORMAL
|
||||
|
||||
override fun updateSignal() {
|
||||
val time_t = INGAME.world.worldTime.TIME_T
|
||||
if (lastAccessTime == -1L) lastAccessTime = time_t
|
||||
|
||||
// monitor the input port
|
||||
val inn = getWireStateAt(1, 0, "10base2")
|
||||
|
||||
// if a signal is there
|
||||
if (inn.x >= SIGNAL_TOO_WEAK_THRESHOLD) {
|
||||
lastAccessTime = time_t
|
||||
val frameNumber = (inn.y + (0.5 * inn.y.sign)).toInt()
|
||||
|
||||
if (frameNumber != 0) { // frame number must be non-zero
|
||||
processFrameBasedOnState(frameNumber)
|
||||
} else {
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2())
|
||||
}
|
||||
} else {
|
||||
handleNoSignal(time_t)
|
||||
}
|
||||
}
|
||||
|
||||
private fun processFrameBasedOnState(frameNumber: Int) {
|
||||
try {
|
||||
val frame = getFrameByNumber(frameNumber)
|
||||
|
||||
when (currentState) {
|
||||
RingBusState.NORMAL -> handleNormalState(frame, frameNumber)
|
||||
RingBusState.ABORT -> handleAbortState(frame, frameNumber)
|
||||
RingBusState.ELECTING -> handleElectingState(frame, frameNumber)
|
||||
RingBusState.IVE_GOT_ELECTED -> handleIveGotElectedState(frame, frameNumber)
|
||||
}
|
||||
} catch (e: NullPointerException) {
|
||||
handleFrameLoss()
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleNormalState(frame: NetFrame, frameNumber: Int) {
|
||||
if (msgQueue.notEmpty() || frame.shouldIintercept(mac)) {
|
||||
val newFrame = doSomethingWithFrame(frame) ?: frameNumber
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2(1.0, newFrame.toDouble()))
|
||||
|
||||
if (newFrame != frameNumber) {
|
||||
frame.discardFrame()
|
||||
}
|
||||
} else {
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2(1.0, frameNumber.toDouble()))
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleAbortState(frame: NetFrame, frameNumber: Int) {
|
||||
if (frame.getFrameType() == "token") {
|
||||
currentState = RingBusState.NORMAL
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2(1.0, frameNumber.toDouble()))
|
||||
} else if (frame.getFrameType() == "abort") {
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2(1.0, frameNumber.toDouble()))
|
||||
} else {
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2())
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleElectingState(frame: NetFrame, frameNumber: Int) {
|
||||
if (frame.getFrameType() == "ballot") {
|
||||
if (frame.getBallot() < mac) {
|
||||
frame.setBallot(mac)
|
||||
}
|
||||
|
||||
if (frame.getSender() == mac && frame.getBallot() == mac) {
|
||||
currentState = RingBusState.IVE_GOT_ELECTED
|
||||
// elected Active Monitor sends out the first token
|
||||
val newFrame = emitNewFrame(NetFrame.makeToken(mac))
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2(1.0, newFrame.toDouble()))
|
||||
} else {
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2(1.0, frameNumber.toDouble()))
|
||||
}
|
||||
} else {
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2(1.0, frameNumber.toDouble()))
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleIveGotElectedState(frame: NetFrame, frameNumber: Int) {
|
||||
if (frame.getFrameType() == "abort") {
|
||||
// immediately return to normal state
|
||||
val newFrame = emitNewFrame(NetFrame.makeToken(mac))
|
||||
currentState = RingBusState.NORMAL
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2(1.0, newFrame.toDouble()))
|
||||
} else {
|
||||
// make sure to skip a turn after the election, even if the NIC has something to send out
|
||||
currentState = RingBusState.NORMAL
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2())
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleFrameLoss() {
|
||||
emitNewFrame(NetFrame.makeAbort(mac))
|
||||
currentState = RingBusState.ABORT
|
||||
}
|
||||
|
||||
private fun handleNoSignal(time_t: Long) {
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2())
|
||||
|
||||
if (time_t - lastAccessTime > INITIAL_LISTENING_TIMEOUT) {
|
||||
currentState = RingBusState.ELECTING
|
||||
emitNewFrame(NetFrame.makeBallot(mac))
|
||||
lastAccessTime = time_t
|
||||
}
|
||||
}
|
||||
|
||||
protected fun doSomethingWithFrame(incomingFrame: NetFrame): Int? {
|
||||
return when (incomingFrame.getFrameType()) {
|
||||
"token" -> doSomethingWithToken(incomingFrame)
|
||||
"data" -> doSomethingWithData(incomingFrame)
|
||||
"ack" -> doSomethingWithAck(incomingFrame)
|
||||
"ballot" -> doSomethingWithBallot(incomingFrame)
|
||||
"abort" -> 0
|
||||
else -> null /* returns the frame untouched */
|
||||
}
|
||||
}
|
||||
|
||||
private fun getFrameByNumber(number: Int) = (INGAME.world.extraFields["tokenring"] as NetRunner)[number]
|
||||
|
||||
private fun emitNewFrame(frame: NetFrame): Int {
|
||||
return (INGAME.world.extraFields["tokenring"] as NetRunner).addFrame(frame).also {
|
||||
setWireEmissionAt(portEmit.x, portEmit.y, Vector2(1.0, it.toDouble()))
|
||||
}
|
||||
}
|
||||
|
||||
protected fun doSomethingWithToken(incomingFrame: NetFrame): Int? {
|
||||
if (msgQueue.isEmpty) return null
|
||||
|
||||
val (recipient, msgByte) = msgQueue.removeFirst()
|
||||
|
||||
return emitNewFrame(NetFrame.makeData(mac, recipient, msgByte))
|
||||
}
|
||||
|
||||
protected fun doSomethingWithData(incomingFrame: NetFrame): Int? {
|
||||
val rec = incomingFrame.getDataRecipient()
|
||||
// if the message is for me, put incoming message into queue, then send out ack
|
||||
if (rec == mac) {
|
||||
msgLog.addLast(rec to incomingFrame)
|
||||
|
||||
val datagramme = incomingFrame.getDataContents()
|
||||
|
||||
val (ret, nextMsg) = if (datagramme == null) (-1 to null) else ringBusFirmware.workWithDataFrame(mac, datagramme)
|
||||
|
||||
// make ack
|
||||
return emitNewFrame(NetFrame.makeAck(mac, incomingFrame.getSender(), ret))
|
||||
}
|
||||
else return null
|
||||
}
|
||||
|
||||
protected fun doSomethingWithAck(incomingFrame: NetFrame): Int? {
|
||||
if (msgQueue.isEmpty) return null
|
||||
|
||||
val topMsg = msgQueue.first()
|
||||
|
||||
// if the ACK is sent to me...
|
||||
if (incomingFrame.getDataRecipient() == mac && incomingFrame.getSender() == topMsg.first) {
|
||||
|
||||
// ack or nak?
|
||||
val successful = (incomingFrame.getAckStatus() == 0)
|
||||
|
||||
// if successful, remove the message from the queue, then send out empty token
|
||||
// if failed, keep the message, then send out empty token anyway
|
||||
if (successful) {
|
||||
msgQueue.removeFirst()
|
||||
}
|
||||
|
||||
// make an empty token
|
||||
return emitNewFrame(NetFrame.makeToken(mac))
|
||||
}
|
||||
else return null
|
||||
}
|
||||
|
||||
protected fun doSomethingWithBallot(incomingFrame: NetFrame): Int? {
|
||||
val ballotStatus = incomingFrame.getFrameNumber()
|
||||
|
||||
// frame is in election phase
|
||||
if (ballotStatus == 0) {
|
||||
// if i'm also in the election phase, participate
|
||||
if (activeMonitorStatus == 0) {
|
||||
if (incomingFrame.getBallot() < mac) {
|
||||
incomingFrame.setBallot(mac)
|
||||
}
|
||||
|
||||
// check if the election must be finished
|
||||
if (incomingFrame.getSender() == mac && incomingFrame.getBallot() == mac) {
|
||||
activeMonitorStatus = 2
|
||||
|
||||
// send out first empty token
|
||||
return emitNewFrame(NetFrame.makeToken(mac))
|
||||
}
|
||||
}
|
||||
// if i'm in the winner announcement phase, kill the frame
|
||||
else {
|
||||
incomingFrame.discardFrame()
|
||||
return 0
|
||||
}
|
||||
}
|
||||
// frame is in winner announcement phase
|
||||
else if (ballotStatus == 1) {
|
||||
activeMonitorStatus = 1
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package net.torvald.terrarum.modulecomputers.gameactors
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import net.torvald.terrarum.App
|
||||
import net.torvald.terrarum.Point2i
|
||||
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
||||
import net.torvald.terrarum.langpack.Lang
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.BlockBox
|
||||
import net.torvald.terrarum.modulebasegame.gameworld.NetFrame.Companion.toMAC
|
||||
import net.torvald.terrarum.modulecomputers.ui.UIRingBusAnalyser
|
||||
import net.torvald.terrarum.modulecomputers.ui.UIRingBusExerciser
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-03-03.
|
||||
*/
|
||||
class FixtureRingBusExerciser : FixtureRingBusCore {
|
||||
|
||||
constructor() : super(
|
||||
portEmit = Point2i(0, 0),
|
||||
portSink = Point2i(1, 0),
|
||||
blockBox = BlockBox(BlockBox.NO_COLLISION, 2, 2),
|
||||
nameFun = { Lang["ITEM_DEBUG_RING_BUS_EXERCISER"] }
|
||||
) {
|
||||
this.mainUI = UIRingBusExerciser(this)
|
||||
}
|
||||
|
||||
override fun drawBody(frameDelta: Float, batch: SpriteBatch) {
|
||||
super.drawBody(frameDelta, batch)
|
||||
|
||||
// draw its own MAC address
|
||||
drawUsingDrawFunInGoodPosition(frameDelta) { x, y ->
|
||||
App.fontSmallNumbers.draw(batch, super.mac.toMAC(), x, y + 2*TILE_SIZE - 12)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-03-03.
|
||||
*/
|
||||
class FixtureRingBusAnalyser : FixtureRingBusCore {
|
||||
|
||||
constructor() : super(
|
||||
portEmit = Point2i(0, 0),
|
||||
portSink = Point2i(1, 0),
|
||||
blockBox = BlockBox(BlockBox.NO_COLLISION, 2, 1),
|
||||
nameFun = { Lang["ITEM_DEBUG_RING_BUS_ANALYSER"] },
|
||||
) {
|
||||
this.mainUI = UIRingBusAnalyser(this)
|
||||
}
|
||||
|
||||
override fun drawBody(frameDelta: Float, batch: SpriteBatch) {
|
||||
super.drawBody(frameDelta, batch)
|
||||
|
||||
// draw its own MAC address
|
||||
drawUsingDrawFunInGoodPosition(frameDelta) { x, y ->
|
||||
App.fontSmallNumbers.draw(batch, super.mac.toMAC(), x, y + 1*TILE_SIZE - 12)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
package net.torvald.terrarum.modulecomputers.gameactors
|
||||
|
||||
import net.torvald.terrarum.serialise.*
|
||||
|
||||
|
||||
open class RingBusFirmware(val devtype: Int) {
|
||||
|
||||
fun workWithDataFrame(hostMAC: Int, datagramme: ByteArray): Pair<Int, ByteArray?> {
|
||||
if (datagramme.size < 12) return -1 to null
|
||||
|
||||
val protocol = datagramme[0].toUint()
|
||||
val mode = datagramme[1].toUint()
|
||||
val arg1 = datagramme.toBigInt16(2)
|
||||
val recipient = datagramme.toBigInt32(4)
|
||||
val sender = datagramme.toBigInt32(8)
|
||||
val body = datagramme.sliceArray(12 until datagramme.size)
|
||||
|
||||
return invoke(hostMAC, protocol, mode, arg1, recipient, sender, body, datagramme)
|
||||
}
|
||||
|
||||
open fun invoke(hostMAC: Int, protocol: Int, mode: Int, arg1: Int, recipient: Int, sender: Int, body: ByteArray, datagramme: ByteArray): Pair<Int, ByteArray?> {
|
||||
return when (protocol) {
|
||||
1 -> 0 to echo(recipient, sender, body)
|
||||
2 -> 0 to blockTransfer(arg1, recipient, sender, body)
|
||||
4 -> 0 to deviceDiscovery(hostMAC, datagramme)
|
||||
else -> -1 to null
|
||||
}
|
||||
}
|
||||
|
||||
open fun echo(recipient: Int, sender: Int, body: ByteArray): ByteArray {
|
||||
return ByteArray(8 + body.size).makeEmptyPacket(1, 1, 0, recipient, sender).also {
|
||||
it.writeBigInt48(System.currentTimeMillis(), 12)
|
||||
System.arraycopy(body, 6, this, 6, body.size - 6)
|
||||
}
|
||||
}
|
||||
|
||||
open fun blockTransfer(sequence: Int, recipient: Int, sender: Int, body: ByteArray): ByteArray {
|
||||
return ByteArray(12).makeEmptyPacket(2, 1, sequence, recipient, sender) // always ACK
|
||||
}
|
||||
|
||||
open fun deviceDiscovery(host: Int, wholeMessage: ByteArray): ByteArray {
|
||||
return ByteArray(wholeMessage.size + 6).also {
|
||||
System.arraycopy(wholeMessage, 0, it, 0, wholeMessage.size)
|
||||
it[it.size - 5] = devtype.toByte()
|
||||
it.writeBigInt32(host, it.size - 4)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private fun ByteArray.makeEmptyPacket(protocol: Int, mode: Int, arg1: Int, recipient: Int, sender: Int): ByteArray {
|
||||
this[0] = protocol.toByte()
|
||||
this[1] = mode.toByte()
|
||||
this.writeBigInt16(arg1, 2)
|
||||
this.writeBigInt32(recipient, 4)
|
||||
this.writeBigInt32(sender, 8)
|
||||
|
||||
return this
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
package net.torvald.terrarum.modulecomputers.gameitems
|
||||
|
||||
import net.torvald.terrarum.gameitems.ItemID
|
||||
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-03-30.
|
||||
*/
|
||||
class ItemComputerConsole(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulecomputers.gameactors.FixtureComputerConsole") {
|
||||
|
||||
override var dynamicID: ItemID = originalID
|
||||
override var baseMass = 80.0
|
||||
override val canBeDynamic = false
|
||||
override val materialId = "STAL"
|
||||
init {
|
||||
itemImage = FixtureItemBase.getItemImageFromSingleImage("dwarventech", "sprites/fixtures/computer_operator_terminal.tga")
|
||||
}
|
||||
override var baseToolSize: Double? = baseMass
|
||||
override var originalName = "ITEM_COMPUTER_CONSOLE"
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-03-30.
|
||||
*/
|
||||
class ItemComputerProcessor(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulecomputers.gameactors.FixtureComputerProcessor") {
|
||||
|
||||
override var dynamicID: ItemID = originalID
|
||||
override var baseMass = 200.0
|
||||
override val canBeDynamic = false
|
||||
override val materialId = "STAL"
|
||||
init {
|
||||
itemImage = FixtureItemBase.getItemImageFromSingleImage("dwarventech", "sprites/fixtures/computer_cpu.tga")
|
||||
}
|
||||
override var baseToolSize: Double? = baseMass
|
||||
override var originalName = "ITEM_COMPUTER_PROCESSOR"
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-04-01.
|
||||
*/
|
||||
class ItemNetworkInterface(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulecomputers.gameactors.FixtureNetworkInterface") {
|
||||
|
||||
override var dynamicID: ItemID = originalID
|
||||
override var baseMass = 200.0
|
||||
override val canBeDynamic = false
|
||||
override val materialId = "STAL"
|
||||
init {
|
||||
itemImage = FixtureItemBase.getItemImageFromSingleImage("dwarventech", "sprites/fixtures/computer_network_interface.tga")
|
||||
}
|
||||
override var baseToolSize: Double? = baseMass
|
||||
override var originalName = "ITEM_NETWORK_INTERFACE"
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-04-01.
|
||||
*/
|
||||
class ItemNetworkBridge(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulecomputers.gameactors.FixtureNetworkBridge") {
|
||||
|
||||
override var dynamicID: ItemID = originalID
|
||||
override var baseMass = 200.0
|
||||
override val canBeDynamic = false
|
||||
override val materialId = "STAL"
|
||||
init {
|
||||
itemImage = FixtureItemBase.getItemImageFromSingleImage("dwarventech", "sprites/fixtures/computer_network_bridge.tga")
|
||||
}
|
||||
override var baseToolSize: Double? = baseMass
|
||||
override var originalName = "ITEM_NETWORK_BRIDGE"
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-04-01.
|
||||
*/
|
||||
class ItemMemoryCabinet(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulecomputers.gameactors.FixtureMemoryCabinet") {
|
||||
|
||||
override var dynamicID: ItemID = originalID
|
||||
override var baseMass = 80.0
|
||||
override val canBeDynamic = false
|
||||
override val materialId = "STAL"
|
||||
init {
|
||||
itemImage = FixtureItemBase.getItemImageFromSingleImage("dwarventech", "sprites/fixtures/computer_memory_stack_1.tga")
|
||||
}
|
||||
override var baseToolSize: Double? = baseMass
|
||||
override var originalName = "ITEM_MEMORY_CABINET"
|
||||
|
||||
}
|
||||
@@ -19,10 +19,11 @@ class ItemHomeComputer(originalID: ItemID) : FixtureItemBase(originalID, "net.to
|
||||
|
||||
override var dynamicID: ItemID = originalID
|
||||
override var baseMass = 20.0
|
||||
override val isDynamic = false
|
||||
override val canBeDynamic = false
|
||||
override val materialId = ""
|
||||
override val itemImage: TextureRegion
|
||||
get() = FixtureItemBase.getItemImageFromSheet("dwarventech", "sprites/fixtures/desktop_computer.tga", TerrarumAppConfiguration.TILE_SIZE, TerrarumAppConfiguration.TILE_SIZE)
|
||||
init {
|
||||
itemImage = FixtureItemBase.getItemImageFromSheet("dwarventech", "sprites/fixtures/desktop_computer.tga", TerrarumAppConfiguration.TILE_SIZE, TerrarumAppConfiguration.TILE_SIZE)
|
||||
}
|
||||
override var baseToolSize: Double? = baseMass
|
||||
override var originalName = "ITEM_DESKTOP_COMPUTER"
|
||||
}
|
||||
@@ -34,8 +34,9 @@ class ItemWearableWorldRadar(originalID: String) {// : GameItem(originalID) {
|
||||
override val isUnique = false
|
||||
override val isDynamic = true
|
||||
override val materialId = ""
|
||||
override val itemImage: TextureRegion
|
||||
get() = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/signal_source.tga")
|
||||
init {
|
||||
itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/signal_source.tga")
|
||||
}
|
||||
|
||||
override var baseToolSize: Double? = baseMass
|
||||
|
||||
@@ -115,11 +116,11 @@ class WearableWorldRadarUI(val device: VM) : UICanvas() {
|
||||
override var height = 140
|
||||
override var openCloseTime = 0f
|
||||
|
||||
override fun updateUI(delta: Float) {
|
||||
override fun updateImpl(delta: Float) {
|
||||
device.update(delta)
|
||||
}
|
||||
|
||||
override fun renderUI(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) {
|
||||
override fun renderImpl(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) {
|
||||
batch.end()
|
||||
|
||||
batch.color = Color.WHITE
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
package net.torvald.terrarum.modulecomputers.gameitems
|
||||
|
||||
import net.torvald.terrarum.CommonResourcePool
|
||||
import net.torvald.terrarum.WireCodex
|
||||
import net.torvald.terrarum.gameactors.ActorWithBody
|
||||
import net.torvald.terrarum.gameitems.FixtureInteractionBlocked
|
||||
import net.torvald.terrarum.gameitems.GameItem
|
||||
import net.torvald.terrarum.gameitems.ItemID
|
||||
import net.torvald.terrarum.modulebasegame.gameitems.BlockBase
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-03-30.
|
||||
*/
|
||||
class WirePieceNetworkBus(originalID: ItemID, private val atlasID: String, private val sheetX: Int, private val sheetY: Int)
|
||||
: GameItem(originalID), FixtureInteractionBlocked {
|
||||
|
||||
override var dynamicID: ItemID = originalID
|
||||
override var baseMass = 0.001
|
||||
override var baseToolSize: Double? = null
|
||||
override var inventoryCategory = Category.WIRE
|
||||
override val canBeDynamic = false
|
||||
override val materialId = ""
|
||||
init {
|
||||
itemImage = CommonResourcePool.getAsItemSheet(atlasID).get(sheetX, sheetY)
|
||||
}
|
||||
|
||||
init {
|
||||
equipPosition = GameItem.EquipPosition.HAND_GRIP
|
||||
originalName = "ITEM_NETWORK_BUS_WIRE"
|
||||
tags.addAll(WireCodex[originalID].tags)
|
||||
}
|
||||
|
||||
override fun startPrimaryUse(actor: ActorWithBody, delta: Float): Long {
|
||||
return BlockBase.wireStartPrimaryUse(actor,this, delta)
|
||||
}
|
||||
|
||||
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) {
|
||||
BlockBase.wireEffectWhenEquipped(this, delta)
|
||||
}
|
||||
|
||||
override fun effectOnUnequip(actor: ActorWithBody) {
|
||||
BlockBase.wireEffectWhenUnequipped(this)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2025-03-30.
|
||||
*/
|
||||
class WirePieceIOBus(originalID: ItemID, private val atlasID: String, private val sheetX: Int, private val sheetY: Int)
|
||||
: GameItem(originalID), FixtureInteractionBlocked {
|
||||
|
||||
override var dynamicID: ItemID = originalID
|
||||
override var baseMass = 0.001
|
||||
override var baseToolSize: Double? = null
|
||||
override var inventoryCategory = Category.WIRE
|
||||
override val canBeDynamic = false
|
||||
override val materialId = ""
|
||||
init {
|
||||
itemImage = CommonResourcePool.getAsItemSheet(atlasID).get(sheetX, sheetY)
|
||||
}
|
||||
|
||||
init {
|
||||
equipPosition = GameItem.EquipPosition.HAND_GRIP
|
||||
originalName = "ITEM_IO_BUS_WIRE"
|
||||
tags.addAll(WireCodex[originalID].tags)
|
||||
}
|
||||
|
||||
override fun startPrimaryUse(actor: ActorWithBody, delta: Float): Long {
|
||||
return BlockBase.wireStartPrimaryUse(actor,this, delta)
|
||||
}
|
||||
|
||||
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) {
|
||||
BlockBase.wireEffectWhenEquipped(this, delta)
|
||||
}
|
||||
|
||||
override fun effectOnUnequip(actor: ActorWithBody) {
|
||||
BlockBase.wireEffectWhenUnequipped(this)
|
||||
}
|
||||
}
|
||||
@@ -47,10 +47,10 @@ internal class UIHomeComputer : UICanvas(
|
||||
"$KEYCAP_CTRL$KEYCAP_SHIFT$KEYCAP_R$KEYCAP_S Reset\u3000" +
|
||||
"$KEYCAP_CTRL$KEYCAP_SHIFT$KEYCAP_R$KEYCAP_Q SysRq"
|
||||
|
||||
override fun updateUI(delta: Float) {
|
||||
override fun updateImpl(delta: Float) {
|
||||
}
|
||||
|
||||
override fun renderUI(frameDelta: Float, otherBatch: SpriteBatch, otherCamera: OrthographicCamera) {
|
||||
override fun renderImpl(frameDelta: Float, otherBatch: SpriteBatch, otherCamera: OrthographicCamera) {
|
||||
otherBatch.end()
|
||||
|
||||
fbo.inAction(camera, batch) {
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
package net.torvald.terrarum.modulecomputers.ui
|
||||
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.graphics.OrthographicCamera
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import net.torvald.terrarum.App
|
||||
import net.torvald.terrarum.ifNaN
|
||||
import net.torvald.terrarum.modulecomputers.gameactors.FixtureRingBusCore
|
||||
import net.torvald.terrarum.ui.UICanvas
|
||||
import net.torvald.terrarum.ui.UIItemVertSlider
|
||||
import net.torvald.terrarum.ui.Toolkit
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
class UIRingBusAnalyser(val host: FixtureRingBusCore) : UICanvas() {
|
||||
|
||||
override var width = Toolkit.drawWidth
|
||||
override var height = App.scr.height
|
||||
|
||||
private val analyserPosX = 10
|
||||
private val analyserPosY = 10
|
||||
private val analyserWidth = width - 20
|
||||
private val analyserHeight = height - 20
|
||||
|
||||
private val TEXT_LINE_HEIGHT = 24
|
||||
private var analysisTextBuffer = ArrayList<String>()
|
||||
|
||||
private val analyserScroll = UIItemVertSlider(this,
|
||||
analyserPosX - 18,
|
||||
analyserPosY + 1,
|
||||
0.0, 0.0, 1.0, analyserHeight - 2, analyserHeight - 2
|
||||
)
|
||||
|
||||
init {
|
||||
addUIitem(analyserScroll)
|
||||
refreshAnalysis()
|
||||
}
|
||||
|
||||
private fun refreshAnalysis() {
|
||||
analysisTextBuffer.clear()
|
||||
|
||||
host.msgLog.forEach { frame ->
|
||||
analysisTextBuffer.add(frame.toString())
|
||||
}
|
||||
|
||||
// update scrollbar
|
||||
analyserScroll.handleHeight = if (analysisTextBuffer.isEmpty())
|
||||
analyserHeight
|
||||
else
|
||||
(analyserHeight.toFloat() / analysisTextBuffer.size.times(TEXT_LINE_HEIGHT))
|
||||
.times(analyserHeight)
|
||||
.roundToInt()
|
||||
.coerceIn(12, analyserHeight)
|
||||
}
|
||||
|
||||
private fun drawAnalysis(batch: SpriteBatch) {
|
||||
val scroll = (analyserScroll.value * analysisTextBuffer.size.times(TEXT_LINE_HEIGHT)
|
||||
.minus(analyserHeight - 3))
|
||||
.ifNaN(0.0)
|
||||
.roundToInt()
|
||||
.coerceAtLeast(0)
|
||||
|
||||
analysisTextBuffer.forEachIndexed { index, s ->
|
||||
App.fontGame.draw(batch, s,
|
||||
analyserPosX + 6f,
|
||||
analyserPosY + 3f + index * TEXT_LINE_HEIGHT - scroll
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun updateImpl(delta: Float) {
|
||||
refreshAnalysis()
|
||||
uiItems.forEach { it.update(delta) }
|
||||
}
|
||||
|
||||
override fun renderImpl(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) {
|
||||
// Draw background box
|
||||
batch.color = Color(0x7F)
|
||||
Toolkit.fillArea(batch, analyserPosX, analyserPosY, analyserWidth, analyserHeight)
|
||||
batch.color = Toolkit.Theme.COL_INACTIVE
|
||||
Toolkit.drawBoxBorder(batch, analyserPosX, analyserPosY, analyserWidth, analyserHeight)
|
||||
|
||||
// Draw text content
|
||||
batch.color = Color.WHITE
|
||||
drawAnalysis(batch)
|
||||
|
||||
// Draw UI elements
|
||||
uiItems.forEach { it.render(frameDelta, batch, camera) }
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
refreshAnalysis()
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
// nothing needed
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
package net.torvald.terrarum.modulecomputers.ui
|
||||
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.graphics.OrthographicCamera
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import net.torvald.terrarum.App
|
||||
import net.torvald.terrarum.ifNaN
|
||||
import net.torvald.terrarum.modulecomputers.gameactors.FixtureRingBusCore
|
||||
import net.torvald.terrarum.ui.UICanvas
|
||||
import net.torvald.terrarum.ui.UIItemVertSlider
|
||||
import net.torvald.terrarum.ui.Toolkit
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
class UIRingBusExerciser(val host: FixtureRingBusCore) : UICanvas() {
|
||||
|
||||
override var width = Toolkit.drawWidth
|
||||
override var height = App.scr.height
|
||||
|
||||
private val analyserPosX = 10
|
||||
private val analyserPosY = 10
|
||||
private val analyserWidth = width - 20
|
||||
private val analyserHeight = height - 20
|
||||
|
||||
private val TEXT_LINE_HEIGHT = 24
|
||||
private var analysisTextBuffer = ArrayList<String>()
|
||||
|
||||
private val analyserScroll = UIItemVertSlider(this,
|
||||
analyserPosX - 18,
|
||||
analyserPosY + 1,
|
||||
0.0, 0.0, 1.0, analyserHeight - 2, analyserHeight - 2
|
||||
)
|
||||
|
||||
init {
|
||||
addUIitem(analyserScroll)
|
||||
refreshAnalysis()
|
||||
}
|
||||
|
||||
private fun refreshAnalysis() {
|
||||
analysisTextBuffer.clear()
|
||||
|
||||
host.msgLog.forEach { frame ->
|
||||
analysisTextBuffer.add(frame.toString())
|
||||
}
|
||||
|
||||
// update scrollbar
|
||||
analyserScroll.handleHeight = if (analysisTextBuffer.isEmpty())
|
||||
analyserHeight
|
||||
else
|
||||
(analyserHeight.toFloat() / analysisTextBuffer.size.times(TEXT_LINE_HEIGHT))
|
||||
.times(analyserHeight)
|
||||
.roundToInt()
|
||||
.coerceIn(12, analyserHeight)
|
||||
}
|
||||
|
||||
private fun drawAnalysis(batch: SpriteBatch) {
|
||||
val scroll = (analyserScroll.value * analysisTextBuffer.size.times(TEXT_LINE_HEIGHT)
|
||||
.minus(analyserHeight - 3))
|
||||
.ifNaN(0.0)
|
||||
.roundToInt()
|
||||
.coerceAtLeast(0)
|
||||
|
||||
analysisTextBuffer.forEachIndexed { index, s ->
|
||||
App.fontGame.draw(batch, s,
|
||||
analyserPosX + 6f,
|
||||
analyserPosY + 3f + index * TEXT_LINE_HEIGHT - scroll
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun updateImpl(delta: Float) {
|
||||
refreshAnalysis()
|
||||
uiItems.forEach { it.update(delta) }
|
||||
}
|
||||
|
||||
override fun renderImpl(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) {
|
||||
// Draw background box
|
||||
batch.color = Color(0x7F)
|
||||
Toolkit.fillArea(batch, analyserPosX, analyserPosY, analyserWidth, analyserHeight)
|
||||
batch.color = Toolkit.Theme.COL_INACTIVE
|
||||
Toolkit.drawBoxBorder(batch, analyserPosX, analyserPosY, analyserWidth, analyserHeight)
|
||||
|
||||
// Draw text content
|
||||
batch.color = Color.WHITE
|
||||
drawAnalysis(batch)
|
||||
|
||||
// Draw UI elements
|
||||
uiItems.forEach { it.render(frameDelta, batch, camera) }
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
refreshAnalysis()
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
// nothing needed
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -7,12 +7,12 @@
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="jetbrains.kotlin.test" level="project" />
|
||||
<orderEntry type="module" module-name="TerrarumBuild" scope="PROVIDED" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="badlogicgames.gdx" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="io.airlift.aircompressor" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="TerrarumSansBitmap" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="apache.commons.math3" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="jetbrains.kotlin.test1" level="project" />
|
||||
<orderEntry type="library" name="gdx-platform-1.12.1-natives-arm64-v8a" level="project" />
|
||||
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -1,17 +1,16 @@
|
||||
package net.torvald.terrarum.musicplayer
|
||||
|
||||
import net.torvald.terrarum.IngameInstance
|
||||
import net.torvald.terrarum.ModMgr
|
||||
import net.torvald.terrarum.ModuleEntryPoint
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||
import net.torvald.terrarum.musicplayer.gui.MusicPlayer
|
||||
import net.torvald.terrarum.musicplayer.gui.MusicPlayerControl
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2023-12-23.
|
||||
*/
|
||||
class EntryPoint : ModuleEntryPoint() {
|
||||
override fun invoke() {
|
||||
ModMgr.GameExtraGuiLoader.register { ingame: TerrarumIngame -> MusicPlayer(ingame) }
|
||||
ModMgr.GameExtraGuiLoader.register { ingame: TerrarumIngame -> MusicPlayerControl(ingame) }
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
|
||||
@@ -10,13 +10,13 @@ import com.badlogic.gdx.utils.JsonValue
|
||||
import com.jme3.math.FastMath
|
||||
import net.torvald.reflection.extortField
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.App.printdbg
|
||||
import net.torvald.terrarum.audio.*
|
||||
import net.torvald.terrarum.audio.audiobank.MusicContainer
|
||||
import net.torvald.terrarum.gameworld.fmod
|
||||
import net.torvald.terrarum.modulebasegame.MusicContainer
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.PlaysMusic
|
||||
import net.torvald.terrarum.ui.BasicDebugInfoWindow
|
||||
import net.torvald.terrarum.ui.BasicDebugInfoWindow.Companion.toIntAndFrac
|
||||
import net.torvald.terrarum.ui.MouseLatch
|
||||
import net.torvald.terrarum.ui.Toolkit
|
||||
import net.torvald.terrarum.ui.UICanvas
|
||||
@@ -33,7 +33,7 @@ import kotlin.math.*
|
||||
*
|
||||
* Created by minjaesong on 2023-12-23.
|
||||
*/
|
||||
class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
class MusicPlayerControl(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
|
||||
private val STRIP_W = 9f
|
||||
private val METERS_WIDTH = 2 * STRIP_W
|
||||
@@ -60,6 +60,9 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
private val controlButtons = ModMgr.getGdxFile("musicplayer", "gui/control_buttons.tga").let {
|
||||
TextureRegionPack(it, BUTTON_WIDTH, BUTTON_HEIGHT)
|
||||
}
|
||||
private val progressSheet = ModMgr.getGdxFile("musicplayer", "gui/progress.tga").let {
|
||||
TextureRegionPack(it, BUTTON_WIDTH, BUTTON_HEIGHT)
|
||||
}
|
||||
|
||||
private val MODE_IDLE = 0
|
||||
private val MODE_PLAYING = 1
|
||||
@@ -95,21 +98,19 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
private var currentlySelectedAlbum: AlbumProp? = null
|
||||
|
||||
/** Returns the internal playlist of the MusicGovernor */
|
||||
private val songsInGovernor: List<MusicContainer>
|
||||
get() = ingame.musicGovernor.extortField<List<MusicContainer>>("songs")!!
|
||||
private val songsInGovernorrrrrrrrrr: List<MusicContainer>
|
||||
get() = ingame.musicStreamer.extortField<List<MusicContainer>>("songs")!!
|
||||
|
||||
private val shouldPlayerBeDisabled: Boolean
|
||||
// the value must be "latched" to stay consistent
|
||||
private fun getCurrentPlaylist() = MusicService.currentPlaylist
|
||||
|
||||
/*private val shouldPlayerBeDisabled: Boolean
|
||||
get() {
|
||||
return App.audioMixer.dynamicTracks.any { it.isPlaying && it.trackingTarget is PlaysMusic }
|
||||
}
|
||||
return MusicService.transactionLocked
|
||||
//return App.audioMixer.dynamicTracks.any { it.isPlaying && it.trackingTarget is PlaysMusic }
|
||||
}*/
|
||||
|
||||
/** Returns the playlist name from the MusicGovernor. Getting the value from the MusicGovernor
|
||||
* is recommended as an ingame interaction may cancel the playback from the playlist from the MusicPlayer
|
||||
* (e.g. interacting with a jukebox) */
|
||||
private val internalPlaylistName: String
|
||||
get() = ingame.musicGovernor.playlistName
|
||||
|
||||
fun registerPlaylist(path: String, fileToName: JsonValue?, shuffled: Boolean, diskJockeyingMode: String) {
|
||||
private fun registerPlaylist(path: String, fileToName: JsonValue?, shuffled: Boolean, diskJockeyingMode: String): TerrarumMusicPlaylist {
|
||||
fun String.isNum(): Boolean {
|
||||
try {
|
||||
this.toInt()
|
||||
@@ -120,7 +121,7 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
}
|
||||
}
|
||||
|
||||
ingame.musicGovernor.queueDirectory(path, shuffled, diskJockeyingMode) { filename ->
|
||||
val playlist = TerrarumMusicPlaylist.fromDirectory(path, shuffled, diskJockeyingMode) { filename ->
|
||||
fileToName?.get(filename).let {
|
||||
if (it == null)
|
||||
filename.substringBeforeLast('.').replace('_', ' ').split(" ").map { it.capitalize() }.let {
|
||||
@@ -136,19 +137,9 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
}
|
||||
}
|
||||
|
||||
ingame.musicGovernor.addMusicStartHook { music ->
|
||||
setMusicName(music.name)
|
||||
if (mode <= MODE_PLAYING)
|
||||
transitionRequest = MODE_PLAYING
|
||||
}
|
||||
setPlaylistDisplayVars(playlist)
|
||||
|
||||
ingame.musicGovernor.addMusicStopHook { music ->
|
||||
setIntermission()
|
||||
if (mode <= MODE_PLAYING)
|
||||
transitionRequest = MODE_IDLE
|
||||
}
|
||||
|
||||
setPlaylistDisplayVars(songsInGovernor)
|
||||
return playlist
|
||||
}
|
||||
|
||||
private var currentMusicName = ""
|
||||
@@ -185,8 +176,11 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
private var mouseOnButton: Int? = null
|
||||
private var mouseOnList: Int? = null
|
||||
|
||||
override fun updateUI(delta: Float) {
|
||||
val shouldPlayerBeDisabled = shouldPlayerBeDisabled
|
||||
private var transactionLocked = MusicService.transactionLocked
|
||||
|
||||
override fun updateImpl(delta: Float) {
|
||||
transactionLocked = MusicService.transactionLocked // the value need to be "latched"
|
||||
val currentPlaylist = getCurrentPlaylist()
|
||||
|
||||
// process transition request
|
||||
if (transitionRequest != null) {
|
||||
@@ -305,9 +299,13 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
else {
|
||||
mouseOnButton = null
|
||||
}
|
||||
//// manually nullify the buttons that does nothing when locked
|
||||
if (transactionLocked && mode < MODE_SHOW_LIST && (mouseOnButton == 1 || mouseOnButton == 3)) {
|
||||
mouseOnButton = null
|
||||
}
|
||||
|
||||
// mouse is over which list
|
||||
mouseOnList = if (mode >= MODE_SHOW_LIST &&
|
||||
mouseOnList = if (!transactionLocked && mode >= MODE_SHOW_LIST &&
|
||||
relativeMouseY.toFloat() in _posY + 9.._posY + 9 + PLAYLIST_LINES*PLAYLIST_LINE_HEIGHT &&
|
||||
relativeMouseX.toFloat() in _posX.._posX + width) {
|
||||
|
||||
@@ -316,7 +314,7 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
else null
|
||||
|
||||
|
||||
// make button work
|
||||
// make buttons work
|
||||
if (mouseUp) mouseLatch.latch {
|
||||
if (mouseOnButton != null) {
|
||||
when (mouseOnButton) {
|
||||
@@ -327,8 +325,7 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
if (mode < MODE_SHOW_LIST) {
|
||||
if (!transitionOngoing) {
|
||||
transitionRequest = MODE_SHOW_LIST
|
||||
currentListMode =
|
||||
0 // no list transition anim is needed this time, just set the variable
|
||||
currentListMode = 0 // no list transition anim is needed this time, just set the variable
|
||||
resetAlbumlistScroll()
|
||||
}
|
||||
}
|
||||
@@ -338,16 +335,18 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
}
|
||||
else {
|
||||
if (!transitionOngoing)
|
||||
transitionRequest = App.audioMixer.musicTrack.isPlaying.toInt() * MODE_MOUSE_UP
|
||||
transitionRequest = MODE_MOUSE_UP
|
||||
}
|
||||
}
|
||||
|
||||
1 -> { // prev
|
||||
// prev song
|
||||
if (mode < MODE_SHOW_LIST) {
|
||||
getPrevSongFromPlaylist()?.let { ingame.musicGovernor.unshiftPlaylist(it) }
|
||||
App.audioMixer.requestFadeOut(App.audioMixer.musicTrack, AudioMixer.DEFAULT_FADEOUT_LEN / 3f) {
|
||||
ingame.musicGovernor.startMusic() // required for "intermittent" mode
|
||||
if (!transactionLocked) {
|
||||
MusicService.playPrevSongInPlaylist(true) {
|
||||
iHitTheStopButton = false
|
||||
stopRequested = false
|
||||
}
|
||||
}
|
||||
}
|
||||
// prev page in the playlist
|
||||
@@ -364,25 +363,48 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
}
|
||||
|
||||
2 -> { // stop
|
||||
if (mode < MODE_SHOW_LIST) { // disable stop button entirely on MODE_SHOW_LIST
|
||||
/*if (mode < MODE_SHOW_LIST) { // disable stop button entirely on MODE_SHOW_LIST
|
||||
// when the button is STOP
|
||||
if (App.audioMixer.musicTrack.isPlaying) {
|
||||
val thisMusic = App.audioMixer.musicTrack.currentTrack
|
||||
// FIXME the olde way -- must be replaced with one that utilises MusicService
|
||||
/*val thisMusic = App.audioMixer.musicTrack.currentTrack
|
||||
App.audioMixer.requestFadeOut(App.audioMixer.musicTrack, AudioMixer.DEFAULT_FADEOUT_LEN / 3f)
|
||||
App.audioMixer.musicTrack.nextTrack = null
|
||||
ingame.musicGovernor.stopMusic()
|
||||
thisMusic?.let { ingame.musicGovernor.queueMusicToPlayNext(it) }
|
||||
}
|
||||
else if (!shouldPlayerBeDisabled) {
|
||||
ingame.musicGovernor.startMusic()
|
||||
ingame.backgroundMusicPlayer.stopMusic(this)
|
||||
if (thisMusic is MusicContainer) thisMusic.let { ingame.backgroundMusicPlayer.queueMusicToPlayNext(it) }
|
||||
iHitTheStopButton = true*/
|
||||
|
||||
MusicService.stopPlaylistPlayback(true) {
|
||||
iHitTheStopButton = true
|
||||
}
|
||||
}
|
||||
// when the button is PLAY
|
||||
else if (!App.audioMixer.musicTrack.isPlaying) {
|
||||
// FIXME the olde way -- must be replaced with one that utilises MusicService
|
||||
/*ingame.backgroundMusicPlayer.startMusic(this)
|
||||
iHitTheStopButton = false
|
||||
stopRequested = false*/
|
||||
|
||||
MusicService.resumePlaylistPlayback(
|
||||
/* onSuccess: () -> Unit */{
|
||||
iHitTheStopButton = false
|
||||
stopRequested = false
|
||||
},
|
||||
/* onFailure: (Throwable) -> Unit */ {
|
||||
}
|
||||
)
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
3 -> { // next
|
||||
// next song
|
||||
if (mode < MODE_SHOW_LIST) {
|
||||
App.audioMixer.requestFadeOut(App.audioMixer.musicTrack, AudioMixer.DEFAULT_FADEOUT_LEN / 3f) {
|
||||
ingame.musicGovernor.startMusic() // required for "intermittent" mode, does seemingly nothing on "continuous" mode
|
||||
if (!transactionLocked) {
|
||||
MusicService.playNextSongInPlaylist(true) {
|
||||
iHitTheStopButton = false
|
||||
stopRequested = false
|
||||
}
|
||||
}
|
||||
}
|
||||
// next page in the playlist
|
||||
@@ -402,8 +424,7 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
if (mode < MODE_SHOW_LIST) {
|
||||
if (!transitionOngoing) {
|
||||
transitionRequest = MODE_SHOW_LIST
|
||||
currentListMode =
|
||||
1 // no list transition anim is needed this time, just set the variable
|
||||
currentListMode = 1 // no list transition anim is needed this time, just set the variable
|
||||
resetPlaylistScroll()
|
||||
}
|
||||
}
|
||||
@@ -413,31 +434,29 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
}
|
||||
else {
|
||||
if (!transitionOngoing)
|
||||
transitionRequest = App.audioMixer.musicTrack.isPlaying.toInt() * MODE_MOUSE_UP
|
||||
transitionRequest = MODE_MOUSE_UP
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// make playlist clicking work
|
||||
// make playlist clicking (change song within the playlist) work
|
||||
else if (listViewPanelScroll == 1f && mouseOnList != null) {
|
||||
val index = playlistScroll + mouseOnList!!
|
||||
val list = songsInGovernor
|
||||
if (index < list.size) {
|
||||
if (currentPlaylist != null) {
|
||||
if (index < currentPlaylist.musicList.size) {
|
||||
// if selected song != currently playing
|
||||
if (App.audioMixer.musicTrack.currentTrack == null || list[index] != App.audioMixer.musicTrack.currentTrack) {
|
||||
// rebuild playlist
|
||||
ingame.musicGovernor.queueIndexFromPlaylist(index)
|
||||
|
||||
// fade out
|
||||
App.audioMixer.requestFadeOut(App.audioMixer.musicTrack, AudioMixer.DEFAULT_FADEOUT_LEN / 3f) {
|
||||
if (!shouldPlayerBeDisabled) {
|
||||
ingame.musicGovernor.startMusic() // required for "intermittent" mode
|
||||
if (App.audioMixer.musicTrack.currentTrack == null || currentPlaylist.musicList[index] != App.audioMixer.musicTrack.currentTrack) {
|
||||
if (!transactionLocked) {
|
||||
MusicService.playNthSongInPlaylist(index, true) {
|
||||
iHitTheStopButton = false
|
||||
stopRequested = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// make album list clicking work
|
||||
}
|
||||
// make album list clicking (send new playlist to the MusicService) work
|
||||
else if (listViewPanelScroll == 0f && mouseOnList != null) {
|
||||
val index = albumlistScroll + mouseOnList!!
|
||||
val list = albumsList//.map { albumPropCache[it] }
|
||||
@@ -445,14 +464,12 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
if (index < list.size) {
|
||||
// if selected album is not the same album currently playing, queue that album immediately
|
||||
// (navigating into the selected album involves too much complication :p)
|
||||
if (ingame.musicGovernor.playlistSource != albumsList[index].canonicalPath) {
|
||||
// fade out
|
||||
App.audioMixer.requestFadeOut(App.audioMixer.musicTrack, AudioMixer.DEFAULT_FADEOUT_LEN / 3f) {
|
||||
loadNewAlbum(albumsList[index])
|
||||
if (!shouldPlayerBeDisabled) {
|
||||
ingame.musicGovernor.startMusic() // required for "intermittent" mode
|
||||
if (MusicService.currentPlaylist?.source != albumsList[index].canonicalPath) {
|
||||
if (!transactionLocked) {
|
||||
val playlist = loadNewAlbum(albumsList[index])
|
||||
MusicService.putNewPlaylistAndResumePlayback(playlist, true) {
|
||||
resetPlaylistScroll(App.audioMixer.musicTrack.nextTrack as? MusicContainer)
|
||||
}
|
||||
resetPlaylistScroll(App.audioMixer.musicTrack.nextTrack)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -466,22 +483,32 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
|
||||
// printdbg(this, "mode = $mode; req = $transitionRequest")
|
||||
|
||||
if (shouldPlayerBeDisabled) {
|
||||
ingame.musicGovernor.stopMusic()
|
||||
|
||||
// update music name disp
|
||||
val musicTrack = App.audioMixer.musicTrack
|
||||
val musicTrackPlaying = musicTrack.isPlaying
|
||||
val musicNow = musicTrack.currentTrack
|
||||
//// music changed, do something
|
||||
if ((oldMusicTrackPlaying && !musicTrack.isPlaying) || (oldSong != null && musicNow == null)) {
|
||||
setIntermission()
|
||||
if (mode <= MODE_PLAYING && !transitionOngoing) transitionRequest = MODE_IDLE
|
||||
}
|
||||
else if (!jukeboxStopMonitorAlert && !App.audioMixer.musicTrack.isPlaying) {
|
||||
jukeboxStopMonitorAlert = true
|
||||
ingame.musicGovernor.stopMusic(false, Math.random().toFloat() * 30f + 30f)
|
||||
}
|
||||
else if (App.audioMixer.musicTrack.isPlaying) {
|
||||
jukeboxStopMonitorAlert = false
|
||||
else if ((!oldMusicTrackPlaying && musicTrack.isPlaying && musicNow != null) || (oldSong == null && musicNow != null) || (musicNow != oldSong && musicNow != null)) {
|
||||
setMusicName(musicNow.name)
|
||||
if (mode <= MODE_PLAYING && !transitionOngoing) transitionRequest = MODE_PLAYING
|
||||
}
|
||||
oldSong = musicNow
|
||||
oldMusicTrackPlaying = musicTrackPlaying
|
||||
}
|
||||
|
||||
private var jukeboxStopMonitorAlert = true
|
||||
private var oldSong: AudioBank? = null
|
||||
private var oldMusicTrackPlaying = false
|
||||
|
||||
private var iHitTheStopButton = false
|
||||
private var stopRequested = false
|
||||
|
||||
private fun resetAlbumlistScroll() {
|
||||
val currentlyPlaying = albumsList.indexOfFirst { it.canonicalPath.replace('\\', '/') == ingame.musicGovernor.playlistSource }
|
||||
val currentlyPlaying = albumsList.indexOfFirst { it.canonicalPath.replace('\\', '/') == MusicService.currentPlaylist?.source }
|
||||
if (currentlyPlaying >= 0) {
|
||||
albumlistScroll = (currentlyPlaying / PLAYLIST_LINES) * PLAYLIST_LINES
|
||||
}
|
||||
@@ -491,7 +518,9 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
}
|
||||
|
||||
private fun resetPlaylistScroll(song: MusicContainer? = null) {
|
||||
val currentlyPlaying = songsInGovernor.indexOf(song ?: App.audioMixer.musicTrack.currentTrack)
|
||||
val currentPlaylist = getCurrentPlaylist()
|
||||
if (currentPlaylist != null) {
|
||||
val currentlyPlaying = currentPlaylist.musicList.indexOf(song ?: App.audioMixer.musicTrack.currentTrack)
|
||||
if (currentlyPlaying >= 0) {
|
||||
playlistScroll = (currentlyPlaying / PLAYLIST_LINES) * PLAYLIST_LINES
|
||||
}
|
||||
@@ -499,17 +528,9 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
playlistScroll = 0
|
||||
}
|
||||
}
|
||||
|
||||
private fun getPrevSongFromPlaylist(): MusicContainer? {
|
||||
val list = songsInGovernor.slice(songsInGovernor.indices) // make copy of the list
|
||||
val nowPlaying = App.audioMixer.musicTrack.currentTrack ?: return null
|
||||
|
||||
// find current index
|
||||
val currentIndex = list.indexOfFirst { it == nowPlaying }
|
||||
if (currentIndex < 0) return null
|
||||
|
||||
val prevIndex = (currentIndex - 1).fmod(list.size)
|
||||
return list[prevIndex]
|
||||
else {
|
||||
playlistScroll = 0
|
||||
}
|
||||
}
|
||||
|
||||
// private fun smoothstep(x: Float) = (x*x*(3f-2f*x)).coerceIn(0f, 1f)
|
||||
@@ -629,7 +650,7 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
get() = relativeMouseX.toFloat() in _posX-capsuleMosaicSize .. _posX+width+capsuleMosaicSize &&
|
||||
relativeMouseY.toFloat() in _posY .. _posY+height
|
||||
|
||||
override fun renderUI(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) {
|
||||
override fun renderImpl(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) {
|
||||
widthForFreqMeter = if (transitionOngoing && modeNext >= MODE_MOUSE_UP || mode >= MODE_MOUSE_UP)
|
||||
uiWidthFromTextWidth(nameLength)
|
||||
else
|
||||
@@ -671,6 +692,39 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
drawControls(frameDelta, batch, _posX, posYforControls)
|
||||
drawList(camera, frameDelta, batch, _posX, _posY)
|
||||
|
||||
|
||||
// debug codes
|
||||
//// transaction state
|
||||
/*if (transactionLocked) {
|
||||
batch.color = Color.RED
|
||||
Toolkit.drawTextCentered(batch, App.fontSmallNumbers, "LOCKED", Toolkit.drawWidth, 0, _posY.toInt() + height + 5)
|
||||
}
|
||||
else {
|
||||
batch.color = Color.WHITE
|
||||
Toolkit.drawTextCentered(batch, App.fontSmallNumbers, "UNLOCKED", Toolkit.drawWidth, 0, _posY.toInt() + height + 5)
|
||||
}
|
||||
//// MusicService internal state
|
||||
batch.color = Color.WHITE
|
||||
val musicState = MusicService.currentPlaybackState.get()
|
||||
val str = "State: $musicState Wait: ${MusicService.waitAkku.toIntAndFrac(2)}/${MusicService.waitTime}"
|
||||
Toolkit.drawTextCentered(batch, App.fontSmallNumbers, str, Toolkit.drawWidth, 0, _posY.toInt() + height + 18)
|
||||
//// playlist internal indices
|
||||
MusicService.currentPlaylist?.let {
|
||||
val indices = it.extortField<ArrayList<Int>>("internalIndices")!!
|
||||
val currentIndex = it.extortField<Int>("currentIndexCursor")!!
|
||||
|
||||
for (k in 0 until indices.size) {
|
||||
batch.color = if (k == currentIndex) Color.RED else Color.WHITE
|
||||
App.fontSmallNumbers.draw(batch, "${indices[k]+1}", 28f + 18f * (k), App.scr.hf - 16f)
|
||||
}
|
||||
}
|
||||
batch.color = Color.LIGHT_GRAY
|
||||
App.fontSmallNumbers.draw(batch, "Playlist InternalIndices", 10f, App.scr.hf - 30f)
|
||||
App.fontSmallNumbers.draw(batch, "..", 10f, App.scr.hf - 16f)
|
||||
*/
|
||||
// end of debug codes
|
||||
|
||||
|
||||
batch.color = Color.WHITE
|
||||
|
||||
|
||||
@@ -760,9 +814,9 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
albumlistNameOverflown.clear()
|
||||
}
|
||||
|
||||
private fun setPlaylistDisplayVars(plist: List<MusicContainer>) {
|
||||
private fun setPlaylistDisplayVars(plist: TerrarumMusicPlaylist) {
|
||||
resetPlaylistDisplay()
|
||||
plist.forEachIndexed { i, music ->
|
||||
plist.musicList.forEachIndexed { i, music ->
|
||||
val len = App.fontGameFBO.getWidth(music.name)
|
||||
val overflown = (len >= playlistNameLenMax)
|
||||
playlistRealNameLen[i] = len
|
||||
@@ -784,6 +838,9 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
private fun drawPlayList(camera: OrthographicCamera, delta: Float, batch: SpriteBatch, x: Float, y: Float, alpha: Float, scale: Float) {
|
||||
batch.end()
|
||||
|
||||
val currentPlaylist = getCurrentPlaylist()
|
||||
|
||||
if (currentPlaylist != null) {
|
||||
playlistFBOs.forEachIndexed { i, it ->
|
||||
val pnum = i + playlistScroll
|
||||
it.inAction(camera, batch) {
|
||||
@@ -793,29 +850,49 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
blendNormalStraightAlpha(batch)
|
||||
|
||||
// draw text
|
||||
App.fontGameFBO.draw(batch, if (pnum in songsInGovernor.indices) songsInGovernor[pnum].name else "", maskOffWidth - playlistNameScrolls[pnum], (PLAYLIST_LINE_HEIGHT - 24) / 2)
|
||||
App.fontGameFBO.draw(
|
||||
batch,
|
||||
if (pnum in currentPlaylist.musicList.indices) currentPlaylist.musicList[pnum].name else "",
|
||||
maskOffWidth - playlistNameScrolls[pnum],
|
||||
(PLAYLIST_LINE_HEIGHT - 24) / 2
|
||||
)
|
||||
|
||||
// mask off the area
|
||||
batch.color = Color.WHITE
|
||||
blendAlphaMask(batch)
|
||||
batch.draw(textmask.get(0, 0), 0f, 0f, maskOffWidth.toFloat(), PLAYLIST_LINE_HEIGHT)
|
||||
batch.draw(textmask.get(1, 0), maskOffWidth.toFloat(), 0f, PLAYLIST_NAME_LEN - 2f * maskOffWidth, PLAYLIST_LINE_HEIGHT)
|
||||
batch.draw(textmask.get(2, 0), PLAYLIST_NAME_LEN - maskOffWidth.toFloat(), 0f, maskOffWidth.toFloat(), PLAYLIST_LINE_HEIGHT)
|
||||
batch.draw(
|
||||
textmask.get(1, 0),
|
||||
maskOffWidth.toFloat(),
|
||||
0f,
|
||||
PLAYLIST_NAME_LEN - 2f * maskOffWidth,
|
||||
PLAYLIST_LINE_HEIGHT
|
||||
)
|
||||
batch.draw(
|
||||
textmask.get(2, 0),
|
||||
PLAYLIST_NAME_LEN - maskOffWidth.toFloat(),
|
||||
0f,
|
||||
maskOffWidth.toFloat(),
|
||||
PLAYLIST_LINE_HEIGHT
|
||||
)
|
||||
|
||||
blendNormalStraightAlpha(batch) // qnd hack to make sure this line gets called, otherwise the screen briefly goes blank when the playlist view is closed
|
||||
Toolkit.fillArea(batch, 999f, 999f, 1f, 1f)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
batch.begin()
|
||||
blendNormalStraightAlpha(batch)
|
||||
if (alpha > 0f) {
|
||||
playlistFBOs.forEachIndexed { i, it ->
|
||||
|
||||
if (currentPlaylist != null) {
|
||||
val alpha2 = alpha + (playListAnimAkku[i] * 0.2f)
|
||||
val pnum = i + playlistScroll
|
||||
|
||||
val m1 = songsInGovernor.getOrNull(pnum)
|
||||
val m1 = currentPlaylist.musicList.getOrNull(pnum)
|
||||
val m2 = App.audioMixer.musicTrack.currentTrack
|
||||
val currentlyPlaying = if (m1 == null || m2 == null) false else (m1 == m2)
|
||||
|
||||
@@ -834,7 +911,7 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
batch.color = Color(1f, 1f, 1f, alpha * 0.75f)
|
||||
App.fontSmallNumbers.draw(
|
||||
batch,
|
||||
if (pnum in songsInGovernor.indices) "${pnum + 1}" else "",
|
||||
if (pnum in currentPlaylist.musicList.indices) "${pnum + 1}" else "",
|
||||
x + xoff,
|
||||
y + yoff + PLAYLIST_LINE_HEIGHT * i * scale
|
||||
)
|
||||
@@ -843,6 +920,7 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
// print the name
|
||||
batch.color = Color(1f, 1f, 1f, alpha2)
|
||||
batch.draw(it.colorBufferTexture, x + PLAYLIST_LEFT_GAP * scale, y + PLAYLIST_LINE_HEIGHT * i * scale, it.width * scale, it.height * scale)
|
||||
}
|
||||
|
||||
// separator
|
||||
batch.color = Color(1f, 1f, 1f, alpha * 0.25f)
|
||||
@@ -851,7 +929,7 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
|
||||
// print the album name
|
||||
batch.color = Color(1f, 1f, 1f, alpha * 0.75f)
|
||||
Toolkit.drawTextCentered(batch, App.fontGame, internalPlaylistName, width, x.roundToInt(), 3 + (y + PLAYLIST_LINE_HEIGHT * PLAYLIST_LINES * scale).roundToInt())
|
||||
Toolkit.drawTextCentered(batch, App.fontGame, MusicService.currentPlaylist?.name ?: "(null)", width, x.roundToInt(), 3 + (y + PLAYLIST_LINE_HEIGHT * PLAYLIST_LINES * scale).roundToInt())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -892,7 +970,7 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
val pnum = i + albumlistScroll
|
||||
|
||||
val currentlyPlaying = if (pnum in albumsList.indices) {
|
||||
val m1 = ingame.musicGovernor.playlistSource
|
||||
val m1 = MusicService.currentPlaylist?.source
|
||||
val m2 = albumsList[pnum].canonicalPath.replace('\\', '/')
|
||||
(m1 == m2)
|
||||
}
|
||||
@@ -957,7 +1035,9 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
}
|
||||
|
||||
private val playControlAnimAkku = FloatArray(5) // how many control buttons?
|
||||
private val playControlAnimLength = 0.2f
|
||||
private val playControlAnimLength = 0.16f
|
||||
|
||||
private val colInactive = Color(0xaaaaaaff.toInt())
|
||||
|
||||
private fun drawControls(delta: Float, batch: SpriteBatch, posX: Float, posY: Float) {
|
||||
val (alpha, reverse) = if (mode < MODE_MOUSE_UP && modeNext == MODE_MOUSE_UP)
|
||||
@@ -978,20 +1058,21 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
else
|
||||
0f
|
||||
|
||||
val baseCol = if (transactionLocked) colInactive else Color.WHITE
|
||||
|
||||
if (alpha > 0f) {
|
||||
val alpha0 = alpha.coerceIn(0f, 1f).organicOvershoot().coerceAtMost(1f)
|
||||
val internalWidth =minOf(widthForMouseUp.toFloat(), width - 20f)
|
||||
val separation = internalWidth / 5f
|
||||
val anchorX = Toolkit.hdrawWidthf
|
||||
val posY = posY + 12f
|
||||
for (i in 0..4) {
|
||||
val alphaBase = 0.75f * (if (reverse) 1f - alpha0 else alpha0).pow(3f) + (playControlAnimAkku[i] * 0.2f)
|
||||
val alphaBase2 = 0.75f * (if (reverse) 1f - alpha0 else alpha0).pow(3f)
|
||||
for (i in 0..4) {
|
||||
val animAkku = if (i == 2) 0f else playControlAnimAkku[i] // disable mouseUp for the progress ring
|
||||
val alphaBase = 0.75f * (if (reverse) 1f - alpha0 else alpha0).pow(3f) + (animAkku * 0.2f)
|
||||
|
||||
val offset = i - 2
|
||||
val posX = anchorX + offset * separation
|
||||
|
||||
|
||||
val btnX = (posX - BUTTON_WIDTH / 2).roundToFloat()
|
||||
val btnY = posY.roundToFloat()
|
||||
|
||||
@@ -999,10 +1080,10 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
// prev/next button
|
||||
if (i == 1 || i == 3) {
|
||||
// prev/next song button
|
||||
batch.color = Color(1f, 1f, 1f, alphaBase * (1f - buttonFadePerc))
|
||||
batch.color = baseCol * Color(1f, 1f, 1f, alphaBase * (1f - buttonFadePerc))
|
||||
batch.draw(controlButtons.get(i, 0), btnX, btnY)
|
||||
// prev/next page button
|
||||
batch.color = Color(1f, 1f, 1f, alphaBase * buttonFadePerc)
|
||||
batch.color = baseCol * Color(1f, 1f, 1f, alphaBase * buttonFadePerc)
|
||||
batch.draw(controlButtons.get(i, 1), btnX, btnY)
|
||||
}
|
||||
// stop button
|
||||
@@ -1010,13 +1091,24 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
// get correct stop/play button
|
||||
val iconY = if (!App.audioMixer.musicTrack.isPlaying) 1 else 0
|
||||
// fade if avaliable
|
||||
batch.color = Color(1f, 1f, 1f, alphaBase * (1f - buttonFadePerc))
|
||||
batch.color = baseCol * Color(1f, 1f, 1f, alphaBase * (1f - buttonFadePerc))
|
||||
batch.draw(controlButtons.get(i, iconY), btnX, btnY)
|
||||
// page number with fade
|
||||
|
||||
// progress ring
|
||||
val perc = ((App.audioMixer.musicTrack.currentTrack?.currentPositionInSamples()?.toFloat() ?: 0f) /
|
||||
(App.audioMixer.musicTrack.currentTrack?.totalSizeInSamples ?: Long.MAX_VALUE)).coerceAtMost(1f)
|
||||
val progress = (perc * 64).roundToInt() - 1
|
||||
if (progress >= 0) {
|
||||
val prx = progress % 8
|
||||
val pry = progress / 8
|
||||
batch.color = baseCol * Color(1f, 1f, 1f, alphaBase * (1f - buttonFadePerc))
|
||||
batch.draw(progressSheet.get(prx, pry), btnX, btnY)
|
||||
}
|
||||
|
||||
// page number with fade
|
||||
for (mode in 0..1) {
|
||||
val alphaNum = if (mode == 0) 1f - listViewPanelScroll else listViewPanelScroll
|
||||
batch.color = Color(1f, 1f, 1f, alphaBase2 * buttonFadePerc * alphaNum) // don't use mouse-up effect
|
||||
batch.color = baseCol * Color(1f, 1f, 1f, alphaBase2 * buttonFadePerc * alphaNum) // don't use mouse-up effect
|
||||
val (thisPage, totalPage) = if (mode == 0)
|
||||
albumlistScroll.div(PLAYLIST_LINES).plus(1) to albumsList.size.toFloat().div(PLAYLIST_LINES).ceilToInt()
|
||||
else
|
||||
@@ -1032,11 +1124,10 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
}
|
||||
// else button
|
||||
else {
|
||||
batch.color = Color(1f, 1f, 1f, alphaBase)
|
||||
batch.color = baseCol * Color(1f, 1f, 1f, alphaBase)
|
||||
batch.draw(controlButtons.get(i, 0), btnX, btnY)
|
||||
}
|
||||
|
||||
|
||||
// update playControlAnimAkku
|
||||
if (mouseOnButton == i && mode >= MODE_MOUSE_UP && modeNext >= MODE_MOUSE_UP)
|
||||
playControlAnimAkku[i] = (playControlAnimAkku[i] + (delta / playControlAnimLength)).coerceIn(0f, 1f)
|
||||
@@ -1044,6 +1135,9 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
playControlAnimAkku[i] = (playControlAnimAkku[i] - (delta / playControlAnimLength)).coerceIn(0f, 1f)
|
||||
}
|
||||
// printdbg(this, "playControlAnimAkku=${playControlAnimAkku.joinToString()}")
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1109,7 +1203,7 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
// apply slope to the fft bins, also converts fullscale to decibels
|
||||
for (bin in binHeights.indices) {
|
||||
val freqR = (TerrarumAudioMixerTrack.SAMPLING_RATED / FFTSIZE) * (bin + 1)
|
||||
val magn0 = fftOut.reim[2 * bin].absoluteValue / FFTSIZE * (freqR / 20.0) // apply slope
|
||||
val magn0 = fftOut.reim[2 * bin].absoluteValue / FFTSIZE * freqR.sqrt() // apply slope
|
||||
val magn = FastMath.interpolateLinear(FFT_SMOOTHING_FACTOR, magn0, oldFFTmagn[bin])
|
||||
val magnLog = fullscaleToDecibels(magn) - dbOffset
|
||||
|
||||
@@ -1252,22 +1346,12 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
val albumArt: TextureRegion? = null
|
||||
)
|
||||
|
||||
private fun loadNewAlbum(albumDir: File) {
|
||||
private fun loadNewAlbum(albumDir: File): TerrarumMusicPlaylist {
|
||||
val albumProp = albumPropCache[albumDir]
|
||||
|
||||
App.audioMixer.musicTrack.let { track ->
|
||||
track.doGaplessPlayback = (albumProp.diskJockeyingMode == "continuous")
|
||||
if (track.doGaplessPlayback) {
|
||||
track.pullNextTrack = {
|
||||
track.currentTrack = ingame.musicGovernor.pullNextMusicTrack(true)
|
||||
setMusicName(track.currentTrack?.name ?: "")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
currentlySelectedAlbum = albumProp
|
||||
|
||||
registerPlaylist(albumDir.absolutePath, albumProp.fileToName, albumProp.shuffled, albumProp.diskJockeyingMode)
|
||||
return registerPlaylist(albumDir.absolutePath, albumProp.fileToName, albumProp.shuffled, albumProp.diskJockeyingMode)
|
||||
|
||||
// scroll playlist to the page current song is
|
||||
}
|
||||
@@ -1282,3 +1366,12 @@ class MusicPlayer(private val ingame: TerrarumIngame) : UICanvas() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private operator fun Color.times(other: Color): Color {
|
||||
return Color(
|
||||
this.r * other.r,
|
||||
this.g * other.g,
|
||||
this.b * other.b,
|
||||
this.a * other.a,
|
||||
)
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
## Aperçu ##
|
||||
|
||||
This project is to create a modular game engine that accommodates a 2D side-scrolling tilemap platformer, and a game that runs on top of it.
|
||||
The goal of this project is to create a modular game engine that accommodates a 2D side-scrolling tilemap platformer, and a game that runs on top of it.
|
||||
|
||||
The project is divided into two parts: **Terrarum the Game Engine** and **Terrarum the actual game**.
|
||||
|
||||
@@ -43,7 +43,7 @@ Requires 64 bit processor and operation system.
|
||||
|
||||
Kotlin runtimes must be downloaded using the IntelliJ IDEA. All other libraries are included in the repository.
|
||||
|
||||
The project includes modified version of the GraalVM-JS, in which the only difference is the `regex-22.3.1-edit.jar` is a modification of `regex-22.3.1.jar` where the only difference is its `MANIFEST.MD`
|
||||
The project uses GraalVM 23.1.10 for JavaScript execution (with the Graal JIT compiler enabled via `--upgrade-module-path`).
|
||||
|
||||
## Copyright ##
|
||||
|
||||
|
||||
@@ -17,17 +17,16 @@
|
||||
<orderEntry type="library" name="gdx-controllers-core-2.2.1" level="project" />
|
||||
<orderEntry type="library" name="gdx-controllers-desktop-2.2.1" level="project" />
|
||||
<orderEntry type="library" name="jxinput-1.0.0" level="project" />
|
||||
<orderEntry type="library" name="gdx-platform-1.12.0-natives" level="project" />
|
||||
<orderEntry type="library" name="graalvm-js 22.3.1" level="project" />
|
||||
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
||||
<orderEntry type="library" name="graalvm-js 23.1.10" level="project" />
|
||||
<orderEntry type="library" name="badlogicgames.gdx" level="project" />
|
||||
<orderEntry type="library" name="badlogicgames.gdx.backend.lwjgl3" level="project" />
|
||||
<orderEntry type="library" name="jetbrains.kotlin.reflect" level="project" />
|
||||
<orderEntry type="library" name="jetbrains.kotlin.test" level="project" />
|
||||
<orderEntry type="library" name="io.github.classgraph" level="project" />
|
||||
<orderEntry type="library" name="apache.commons.math3" level="project" />
|
||||
<orderEntry type="library" name="github.wendykierp.JTransforms" level="project" />
|
||||
<orderEntry type="library" name="io.airlift.aircompressor" level="project" />
|
||||
<orderEntry type="library" name="jetbrains.kotlin.test1" level="project" />
|
||||
<orderEntry type="library" name="gdx-platform-1.12.1-natives-arm64-v8a" level="project" />
|
||||
<orderEntry type="library" name="TerranVirtualDisk" level="project" />
|
||||
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
||||
<orderEntry type="library" name="GetBatteryStatus" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
BIN
assets/audio/effects/haptic_bap.ogg
LFS
Normal file
BIN
assets/audio/effects/haptic_bap.ogg
LFS
Normal file
Binary file not shown.
BIN
assets/audio/effects/haptic_bep.ogg
LFS
Normal file
BIN
assets/audio/effects/haptic_bep.ogg
LFS
Normal file
Binary file not shown.
BIN
assets/audio/effects/haptic_bip.ogg
LFS
Normal file
BIN
assets/audio/effects/haptic_bip.ogg
LFS
Normal file
Binary file not shown.
BIN
assets/audio/effects/haptic_bop.ogg
LFS
Normal file
BIN
assets/audio/effects/haptic_bop.ogg
LFS
Normal file
Binary file not shown.
BIN
assets/audio/effects/haptic_bup.ogg
LFS
Normal file
BIN
assets/audio/effects/haptic_bup.ogg
LFS
Normal file
Binary file not shown.
BIN
assets/graphics/blocks/deblocking_mask.tga
LFS
Normal file
BIN
assets/graphics/blocks/deblocking_mask.tga
LFS
Normal file
Binary file not shown.
BIN
assets/graphics/blocks/init.tga
LFS
BIN
assets/graphics/blocks/init.tga
LFS
Binary file not shown.
BIN
assets/graphics/code_input_cells.tga
LFS
Normal file
BIN
assets/graphics/code_input_cells.tga
LFS
Normal file
Binary file not shown.
Binary file not shown.
BIN
assets/graphics/fonts/code.tga
LFS
BIN
assets/graphics/fonts/code.tga
LFS
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
assets/graphics/gui/blur_shadow.tga
LFS
Normal file
BIN
assets/graphics/gui/blur_shadow.tga
LFS
Normal file
Binary file not shown.
Binary file not shown.
BIN
assets/graphics/gui/fullscreen_bat_ind.tga
LFS
Normal file
BIN
assets/graphics/gui/fullscreen_bat_ind.tga
LFS
Normal file
Binary file not shown.
BIN
assets/graphics/gui/gradtile32.tga
LFS
Normal file
BIN
assets/graphics/gui/gradtile32.tga
LFS
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user