mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-06 08:38:30 +09:00
Compare commits
833 Commits
8eff89a7cb
...
inventory-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e0fcf35f5b | ||
|
|
b2ad541355 | ||
|
|
eb2e47e2a5 | ||
|
|
b07e7f5fdd | ||
|
|
ac144da0b4 | ||
|
|
f5624af47c | ||
|
|
299e10a381 | ||
|
|
de164f6516 | ||
|
|
7f99bb4f4f | ||
|
|
619352e915 | ||
|
|
8469d22f93 | ||
|
|
c849669845 | ||
|
|
be6cddb1d6 | ||
|
|
2faebfcd27 | ||
|
|
64e9d3c0e4 | ||
|
|
4d46a44c51 | ||
|
|
87ce59194c | ||
|
|
4feb889aa8 | ||
|
|
f3e1cc53f8 | ||
|
|
37bc8a6aff | ||
|
|
04cf817303 | ||
|
|
f7ff220967 | ||
|
|
ccb9d33a36 | ||
|
|
096a34c6a6 | ||
|
|
4076e6d74e | ||
|
|
b5da05c9a0 | ||
|
|
25043cb36e | ||
|
|
1a98292b92 | ||
|
|
f469772c86 | ||
|
|
0bc52a7351 | ||
|
|
9670b5771f | ||
|
|
9e3008d6fe | ||
|
|
ae390fe6f5 | ||
|
|
02ad64487b | ||
|
|
8f08609d65 | ||
|
|
42b26597b4 | ||
|
|
9e082e914d | ||
|
|
a08d09b1b8 | ||
|
|
3982933aad | ||
|
|
ed5c823154 | ||
|
|
8589f1f8fa | ||
|
|
16f85f6bfa | ||
|
|
6b2970cbfd | ||
|
|
a501a353dd | ||
|
|
47d5d9c1b2 | ||
|
|
9ddfa48cd9 | ||
|
|
3b793d5ad4 | ||
|
|
82514180ea | ||
|
|
b31d5fcb89 | ||
|
|
aaba6976b3 | ||
|
|
facf29b34c | ||
|
|
19f0225e0d | ||
|
|
c629013a59 | ||
|
|
0d23d13401 | ||
|
|
90c8609f54 | ||
|
|
fa19d0ae51 | ||
|
|
4a177c5f76 | ||
|
|
fac45e8a97 | ||
|
|
e2195ba809 | ||
|
|
b4533b86df | ||
|
|
d4f349eda3 | ||
|
|
819eb612cd | ||
|
|
12b9ec3c06 | ||
|
|
d65305569c | ||
|
|
8b68e8917b | ||
|
|
7eee6e34d1 | ||
|
|
bf9f46756f | ||
|
|
3035887ff7 | ||
|
|
88fbe7a5c1 | ||
|
|
4a7b5952b0 | ||
|
|
42b87d30a0 | ||
|
|
54bbc473b1 | ||
|
|
c626c5b833 | ||
|
|
016f8ab554 | ||
|
|
c7251d1139 | ||
|
|
27af9ea7e0 | ||
|
|
3f58fcfb75 | ||
|
|
e7b0bf74e2 | ||
|
|
3e5a581e89 | ||
|
|
b319485637 | ||
|
|
5db5a23add | ||
|
|
c9904a113e | ||
|
|
0cf4264002 | ||
|
|
e4a512a420 | ||
|
|
fe3a27932c | ||
|
|
a0aed03af5 | ||
|
|
60df739563 | ||
|
|
385ea3b5a9 | ||
|
|
cfda47405d | ||
|
|
98993f1755 | ||
|
|
68ecb9139a | ||
|
|
ed8e35d593 | ||
|
|
3d59634ad9 | ||
|
|
fc15dd1f65 | ||
|
|
a31825dbce | ||
|
|
9972f80874 | ||
|
|
9a139be7ad | ||
|
|
612b7950ed | ||
|
|
86be4e4edb | ||
|
|
b051f7c1a1 | ||
|
|
5a0bf98737 | ||
|
|
240efc5537 | ||
|
|
278eff04b7 | ||
|
|
eea7ddffe0 | ||
|
|
47ff45bba3 | ||
|
|
33f74385bd | ||
|
|
17c9d184b2 | ||
|
|
77398abcb3 | ||
|
|
60e91b0532 | ||
|
|
951d9e0e71 | ||
|
|
02b67de91a | ||
|
|
ae59a179d8 | ||
|
|
9789f2ef55 | ||
|
|
9bf3bc103b | ||
|
|
b3db49c6e6 | ||
|
|
1cf62da4c5 | ||
|
|
bce3da1446 | ||
|
|
5e386eb9e9 | ||
|
|
98988d0065 | ||
|
|
e3a0bd6a5b | ||
|
|
bbcc457176 | ||
|
|
1e6c1eeeaf | ||
|
|
8973cd93fd | ||
|
|
d6040b6c17 | ||
|
|
79448a6f2b | ||
|
|
732e32b454 | ||
|
|
4a87e0a84a | ||
|
|
3fe514493b | ||
|
|
26d573c971 | ||
|
|
2b7376e1e4 | ||
|
|
debced982d | ||
|
|
1a1a9c52d3 | ||
|
|
fe97231db6 | ||
|
|
8a4bc98657 | ||
|
|
7b12f878dd | ||
|
|
56a9b186d6 | ||
|
|
6cced41888 | ||
|
|
b62412f2a8 | ||
|
|
8054ccf234 | ||
|
|
974c357d5e | ||
|
|
7077bf9fcf | ||
|
|
22916ebcec | ||
|
|
3fbf2754bd | ||
|
|
87f28435ee | ||
|
|
aaec9c6b5b | ||
|
|
df63824f69 | ||
|
|
3dfbde0e6c | ||
|
|
24569f53d6 | ||
|
|
d767dc1dbf | ||
|
|
d37f431144 | ||
|
|
8d58c09ffa | ||
|
|
bf2cc35d51 | ||
|
|
63d2880d8b | ||
|
|
b83da51e26 | ||
|
|
b37c782b4e | ||
|
|
801e737683 | ||
|
|
81625a4382 | ||
|
|
b6bc5d5246 | ||
|
|
edbbefe584 | ||
|
|
605b62b980 | ||
|
|
3e871a2e84 | ||
|
|
377fced95f | ||
|
|
29572f907e | ||
|
|
dd8404097b | ||
|
|
85985807e4 | ||
|
|
e628286442 | ||
|
|
53d970a179 | ||
|
|
c452be669b | ||
|
|
a399d22dd1 | ||
|
|
1a00f73d52 | ||
|
|
da1c752996 | ||
|
|
98ec8154d5 | ||
|
|
0396b026fb | ||
|
|
ce4b070428 | ||
|
|
fe61b65f0d | ||
|
|
bbf83b1944 | ||
|
|
4e89a32e4e | ||
|
|
601afc2636 | ||
|
|
88a288243c | ||
|
|
79b317d9e1 | ||
|
|
e5bf6874fd | ||
|
|
33c663d901 | ||
|
|
44e12825ac | ||
|
|
cf03e24af3 | ||
|
|
79d7c71000 | ||
|
|
af29e1b598 | ||
|
|
b16c23f1f0 | ||
|
|
9db6e86ac3 | ||
|
|
4f8c3591c2 | ||
|
|
a1d51d4028 | ||
|
|
593a528d32 | ||
|
|
4a99722f71 | ||
|
|
97f8aa6e6e | ||
|
|
85ab1b823d | ||
|
|
812e9e5b76 | ||
|
|
a87866438f | ||
|
|
c692928c1a | ||
|
|
5ff0c22b0f | ||
|
|
eb1273c561 | ||
|
|
50c110f34b | ||
|
|
c180953d7d | ||
|
|
a1ac9b177a | ||
|
|
c50d07b541 | ||
|
|
56fdb2f556 | ||
|
|
d2ddca85a6 | ||
|
|
9aa002f4cc | ||
|
|
3a5fcb9ba0 | ||
|
|
7d5a37cd6d | ||
|
|
75c79d8ca2 | ||
|
|
0b7a3a5636 | ||
|
|
c5e0de2393 | ||
|
|
19fb5b1319 | ||
|
|
2fff2c24cf | ||
|
|
92d5cac2ff | ||
|
|
471b0c805d | ||
|
|
16b7457d08 | ||
|
|
5c20ceeedc | ||
|
|
49df5f9676 | ||
|
|
48ba273317 | ||
|
|
52d6955ffc | ||
|
|
08f07e566d | ||
|
|
c423190725 | ||
|
|
61078cf5a8 | ||
|
|
eafdeddc94 | ||
|
|
9050378e81 | ||
|
|
fecb20da13 | ||
|
|
c89f602c06 | ||
|
|
21e14babb9 | ||
|
|
a4eac2173a | ||
|
|
c74fd0736a | ||
|
|
3ddf3ec123 | ||
|
|
1dcbd3ddbe | ||
|
|
c81414f097 | ||
|
|
bc2b1f68d1 | ||
|
|
e1340aac29 | ||
|
|
73b18e1252 | ||
|
|
bae9c60c81 | ||
|
|
7171055016 | ||
|
|
341c35fab7 | ||
|
|
e13c2ac59b | ||
|
|
80c29f871c | ||
|
|
2570b13ad4 | ||
|
|
4b91f485a5 | ||
|
|
9cf30ab3f4 | ||
|
|
63e416f472 | ||
|
|
464e0380e4 | ||
|
|
2942276341 | ||
|
|
d65f0cb17f | ||
|
|
ea69f28d05 | ||
|
|
3f213cfbe0 | ||
|
|
efa5d21717 | ||
|
|
3cc13f32c9 | ||
|
|
f3c2ddb3e2 | ||
|
|
58bbb73cb1 | ||
|
|
44745bfad1 | ||
|
|
5daea4fa57 | ||
|
|
98d013267e | ||
|
|
522279fec6 | ||
|
|
dfb9d0d8d9 | ||
|
|
8589847e3d | ||
|
|
4a9b003fe5 | ||
|
|
adcedaeba8 | ||
|
|
9922f81100 | ||
|
|
c69025a251 | ||
|
|
a66afb7b6a | ||
|
|
f12271f087 | ||
|
|
6afd36db64 | ||
|
|
7cbe09eee8 | ||
|
|
e56149f953 | ||
|
|
8ffdf5fbc5 | ||
|
|
a10d54c314 | ||
|
|
a54ba0925f | ||
|
|
bcb8db852c | ||
|
|
53737bd746 | ||
|
|
f24ddb5c82 | ||
|
|
391463a4e4 | ||
|
|
6dcdf32627 | ||
|
|
b55fe09d9f | ||
|
|
72ad6dc4e0 | ||
|
|
390dd51045 | ||
|
|
71baddd8bc | ||
|
|
ffb69813ed | ||
|
|
6c7e1c30c7 | ||
|
|
98c602ef65 | ||
|
|
439312e711 | ||
|
|
afa942e75d | ||
|
|
3148f18007 | ||
|
|
448e0aa9c5 | ||
|
|
7a62c06bc6 | ||
|
|
66fdb6ab5d | ||
|
|
f8d4d284d6 | ||
|
|
fcf9aa1b79 | ||
|
|
72dbc18128 | ||
|
|
33db76e3c8 | ||
|
|
9031ff0c2a | ||
|
|
b9fbacad14 | ||
|
|
21d7b83f96 | ||
|
|
10572f4d7e | ||
|
|
34364af1a1 | ||
|
|
003fed6cf0 | ||
|
|
589ac0de95 | ||
|
|
697449fca9 | ||
|
|
3da4719c8e | ||
|
|
3f7ce632cb | ||
|
|
5258c4b677 | ||
|
|
28cf447ec4 | ||
|
|
d1a84b17ab | ||
|
|
2a08f2c771 | ||
|
|
d16d232a0f | ||
|
|
1301943e6a | ||
|
|
5d8e64ca7f | ||
|
|
52b1bee3a3 | ||
|
|
a73a865d29 | ||
|
|
3f108a6ea9 | ||
|
|
a831a4d798 | ||
|
|
e3ed712a42 | ||
|
|
daf5c02605 | ||
|
|
e8b39fc668 | ||
|
|
c20d7edb34 | ||
|
|
28f305e76f | ||
|
|
4c3fc2352c | ||
|
|
01094d49eb | ||
|
|
7d3bf0eece | ||
|
|
75f128a8f7 | ||
|
|
514f1e9012 | ||
|
|
60db83eddb | ||
|
|
90a7fcd4d0 | ||
|
|
d93c6de851 | ||
|
|
f603b58307 | ||
|
|
074fe2438d | ||
|
|
69e9fa4b0f | ||
|
|
9373feff34 | ||
|
|
10c188bea7 | ||
|
|
cd1ad9277a | ||
|
|
465ed0d7a4 | ||
|
|
bd1c1bff8a | ||
|
|
8ac5f1dc9e | ||
|
|
268907ee9d | ||
|
|
9937c34d25 | ||
|
|
bdbb30bc58 | ||
|
|
bdbf6cd458 | ||
|
|
e4f456ffa7 | ||
|
|
73a6c844c8 | ||
|
|
84ca954a26 | ||
|
|
66b18bf8c5 | ||
|
|
6d0bff2879 | ||
|
|
14b485dc32 | ||
|
|
a192abd657 | ||
|
|
0d534fd60c | ||
|
|
a4dabbbf37 | ||
|
|
450874540c | ||
|
|
53c45d6829 | ||
|
|
1c839f7135 | ||
|
|
f133406df3 | ||
|
|
ae14026191 | ||
|
|
b9a4e0f64b | ||
|
|
aef601e9b8 | ||
|
|
88db71f780 | ||
|
|
ded9cb1a10 | ||
|
|
afba402c6c | ||
|
|
b027f662ce | ||
|
|
c60b0b42ad | ||
|
|
40580a57cd | ||
|
|
09b4a34d14 | ||
|
|
613b69a20f | ||
|
|
5738418f39 | ||
|
|
10cf3fb007 | ||
|
|
be20fd8328 | ||
|
|
d1a2e6b8f2 | ||
|
|
5bf8b6cad7 | ||
|
|
2c59d60a15 | ||
|
|
68df2a223e | ||
|
|
784a6a13e3 | ||
|
|
9040ff2c87 | ||
|
|
c4510f9c3b | ||
|
|
ebce90aa4b | ||
|
|
25d0e195c3 | ||
|
|
e209967730 | ||
|
|
f689e1de99 | ||
|
|
6e33dbdfaf | ||
|
|
b10e8aa777 | ||
|
|
6a343ae382 | ||
|
|
17b6738308 | ||
|
|
078cdfefa4 | ||
|
|
81f9c92e48 | ||
|
|
8237188dc3 | ||
|
|
7b120020e4 | ||
|
|
f4cd4f49b2 | ||
|
|
09b039c62f | ||
|
|
ff8791f48a | ||
|
|
43bc99548c | ||
|
|
380a14492f | ||
|
|
692e08fc1e | ||
|
|
33ad8520f8 | ||
|
|
9aa8eb395d | ||
|
|
34d50b8d70 | ||
|
|
07e8e21eae | ||
|
|
525273e37f | ||
|
|
34a8113d53 | ||
|
|
4f8cf2cb02 | ||
|
|
8a0abf22da | ||
|
|
9140d6d8b0 | ||
|
|
9133f05b5e | ||
|
|
790d16b85d | ||
|
|
adf60e357e | ||
|
|
f81db26e60 | ||
|
|
655eccbe19 | ||
|
|
5b31b4768f | ||
|
|
425cb82133 | ||
|
|
344e4ebdab | ||
|
|
32afb2e2e5 | ||
|
|
3100a093fd | ||
|
|
fb06200d26 | ||
|
|
1696cc8601 | ||
|
|
4072b9fb09 | ||
|
|
36160a6579 | ||
|
|
4986d570a0 | ||
|
|
1965eabaa3 | ||
|
|
90784afd48 | ||
|
|
258364f37e | ||
|
|
f99531c9d4 | ||
|
|
74cfc05fba | ||
|
|
15868a5a2d | ||
|
|
3abca8989a | ||
|
|
ae9a1ebcb4 | ||
|
|
18a05ace64 | ||
|
|
3b2c38cf0b | ||
|
|
6ecbb672fb | ||
|
|
30954d239a | ||
|
|
edd15a4f79 | ||
|
|
db110d1ca4 | ||
|
|
e3e97000a7 | ||
|
|
ce2d9a271a | ||
|
|
222aef7e3d | ||
|
|
08bbdaf70b | ||
|
|
7300b05442 | ||
|
|
cd13e04658 | ||
|
|
48de42d98b | ||
|
|
35c0c45500 | ||
|
|
6c01aa9b0b | ||
|
|
2335312081 | ||
|
|
abfd9b68fc | ||
|
|
500c72ebc9 | ||
|
|
00fc4f1b8c | ||
|
|
98755fab61 | ||
|
|
09d8702089 | ||
|
|
9080127d38 | ||
|
|
d7664c7f46 | ||
|
|
47da7d5b81 | ||
|
|
ef3690765d | ||
|
|
33c333e7fa | ||
|
|
10128a20a0 | ||
|
|
764945fc30 | ||
|
|
3098c0afd2 | ||
|
|
101c67a107 | ||
|
|
a1661fbb4e | ||
|
|
04c5e32ddf | ||
|
|
b78d488044 | ||
|
|
832e296bc5 | ||
|
|
46e5860143 | ||
|
|
4fa44abd3e | ||
|
|
191a91cb81 | ||
|
|
388d3d6f2f | ||
|
|
b1b29387e3 | ||
|
|
764edea832 | ||
|
|
16e4067d89 | ||
|
|
05a8f47006 | ||
|
|
1f1d6f1eda | ||
|
|
27f79238a1 | ||
|
|
6d553ea583 | ||
|
|
ad8d3ba210 | ||
|
|
e441cdf5f0 | ||
|
|
9c3c35067d | ||
|
|
7a60ae0629 | ||
|
|
258273fd25 | ||
|
|
dc502b2f12 | ||
|
|
803e59a0ee | ||
|
|
e31eaf0241 | ||
|
|
8181bec481 | ||
|
|
7c1d6e6b88 | ||
|
|
7e7e54eed7 | ||
|
|
57c9b7b277 | ||
|
|
984eb4de00 | ||
|
|
c4b4bfd2fc | ||
|
|
cf9bce5bac | ||
|
|
16a7d2abe7 | ||
|
|
a690b46456 | ||
|
|
b55cd415f2 | ||
|
|
4c2b73197d | ||
|
|
1c1ae37f41 | ||
|
|
57fa6de62a | ||
|
|
6f0a923df7 | ||
|
|
4b04bf3781 | ||
|
|
eca0469f32 | ||
|
|
d588f73ed6 | ||
|
|
b40a78b706 | ||
|
|
93a43899e7 | ||
|
|
155ba9eb56 | ||
|
|
4224d56b25 | ||
|
|
cc14218dd5 | ||
|
|
b856829ca9 | ||
|
|
4239bbe05b | ||
|
|
c43d2e6e68 | ||
|
|
a9bc4f47f8 | ||
|
|
1ce2d69809 | ||
|
|
bf9c172206 | ||
|
|
e966063e80 | ||
|
|
fa86ca2e05 | ||
|
|
8ef45968c2 | ||
|
|
9cc0a62188 | ||
|
|
df738348f6 | ||
|
|
f3b0044d5f | ||
|
|
3561ff9132 | ||
|
|
f5d36e2c92 | ||
|
|
0056f92b65 | ||
|
|
8da80e88a3 | ||
|
|
deaee71a44 | ||
|
|
f21ed3bf0d | ||
|
|
49966a53f6 | ||
|
|
4d0c772dd8 | ||
|
|
0123cc5b1a | ||
|
|
f4f0e59811 | ||
|
|
0695e3325d | ||
|
|
d9f576e4dc | ||
|
|
d830fa2873 | ||
|
|
091f79c7f8 | ||
|
|
a2f88ebbf1 | ||
|
|
8942f352a1 | ||
|
|
f721ad0db9 | ||
|
|
1aa90077a4 | ||
|
|
c6e9a46c3e | ||
|
|
3360ab0dfe | ||
|
|
4c3354f22c | ||
|
|
4eee5ee2b1 | ||
|
|
92091532e0 | ||
|
|
c7c68187eb | ||
|
|
81b65d57ca | ||
|
|
5c8cdd3162 | ||
|
|
ec871318a9 | ||
|
|
73d1a1bdc5 | ||
|
|
0e93f6609b | ||
|
|
ee3d98662c | ||
|
|
3612b55f97 | ||
|
|
d77b552518 | ||
|
|
e156349ec0 | ||
|
|
5f75288dc7 | ||
|
|
4658fa2aed | ||
|
|
74d76440ee | ||
|
|
630d6d2fed | ||
|
|
e072aff897 | ||
|
|
879583623d | ||
|
|
397b2a8795 | ||
|
|
5189c46ce5 | ||
|
|
ae1e99aa3e | ||
|
|
3735ce351e | ||
|
|
17e550a6a0 | ||
|
|
3045534222 | ||
|
|
292de8d56a | ||
|
|
434a2dbca3 | ||
|
|
626aa710c1 | ||
|
|
2239625efe | ||
|
|
78fc6fc657 | ||
|
|
76e8727bfc | ||
|
|
d2b7c76734 | ||
|
|
6fd2a4d69f | ||
|
|
4cfd3b8c45 | ||
|
|
197afc21ce | ||
|
|
e645eaade9 | ||
|
|
62edf9c3ae | ||
|
|
af34d94e6a | ||
|
|
c452017c84 | ||
|
|
98539e698f | ||
|
|
5367b97943 | ||
|
|
03b642ddd3 | ||
|
|
1b94d2ea14 | ||
|
|
967eafe8a3 | ||
|
|
d16e916502 | ||
|
|
69eb2d7a3b | ||
|
|
7069528714 | ||
|
|
6d4ac92133 | ||
|
|
79f3e8e28d | ||
|
|
b40af8e1b3 | ||
|
|
0658d95b12 | ||
|
|
c381250665 | ||
|
|
ad26b0f80c | ||
|
|
497a88c8de | ||
|
|
c953d84af9 | ||
|
|
0bad86bb9d | ||
|
|
809f1ad26f | ||
|
|
eee8a18875 | ||
|
|
932222a9c6 | ||
|
|
24b2e2a2af | ||
|
|
2d68fcd7c9 | ||
|
|
e48731b2e3 | ||
|
|
78e329d1c8 | ||
|
|
8f9022827c | ||
|
|
ab49846611 | ||
|
|
de19f49d26 | ||
|
|
1476ea737e | ||
|
|
9ade08013f | ||
|
|
305e992da6 | ||
|
|
6b929ac107 | ||
|
|
7a05931da8 | ||
|
|
108a3e6188 | ||
|
|
c1f829291a | ||
|
|
07681110c7 | ||
|
|
069eca7d9c | ||
|
|
abd1827182 | ||
|
|
872124429d | ||
|
|
9736d39e04 | ||
|
|
1ca3fff17e | ||
|
|
8daf0a2c38 | ||
|
|
d7c8b7f8f7 | ||
|
|
6bbfd5d167 | ||
|
|
baf2a47d75 | ||
|
|
4664c9ba0d | ||
|
|
33c326febe | ||
|
|
fded7f1dfb | ||
|
|
da796194d6 | ||
|
|
d11fd281f4 | ||
|
|
85dac4a109 | ||
|
|
40423ede52 | ||
|
|
2701934f89 | ||
|
|
941d9fa107 | ||
|
|
c8debd351f | ||
|
|
c5fa83b2f4 | ||
|
|
24a6aa5a9a | ||
|
|
51a2e47430 | ||
|
|
f3075dfc18 | ||
|
|
6715308f88 | ||
|
|
6901b17bb6 | ||
|
|
35f2cf6b4d | ||
|
|
d9258bcb84 | ||
|
|
f45a3d252a | ||
|
|
b5e908d271 | ||
|
|
ade77473c4 | ||
|
|
60d1a5cea2 | ||
|
|
7cd7b4047f | ||
|
|
a22d2dbb92 | ||
|
|
f5636fe0d3 | ||
|
|
b892d2e70c | ||
|
|
948f922041 | ||
|
|
cec6d9c3c2 | ||
|
|
6c72bef0de | ||
|
|
0266f518fc | ||
|
|
fe21340186 | ||
|
|
f72f18a821 | ||
|
|
516314c47f | ||
|
|
c2ac328cab | ||
|
|
55cdac9269 | ||
|
|
07d609ca72 | ||
|
|
a506269906 | ||
|
|
af027e616d | ||
|
|
77b563396e | ||
|
|
04161525eb | ||
|
|
98a67c80c6 | ||
|
|
0023b4a4a8 | ||
|
|
a8398765c6 | ||
|
|
a5d0d5e525 | ||
|
|
6df79b96dd | ||
|
|
5b8bee6777 | ||
|
|
83b9f74100 | ||
|
|
76260cbc18 | ||
|
|
d9a01a70c3 | ||
|
|
a7849d2635 | ||
|
|
06949848f8 | ||
|
|
595681d6e9 | ||
|
|
0e1c46f18d | ||
|
|
3505b38789 | ||
|
|
fe8163c1e4 | ||
|
|
42efbd5297 | ||
|
|
e3ac877c3d | ||
|
|
3569e3ccbf | ||
|
|
b560011d2f | ||
|
|
e31640cba6 | ||
|
|
e76458bff6 | ||
|
|
9645b28674 | ||
|
|
558430b4f3 | ||
|
|
e9f8f47e20 | ||
|
|
1149311076 | ||
|
|
d3b54ae300 | ||
|
|
ef176909b4 | ||
|
|
553816e8c4 | ||
|
|
1d8e66a9cc | ||
|
|
772436b16b | ||
|
|
cdf961df09 | ||
|
|
f6c5d22dc2 | ||
|
|
01a32ad00c | ||
|
|
dcd21bc3fa | ||
|
|
7ffb417618 | ||
|
|
b05706a7c5 | ||
|
|
82ddfeb6ee | ||
|
|
59270f2c40 | ||
|
|
e67b97257c | ||
|
|
636b0ffe4f | ||
|
|
e6e962ecf7 | ||
|
|
81c031966c | ||
|
|
749a82bcf7 | ||
|
|
b040531f99 | ||
|
|
f9897bc439 | ||
|
|
ff434b45fc | ||
|
|
1c6560797d | ||
|
|
ff95f9e402 | ||
|
|
75192bef17 | ||
|
|
bdff19237e | ||
|
|
05560cf04c | ||
|
|
5d03bb96f3 | ||
|
|
ee7d51c21b | ||
|
|
6ce45abfc4 | ||
|
|
2928aa2eb7 | ||
|
|
c94418e98f | ||
|
|
d0702c9159 | ||
|
|
1be8e5d0c7 | ||
|
|
2bf9acb07a | ||
|
|
388e4675f4 | ||
|
|
25ce7958ae | ||
|
|
ad60b21d2a | ||
|
|
64f36d2d7c | ||
|
|
93b18dfb18 | ||
|
|
65bc67710c | ||
|
|
f1afb67c77 | ||
|
|
86d3a4a08d | ||
|
|
9731c8384a | ||
|
|
33da9777ea | ||
|
|
33657624a6 | ||
|
|
07ee987411 | ||
|
|
3578df4770 | ||
|
|
72b7adcf39 | ||
|
|
0fe3e7949b | ||
|
|
c595270faa | ||
|
|
d421d7964b | ||
|
|
d753365e54 | ||
|
|
b6c3467fe1 | ||
|
|
116b4cc390 | ||
|
|
f912b33f09 | ||
|
|
a5dd5b9e98 | ||
|
|
4087a93142 | ||
|
|
f51417e709 | ||
|
|
cf9414f2df | ||
|
|
fd7d724f39 | ||
|
|
329beb3197 | ||
|
|
528fdc9fc5 | ||
|
|
81f0499c9d | ||
|
|
33a774b5b7 | ||
|
|
3727a9d27f | ||
|
|
58205e5eb5 | ||
|
|
2f75e276b2 | ||
|
|
31b7203d01 | ||
|
|
5a0b3c6eb1 | ||
|
|
c9932fc81b | ||
|
|
dad876308c | ||
|
|
145a4e5e71 | ||
|
|
98409f09c0 | ||
|
|
81529eb215 | ||
|
|
b9c93dd6b0 | ||
|
|
057df6632a | ||
|
|
81acfecbd7 | ||
|
|
5499ded796 | ||
|
|
1002f910e4 | ||
|
|
61427b849a | ||
|
|
eff1cb1e62 | ||
|
|
a53f818ba6 | ||
|
|
70236f42ff | ||
|
|
d9a3318768 | ||
|
|
9a935c2e15 | ||
|
|
d241e5cbb0 | ||
|
|
8438714062 | ||
|
|
49a9278c59 | ||
|
|
fcdac4b759 | ||
|
|
fc9516fd39 | ||
|
|
e74a738274 | ||
|
|
6bff02d91e | ||
|
|
86fad6390f | ||
|
|
bad6ff296a | ||
|
|
7fc2d85c46 | ||
|
|
1e9c04d7c0 | ||
|
|
e01ad32849 | ||
|
|
3ffdd7233f | ||
|
|
06cab5effc | ||
|
|
5a5fb45c3b | ||
|
|
c96fb5e017 | ||
|
|
1a33c3be5a | ||
|
|
b3a355f51d | ||
|
|
0ad7db3b51 | ||
|
|
b57b0cb04c | ||
|
|
8504337da9 | ||
|
|
f71905b880 | ||
|
|
f2f5cd7daf | ||
|
|
235f774ff6 | ||
|
|
464d30a384 | ||
|
|
3b99546f33 | ||
|
|
009b55481b | ||
|
|
19a094b2fa | ||
|
|
72e7931f4d | ||
|
|
3eadb6b5e5 | ||
|
|
0e4dd79cc1 | ||
|
|
1ca162f72e | ||
|
|
f676938176 | ||
|
|
28b67ec68b | ||
|
|
8a759cb178 | ||
|
|
c7add8f0a8 | ||
|
|
66e4dcd1c4 | ||
|
|
d707287754 | ||
|
|
d9381fc58e | ||
|
|
cf6e268ff6 | ||
|
|
039ccea58f | ||
|
|
bba2f3ce20 | ||
|
|
b592b8fa0f | ||
|
|
2ac7efeaac | ||
|
|
b82d172d58 | ||
|
|
fbe02ab19c | ||
|
|
41f9f4032d | ||
|
|
7ca4d03cf8 | ||
|
|
7b2b6caf82 | ||
|
|
924c7db5eb | ||
|
|
b7fb8ff4da | ||
|
|
6b37b2b9d6 | ||
|
|
2ea3ce0c67 | ||
|
|
b04d062935 | ||
|
|
9b32cf63ff | ||
|
|
d357ef0245 | ||
|
|
2129cce7f3 | ||
|
|
3b24ce306f | ||
|
|
c8c1bdf836 | ||
|
|
7f5760f84e | ||
|
|
4a54c87826 | ||
|
|
e2da14da8a | ||
|
|
7248616e58 | ||
|
|
54c643b35e | ||
|
|
33b5a21c26 | ||
|
|
5ad34b96ac | ||
|
|
1095cb451f | ||
|
|
62ff6e9ded |
11
.gitattributes
vendored
11
.gitattributes
vendored
@@ -5,13 +5,4 @@
|
||||
*.opus filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.kra filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.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
|
||||
*.kra filter=lfs diff=lfs merge=lfs -text
|
||||
2
.github/FUNDING.yml
vendored
2
.github/FUNDING.yml
vendored
@@ -1,2 +0,0 @@
|
||||
github: [curioustorvald]
|
||||
custom: ["https://paypal.me/curioustorvald"]
|
||||
99
.github/workflows/codeql.yml
vendored
99
.github/workflows/codeql.yml
vendored
@@ -1,99 +0,0 @@
|
||||
# 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}}"
|
||||
22
.gitignore
vendored
22
.gitignore
vendored
@@ -1,19 +1,9 @@
|
||||
### IntelliJ IDEA ###
|
||||
out/
|
||||
!**/src/main/**/out/
|
||||
!**/src/test/**/out/
|
||||
|
||||
# Build-related
|
||||
out/*
|
||||
bin/*
|
||||
build/*
|
||||
assets_release/*
|
||||
.gradle/*
|
||||
TerrarumBuild.jar
|
||||
buildapp/out/Terrarum*
|
||||
buildapp/TerrarumLinux.*
|
||||
buildapp/TerrarumMac.*
|
||||
buildapp/TerrarumWindows.*
|
||||
assets/mods/*/*.jar
|
||||
work_files/skylight/hosek_model_source/*.bin
|
||||
|
||||
# Java native errors
|
||||
hs_err_pid*
|
||||
@@ -39,7 +29,6 @@ workspace.xml
|
||||
.tmp*
|
||||
tmp_*
|
||||
*.bak
|
||||
*-autosave.kra
|
||||
## Microsoft Office
|
||||
~$*
|
||||
## Generic temp files in Linux
|
||||
@@ -47,3 +36,10 @@ tmp_*
|
||||
## Vim temp files
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# Eclipse MAT heap files
|
||||
*.hprof
|
||||
*.bin
|
||||
*.index
|
||||
*.threads
|
||||
*_Leak_Suspects.zip
|
||||
|
||||
1
.idea/.name
generated
Normal file
1
.idea/.name
generated
Normal file
@@ -0,0 +1 @@
|
||||
Terrarum_renewed
|
||||
9
.idea/artifacts/ModuleBasegame.xml
generated
Normal file
9
.idea/artifacts/ModuleBasegame.xml
generated
Normal file
@@ -0,0 +1,9 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="jar" name="ModuleBasegame">
|
||||
<output-path>$PROJECT_DIR$/out/artifacts/ModuleBasegame</output-path>
|
||||
<root id="archive" name="ModuleBasegame.jar">
|
||||
<element id="module-output" name="ingamemodule_basegame" />
|
||||
<element id="library" level="project" name="lib" />
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
||||
10
.idea/artifacts/ModuleComputers.xml
generated
10
.idea/artifacts/ModuleComputers.xml
generated
@@ -1,10 +0,0 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="jar" name="ModuleComputers">
|
||||
<output-path>$PROJECT_DIR$/assets/mods/dwarventech</output-path>
|
||||
<root id="archive" name="ModuleComputers.jar">
|
||||
<element id="module-output" name="ModuleComputers" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/ModuleComputers/lib/TerrarumTSVM.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/ModuleComputers/lib/TerranVirtualDisk.jar" path-in-jar="/" />
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
||||
8
.idea/artifacts/MusicPlayer.xml
generated
8
.idea/artifacts/MusicPlayer.xml
generated
@@ -1,8 +0,0 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="jar" name="MusicPlayer">
|
||||
<output-path>$PROJECT_DIR$/assets/mods/musicplayer</output-path>
|
||||
<root id="archive" name="MusicPlayer.jar">
|
||||
<element id="module-output" name="MusicPlayer" />
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
||||
88
.idea/artifacts/SpriteAssemblerApp.xml
generated
88
.idea/artifacts/SpriteAssemblerApp.xml
generated
@@ -1,88 +0,0 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="jar" name="SpriteAssemblerApp">
|
||||
<output-path>$PROJECT_DIR$/out</output-path>
|
||||
<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>
|
||||
<element id="module-output" name="TerrarumBuild" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/Terrarum_Joise.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/TerrarumSansBitmap.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-controllers-core-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/prtree.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-codec-1.15.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="$PROJECT_DIR$/lib/gdx-controllers-desktop-2.2.1.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.21/kotlin-stdlib-1.8.21.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.21/kotlin-stdlib-jdk7-1.8.21.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.21/kotlin-stdlib-common-1.8.21.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="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.21/kotlin-stdlib-jdk8-1.8.21.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="$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar" path-in-jar="/" />
|
||||
<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.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>
|
||||
88
.idea/artifacts/TerrarumBuild.xml
generated
88
.idea/artifacts/TerrarumBuild.xml
generated
@@ -1,92 +1,14 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="jar" name="TerrarumBuild">
|
||||
<output-path>$PROJECT_DIR$/out</output-path>
|
||||
<output-path>$PROJECT_DIR$/</output-path>
|
||||
<root id="archive" name="TerrarumBuild.jar">
|
||||
<element id="directory" name="META-INF">
|
||||
<element id="file-copy" path="$PROJECT_DIR$/src/META-INF/MANIFEST.MF" />
|
||||
</element>
|
||||
<element id="module-output" name="TerrarumBuild" />
|
||||
<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="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-codec-1.15.jar" path-in-jar="/" />
|
||||
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-controllers-core-2.2.1.jar" path-in-jar="/" />
|
||||
<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="$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/commons-math3-3.6.1.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="$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.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="/" />
|
||||
<element id="library" level="project" name="KotlinJavaRuntime" />
|
||||
<element id="library" level="project" name="lib" />
|
||||
<element id="module-output" name="ingamemodule_basegame" />
|
||||
<element id="module-output" name="terrarum" />
|
||||
</root>
|
||||
</artifact>
|
||||
</component>
|
||||
28
.idea/codeStyles/Project.xml
generated
28
.idea/codeStyles/Project.xml
generated
@@ -1,19 +1,41 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<option name="RIGHT_MARGIN" value="999" />
|
||||
<JetCodeStyleSettings>
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
<option name="ALIGN_IN_COLUMNS_CASE_BRANCH" value="true" />
|
||||
</JetCodeStyleSettings>
|
||||
<MarkdownNavigatorCodeStyleSettings>
|
||||
<option name="RIGHT_MARGIN" value="72" />
|
||||
</MarkdownNavigatorCodeStyleSettings>
|
||||
<XML>
|
||||
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
|
||||
</XML>
|
||||
<codeStyleSettings language="JAVA">
|
||||
<option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
|
||||
<option name="ELSE_ON_NEW_LINE" value="true" />
|
||||
<option name="CATCH_ON_NEW_LINE" value="true" />
|
||||
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
||||
<option name="ALIGN_MULTILINE_CHAINED_METHODS" value="true" />
|
||||
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
|
||||
<option name="ALIGN_MULTILINE_TERNARY_OPERATION" value="true" />
|
||||
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
||||
<option name="CALL_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
|
||||
<option name="METHOD_PARAMETERS_WRAP" value="1" />
|
||||
<option name="THROWS_LIST_WRAP" value="1" />
|
||||
<option name="TERNARY_OPERATION_WRAP" value="5" />
|
||||
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
|
||||
<option name="KEEP_SIMPLE_CLASSES_IN_ONE_LINE" value="true" />
|
||||
<option name="FOR_STATEMENT_WRAP" value="5" />
|
||||
<option name="ARRAY_INITIALIZER_WRAP" value="5" />
|
||||
<option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="true" />
|
||||
<option name="WRAP_ON_TYPING" value="0" />
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="kotlin">
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
<option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="5" />
|
||||
<option name="KEEP_BLANK_LINES_IN_CODE" value="5" />
|
||||
<option name="ELSE_ON_NEW_LINE" value="true" />
|
||||
<option name="CATCH_ON_NEW_LINE" value="true" />
|
||||
<option name="FINALLY_ON_NEW_LINE" value="true" />
|
||||
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
|
||||
</codeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
||||
3
.idea/compiler.xml
generated
3
.idea/compiler.xml
generated
@@ -1,11 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<option name="BUILD_PROCESS_HEAP_SIZE" value="2048" />
|
||||
<annotationProcessing>
|
||||
<profile default="true" name="Default" enabled="true" />
|
||||
</annotationProcessing>
|
||||
<bytecodeTargetLevel target="17" />
|
||||
<bytecodeTargetLevel target="8" />
|
||||
</component>
|
||||
<component name="JavacSettings">
|
||||
<option name="PREFER_TARGET_JDK_COMPILER" value="false" />
|
||||
|
||||
3
.idea/inspectionProfiles/Project_Default.xml
generated
3
.idea/inspectionProfiles/Project_Default.xml
generated
@@ -5,9 +5,6 @@
|
||||
<inspection_tool class="ConstantConditionIf" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="CsvValidation" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="ExplicitThis" enabled="false" level="INFORMATION" enabled_by_default="false" />
|
||||
<inspection_tool class="JsonStandardCompliance" enabled="true" level="ERROR" enabled_by_default="true">
|
||||
<option name="myWarnAboutComments" value="false" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="KotlinDoubleNegation" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="NullChecksToSafeCall" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="RedundantCompanionReference" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||
|
||||
10
.idea/kotlinc.xml
generated
10
.idea/kotlinc.xml
generated
@@ -1,13 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Kotlin2JsCompilerArguments">
|
||||
<option name="sourceMapEmbedSources" />
|
||||
</component>
|
||||
<component name="Kotlin2JvmCompilerArguments">
|
||||
<option name="jvmTarget" value="1.8" />
|
||||
</component>
|
||||
<component name="KotlinCommonCompilerArguments">
|
||||
<option name="apiVersion" value="2.0" />
|
||||
<option name="languageVersion" value="2.0" />
|
||||
</component>
|
||||
<component name="KotlinJpsPluginSettings">
|
||||
<option name="version" value="2.0.0" />
|
||||
</component>
|
||||
</project>
|
||||
9
.idea/libraries/GetBatteryStatus.xml
generated
9
.idea/libraries/GetBatteryStatus.xml
generated
@@ -1,9 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="GetBatteryStatus">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/GetBatteryStatus.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
11
.idea/libraries/GetCpuName_src.xml
generated
11
.idea/libraries/GetCpuName_src.xml
generated
@@ -1,11 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="GetCpuName-src">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/GetCpuName.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/GetCpuName-src.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
27
.idea/libraries/KotlinJavaRuntime.xml
generated
27
.idea/libraries/KotlinJavaRuntime.xml
generated
@@ -1,23 +1,18 @@
|
||||
<component name="libraryTable">
|
||||
<library name="KotlinJavaRuntime" type="repository">
|
||||
<properties maven-id="org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.0" />
|
||||
<library name="KotlinJavaRuntime">
|
||||
<CLASSES>
|
||||
<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/2.0.0/kotlin-stdlib-jdk7-2.0.0.jar!/" />
|
||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar!/" />
|
||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar!/" />
|
||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test.jar!/" />
|
||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlinx-coroutines-core-1.0.1.jar!/" />
|
||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlinx-coroutines-io-jvm-0.1.1.jar!/" />
|
||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlinx-coroutines-jdk8-1.0.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<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/2.0.0/kotlin-stdlib-jdk7-2.0.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<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/2.0.0/kotlin-stdlib-jdk7-2.0.0-sources.jar!/" />
|
||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-stdlib-sources.jar!/" />
|
||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect-sources.jar!/" />
|
||||
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
10
.idea/libraries/ModuleComputersLib.xml
generated
10
.idea/libraries/ModuleComputersLib.xml
generated
@@ -1,10 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="ModuleComputersLib">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/ModuleComputers/lib" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
<jarDirectory url="file://$PROJECT_DIR$/ModuleComputers/lib" recursive="false" />
|
||||
</library>
|
||||
</component>
|
||||
11
.idea/libraries/TerranVirtualDisk.xml
generated
11
.idea/libraries/TerranVirtualDisk.xml
generated
@@ -1,11 +0,0 @@
|
||||
<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>
|
||||
11
.idea/libraries/TerrarumSansBitmap.xml
generated
11
.idea/libraries/TerrarumSansBitmap.xml
generated
@@ -1,11 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="TerrarumSansBitmap">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/TerrarumSansBitmap.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/TerrarumSansBitmap.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
11
.idea/libraries/Terrarum_Joise.xml
generated
11
.idea/libraries/Terrarum_Joise.xml
generated
@@ -1,11 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Terrarum_Joise">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/Terrarum_Joise.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/Terrarum_Joise.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
14
.idea/libraries/apache_commons_math3.xml
generated
14
.idea/libraries/apache_commons_math3.xml
generated
@@ -1,14 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="apache.commons.math3" type="repository">
|
||||
<properties maven-id="org.apache.commons:commons-math3:3.6.1" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/commons-math3-3.6.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/commons-math3-3.6.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/commons-math3-3.6.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
17
.idea/libraries/badlogicgames_gdx.xml
generated
17
.idea/libraries/badlogicgames_gdx.xml
generated
@@ -1,17 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="badlogicgames.gdx" type="repository">
|
||||
<properties maven-id="com.badlogicgames.gdx:gdx:1.12.1" />
|
||||
<CLASSES>
|
||||
<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.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.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-jnigen-loader-2.3.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
170
.idea/libraries/badlogicgames_gdx_backend_lwjgl3.xml
generated
170
.idea/libraries/badlogicgames_gdx_backend_lwjgl3.xml
generated
@@ -1,170 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="badlogicgames.gdx.backend.lwjgl3" type="repository">
|
||||
<properties maven-id="com.badlogicgames.gdx:gdx-backend-lwjgl3:1.12.1" />
|
||||
<CLASSES>
|
||||
<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.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.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.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.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.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>
|
||||
</library>
|
||||
</component>
|
||||
53
.idea/libraries/com_badlogicgames_gdx_gdx_backend_lwjgl3_1_9_10.xml
generated
Normal file
53
.idea/libraries/com_badlogicgames_gdx_gdx_backend_lwjgl3_1_9_10.xml
generated
Normal file
@@ -0,0 +1,53 @@
|
||||
<component name="libraryTable">
|
||||
<library name="com.badlogicgames.gdx:gdx-backend-lwjgl3:1.9.10" type="repository">
|
||||
<properties maven-id="com.badlogicgames.gdx:gdx-backend-lwjgl3:1.9.10" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.9.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.9.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.2.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.2.1-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.2.1-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.2.1-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.2.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.2.1-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.2.1-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.2.1-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.1-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.1-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.1-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.2.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.2.1-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.2.1-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.2.1-natives-macos.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.2.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.2.1-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.2.1-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.2.1-natives-macos.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.9.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.9.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.2.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.2.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.2.1-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.2.1-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.9.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.9.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-3.2.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-glfw-3.2.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-jemalloc-3.2.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-opengl-3.2.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-openal-3.2.1-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>
|
||||
</library>
|
||||
</component>
|
||||
41
.idea/libraries/com_badlogicgames_gdx_gdx_backend_lwjgl_1_9_10.xml
generated
Normal file
41
.idea/libraries/com_badlogicgames_gdx_gdx_backend_lwjgl_1_9_10.xml
generated
Normal file
@@ -0,0 +1,41 @@
|
||||
<component name="libraryTable">
|
||||
<library name="com.badlogicgames.gdx:gdx-backend-lwjgl:1.9.10" type="repository">
|
||||
<properties maven-id="com.badlogicgames.gdx:gdx-backend-lwjgl:1.9.10" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-backend-lwjgl-1.9.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.9.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-2.9.3.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-platform-2.9.3-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-platform-2.9.3-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-platform-2.9.3-natives-osx.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jinput-2.0.5.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jutils-1.0.0.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jinput-platform-2.0.5-natives-linux.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jinput-platform-2.0.5-natives-windows.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jinput-platform-2.0.5-natives-osx.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl_util-2.9.3.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-lwjgl-1.9.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.9.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-2.9.3-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jinput-2.0.5-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jutils-1.0.0-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl_util-2.9.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-lwjgl-1.9.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.9.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl-2.9.3-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jinput-2.0.5-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/jutils-1.0.0-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/lwjgl_util-2.9.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>
|
||||
</library>
|
||||
</component>
|
||||
20
.idea/libraries/com_badlogicgames_gdx_gdx_controllers_desktop_1_9_10.xml
generated
Normal file
20
.idea/libraries/com_badlogicgames_gdx_gdx_controllers_desktop_1_9_10.xml
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
<component name="libraryTable">
|
||||
<library name="com.badlogicgames.gdx:gdx-controllers-desktop:1.9.10" type="repository">
|
||||
<properties maven-id="com.badlogicgames.gdx:gdx-controllers-desktop:1.9.10" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-desktop-1.9.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.9.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-1.9.10.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-desktop-1.9.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.9.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-1.9.10-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-desktop-1.9.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.9.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-1.9.10-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
18
.idea/libraries/com_badlogicgames_gdx_gdx_controllers_platform_1_9_10.xml
generated
Normal file
18
.idea/libraries/com_badlogicgames_gdx_gdx_controllers_platform_1_9_10.xml
generated
Normal file
@@ -0,0 +1,18 @@
|
||||
<component name="libraryTable">
|
||||
<library name="com.badlogicgames.gdx:gdx-controllers-platform:1.9.10" type="repository">
|
||||
<properties maven-id="com.badlogicgames.gdx:gdx-controllers-platform:1.9.10" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-platform-1.9.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-1.9.10.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.9.10.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-1.9.10-javadoc.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.9.10-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-1.9.10-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-1.9.10-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
10
.idea/libraries/com_badlogicgames_gdx_gdx_platform_1_9_10.xml
generated
Normal file
10
.idea/libraries/com_badlogicgames_gdx_gdx_platform_1_9_10.xml
generated
Normal file
@@ -0,0 +1,10 @@
|
||||
<component name="libraryTable">
|
||||
<library name="com.badlogicgames.gdx:gdx-platform:1.9.10" type="repository">
|
||||
<properties maven-id="com.badlogicgames.gdx:gdx-platform:1.9.10" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-platform-1.9.10.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
14
.idea/libraries/commons_codec_commons_codec_1_15.xml
generated
14
.idea/libraries/commons_codec_commons_codec_1_15.xml
generated
@@ -1,14 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="commons-codec:commons-codec:1.15" type="repository">
|
||||
<properties maven-id="commons-codec:commons-codec:1.15" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/commons-codec-1.15.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/commons-codec-1.15-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/commons-codec-1.15-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
.idea/libraries/gdx_controllers_core_2_2_1.xml
generated
13
.idea/libraries/gdx_controllers_core_2_2_1.xml
generated
@@ -1,13 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="gdx-controllers-core-2.2.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-core-2.2.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-core-2.2.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-core-2.2.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
.idea/libraries/gdx_controllers_desktop_2_2_1.xml
generated
13
.idea/libraries/gdx_controllers_desktop_2_2_1.xml
generated
@@ -1,13 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="gdx-controllers-desktop-2.2.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-desktop-2.2.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-desktop-2.2.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/gdx-controllers-desktop-2.2.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
@@ -1,11 +0,0 @@
|
||||
<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>
|
||||
14
.idea/libraries/github_wendykierp_JTransforms.xml
generated
14
.idea/libraries/github_wendykierp_JTransforms.xml
generated
@@ -1,14 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="github.wendykierp.JTransforms" type="repository">
|
||||
<properties maven-id="com.github.wendykierp:JTransforms:3.1" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/JTransforms-3.1.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/JLargeArrays-1.5.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/JTransforms-3.1-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/JLargeArrays-1.5-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
28
.idea/libraries/graalvm_js_22_3_1.xml
generated
28
.idea/libraries/graalvm_js_22_3_1.xml
generated
@@ -1,28 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="graalvm-js 22.3.1">
|
||||
<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!/" />
|
||||
</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!/" />
|
||||
</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!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
14
.idea/libraries/io_airlift_aircompressor.xml
generated
14
.idea/libraries/io_airlift_aircompressor.xml
generated
@@ -1,14 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="io.airlift.aircompressor" type="repository">
|
||||
<properties maven-id="io.airlift:aircompressor:2.0.2" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/aircompressor-2.0.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/aircompressor-2.0.2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/aircompressor-2.0.2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
14
.idea/libraries/io_github_classgraph.xml
generated
14
.idea/libraries/io_github_classgraph.xml
generated
@@ -1,14 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="io.github.classgraph" type="repository">
|
||||
<properties maven-id="io.github.classgraph:classgraph:4.8.157" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/classgraph-4.8.157.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/classgraph-4.8.157-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/classgraph-4.8.157-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
13
.idea/libraries/jxinput_1_0_0.xml
generated
13
.idea/libraries/jxinput_1_0_0.xml
generated
@@ -1,13 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="jxinput-1.0.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/jxinput-1.0.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/jxinput-1.0.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/jxinput-1.0.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
20
.idea/libraries/lib.xml
generated
Normal file
20
.idea/libraries/lib.xml
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
<component name="libraryTable">
|
||||
<library name="lib">
|
||||
<CLASSES>
|
||||
<root url="file://$PROJECT_DIR$/lib" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="http://libgdx.badlogicgames.com/nightlies/docs/api/" />
|
||||
<root url="https://libgdx.badlogicgames.com/ci/nightlies/docs/api/" />
|
||||
</JAVADOC>
|
||||
<NATIVE>
|
||||
<root url="file://$PROJECT_DIR$/lib" />
|
||||
</NATIVE>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/Terrarum_Joise.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/TerrarumSansBitmap.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/lib/prtree.jar!/" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://$PROJECT_DIR$/lib" recursive="false" />
|
||||
</library>
|
||||
</component>
|
||||
@@ -1,14 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="org.apache.commons:commons-csv:1.8" type="repository">
|
||||
<properties maven-id="org.apache.commons:commons-csv:1.8" />
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/commons-csv-1.8.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$PROJECT_DIR$/lib/commons-csv-1.8-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/commons-csv-1.8-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
11
.idea/libraries/prtree.xml
generated
11
.idea/libraries/prtree.xml
generated
@@ -1,11 +0,0 @@
|
||||
<component name="libraryTable">
|
||||
<library name="prtree">
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/prtree.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/lib/prtree.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
5
.idea/misc.xml
generated
5
.idea/misc.xml
generated
@@ -38,10 +38,7 @@
|
||||
<property name="caretWidth" class="java.lang.Integer" />
|
||||
</properties>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="1.8.0_242" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
<component name="SuppressKotlinCodeStyleNotification">
|
||||
<option name="disableForAll" value="true" />
|
||||
</component>
|
||||
</project>
|
||||
8
.idea/modules.xml
generated
8
.idea/modules.xml
generated
@@ -1,13 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ModuleRenamingHistory">
|
||||
<module old-name="terrarum" new-name="TerrarumBuild" />
|
||||
</component>
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/ModuleComputers/ModuleComputers.iml" filepath="$PROJECT_DIR$/ModuleComputers/ModuleComputers.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/MusicPlayer/MusicPlayer.iml" filepath="$PROJECT_DIR$/MusicPlayer/MusicPlayer.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/TerrarumBuild.iml" filepath="$PROJECT_DIR$/TerrarumBuild.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/ingamemodule_basegame/ingamemodule_basegame.iml" filepath="$PROJECT_DIR$/ingamemodule_basegame/ingamemodule_basegame.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$//terrarum.iml" filepath="$PROJECT_DIR$//terrarum.iml" group="terrarum" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
10
.idea/runConfigurations/Build_Version_Number.xml
generated
10
.idea/runConfigurations/Build_Version_Number.xml
generated
@@ -1,10 +0,0 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Build Version Number" type="Application" factoryName="Application">
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="17" />
|
||||
<option name="MAIN_CLASS_NAME" value="net.torvald.terrarum.PrebuildKt" />
|
||||
<module name="TerrarumBuild" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
||||
19
.idea/runConfigurations/Principii.xml
generated
19
.idea/runConfigurations/Principii.xml
generated
@@ -1,19 +0,0 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Principii" type="Application" factoryName="Application" nameIsGenerated="true">
|
||||
<option name="MAIN_CLASS_NAME" value="net.torvald.terrarum.Principii" />
|
||||
<module name="TerrarumBuild" />
|
||||
<extension name="coverage">
|
||||
<pattern>
|
||||
<option name="PATTERN" value="net.torvald.terrarum.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
</extension>
|
||||
<method v="2">
|
||||
<option name="BuildArtifacts" enabled="true">
|
||||
<artifact name="ModuleComputers" />
|
||||
<artifact name="TerrarumBuild" />
|
||||
</option>
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
||||
10
.idea/runConfigurations/QuickDirtyLint.xml
generated
10
.idea/runConfigurations/QuickDirtyLint.xml
generated
@@ -1,10 +0,0 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="QuickDirtyLint" type="Application" factoryName="Application">
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="17" />
|
||||
<option name="MAIN_CLASS_NAME" value="net.torvald.terrarum.QuickDirtyLintKt" />
|
||||
<module name="TerrarumBuild" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
||||
14
.idea/runConfigurations/SpriteAssemblerApp.xml
generated
14
.idea/runConfigurations/SpriteAssemblerApp.xml
generated
@@ -1,14 +0,0 @@
|
||||
<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="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="SpriteAssemblerApp" />
|
||||
</option>
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
||||
18
.idea/runConfigurations/Terrarum.xml
generated
18
.idea/runConfigurations/Terrarum.xml
generated
@@ -1,18 +0,0 @@
|
||||
<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="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<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="false" run_configuration_name="QuickDirtyLint" run_configuration_type="Application" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
||||
17
.idea/runConfigurations/Terrarum__no_DEV_MODE_.xml
generated
17
.idea/runConfigurations/Terrarum__no_DEV_MODE_.xml
generated
@@ -1,17 +0,0 @@
|
||||
<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="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<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="TerrarumBuild" />
|
||||
</option>
|
||||
<option name="RunConfigurationTask" enabled="true" run_configuration_name="QuickDirtyLint" run_configuration_type="Application" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
||||
@@ -1,16 +0,0 @@
|
||||
<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 -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,6 +2,5 @@
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/Terrarum.wiki" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
176
CLAUDE.md
176
CLAUDE.md
@@ -1,176 +0,0 @@
|
||||
# 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.
|
||||
200
COPYING.md
200
COPYING.md
@@ -1,4 +1,6 @@
|
||||
Copyright (C) 2013-2024 Minjae Song ("CuriousTorvald")
|
||||
*Terrarum*
|
||||
|
||||
Copyright (C) 2013-2020 Minjaesong (Torvald)
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -12,3 +14,199 @@ GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
----
|
||||
|
||||
*Terrarum Sans Bitmap*
|
||||
|
||||
Copyright (c) 2017-2019 Minjae Song (Torvald) and the contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
----
|
||||
|
||||
*Simplex Noise Generator*, version 2012-03-09 by Stefan Gustavson
|
||||
|
||||
Released as public domain
|
||||
|
||||
----
|
||||
|
||||
*Joise*
|
||||
|
||||
Copyright (C) 2013 Jason Taylor
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
*Accidental Noise Library*
|
||||
|
||||
Joise is a derivative work based on Josua Tippetts' C++ library:
|
||||
<http://accidentalnoise.sourceforge.net/index.html>
|
||||
|
||||
Copyright (C) 2011 Joshua Tippetts
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
----
|
||||
|
||||
*Vector2.java*, *Epsilon.java*
|
||||
|
||||
Copyright (c) 2010-2015 William Bittle <http://www.dyn4j.org/>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted
|
||||
provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this list of conditions
|
||||
and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions
|
||||
and the following disclaimer in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of dyn4j nor the names of its contributors may be used to endorse or
|
||||
promote products derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Kotlin translated and modified code Copyright (C) 2016 Minjaesong (Torvald)
|
||||
|
||||
----
|
||||
|
||||
Ambient sound recordings:
|
||||
|
||||
ambient_forest_01.ogg
|
||||
ambient_meadow_01.ogg
|
||||
ambient_windy_01.ogg
|
||||
ambient_woods_01.ogg
|
||||
crickets_01.ogg
|
||||
crickets_02.ogg
|
||||
|
||||
Copyright (C) 2012, 2013, 2015, 2016, 2017 Klankbeeld
|
||||
Sound from <http://www.freesound.org/people/klankbeeld/>
|
||||
|
||||
----
|
||||
|
||||
LuaJ
|
||||
|
||||
Copyright (c) 2007 LuaJ. All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
----
|
||||
|
||||
PRTree, a Priority R-Tree, a spatial index for java code
|
||||
|
||||
Copyright (c) 2008-2012 Robert Olofsson.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the authors nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
----
|
||||
|
||||
Some of the resources were created by _raxod502_.
|
||||
|
||||
Copyright (c) 2016 Radon Rosborough
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<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="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="io.airlift.aircompressor" 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>
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,11 +0,0 @@
|
||||
/**
|
||||
* Created by minjaesong on 2022-02-27.
|
||||
*/
|
||||
module ModuleComputers {
|
||||
requires gdx;
|
||||
requires Terrarum;
|
||||
requires TerrarumSansBitmap;
|
||||
requires kotlin.stdlib;
|
||||
requires kotlin.coroutines.core;
|
||||
requires TerrarumTSVM;
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
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
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2021-12-03.
|
||||
*/
|
||||
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")
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
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()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package net.torvald.terrarum.modulecomputers.console
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import net.torvald.gdx.graphics.PixmapIO2
|
||||
import net.torvald.spriteanimation.SpriteAnimation
|
||||
import net.torvald.terrarum.App
|
||||
import net.torvald.terrarum.Terrarum
|
||||
import net.torvald.terrarum.console.ConsoleCommand
|
||||
import net.torvald.terrarum.console.Echo
|
||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2022-02-27.
|
||||
*/
|
||||
internal object Dumpsprite : ConsoleCommand {
|
||||
|
||||
override fun execute(args: Array<String>) {
|
||||
|
||||
val player = Terrarum.ingame!!.actorNowPlaying!!.sprite!!
|
||||
|
||||
val field = SpriteAnimation::class.java.getDeclaredField("textureRegion")
|
||||
field.isAccessible = true
|
||||
val textureRegion = field.get(player) as TextureRegionPack
|
||||
val texture = textureRegion.texture.textureData
|
||||
|
||||
val pixmap = texture.consumePixmap()
|
||||
PixmapIO2.writeTGA(Gdx.files.absolute("${App.defaultDir}/Exports/PlayerTexture.tga"), pixmap, false)
|
||||
|
||||
}
|
||||
|
||||
override fun printUsage() {
|
||||
Echo("A spear to test the ingame's shield")
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,135 +0,0 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
@@ -1,125 +0,0 @@
|
||||
package net.torvald.terrarum.modulecomputers.gameactors
|
||||
|
||||
import com.badlogic.gdx.utils.Disposable
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
||||
import net.torvald.terrarum.gameactors.AVKey
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.BlockBox
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory
|
||||
import net.torvald.terrarum.modulecomputers.ui.UIHomeComputer
|
||||
import net.torvald.tsvm.*
|
||||
import net.torvald.tsvm.peripheral.AdapterConfig
|
||||
import net.torvald.tsvm.peripheral.GraphicsAdapter
|
||||
import net.torvald.tsvm.peripheral.VMProgramRom
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2021-12-04.
|
||||
*/
|
||||
class FixtureHomeComputer : FixtureBase {
|
||||
|
||||
|
||||
// TODO: write serialiser for TSVM && allow mods to have their own serialiser
|
||||
private val vm = VM(ModMgr.getGdxFile("dwarventech", "bios").path(), 0x200000, TheRealWorld(), arrayOf(
|
||||
VMProgramRom(ModMgr.getGdxFile("dwarventech", "bios/tsvmbios.js").path())
|
||||
))
|
||||
@Transient private lateinit var vmRunner: VMRunner
|
||||
// @Transient private lateinit var coroutineJob: Job
|
||||
|
||||
@Transient private var vmStarted = false
|
||||
@Transient private lateinit var disposableObj: Disposable
|
||||
|
||||
constructor() : super(
|
||||
BlockBox(BlockBox.NO_COLLISION, 1, 1),
|
||||
mainUI = UIHomeComputer(),
|
||||
inventory = FixtureInventory(40, FixtureInventory.CAPACITY_MODE_COUNT),
|
||||
nameFun = { "Computer" }
|
||||
) {
|
||||
density = 1400.0
|
||||
setHitboxDimension(TerrarumAppConfiguration.TILE_SIZE, TerrarumAppConfiguration.TILE_SIZE, 0, 0)
|
||||
|
||||
makeNewSprite(FixtureBase.getSpritesheet("dwarventech", "sprites/fixtures/desktop_computer.tga", TILE_SIZE, TILE_SIZE)).let {
|
||||
it.setRowsAndFrames(1,1)
|
||||
}
|
||||
|
||||
actorValue[AVKey.BASEMASS] = 20.0
|
||||
|
||||
|
||||
val gpu = GraphicsAdapter(ModMgr.getGdxFile("dwarventech", "gui").path(), vm, GRAPHICSCONFIG)
|
||||
// vm.getIO().blockTransferPorts[0].attachDevice(TestDiskDrive(vm, 0, ...))
|
||||
|
||||
vm.peripheralTable[1] = PeripheralEntry(
|
||||
gpu,
|
||||
GraphicsAdapter.VRAM_SIZE,
|
||||
16,
|
||||
0
|
||||
)
|
||||
|
||||
vm.getPrintStream = { gpu.getPrintStream() }
|
||||
vm.getErrorStream = { gpu.getErrorStream() }
|
||||
vm.getInputStream = { gpu.getInputStream() }
|
||||
|
||||
(mainUI as UIHomeComputer).vm = vm
|
||||
(mainUI as UIHomeComputer).fixture = this
|
||||
vmRunner = VMRunnerFactory(ModMgr.getGdxFile("dwarventech", "bios").path(), vm, "js")
|
||||
}
|
||||
|
||||
fun startVM() {
|
||||
/*if (!vmStarted) {
|
||||
vmStarted = true
|
||||
|
||||
coroutineJob = GlobalScope.launch {
|
||||
vmRunner.executeCommand(vm.roms[0]!!.readAll())
|
||||
}
|
||||
|
||||
disposableObj = Disposable {
|
||||
vmRunner.close()
|
||||
coroutineJob.cancel("fixture disposal")
|
||||
vm.dispose()
|
||||
}
|
||||
INGAME.disposables.add(disposableObj)
|
||||
}*/
|
||||
}
|
||||
|
||||
fun stopVM() {
|
||||
/*if (vmStarted) {
|
||||
vmStarted = false
|
||||
|
||||
vmRunner.close()
|
||||
coroutineJob.cancel("fixture disposal")
|
||||
vm.dispose()
|
||||
|
||||
INGAME.disposables.remove(disposableObj)
|
||||
}*/
|
||||
}
|
||||
|
||||
override fun reload() {
|
||||
super.reload()
|
||||
|
||||
val gpu = GraphicsAdapter(ModMgr.getGdxFile("dwarventech", "gui").path(), vm, GRAPHICSCONFIG)
|
||||
// vm.getIO().blockTransferPorts[0].attachDevice(TestDiskDrive(vm, 0, ...))
|
||||
|
||||
vm.peripheralTable[1] = PeripheralEntry(
|
||||
gpu,
|
||||
GraphicsAdapter.VRAM_SIZE,
|
||||
16,
|
||||
0
|
||||
)
|
||||
|
||||
vm.getPrintStream = { gpu.getPrintStream() }
|
||||
vm.getErrorStream = { gpu.getErrorStream() }
|
||||
vm.getInputStream = { gpu.getInputStream() }
|
||||
|
||||
(mainUI as UIHomeComputer).vm = vm
|
||||
(mainUI as UIHomeComputer).fixture = this
|
||||
vmRunner = VMRunnerFactory(ModMgr.getGdxFile("dwarventech", "bios").path(), vm, "js")
|
||||
}
|
||||
|
||||
companion object {
|
||||
val GRAPHICSCONFIG = AdapterConfig(
|
||||
"crt_color",
|
||||
560, 448, 80, 32, 253, 255, 256 shl 10, "FontROM7x14.tga", 0.0f, GraphicsAdapter.TEXT_TILING_SHADER_COLOUR
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,289 +0,0 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
@@ -1,89 +0,0 @@
|
||||
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"
|
||||
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
package net.torvald.terrarum.modulecomputers.gameitems
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion
|
||||
import net.torvald.terrarum.Terrarum
|
||||
import net.torvald.terrarum.TerrarumAppConfiguration
|
||||
import net.torvald.terrarum.gameactors.ActorWithBody
|
||||
import net.torvald.terrarum.gameitems.GameItem
|
||||
import net.torvald.terrarum.gameitems.ItemID
|
||||
import net.torvald.terrarum.gameitems.mouseInInteractableRange
|
||||
import net.torvald.terrarum.itemproperties.Material
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
||||
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
|
||||
import net.torvald.terrarum.modulecomputers.gameactors.FixtureHomeComputer
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2021-12-04.
|
||||
*/
|
||||
class ItemHomeComputer(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulecomputers.gameactors.FixtureHomeComputer") {
|
||||
|
||||
override var dynamicID: ItemID = originalID
|
||||
override var baseMass = 20.0
|
||||
override val canBeDynamic = false
|
||||
override val materialId = ""
|
||||
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"
|
||||
}
|
||||
@@ -1,150 +0,0 @@
|
||||
package net.torvald.terrarum.modulecomputers.gameitems
|
||||
|
||||
import com.badlogic.gdx.graphics.Camera
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.graphics.OrthographicCamera
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion
|
||||
import com.badlogic.gdx.utils.Disposable
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.gameactors.ActorWithBody
|
||||
import net.torvald.terrarum.gameitems.GameItem
|
||||
import net.torvald.terrarum.gameitems.ItemID
|
||||
import net.torvald.terrarum.itemproperties.Material
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
|
||||
import net.torvald.terrarum.modulecomputers.tsvmperipheral.WorldRadar
|
||||
import net.torvald.terrarum.ui.Toolkit
|
||||
import net.torvald.terrarum.ui.UICanvas
|
||||
import net.torvald.tsvm.*
|
||||
import net.torvald.tsvm.peripheral.ExtDisp
|
||||
import net.torvald.tsvm.peripheral.VMProgramRom
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2021-12-03.
|
||||
*/
|
||||
class ItemWearableWorldRadar(originalID: String) {// : GameItem(originalID) {
|
||||
|
||||
/*
|
||||
override var dynamicID: ItemID = originalID
|
||||
override val originalName = "ITEM_COMPUTER_DIRTBOARD_FAKETM"
|
||||
override var baseMass = 2.0
|
||||
override var stackable = true
|
||||
override var inventoryCategory = Category.TOOL
|
||||
override val isUnique = false
|
||||
override val isDynamic = true
|
||||
override val materialId = ""
|
||||
init {
|
||||
itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/signal_source.tga")
|
||||
}
|
||||
|
||||
override var baseToolSize: Double? = baseMass
|
||||
|
||||
|
||||
private val vm = VM(ModMgr.getGdxFile("dwarventech", "bios").path(), 73728, TheRealWorld(), arrayOf(
|
||||
VMProgramRom(ModMgr.getGdxFile("dwarventech", "bios/pipboot.rom").path()),
|
||||
VMProgramRom(ModMgr.getGdxFile("dwarventech", "bios/pipcode.bas").path())
|
||||
))
|
||||
private val ui = WearableWorldRadarUI(vm)
|
||||
|
||||
// FIXME initialise computer stuff when the Item is first used, not when it's registered by the Modmgr
|
||||
init {
|
||||
super.equipPosition = EquipPosition.HAND_GRIP
|
||||
}
|
||||
|
||||
private var booted = false
|
||||
private var disposed = false
|
||||
private lateinit var vmRunner: VMRunner
|
||||
private lateinit var coroutineJob: Job
|
||||
|
||||
init {
|
||||
App.disposables.add(ui)
|
||||
}
|
||||
|
||||
private fun boot() {
|
||||
vm.getIO().blockTransferPorts[1].attachDevice(WorldRadar())
|
||||
vm.peripheralTable[1] = PeripheralEntry(
|
||||
ExtDisp(vm, 160, 140), 32768, 1, 0
|
||||
)
|
||||
|
||||
// MMIO stops working when somethingStream is not defined
|
||||
vm.getPrintStream = { System.out }
|
||||
vm.getErrorStream = { System.err }
|
||||
vm.getInputStream = { System.`in` }
|
||||
|
||||
vmRunner = VMRunnerFactory(ModMgr.getGdxFile("dwarventech", "bios").path(), vm, "js")
|
||||
coroutineJob = GlobalScope.launch {
|
||||
vmRunner.executeCommand(vm.roms[0]!!.readAll())
|
||||
}
|
||||
|
||||
INGAME.disposables.add(Disposable {
|
||||
closeVM()
|
||||
})
|
||||
booted = true
|
||||
}
|
||||
|
||||
private fun closeVM() {
|
||||
if (!disposed) {
|
||||
vmRunner.close()
|
||||
coroutineJob.cancel("item disposal")
|
||||
vm.dispose()
|
||||
}
|
||||
disposed = true
|
||||
booted = false
|
||||
}
|
||||
|
||||
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) {
|
||||
if (!booted) {
|
||||
booted = true
|
||||
boot()
|
||||
}
|
||||
(Terrarum.ingame!! as TerrarumIngame).wearableDeviceUI = ui
|
||||
}
|
||||
|
||||
override fun effectOnUnequip(actor: ActorWithBody, delta: Float) {
|
||||
(Terrarum.ingame!! as TerrarumIngame).wearableDeviceUI = null
|
||||
closeVM()
|
||||
}
|
||||
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
class WearableWorldRadarUI(val device: VM) : UICanvas() {
|
||||
|
||||
override var width = 160
|
||||
override var height = 140
|
||||
override var openCloseTime = 0f
|
||||
|
||||
override fun updateImpl(delta: Float) {
|
||||
device.update(delta)
|
||||
}
|
||||
|
||||
override fun renderImpl(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) {
|
||||
batch.end()
|
||||
|
||||
batch.color = Color.WHITE
|
||||
(device.peripheralTable[1].peripheral as? ExtDisp)?.render(batch, posX.toFloat(), posY.toFloat())
|
||||
|
||||
batch.begin()
|
||||
batch.color = Toolkit.Theme.COL_INACTIVE
|
||||
Toolkit.drawBoxBorder(batch, posX - 1, posY - 1, width + 2, height + 2)
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,79 +0,0 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
@@ -1,137 +0,0 @@
|
||||
package net.torvald.terrarum.modulecomputers.tsvmperipheral
|
||||
|
||||
import net.torvald.terrarum.Point2i
|
||||
import net.torvald.terrarum.Terrarum
|
||||
import net.torvald.terrarum.blockproperties.Block
|
||||
import net.torvald.tsvm.VM
|
||||
import net.torvald.tsvm.peripheral.BlockTransferInterface
|
||||
import net.torvald.tsvm.peripheral.TestDiskDrive
|
||||
import net.torvald.tsvm.peripheral.trimNull
|
||||
import java.io.ByteArrayOutputStream
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2021-12-02.
|
||||
*/
|
||||
class WorldRadar : BlockTransferInterface(false, true) {
|
||||
|
||||
private val W = 160
|
||||
private val H = 140
|
||||
|
||||
private val AIR_OUT = 0.toByte()
|
||||
private val GRASS_OUT = 2.toByte()
|
||||
private val DIRT_OUT = 4.toByte()
|
||||
private val STONE_OUT = 7.toByte()
|
||||
|
||||
init {
|
||||
statusCode = TestDiskDrive.STATE_CODE_STANDBY
|
||||
}
|
||||
|
||||
private val messageComposeBuffer = ByteArrayOutputStream(BLOCK_SIZE) // always use this and don't alter blockSendBuffer please
|
||||
private var blockSendBuffer = ByteArray(1)
|
||||
private var blockSendCount = 0
|
||||
|
||||
private fun resetBuf() {
|
||||
blockSendCount = 0
|
||||
messageComposeBuffer.reset()
|
||||
}
|
||||
|
||||
|
||||
override fun hasNext(): Boolean {
|
||||
return (blockSendCount * BLOCK_SIZE < blockSendBuffer.size)
|
||||
}
|
||||
|
||||
override fun startSendImpl(recipient: BlockTransferInterface): Int {
|
||||
if (blockSendCount == 0) {
|
||||
blockSendBuffer = messageComposeBuffer.toByteArray()
|
||||
}
|
||||
|
||||
val sendSize = if (blockSendBuffer.size - (blockSendCount * BLOCK_SIZE) < BLOCK_SIZE)
|
||||
blockSendBuffer.size % BLOCK_SIZE
|
||||
else BLOCK_SIZE
|
||||
|
||||
recipient.writeout(ByteArray(sendSize) {
|
||||
blockSendBuffer[blockSendCount * BLOCK_SIZE + it]
|
||||
})
|
||||
|
||||
blockSendCount += 1
|
||||
|
||||
return sendSize
|
||||
}
|
||||
|
||||
private var oldCmdbuf = HashMap<Int,Byte>(1024)
|
||||
|
||||
private fun getNearbyTilesPos(x: Int, y: Int): Array<Point2i> {
|
||||
return arrayOf(
|
||||
Point2i(x + 1, y),
|
||||
Point2i(x, y + 1),
|
||||
Point2i(x - 1, y),
|
||||
Point2i(x, y - 1),
|
||||
)
|
||||
}
|
||||
override fun writeoutImpl(inputData: ByteArray) {
|
||||
val inputString = inputData.trimNull().toString(VM.CHARSET)
|
||||
|
||||
// prepare draw commands
|
||||
/*
|
||||
* draw command format:
|
||||
*
|
||||
* <Y> <X> <COL>
|
||||
*
|
||||
* marking rules:
|
||||
*
|
||||
* : exposed = has at least 1 nonsolid on 4 sides
|
||||
*
|
||||
* 1. exposed grass -> 2
|
||||
* 2. exposed dirt -> 4
|
||||
* 3. exposed stone -> 7
|
||||
* 4. stone exposed to dirt/grass -> 7
|
||||
*/
|
||||
if (inputString.startsWith("POLL")) {
|
||||
resetBuf()
|
||||
val cmdbuf = HashMap<Int,Byte>(1024)
|
||||
|
||||
Terrarum.ingame?.let { ingame -> ingame.actorNowPlaying?.let {
|
||||
|
||||
val px = it.intTilewiseHitbox.canonicalX.toInt()
|
||||
val py = it.intTilewiseHitbox.canonicalY.toInt()
|
||||
|
||||
for (yy in 1..H) {
|
||||
for (xx in 1..W) {
|
||||
val tx = px - (W/2) + xx
|
||||
val ty = py - (H/2) + yy
|
||||
|
||||
val yx = (yy - 1).shl(8) or xx
|
||||
val nearby = getNearbyTilesPos(tx, ty).map { ingame.world.getTileFromTerrain(it.x, it.y) } // up, left, right, down
|
||||
val block = ingame.world.getTileFromTerrain(tx, ty)
|
||||
val blockprop = Terrarum.blockCodex[block]
|
||||
|
||||
if (blockprop.isSolid) {
|
||||
// TODO create extension function nearby.contains { predicate :: ItemID -> Boolean }
|
||||
// for some reason I can't use material?
|
||||
if (block == Block.GRASS && nearby.contains(Block.AIR)) {
|
||||
cmdbuf[yx] = GRASS_OUT
|
||||
}
|
||||
else if (block == Block.DIRT && nearby.contains(Block.AIR)) {
|
||||
cmdbuf[yx] = DIRT_OUT
|
||||
}
|
||||
else if (block == Block.STONE && (nearby.contains(Block.AIR) || nearby.contains(Block.GRASS) || nearby.contains(Block.DIRT))) {
|
||||
cmdbuf[yx] = STONE_OUT
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
(oldCmdbuf.keys union cmdbuf.keys).sorted().forEach { key ->
|
||||
val value = (cmdbuf[key] ?: AIR_OUT).toInt()
|
||||
val x = key % 256
|
||||
val y = key / 256
|
||||
messageComposeBuffer.write(y)
|
||||
messageComposeBuffer.write(x)
|
||||
messageComposeBuffer.write(value)
|
||||
}
|
||||
|
||||
oldCmdbuf = cmdbuf
|
||||
}}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,90 +0,0 @@
|
||||
package net.torvald.terrarum.modulecomputers.ui
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.Input
|
||||
import com.badlogic.gdx.graphics.*
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import com.badlogic.gdx.graphics.glutils.FrameBuffer
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.langpack.Lang
|
||||
import net.torvald.terrarum.modulecomputers.gameactors.FixtureHomeComputer
|
||||
import net.torvald.terrarum.ui.Toolkit
|
||||
import net.torvald.terrarum.ui.UICanvas
|
||||
import net.torvald.tsvm.VM
|
||||
import net.torvald.tsvm.peripheral.GraphicsAdapter
|
||||
import net.torvald.unicode.*
|
||||
|
||||
internal class UIHomeComputer : UICanvas(
|
||||
toggleKeyLiteral = null,
|
||||
toggleButtonLiteral = "control_gamepad_start",
|
||||
) {
|
||||
override var width = 640
|
||||
override var height = 480
|
||||
override var openCloseTime = 0f
|
||||
|
||||
private val drawOffX = (width - 560).div(2).toFloat()
|
||||
private val drawOffY = (height - 448).div(2).toFloat()
|
||||
|
||||
private var batch: FlippingSpriteBatch
|
||||
private var camera: OrthographicCamera
|
||||
|
||||
internal lateinit var vm: VM
|
||||
internal lateinit var fixture: FixtureHomeComputer
|
||||
|
||||
init {
|
||||
batch = FlippingSpriteBatch()
|
||||
camera = OrthographicCamera(width.toFloat(), height.toFloat())
|
||||
//val m = Matrix4()
|
||||
//m.setToOrtho2D(0f, 0f, width.toFloat(), height.toFloat())
|
||||
batch.projectionMatrix = camera.combined
|
||||
}
|
||||
|
||||
private val fbo = FrameBuffer(Pixmap.Format.RGBA8888, width, height, false)
|
||||
|
||||
private val controlHelp =
|
||||
"${getKeycapPC(ControlPresets.getKey("control_key_inventory"))} ${Lang["GAME_ACTION_CLOSE"]}\u3000 " +
|
||||
"$KEYCAP_CTRL$KEYCAP_SHIFT$KEYCAP_T$KEYCAP_R Terminate\u3000" +
|
||||
"$KEYCAP_CTRL$KEYCAP_SHIFT$KEYCAP_R$KEYCAP_S Reset\u3000" +
|
||||
"$KEYCAP_CTRL$KEYCAP_SHIFT$KEYCAP_R$KEYCAP_Q SysRq"
|
||||
|
||||
override fun updateImpl(delta: Float) {
|
||||
}
|
||||
|
||||
override fun renderImpl(frameDelta: Float, otherBatch: SpriteBatch, otherCamera: OrthographicCamera) {
|
||||
otherBatch.end()
|
||||
|
||||
fbo.inAction(camera, batch) {
|
||||
Gdx.gl.glClearColor(0f,0f,0f,1f)
|
||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) // to hide the crap might be there
|
||||
|
||||
(vm.peripheralTable[1].peripheral as? GraphicsAdapter)?.let { gpu ->
|
||||
val clearCol = gpu.getBackgroundColour()
|
||||
Gdx.gl.glClearColor(clearCol.r, clearCol.g, clearCol.b, clearCol.a)
|
||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
|
||||
|
||||
gpu.render(Gdx.graphics.deltaTime, batch, drawOffX, drawOffY, true, fbo) // gpu.render will internally end() the fbo then begin() again before using the batch I've fed in
|
||||
}
|
||||
}
|
||||
|
||||
otherBatch.begin()
|
||||
otherBatch.shader = null
|
||||
blendNormalStraightAlpha(otherBatch)
|
||||
otherBatch.color = Color.WHITE
|
||||
otherBatch.draw(fbo.colorBufferTexture, posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat())
|
||||
otherBatch.color = Toolkit.Theme.COL_INACTIVE
|
||||
Toolkit.drawBoxBorder(otherBatch, posX - 1, posY - 1, width + 2, height + 2)
|
||||
|
||||
App.fontGame.draw(otherBatch, controlHelp, posX, posY + height + 4)
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
super.doOpening(delta)
|
||||
fixture.startVM()
|
||||
}
|
||||
|
||||
|
||||
override fun dispose() {
|
||||
fbo.dispose()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<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" name="gdx-platform-1.12.1-natives-arm64-v8a" level="project" />
|
||||
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -1,18 +0,0 @@
|
||||
package net.torvald.terrarum.musicplayer
|
||||
|
||||
import net.torvald.terrarum.ModMgr
|
||||
import net.torvald.terrarum.ModuleEntryPoint
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||
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 -> MusicPlayerControl(ingame) }
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
86
README.md
86
README.md
@@ -1,50 +1,72 @@
|
||||
## Aperçu ##
|
||||
|
||||
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.
|
||||
This project is to create a side-view flatformer game, an attempt to create friendlier *Dwarf Fortress* adventurer mode, with more rogue-like stuff such as permanent death, randomness and *lots of fun*.
|
||||
|
||||
The project is divided into two parts: **Terrarum the Game Engine** and **Terrarum the actual game**.
|
||||
Backend used is LWJGL/Slick2D, frontend — the Engine — is custom-built. The repository contains both frontend and the actual game, as well as documentation for the backends.
|
||||
|
||||
## Terrarum the Game Engine ##
|
||||
This project mainly uses Kotlin as a main language and Python/Lua for tools.
|
||||
|
||||
This game engine aims to provide following features:
|
||||
Documentations and resources for work (such as .psd) are also included in the repository. You will need Mac computer to read and edit documentations in .gcx and .numbers format. (we're planning to change them)
|
||||
|
||||
- Tiled lighting simulation with transmittance sim in full RGB and UV for fluorescence
|
||||
- Corner Occlusion
|
||||
- 2D Skeletal Sprite
|
||||
- Built-in Mod support
|
||||
- Simple AABB Physics
|
||||
- Fluid simulation based on Cellular Automata
|
||||
- Built-in multilingual font — please refer to [its own Repository](https://github.com/curioustorvald/Terrarum-sans-bitmap)
|
||||
Any contribution in this project must be made sorely in English, Korean part is just there for my Korean friend; so be sure to use English in codes, comments, etc.
|
||||
|
||||
## Terrarum the Actual Game ##
|
||||
## Setup ##
|
||||
|
||||
*Terrarum* is a side-view tilemap platformer-adventure-sandbox game.
|
||||
* Requirements:
|
||||
- JDK 8 or higher
|
||||
- Working copy of IntelliJ IDEA from JetBrains s.r.o., community edition is okay to use.
|
||||
|
||||
* Required libraries are included in the repository.
|
||||
|
||||
## Player Setup ##
|
||||
|
||||
### System Requirements ###
|
||||
Requires 64 bit processor and operation system.
|
||||
| | Minimum | Recommended |
|
||||
|---|---|---|
|
||||
|OS|Windows 7/macOS Sierra/Ubuntu 16.04|Windows 10/macOS Big Sur/Linux with Kernel 5.4|
|
||||
|CPU|AMD Phenom X4 9600/Intel Core 2 Duo E8400|AMD Ryzen 5 1500X/Intel Core i7-4770K/Apple M1|
|
||||
|Memory|4 GB RAM|8 GB RAM|
|
||||
|OpenGL|3.3|4.0|
|
||||
|Graphics|GeForce 9600 GT|Anything that supports OpenGL 4.0|
|
||||
|Storage|2 GB available|2 GB available but faster|
|
||||
## The Engine ##
|
||||
|
||||
- Playing the game on the Minimum Requirement is ill advised: framerate will be sub-20 and the world generation will take more than 10 minutes
|
||||
Please refer to [```THE_ENGINE.md```](THE_ENGINE.md).
|
||||
|
||||
## Development Environment ##
|
||||
|
||||
- Requirements:
|
||||
- JDK 17 or higher
|
||||
- IntelliJ IDEA Community Edition
|
||||
## Contribution guidelines ##
|
||||
|
||||
Kotlin runtimes must be downloaded using the IntelliJ IDEA. All other libraries are included in the repository.
|
||||
Please refer to [```CONTRIBUTING.md```](CONTRIBUTING.md).
|
||||
|
||||
## Who do I talk to? ##
|
||||
|
||||
* Repo owner or admin
|
||||
* Other community or team contact
|
||||
|
||||
|
||||
## Tags ##
|
||||
|
||||
* Rogue-like
|
||||
* Adventure
|
||||
* Procedural Generation
|
||||
* Open World
|
||||
* Sandbox
|
||||
* Survival
|
||||
* (Crafting)
|
||||
* 2D
|
||||
* Singleplayer
|
||||
* Platformer
|
||||
* (Atmospheric)
|
||||
* Indie
|
||||
* Pixel Graphics
|
||||
|
||||
|
||||
## Disclaim ##
|
||||
|
||||
Just in case, use this software at your own risk.
|
||||
|
||||
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`
|
||||
|
||||
## Copyright ##
|
||||
|
||||
Please refer to [```COPYING.md```](COPYING.md) but it's mostly GPL 3.
|
||||
Copyright 2015-2016 Torvald (skyhi14 _at_ icloud _dot_ com). All rights reserved. This game is proprietary until things are completed enough to be playable.
|
||||
|
||||
|
||||
## 개요 ##
|
||||
|
||||
이 변변한 이름 없는 프로젝트는 사이드뷰 발판 게임 형식으로 더 친절한 〈드워프 포트리스〉의 모험가 모드를 지향하는 게임 제작 프로젝트입니다. 영구 사망, 무작위성, __넘쳐나는 재미__와 같이 ‘로그라이크’스러운 요소를 지닙니다.
|
||||
|
||||
이 프로젝트는 주 언어로 코틀린을 사용하며 파이선·루아 등으로 작성된 툴을 이용합니다.
|
||||
|
||||
개발 문서와 작업용 리소스(psd 등) 또한 이 저장소에 포함되어 있습니다. gcx와 numbers 형식으로 된 문서를 읽고 수정하기 위해 맥 컴퓨터가 필요할 수 있습니다.
|
||||
|
||||
이 프로젝트에 대한 기여는 영어로 이루어져야 합니다. 따라서 코드나 주석 등을 작성할 때는 영어를 사용해 주십시오.
|
||||
|
||||
@@ -1,52 +1,24 @@
|
||||
## Prefix-ID Referencing
|
||||
|
||||
Every blocks and items have Prefix-ID Referencing scheme, which is defined as follows:
|
||||
|
||||
```<Prefix>@<Modname>:<Integer ID>```
|
||||
|
||||
where Prefix is predefined (see below), Integer ID is arbitrarily chosen within a domain.
|
||||
|
||||
### Prefixes
|
||||
|Name|Description|
|
||||
|----|-----------|
|
||||
|wall|Wall, only used by the Inventory to differentiate walls from blocks (therefore wall shares same "ID Space" with blocks)|
|
||||
|item|Item (Static)|
|
||||
|wire|Wires|
|
||||
|
||||
Notes:
|
||||
- BlockCodex and ItemCodex will not store prefix part of the ID, as blocks and walls are identical in properties
|
||||
- Wires and Fluids use the same "ID Space" as the tiles; they just happened to exclusive to their own layers.
|
||||
This simplifies many things e.g. only one TileID-to-AtlasTileNumber map is needed and the renderer will
|
||||
greatly benefit from it.
|
||||
|
||||
### Predefined Modnames
|
||||
|
||||
|Name|Description|
|
||||
|----|-----------|
|
||||
|dyn|Dynamic Item|
|
||||
|actor|Actor As an Item. Integer ID is identical to the actor's Reference ID|
|
||||
|virt|Virtual Tile Number|
|
||||
|
||||
### Integer ID Domains
|
||||
|
||||
|Range|Description|
|
||||
|-----|-----------|
|
||||
|1..2147483647|Integer ID for dynamic items|
|
||||
|0x1000_0000..0x7FFF_FFFF|Reference ID for Actors (1879M possible)|
|
||||
|1..2147483647|Integer ID for virtual tiles|
|
||||
|0..4095|Tiles (4096 possible)|
|
||||
|4096..8191|Walls (4096 possible)|
|
||||
|8192..8447|Wires (256 possible)|
|
||||
|8448..0x0F_FFFF|Items (static) (1M possible)|
|
||||
|0x10_0000..0x0FFF_FFFF|Items (dynamic\*) (267M possible)|
|
||||
|0x1000_0000..0x7FFF_FFFF|Actors (1879M possible)|
|
||||
|-1..-65536|Virtual Tiles|
|
||||
|-2147483648..-65537 (all negative numbers)|Faction (2147M possible)|
|
||||
|
||||
* dynamic items have own properties that will persist through savegame.
|
||||
|
||||
Actor range in-depth
|
||||
Actors range in-depth
|
||||
|
||||
|Range|Description|
|
||||
|-----|-----------|
|
||||
|0x1000_0000..0x1FFF_FFFF|Rendered behind (e.g. tapestries)|
|
||||
|0x2000_0000..0x4FFF_FFFF|Regular actors (e.g. almost all of them)|
|
||||
|0x5000_0000..0x5FFF_FFFF|Special (e.g. weapon swung, bullets, dropped item, particles)|
|
||||
|0x6000_0000..0x6EFF_FFFF|Rendered front (e.g. fake tile)|
|
||||
|0x6F00_0000..0x6FFE_FFFF|unassigned|
|
||||
|0x6FFF_0000..0x6FFF_FFFF|Rendered front--wires|
|
||||
|0x6000_0000..0x6FFF_FFFF|Rendered front (e.g. fake tile)|
|
||||
|0x7000_0000..0x7FFF_FFFF|Rendered as screen overlay, not affected by light nor environment overlays|
|
||||
|
||||
Actor IDs are assigned in 256 groups, single actor can have 256 sub-actors
|
||||
Actor IDs are assigned in 256 groups, single actor can have 256 sub-actors
|
||||
74
SAVE_FORMAT.md
Normal file
74
SAVE_FORMAT.md
Normal file
@@ -0,0 +1,74 @@
|
||||
## Format ##
|
||||
|
||||
Contain everything on [TEVD](github.com/minjaesong/TerranVirtualDisk)
|
||||
|
||||
* Save meta
|
||||
- binary
|
||||
- Filename : world (with no extension)
|
||||
|
||||
|Type |Mnemonic |Description |
|
||||
|----------|-----------|-----------------------------|
|
||||
|Byte[4] |TESV |Magic |
|
||||
|Byte[n] |name |Savegame name, UTF-8 |
|
||||
|Byte |NULL |String terminator |
|
||||
|Byte[8] |terraseed |Terrain seed |
|
||||
|Byte[8] |rogueseed |Randomiser seed |
|
||||
|Byte[4] |crc1 |CRC-32 of worldinfo1 entry |
|
||||
|Byte[4] |crc2 |CRC-32 of worldinfo2 entry |
|
||||
|Byte[4] |crc3 |CRC-32 of worldinfo3 entry |
|
||||
|Byte[4] |crc4 |CRC-32 of worldinfo4 entry |
|
||||
|Byte[32] |hash4321 |SHA-256 of crc4..crc3..crc2..crc1|
|
||||
|Int |refid |Reference ID of the player |
|
||||
|Long |time_t |Current world's time_t |
|
||||
|Byte[6] |t_create |Creation time of the savefile in time_t|
|
||||
|Byte[6] |t_lastacc |Last play time in time_t |
|
||||
|Int |t_wasted |Total playtime in time_t |
|
||||
|
||||
Endianness: Big
|
||||
|
||||
each entry on the disk contains CRC of its data, we can compare CRC saved in meta && CRC of entry header && CRC of actual content
|
||||
|
||||
* Actor/Faction data
|
||||
- GSON
|
||||
- Filename : (refid) (with no extension)
|
||||
|
||||
|
||||
* Prop data
|
||||
- CSV
|
||||
- Filename : (with no extension)
|
||||
worldinfo2 -- tileprop
|
||||
worldinfo3 -- itemprop
|
||||
worldinfo4 -- materialprop
|
||||
worldinfo5 -- modules loadorder
|
||||
|
||||
|
||||
* Human-readable
|
||||
- Tiles_list.txt -- list of tiles in csv
|
||||
- Items_list.txt -- list of items in csv
|
||||
- Materials_list.txt -- list of materials in csv
|
||||
- load_order.txt -- module load order
|
||||
|
||||
|
||||
|
||||
## How it works ##
|
||||
* If hash discrepancy has detected, (hash of csv in save dir != stored hash || hash of TEMD != stored hash), printout "Save file corrupted. Continue?" with prompt "Yes/No"
|
||||
|
||||
Directory:
|
||||
|
||||
+--- <save1.tevd>
|
||||
--- 2a93bc5f (item ID) Actor/DynamicItem/Faction/etc. data (JSON)
|
||||
--- 423bdc83 (item ID) Actor/DynamicItem/Faction/etc. data (JSON)
|
||||
--- Items_list.txt Human-readable
|
||||
--- Materials_list.txt Human-readable
|
||||
--- Tiles_list.txt Human-readable
|
||||
--- world save meta (binary)
|
||||
--- worldinfo1 TEMD (binary)
|
||||
--- worldinfo2 tileprop (CSV)
|
||||
--- worldinfo3 itemprop (CSV)
|
||||
--- worldinfo4 materialprop (CSV)
|
||||
+--- computers
|
||||
--- (UUID) virtual disk
|
||||
+--- tapestries
|
||||
--- (random Int) tapestry
|
||||
|
||||
Alongside with save1.tevd (extension should not exist in real game), keep save1.backup.tevd as a last-working save.
|
||||
26
SYSTEM_REQUIREMENTS.md
Normal file
26
SYSTEM_REQUIREMENTS.md
Normal file
@@ -0,0 +1,26 @@
|
||||
## Minimum requirements ##
|
||||
|
||||
* Processor with 2.4 GHz speed
|
||||
* GeForce MX 150
|
||||
* 4 GB of RAM
|
||||
* 4 GB of free disk space
|
||||
* Windows Vista/Mac OS X Lion or higher (Mac OS X Snow Leopard is incompatible with a shader the game uses)
|
||||
* PC: Java 8
|
||||
|
||||
## Recommended requirements ##
|
||||
|
||||
* Processor with 3.0 GHz speed, 4 threads available
|
||||
* GPU that can support OpenGL 2.1, is capable of 4K texture
|
||||
* 8 GB of RAM
|
||||
* 8 GB of free disk space
|
||||
* Windows Vista/Mac OS X Lion or higher
|
||||
* PC: Java 8
|
||||
|
||||
## Tested environments ##
|
||||
|
||||
(to devs: please extend this list with your test results!)
|
||||
|
||||
* MacBookPro9,2 (MacBook Pro 13 inch mid-2012) -- shader don't work
|
||||
* Intel 6700K, nVidia GTX970, Windows 10 -- fully works
|
||||
* Intel 6600, nVidia GT 710, Windows 8 -- unplayable framerate
|
||||
* Intel 8265U, Intel UHD620/nVidia MX 250, Windows 10 -- fully works with Intel iGPU (24 fps), fully works with MX 250 (66 fps)
|
||||
@@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/net/torvald/terrarum/tests" isTestSource="true" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="GetCpuName-src" level="project" />
|
||||
<orderEntry type="library" name="prtree" level="project" />
|
||||
<orderEntry type="library" name="Terrarum_Joise" level="project" />
|
||||
<orderEntry type="library" name="TerrarumSansBitmap" level="project" />
|
||||
<orderEntry type="library" name="commons-codec:commons-codec:1.15" level="project" />
|
||||
<orderEntry type="library" name="org.apache.commons:commons-csv:1.8" level="project" />
|
||||
<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="graalvm-js 22.3.1" level="project" />
|
||||
<orderEntry type="library" name="badlogicgames.gdx" level="project" />
|
||||
<orderEntry type="library" name="badlogicgames.gdx.backend.lwjgl3" 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="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/32opus_poke.ogg
LFS
Normal file
BIN
assets/32opus_poke.ogg
LFS
Normal file
Binary file not shown.
14
assets/4096.frag
Normal file
14
assets/4096.frag
Normal file
@@ -0,0 +1,14 @@
|
||||
varying vec4 v_color;
|
||||
varying vec2 v_texCoords;
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
void main(void) {
|
||||
vec4 color = texture2D(u_texture, v_texCoords).rgba;
|
||||
|
||||
color.r = floor(15.0 * color.r + 0.5) / 15.0;
|
||||
color.g = floor(15.0 * color.g + 0.5) / 15.0;
|
||||
color.b = floor(15.0 * color.b + 0.5) / 15.0;
|
||||
// a: passthrough
|
||||
|
||||
gl_FragColor = color;
|
||||
}
|
||||
14
assets/4096.vert
Normal file
14
assets/4096.vert
Normal file
@@ -0,0 +1,14 @@
|
||||
attribute vec4 a_position;
|
||||
attribute vec4 a_color;
|
||||
attribute vec2 a_texCoord0;
|
||||
|
||||
uniform mat4 u_projTrans;
|
||||
|
||||
varying vec4 v_color;
|
||||
varying vec2 v_texCoords;
|
||||
|
||||
void main() {
|
||||
v_color = a_color;
|
||||
v_texCoords = a_texCoord0;
|
||||
gl_Position = u_projTrans * a_position;
|
||||
}
|
||||
86
assets/4096_bayer.frag
Normal file
86
assets/4096_bayer.frag
Normal file
@@ -0,0 +1,86 @@
|
||||
#version 120
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
|
||||
varying vec4 v_color;
|
||||
varying vec2 v_texCoords;
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
|
||||
// "steps" of R, G and B. Must be integer && equal or greater than 2
|
||||
uniform float rcount = 64.0;
|
||||
uniform float gcount = 64.0;
|
||||
uniform float bcount = 64.0;
|
||||
uniform float acount = 1.0;
|
||||
|
||||
|
||||
|
||||
/*int bayer[7 * 7] = int[](
|
||||
32,42,10,27,37,5,15,
|
||||
1,18,28,45,13,23,40,
|
||||
26,36,4,14,31,48,9,
|
||||
44,12,22,39,0,17,34,
|
||||
20,30,47,8,25,35,3,
|
||||
38,6,16,33,43,11,21,
|
||||
7,24,41,2,19,29,46
|
||||
); // I kind of accidentally create it...
|
||||
float bayerSize = 7.0;*/
|
||||
|
||||
/*int bayer[9 * 9] = int[](
|
||||
50,71,2,23,44,56,77,17,29,
|
||||
72,12,33,45,66,6,18,39,60,
|
||||
22,43,55,76,16,28,49,70,1,
|
||||
53,65,5,26,38,59,80,11,32,
|
||||
75,15,27,48,69,0,21,42,54,
|
||||
25,37,58,79,10,31,52,64,4,
|
||||
47,68,8,20,41,62,74,14,35,
|
||||
78,9,30,51,63,3,24,36,57,
|
||||
19,40,61,73,13,34,46,67,7
|
||||
); // I kind of accidentally create it...
|
||||
float bayerSize = 9.0;*/
|
||||
|
||||
//int bayer[25 * 25] = int[](165,530,106,302,540,219,477,100,231,417,314,223,424,37,207,434,326,22,448,338,111,454,523,278,579,334,19,410,495,57,352,158,318,598,109,509,157,524,282,606,83,225,539,163,234,607,313,206,71,470,251,608,216,135,275,609,415,29,451,204,397,21,373,107,462,348,482,120,362,508,33,147,572,388,142,447,77,345,565,439,104,215,546,279,69,567,311,585,258,177,17,266,601,55,428,270,461,331,26,560,164,271,486,186,16,336,457,150,342,471,245,161,56,396,496,555,385,146,321,190,526,97,182,511,297,429,553,49,374,536,263,575,43,501,124,368,538,450,121,309,84,210,449,561,79,356,610,256,378,58,105,315,156,244,423,118,183,408,220,611,15,198,293,596,221,375,581,39,238,500,287,14,437,139,595,227,403,590,478,68,612,295,517,87,312,413,515,78,433,13,476,134,340,414,160,466,213,547,324,456,542,141,12,335,214,357,11,381,242,469,159,265,383,176,545,285,197,503,108,576,51,387,98,200,34,358,489,277,570,96,441,554,123,534,52,556,112,605,330,70,392,613,28,288,361,232,602,300,502,267,102,195,399,152,484,264,166,289,427,192,298,407,25,249,520,114,233,444,543,170,498,131,452,66,562,310,586,54,531,346,42,614,354,23,588,491,151,468,353,187,483,369,153,85,425,10,276,371,174,420,32,459,222,304,136,421,103,458,230,339,67,260,578,93,544,9,280,594,327,248,582,472,50,615,254,537,359,91,600,475,212,525,168,558,128,455,370,179,301,405,209,467,48,442,127,355,184,332,481,126,286,175,436,273,31,377,306,36,412,294,616,8,473,60,603,116,347,532,191,568,61,522,90,218,391,592,62,514,122,552,149,617,241,513,81,202,272,557,333,226,507,255,72,305,402,229,418,296,551,7,411,317,236,416,337,480,64,389,132,350,487,404,89,162,435,44,419,618,113,505,20,604,138,465,188,493,133,580,6,169,259,320,548,193,593,40,178,512,364,591,144,319,196,386,261,351,205,384,76,269,38,349,208,504,440,99,490,5,426,243,322,574,281,4,237,460,527,3,549,155,577,47,533,316,619,394,519,82,268,325,566,199,299,119,529,75,400,125,492,344,86,217,308,463,80,395,284,474,117,201,95,235,422,620,143,45,372,597,453,343,185,479,247,569,171,409,584,129,365,239,488,94,224,438,559,283,541,18,194,401,516,262,148,41,250,621,24,329,92,446,27,291,485,35,622,180,535,379,30,341,443,145,363,494,246,101,445,550,390,499,115,432,521,211,623,253,528,189,430,307,53,323,130,624,172,46,589,292,63,599,328,203,74,290,181,376,274,140,393,59,367,88,380,137,506,252,571,431,240,497,382,228,464,167,398,2,573,366,518,1,583,73,563,303,510,154,564,257,587,65,406,173,0,360,110);
|
||||
int bayer[14 * 14] = int[](131,187,8,78,50,18,134,89,155,102,29,95,184,73,22,86,113,171,142,105,34,166,9,60,151,128,40,110,168,137,45,28,64,188,82,54,124,189,80,13,156,56,7,61,186,121,154,6,108,177,24,100,38,176,93,123,83,148,96,17,88,133,44,145,69,161,139,72,30,181,115,27,163,47,178,65,164,14,120,48,5,127,153,52,190,58,126,81,116,21,106,77,173,92,191,63,99,12,76,144,4,185,37,149,192,39,135,23,117,31,170,132,35,172,103,66,129,79,3,97,57,159,70,141,53,94,114,20,49,158,19,146,169,122,183,11,104,180,2,165,152,87,182,118,91,42,67,25,84,147,43,85,125,68,16,136,71,10,193,112,160,138,51,111,162,26,194,46,174,107,41,143,33,74,1,101,195,15,75,140,109,90,32,62,157,98,167,119,179,59,36,130,175,55,0,150);
|
||||
float bayerSize = 14.0;
|
||||
|
||||
|
||||
float bayerDivider = bayerSize * bayerSize;
|
||||
|
||||
|
||||
vec4 gammaIn(vec4 col) {
|
||||
return pow(col, vec4(2.2));
|
||||
}
|
||||
|
||||
vec4 gammaOut(vec4 col) {
|
||||
return pow(col, vec4(1.0 / 2.2));
|
||||
}
|
||||
|
||||
vec4 nearestColour(vec4 incolor) {
|
||||
vec4 rgbaCounts = vec4(rcount, gcount, bcount, acount);
|
||||
|
||||
|
||||
vec4 color = incolor;
|
||||
|
||||
color.r = floor((rgbaCounts.r - 1.0) * color.r + 0.5) / (rgbaCounts.r - 1.0);
|
||||
color.g = floor((rgbaCounts.g - 1.0) * color.g + 0.5) / (rgbaCounts.g - 1.0);
|
||||
color.b = floor((rgbaCounts.b - 1.0) * color.b + 0.5) / (rgbaCounts.b - 1.0);
|
||||
color.a = 1.0;//floor((rgbaCounts.a - 1.0) * color.a + 0.5) / (rgbaCounts.a - 1.0);
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
void main(void) {
|
||||
float spread = 1.0 / (0.299 * (rcount - 1.0) + 0.587 * (gcount - 1.0) + 0.114 * (bcount - 1.0)); // this spread value is optimised one -- try your own values for various effects!
|
||||
|
||||
|
||||
// create texture coordinates based on pixelSize //
|
||||
vec4 inColor = (texture2D(u_texture, v_texCoords));
|
||||
|
||||
vec2 entry = mod(gl_FragCoord.xy, vec2(bayerSize, bayerSize));
|
||||
|
||||
gl_FragColor = nearestColour(inColor + spread * (bayer[int(entry.y) * int(bayerSize) + int(entry.x)] / bayerDivider - 0.5));
|
||||
//gl_FragColor = nearestColour(inColor);
|
||||
//gl_FragColor = inColor;
|
||||
}
|
||||
100
assets/4096_bayer_skyboxfill.frag
Normal file
100
assets/4096_bayer_skyboxfill.frag
Normal file
@@ -0,0 +1,100 @@
|
||||
#version 120
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
|
||||
varying vec4 v_color;
|
||||
varying vec2 v_texCoords;
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
|
||||
uniform vec3 topColor;
|
||||
uniform vec3 bottomColor;
|
||||
uniform float parallax = 0.0; // +1.0: all top col, -1.0: all bototm col, 0.0: normal grad
|
||||
uniform float parallax_size = 1.0/3.0; // 0: no parallax
|
||||
|
||||
|
||||
// "steps" of R, G and B. Must be integer && equal or greater than 2
|
||||
uniform float rcount = 64.0; // it even works on 256.0!
|
||||
uniform float gcount = 64.0; // using 64: has less banding and most monitors are internally 6-bit
|
||||
uniform float bcount = 64.0;
|
||||
|
||||
// inverted zoom; this value must set to (1f/zoom)
|
||||
uniform float zoomInv = 1.0;
|
||||
|
||||
/*int bayer[7 * 7] = int[](
|
||||
32,42,10,27,37,5,15,
|
||||
1,18,28,45,13,23,40,
|
||||
26,36,4,14,31,48,9,
|
||||
44,12,22,39,0,17,34,
|
||||
20,30,47,8,25,35,3,
|
||||
38,6,16,33,43,11,21,
|
||||
7,24,41,2,19,29,46
|
||||
); // I kind of accidentally create it...
|
||||
float bayerSize = 7.0;*/
|
||||
|
||||
/*int bayer[9 * 9] = int[](
|
||||
50,71,2,23,44,56,77,17,29,
|
||||
72,12,33,45,66,6,18,39,60,
|
||||
22,43,55,76,16,28,49,70,1,
|
||||
53,65,5,26,38,59,80,11,32,
|
||||
75,15,27,48,69,0,21,42,54,
|
||||
25,37,58,79,10,31,52,64,4,
|
||||
47,68,8,20,41,62,74,14,35,
|
||||
78,9,30,51,63,3,24,36,57,
|
||||
19,40,61,73,13,34,46,67,7
|
||||
); // I kind of accidentally create it...
|
||||
float bayerSize = 9.0;*/
|
||||
|
||||
//int bayer[25 * 25] = int[](165,530,106,302,540,219,477,100,231,417,314,223,424,37,207,434,326,22,448,338,111,454,523,278,579,334,19,410,495,57,352,158,318,598,109,509,157,524,282,606,83,225,539,163,234,607,313,206,71,470,251,608,216,135,275,609,415,29,451,204,397,21,373,107,462,348,482,120,362,508,33,147,572,388,142,447,77,345,565,439,104,215,546,279,69,567,311,585,258,177,17,266,601,55,428,270,461,331,26,560,164,271,486,186,16,336,457,150,342,471,245,161,56,396,496,555,385,146,321,190,526,97,182,511,297,429,553,49,374,536,263,575,43,501,124,368,538,450,121,309,84,210,449,561,79,356,610,256,378,58,105,315,156,244,423,118,183,408,220,611,15,198,293,596,221,375,581,39,238,500,287,14,437,139,595,227,403,590,478,68,612,295,517,87,312,413,515,78,433,13,476,134,340,414,160,466,213,547,324,456,542,141,12,335,214,357,11,381,242,469,159,265,383,176,545,285,197,503,108,576,51,387,98,200,34,358,489,277,570,96,441,554,123,534,52,556,112,605,330,70,392,613,28,288,361,232,602,300,502,267,102,195,399,152,484,264,166,289,427,192,298,407,25,249,520,114,233,444,543,170,498,131,452,66,562,310,586,54,531,346,42,614,354,23,588,491,151,468,353,187,483,369,153,85,425,10,276,371,174,420,32,459,222,304,136,421,103,458,230,339,67,260,578,93,544,9,280,594,327,248,582,472,50,615,254,537,359,91,600,475,212,525,168,558,128,455,370,179,301,405,209,467,48,442,127,355,184,332,481,126,286,175,436,273,31,377,306,36,412,294,616,8,473,60,603,116,347,532,191,568,61,522,90,218,391,592,62,514,122,552,149,617,241,513,81,202,272,557,333,226,507,255,72,305,402,229,418,296,551,7,411,317,236,416,337,480,64,389,132,350,487,404,89,162,435,44,419,618,113,505,20,604,138,465,188,493,133,580,6,169,259,320,548,193,593,40,178,512,364,591,144,319,196,386,261,351,205,384,76,269,38,349,208,504,440,99,490,5,426,243,322,574,281,4,237,460,527,3,549,155,577,47,533,316,619,394,519,82,268,325,566,199,299,119,529,75,400,125,492,344,86,217,308,463,80,395,284,474,117,201,95,235,422,620,143,45,372,597,453,343,185,479,247,569,171,409,584,129,365,239,488,94,224,438,559,283,541,18,194,401,516,262,148,41,250,621,24,329,92,446,27,291,485,35,622,180,535,379,30,341,443,145,363,494,246,101,445,550,390,499,115,432,521,211,623,253,528,189,430,307,53,323,130,624,172,46,589,292,63,599,328,203,74,290,181,376,274,140,393,59,367,88,380,137,506,252,571,431,240,497,382,228,464,167,398,2,573,366,518,1,583,73,563,303,510,154,564,257,587,65,406,173,0,360,110);
|
||||
int bayer[14 * 14] = int[](131,187,8,78,50,18,134,89,155,102,29,95,184,73,22,86,113,171,142,105,34,166,9,60,151,128,40,110,168,137,45,28,64,188,82,54,124,189,80,13,156,56,7,61,186,121,154,6,108,177,24,100,38,176,93,123,83,148,96,17,88,133,44,145,69,161,139,72,30,181,115,27,163,47,178,65,164,14,120,48,5,127,153,52,190,58,126,81,116,21,106,77,173,92,191,63,99,12,76,144,4,185,37,149,192,39,135,23,117,31,170,132,35,172,103,66,129,79,3,97,57,159,70,141,53,94,114,20,49,158,19,146,169,122,183,11,104,180,2,165,152,87,182,118,91,42,67,25,84,147,43,85,125,68,16,136,71,10,193,112,160,138,51,111,162,26,194,46,174,107,41,143,33,74,1,101,195,15,75,140,109,90,32,62,157,98,167,119,179,59,36,130,175,55,0,150);
|
||||
float bayerSize = 14.0;
|
||||
|
||||
|
||||
float bayerDivider = bayerSize * bayerSize;
|
||||
|
||||
|
||||
vec4 nearestColour(vec4 incolor) {
|
||||
vec4 rgbaCounts = vec4(rcount, gcount, bcount, 1.0);
|
||||
|
||||
|
||||
vec4 color = incolor;
|
||||
|
||||
color.r = floor((rgbaCounts.r - 1.0) * color.r + 0.5) / (rgbaCounts.r - 1.0);
|
||||
color.g = floor((rgbaCounts.g - 1.0) * color.g + 0.5) / (rgbaCounts.g - 1.0);
|
||||
color.b = floor((rgbaCounts.b - 1.0) * color.b + 0.5) / (rgbaCounts.b - 1.0);
|
||||
color.a = 1.0;
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
void main(void) {
|
||||
float spread = 1.0 / (0.299 * (rcount - 1.0) + 0.587 * (gcount - 1.0) + 0.114 * (bcount - 1.0)); // this spread value is optimised one -- try your own values for various effects!
|
||||
|
||||
float scale = v_texCoords.y * (1.0 - parallax_size) + (parallax_size / 2.0) + (parallax * parallax_size / 2.0);
|
||||
|
||||
float zoomSamplePoint = (1.0 - zoomInv) / 2.0; // will never quite exceed 0.5
|
||||
|
||||
// I don't even know if it works, and also not sure if I actually want it
|
||||
vec3 newBottom = mix(bottomColor, topColor, zoomSamplePoint);
|
||||
vec3 newTop = mix(topColor, bottomColor, zoomSamplePoint);
|
||||
|
||||
vec4 inColor = vec4(mix(newBottom, newTop, scale), 1.0);
|
||||
|
||||
vec2 entry = mod(gl_FragCoord.xy, vec2(bayerSize, bayerSize));
|
||||
|
||||
gl_FragColor = nearestColour(inColor + spread * (bayer[int(entry.y) * int(bayerSize) + int(entry.x)] / bayerDivider - 0.5));
|
||||
}
|
||||
|
||||
/*
|
||||
UV mapping coord.y
|
||||
|
||||
-+ <- 1.0 =
|
||||
D| = // parallax of +1
|
||||
i| = =
|
||||
s| = // parallax of 0
|
||||
p| = =
|
||||
.| = // parallax of -1
|
||||
-+ <- 0.0 =
|
||||
*/
|
||||
@@ -1,20 +1,20 @@
|
||||
#version 120
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
in vec4 v_color;
|
||||
in vec2 v_texCoords;
|
||||
|
||||
varying vec4 v_color;
|
||||
varying vec2 v_texCoords;
|
||||
uniform sampler2D u_texture; // world texture, has alpha value that is meaningful
|
||||
|
||||
uniform sampler2D tex1; // lightmap texture
|
||||
uniform vec2 tex1Offset;
|
||||
out vec4 fragColor;
|
||||
|
||||
void main() {
|
||||
vec4 colorTex0 = texture(u_texture, v_texCoords); // world texture
|
||||
vec4 colorTex1 = texture(tex1, v_texCoords); // lightmap (RGBA)
|
||||
vec4 colorTex0 = texture2D(u_texture, v_texCoords); // world texture
|
||||
vec4 colorTex1 = texture2D(tex1, v_texCoords); // lightmap (RGBA)
|
||||
|
||||
colorTex1 = vec4(colorTex1.www, 1.0);
|
||||
|
||||
fragColor = colorTex0 * colorTex1;
|
||||
gl_FragColor = colorTex0 * colorTex1;
|
||||
}
|
||||
8
assets/aonly.frag
Normal file
8
assets/aonly.frag
Normal file
@@ -0,0 +1,8 @@
|
||||
varying vec4 v_color;
|
||||
varying vec2 v_texCoords;
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
void main(void) {
|
||||
vec3 alpha = texture2D(u_texture, v_texCoords).aaa;
|
||||
gl_FragColor = vec4(alpha, 1.0);
|
||||
}
|
||||
BIN
assets/appicon128.png
Normal file
BIN
assets/appicon128.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 462 B |
BIN
assets/appicon16.png
Normal file
BIN
assets/appicon16.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 366 B |
BIN
assets/appicon256.png
Normal file
BIN
assets/appicon256.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 559 B |
BIN
assets/appicon32.png
Normal file
BIN
assets/appicon32.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 387 B |
BIN
assets/appicon64.png
Normal file
BIN
assets/appicon64.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 418 B |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
18
assets/blendGlow.frag
Normal file
18
assets/blendGlow.frag
Normal file
@@ -0,0 +1,18 @@
|
||||
#version 120
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
|
||||
varying vec4 v_color;
|
||||
varying vec2 v_texCoords;
|
||||
uniform sampler2D u_texture; // world texture, has alpha value that is meaningful
|
||||
|
||||
uniform sampler2D tex1; // glow texture, SHOULD contain alpha of all 1.0
|
||||
|
||||
void main(void) {
|
||||
vec4 colorTex0 = texture2D(u_texture, v_texCoords); // lightmap (RGB) pre-mixed
|
||||
vec4 colorTex1 = texture2D(tex1, v_texCoords); // lightmap (A) pre-mixed
|
||||
|
||||
gl_FragColor = vec4(max(colorTex0.rgb, colorTex1.rgb), colorTex0.a);
|
||||
}
|
||||
@@ -1,12 +1,11 @@
|
||||
|
||||
in vec4 a_position;
|
||||
in vec4 a_color;
|
||||
in vec2 a_texCoord0;
|
||||
attribute vec4 a_position;
|
||||
attribute vec4 a_color;
|
||||
attribute vec2 a_texCoord0;
|
||||
|
||||
uniform mat4 u_projTrans; // camera.combined
|
||||
|
||||
out vec4 v_color;
|
||||
out vec2 v_texCoords;
|
||||
varying vec4 v_color;
|
||||
varying vec2 v_texCoords;
|
||||
|
||||
void main() {
|
||||
v_color = a_color;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user