diff options
| author | Anson Bridges <bridges.anson@gmail.com> | 2025-08-11 22:42:00 -0700 |
|---|---|---|
| committer | Anson Bridges <bridges.anson@gmail.com> | 2025-08-11 22:42:00 -0700 |
| commit | d558a9add0e183219a7a9ff482807bdcd677e21a (patch) | |
| tree | 49e454649a4b45ce02c419894109de55f7f2e465 | |
Initialize repo from local files
118 files changed, 6236 insertions, 0 deletions
diff --git a/.import/.gdignore b/.import/.gdignore new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.import/.gdignore @@ -0,0 +1 @@ + diff --git a/.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.etc.stex b/.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.etc.stex Binary files differnew file mode 100644 index 0000000..7741319 --- /dev/null +++ b/.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.etc.stex diff --git a/.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.md5 b/.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.md5 new file mode 100644 index 0000000..1d95111 --- /dev/null +++ b/.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.md5 @@ -0,0 +1,3 @@ +source_md5="c67a8ad29081e701a2efd7aafb1725ce" +dest_md5="3f4a132dbe18db379a5fdf6a755cbc0c" + diff --git a/.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.s3tc.stex b/.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.s3tc.stex Binary files differnew file mode 100644 index 0000000..b4354db --- /dev/null +++ b/.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.s3tc.stex diff --git a/.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.stex b/.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.stex Binary files differnew file mode 100644 index 0000000..d7c79e4 --- /dev/null +++ b/.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.stex diff --git a/.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.etc.stex b/.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.etc.stex Binary files differnew file mode 100644 index 0000000..dce72d7 --- /dev/null +++ b/.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.etc.stex diff --git a/.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.md5 b/.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.md5 new file mode 100644 index 0000000..dc41bc2 --- /dev/null +++ b/.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.md5 @@ -0,0 +1,3 @@ +source_md5="2bed136fdf6520e6ed1a4f334378b8c8" +dest_md5="fbf59d3a401797519153229d74478597" + diff --git a/.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.s3tc.stex b/.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.s3tc.stex Binary files differnew file mode 100644 index 0000000..08943c9 --- /dev/null +++ b/.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.s3tc.stex diff --git a/.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.stex b/.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.stex Binary files differnew file mode 100644 index 0000000..fd86dda --- /dev/null +++ b/.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.stex diff --git a/.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.etc.stex b/.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.etc.stex Binary files differnew file mode 100644 index 0000000..90d058a --- /dev/null +++ b/.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.etc.stex diff --git a/.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.md5 b/.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.md5 new file mode 100644 index 0000000..a789f1d --- /dev/null +++ b/.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.md5 @@ -0,0 +1,3 @@ +source_md5="480e2d9ab9662e2b30f2d26d47cba69a" +dest_md5="eea0a581ade356204d04aaf8afd69d1e" + diff --git a/.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.s3tc.stex b/.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.s3tc.stex Binary files differnew file mode 100644 index 0000000..c9b1635 --- /dev/null +++ b/.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.s3tc.stex diff --git a/.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.stex b/.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.stex Binary files differnew file mode 100644 index 0000000..f038917 --- /dev/null +++ b/.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.stex diff --git a/.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.etc.stex b/.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.etc.stex Binary files differnew file mode 100644 index 0000000..e9854a5 --- /dev/null +++ b/.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.etc.stex diff --git a/.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.md5 b/.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.md5 new file mode 100644 index 0000000..5d4d215 --- /dev/null +++ b/.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.md5 @@ -0,0 +1,3 @@ +source_md5="d250c84d9bbc9e6033ea12f8688c3d80" +dest_md5="f5fcd5cf673ee6e49247a62ebd46ba57" + diff --git a/.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.s3tc.stex b/.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.s3tc.stex Binary files differnew file mode 100644 index 0000000..9d41dcb --- /dev/null +++ b/.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.s3tc.stex diff --git a/.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.stex b/.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.stex Binary files differnew file mode 100644 index 0000000..9964107 --- /dev/null +++ b/.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.stex diff --git a/.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.etc.stex b/.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.etc.stex Binary files differnew file mode 100644 index 0000000..4e0f5cb --- /dev/null +++ b/.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.etc.stex diff --git a/.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.md5 b/.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.md5 new file mode 100644 index 0000000..a41631d --- /dev/null +++ b/.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.md5 @@ -0,0 +1,3 @@ +source_md5="de6ab18b69081ef60a0f16e229041b11" +dest_md5="12d07db2933958335ba3a56ea21cc4f5" + diff --git a/.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.s3tc.stex b/.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.s3tc.stex Binary files differnew file mode 100644 index 0000000..ddb9dc9 --- /dev/null +++ b/.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.s3tc.stex diff --git a/.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.stex b/.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.stex Binary files differnew file mode 100644 index 0000000..d1e74d3 --- /dev/null +++ b/.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.stex diff --git a/.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.etc.stex b/.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.etc.stex Binary files differnew file mode 100644 index 0000000..f15421b --- /dev/null +++ b/.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.etc.stex diff --git a/.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.md5 b/.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.md5 new file mode 100644 index 0000000..6294a73 --- /dev/null +++ b/.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.md5 @@ -0,0 +1,3 @@ +source_md5="afdb6121f8abf0a33e7a6b719b99050c" +dest_md5="1624508ce94ae733c9d7c8bedfab255e" + diff --git a/.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.s3tc.stex b/.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.s3tc.stex Binary files differnew file mode 100644 index 0000000..fff9efd --- /dev/null +++ b/.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.s3tc.stex diff --git a/.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.stex b/.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.stex Binary files differnew file mode 100644 index 0000000..0ca2337 --- /dev/null +++ b/.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.stex diff --git a/.import/airport_indicator_7.png-8aef28698dc5e90e4f05a781ef0a4b66.md5 b/.import/airport_indicator_7.png-8aef28698dc5e90e4f05a781ef0a4b66.md5 new file mode 100644 index 0000000..0e10460 --- /dev/null +++ b/.import/airport_indicator_7.png-8aef28698dc5e90e4f05a781ef0a4b66.md5 @@ -0,0 +1,3 @@ +source_md5="8b2847f966e2b6ed2b27683f44973e0e" +dest_md5="319feac1539923497c6bb53e2a9cfccd" + diff --git a/.import/airport_indicator_7.png-8aef28698dc5e90e4f05a781ef0a4b66.stex b/.import/airport_indicator_7.png-8aef28698dc5e90e4f05a781ef0a4b66.stex Binary files differnew file mode 100644 index 0000000..6a92394 --- /dev/null +++ b/.import/airport_indicator_7.png-8aef28698dc5e90e4f05a781ef0a4b66.stex diff --git a/.import/airport_indicator_8.png-89eae2d53f3fde02be5a1e362fa90166.md5 b/.import/airport_indicator_8.png-89eae2d53f3fde02be5a1e362fa90166.md5 new file mode 100644 index 0000000..003f833 --- /dev/null +++ b/.import/airport_indicator_8.png-89eae2d53f3fde02be5a1e362fa90166.md5 @@ -0,0 +1,3 @@ +source_md5="edba199c2ab7553b3ac84b77f669a4d1" +dest_md5="c5ed835b28480a717f21e06836b2babd" + diff --git a/.import/airport_indicator_8.png-89eae2d53f3fde02be5a1e362fa90166.stex b/.import/airport_indicator_8.png-89eae2d53f3fde02be5a1e362fa90166.stex Binary files differnew file mode 100644 index 0000000..63bcc92 --- /dev/null +++ b/.import/airport_indicator_8.png-89eae2d53f3fde02be5a1e362fa90166.stex diff --git a/.import/airport_indicator_9.png-d7d739cd9cd4206419984a8a11b24119.md5 b/.import/airport_indicator_9.png-d7d739cd9cd4206419984a8a11b24119.md5 new file mode 100644 index 0000000..3ea028b --- /dev/null +++ b/.import/airport_indicator_9.png-d7d739cd9cd4206419984a8a11b24119.md5 @@ -0,0 +1,3 @@ +source_md5="c2f4db2399a46c0c15c50ee3b9f22e0e" +dest_md5="e0b681b623dc5add95c63d36a8fdfd3f" + diff --git a/.import/airport_indicator_9.png-d7d739cd9cd4206419984a8a11b24119.stex b/.import/airport_indicator_9.png-d7d739cd9cd4206419984a8a11b24119.stex Binary files differnew file mode 100644 index 0000000..216c7a9 --- /dev/null +++ b/.import/airport_indicator_9.png-d7d739cd9cd4206419984a8a11b24119.stex diff --git a/.import/ascend.png-baee808945f3f047e3ffa74f8f004694.md5 b/.import/ascend.png-baee808945f3f047e3ffa74f8f004694.md5 new file mode 100644 index 0000000..7cf7b0f --- /dev/null +++ b/.import/ascend.png-baee808945f3f047e3ffa74f8f004694.md5 @@ -0,0 +1,3 @@ +source_md5="e90ed3fabcd430a9b64cb45741e15c01" +dest_md5="defee3af44da60cf014ebbf436cc1dec" + diff --git a/.import/ascend.png-baee808945f3f047e3ffa74f8f004694.stex b/.import/ascend.png-baee808945f3f047e3ffa74f8f004694.stex Binary files differnew file mode 100644 index 0000000..cdf7466 --- /dev/null +++ b/.import/ascend.png-baee808945f3f047e3ffa74f8f004694.stex diff --git a/.import/descend.png-2b127daf15c82c1a4c295b0f6dc0de52.md5 b/.import/descend.png-2b127daf15c82c1a4c295b0f6dc0de52.md5 new file mode 100644 index 0000000..23f4312 --- /dev/null +++ b/.import/descend.png-2b127daf15c82c1a4c295b0f6dc0de52.md5 @@ -0,0 +1,3 @@ +source_md5="ed42f77b47381e943c299b0a84450f41" +dest_md5="48d1e07d404bbb6cf4e9fb2387270ee2" + diff --git a/.import/descend.png-2b127daf15c82c1a4c295b0f6dc0de52.stex b/.import/descend.png-2b127daf15c82c1a4c295b0f6dc0de52.stex Binary files differnew file mode 100644 index 0000000..78f8970 --- /dev/null +++ b/.import/descend.png-2b127daf15c82c1a4c295b0f6dc0de52.stex diff --git a/.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.etc.stex b/.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.etc.stex Binary files differnew file mode 100644 index 0000000..2e82e9f --- /dev/null +++ b/.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.etc.stex diff --git a/.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.md5 b/.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.md5 new file mode 100644 index 0000000..1ade18f --- /dev/null +++ b/.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.md5 @@ -0,0 +1,3 @@ +source_md5="3bb9bac0cd0ab756d4715c0477a1a2da" +dest_md5="15e006d453970eec5896c29026c062ad" + diff --git a/.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.s3tc.stex b/.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.s3tc.stex Binary files differnew file mode 100644 index 0000000..17b55cf --- /dev/null +++ b/.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.s3tc.stex diff --git a/.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.stex b/.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.stex Binary files differnew file mode 100644 index 0000000..83dcdaa --- /dev/null +++ b/.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.stex diff --git a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 new file mode 100644 index 0000000..b3df3e2 --- /dev/null +++ b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 @@ -0,0 +1,3 @@ +source_md5="e764f545f45ff67472d11f7abdd9eba8" +dest_md5="f29d733ab0173aefbf5ac7dafaeb9350" + diff --git a/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex Binary files differnew file mode 100644 index 0000000..53050a0 --- /dev/null +++ b/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex diff --git a/.import/plane_action_indicator_board.png-587c22d3b3f1e80978e005a6fa5c8a9f.md5 b/.import/plane_action_indicator_board.png-587c22d3b3f1e80978e005a6fa5c8a9f.md5 new file mode 100644 index 0000000..9650555 --- /dev/null +++ b/.import/plane_action_indicator_board.png-587c22d3b3f1e80978e005a6fa5c8a9f.md5 @@ -0,0 +1,3 @@ +source_md5="1f950108468fc210e13d2f7954652c6e" +dest_md5="e0fb57b2b0612224c87a7fe93c7fc077" + diff --git a/.import/plane_action_indicator_board.png-587c22d3b3f1e80978e005a6fa5c8a9f.stex b/.import/plane_action_indicator_board.png-587c22d3b3f1e80978e005a6fa5c8a9f.stex Binary files differnew file mode 100644 index 0000000..c3dad20 --- /dev/null +++ b/.import/plane_action_indicator_board.png-587c22d3b3f1e80978e005a6fa5c8a9f.stex diff --git a/.import/turn_ccw.png-e16b9f191e378e10370b4656d06f96f7.md5 b/.import/turn_ccw.png-e16b9f191e378e10370b4656d06f96f7.md5 new file mode 100644 index 0000000..54d2bac --- /dev/null +++ b/.import/turn_ccw.png-e16b9f191e378e10370b4656d06f96f7.md5 @@ -0,0 +1,3 @@ +source_md5="cdde88805513daf1a4934e0478d8021e" +dest_md5="f3b300368983a123b14cc3db7eef5e06" + diff --git a/.import/turn_ccw.png-e16b9f191e378e10370b4656d06f96f7.stex b/.import/turn_ccw.png-e16b9f191e378e10370b4656d06f96f7.stex Binary files differnew file mode 100644 index 0000000..2b1bfbd --- /dev/null +++ b/.import/turn_ccw.png-e16b9f191e378e10370b4656d06f96f7.stex diff --git a/.import/turn_cw.png-19a47ff445504cb5070b31253c008688.md5 b/.import/turn_cw.png-19a47ff445504cb5070b31253c008688.md5 new file mode 100644 index 0000000..75ec2a9 --- /dev/null +++ b/.import/turn_cw.png-19a47ff445504cb5070b31253c008688.md5 @@ -0,0 +1,3 @@ +source_md5="db88e2354ca6e1c38dc92368a042e0d0" +dest_md5="bba8b6ccc6530bcf74660d0c58bb3cef" + diff --git a/.import/turn_cw.png-19a47ff445504cb5070b31253c008688.stex b/.import/turn_cw.png-19a47ff445504cb5070b31253c008688.stex Binary files differnew file mode 100644 index 0000000..8f3c882 --- /dev/null +++ b/.import/turn_cw.png-19a47ff445504cb5070b31253c008688.stex diff --git a/.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.etc.stex b/.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.etc.stex Binary files differnew file mode 100644 index 0000000..e1cae62 --- /dev/null +++ b/.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.etc.stex diff --git a/.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.md5 b/.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.md5 new file mode 100644 index 0000000..531bc82 --- /dev/null +++ b/.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.md5 @@ -0,0 +1,3 @@ +source_md5="24c3db8408a9f30f5b2a25b2d9c22b95" +dest_md5="b730686ca68a2ea8fe8d5f69cbe15f75" + diff --git a/.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.s3tc.stex b/.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.s3tc.stex Binary files differnew file mode 100644 index 0000000..c8bfd6c --- /dev/null +++ b/.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.s3tc.stex diff --git a/.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.stex b/.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.stex Binary files differnew file mode 100644 index 0000000..20eafca --- /dev/null +++ b/.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.stex diff --git a/default_env.tres b/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/export_presets.cfg diff --git a/icon.png b/icon.png Binary files differnew file mode 100644 index 0000000..e032a97 --- /dev/null +++ b/icon.png diff --git a/icon.png.import b/icon.png.import new file mode 100644 index 0000000..a4c02e6 --- /dev/null +++ b/icon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/network/WebSocketTest.gd b/network/WebSocketTest.gd new file mode 100644 index 0000000..49520dd --- /dev/null +++ b/network/WebSocketTest.gd @@ -0,0 +1,17 @@ +extends Node + +onready var client = $WebSocketClient +var sent = false + +func _ready(): + client.sock_connect_to_url("ws://127.0.0.1:8181") + +func _process(_delta): + if client.state == 2 and not sent: + client.send("test string".to_utf8(), true) + client.send(JSON.print({"items" : [1, "test_dictionary"]}).to_utf8(), true) + sent = true + if client.state == 2: + var message = client.receive() + if message: + print(message) diff --git a/network/WebSocketTest.tscn b/network/WebSocketTest.tscn new file mode 100644 index 0000000..3b02263 --- /dev/null +++ b/network/WebSocketTest.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://network/WebSocketTest.gd" type="Script" id=1] +[ext_resource path="res://network/websocket_client.gd" type="Script" id=2] + +[node name="WebSocketTest" type="Spatial"] +script = ExtResource( 1 ) + +[node name="WebSocketClient" type="Node" parent="."] +script = ExtResource( 2 ) + +[node name="Camera" type="Camera" parent="."] diff --git a/network/websocket_client.gd b/network/websocket_client.gd new file mode 100644 index 0000000..4583dc3 --- /dev/null +++ b/network/websocket_client.gd @@ -0,0 +1,76 @@ +extends Node + +var socket_client: WebSocketClient = null +var socket: WebSocketPeer = null +var state: int = 0 # -1 = CONNECTION_FAILED, 0 = CONNECTION_DISCONNECTED, 1 = CONNECTION_CONNECTING, 2 = CONNECTION_CONNECTED, 3 = CONNECTION_DISCONNECTING +var id + + +func _ready(): + socket_client = WebSocketClient.new() + socket_client.connect("connection_established", self, "on_connection_success") + socket_client.connect("connection_closed", self, "on_connection_close_success") + socket_client.connect("connection_error", self, "on_connection_error") + #socket_client.connect("data_received", self, "receive") + +func sock_connect_to_url(url): + print("Connecting to %s..." % url) + var error = socket_client.connect_to_url(url) + if error != OK: + return error + + state = 1 # CONNECTING + return OK + +func sock_close(code = 1000, reason = ""): + print("Closing websocket...") + socket_client.disconnect_from_host(code, reason) + state = 3 # DISCONNECTING + +func on_connection_success(protocol): + print("WebSocket connection success with protocol %s." % protocol) + socket = socket_client.get_peer(1) + state = 2 # CONNECTED + +func on_connection_close_success(clean): + print("WebSocket closed successfully.") + socket = null + if clean: + state = 0 # DISCONNECTED + else: + state = -1 # DISCONNECT DIRTY + +func on_connection_error(): # connection failed + print("WebSocket connection failed!") + socket = null + state = -1 # DISCONNECT DIRTY + +func send(message, as_string=false): + if state != 2: return null + if as_string: + socket.set_write_mode(WebSocketPeer.WRITE_MODE_TEXT) + return socket.put_packet(message) + else: + socket.set_write_mode(WebSocketPeer.WRITE_MODE_BINARY) + return socket.put_packet(var2bytes(message)) + +func send_json(message) -> int: + if state != 2: return -1 + var message_json = JSON.print(message).to_utf8() + socket.set_write_mode(WebSocketPeer.WRITE_MODE_TEXT) + return socket.put_packet(message_json) + +func receive(string_to_json=false): + if state != 2: return null + if socket.get_available_packet_count() < 1: return null + print("receive") + var packet : PoolByteArray = socket.get_packet() + if socket.was_string_packet(): + var message = packet.get_string_from_utf8() + if string_to_json: message = JSON.parse(message) + return message + return bytes2var(packet) + + +func _process(_delta): + socket_client.poll() diff --git a/objects/BorderIndicator.tscn b/objects/BorderIndicator.tscn new file mode 100644 index 0000000..77535f4 --- /dev/null +++ b/objects/BorderIndicator.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://textures/gradient_transparent.png" type="Texture" id=1] + +[sub_resource type="SpatialMaterial" id=1] +flags_transparent = true +params_cull_mode = 2 +albedo_color = Color( 1, 0.956863, 0, 1 ) +albedo_texture = ExtResource( 1 ) +emission_enabled = true +emission = Color( 1, 1, 0, 1 ) +emission_energy = 1.0 +emission_operator = 0 +emission_on_uv2 = false +uv1_scale = Vector3( 1, 0.9, 1 ) +uv1_offset = Vector3( 0, 0.1, 0 ) + +[sub_resource type="QuadMesh" id=2] +material = SubResource( 1 ) +size = Vector2( 0.577, 0.15 ) + +[sub_resource type="SpatialMaterial" id=3] +flags_transparent = true +params_cull_mode = 2 +albedo_color = Color( 1, 0.956863, 0, 0.486275 ) +emission_enabled = true +emission = Color( 1, 1, 0, 1 ) +emission_energy = 1.0 +emission_operator = 0 +emission_on_uv2 = false +uv1_scale = Vector3( 1, 0.9, 1 ) +uv1_offset = Vector3( 0, 0.1, 0 ) + +[sub_resource type="QuadMesh" id=4] +material = SubResource( 3 ) +size = Vector2( 0.577, 0.04 ) + +[node name="BorderIndicator" type="Spatial"] + +[node name="MeshInstance" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0537032, 0 ) +mesh = SubResource( 2 ) + +[node name="MeshInstance3" type="MeshInstance" parent="."] +transform = Transform( 1, 4.37114e-08, 4.37114e-08, -4.37114e-08, -4.37114e-08, 1, 4.37114e-08, -1, -4.37114e-08, 0, 0, 0 ) +mesh = SubResource( 4 ) diff --git a/objects/HexSpace.tscn b/objects/HexSpace.tscn new file mode 100644 index 0000000..121a5a9 --- /dev/null +++ b/objects/HexSpace.tscn @@ -0,0 +1,178 @@ +[gd_scene load_steps=22 format=2] + +[ext_resource path="res://scripts/HexSpace.gd" type="Script" id=1] +[ext_resource path="res://resources/fonts/cochineal_bold_billboard.tres" type="DynamicFont" id=2] + +[sub_resource type="SpatialMaterial" id=5] +albedo_color = Color( 0.101961, 0.427451, 0.0235294, 1 ) + +[sub_resource type="CylinderMesh" id=1] +material = SubResource( 5 ) +top_radius = 0.577 +bottom_radius = 0.577 +height = 0.5 +radial_segments = 6 +rings = 1 + +[sub_resource type="ConvexPolygonShape" id=2] +points = PoolVector3Array( 0.499697, 0.25, 0.2885, 0, 0.25, 0.577, 0.499697, -0.25, 0.2885, 0.499697, 0.25, -0.2885, 0, -0.25, 0.577, -0.499697, 0.25, 0.2885, 0.499697, -0.25, -0.2885, 0, 0.25, -0.577, -0.499697, -0.25, 0.2885, -0.499697, 0.25, -0.2885, 0, -0.25, -0.577, -0.499697, -0.25, -0.2885 ) + +[sub_resource type="SpatialMaterial" id=18] +albedo_color = Color( 0.470588, 0.470588, 0.470588, 1 ) + +[sub_resource type="CubeMesh" id=19] +material = SubResource( 18 ) +size = Vector3( 0.2, 0.2, 0.2 ) + +[sub_resource type="SpatialMaterial" id=6] +albedo_color = Color( 0.658824, 0.658824, 0.658824, 1 ) +metallic_specular = 0.0 + +[sub_resource type="QuadMesh" id=7] +material = SubResource( 6 ) +size = Vector2( 0.15, 0.9 ) + +[sub_resource type="SpatialMaterial" id=8] +albedo_color = Color( 0.47451, 0.47451, 0.47451, 1 ) +metallic_specular = 0.0 + +[sub_resource type="QuadMesh" id=9] +material = SubResource( 8 ) +size = Vector2( 0.15, 0.9 ) + +[sub_resource type="SpatialMaterial" id=10] +albedo_color = Color( 0.27451, 0.27451, 0.27451, 1 ) +metallic_specular = 0.0 + +[sub_resource type="QuadMesh" id=11] +material = SubResource( 10 ) +size = Vector2( 0.15, 0.9 ) + +[sub_resource type="SpatialMaterial" id=12] +albedo_color = Color( 0.988235, 0.780392, 0.156863, 1 ) + +[sub_resource type="CylinderMesh" id=13] +material = SubResource( 12 ) +top_radius = 0.07 +bottom_radius = 0.07 +height = 0.25 +radial_segments = 6 + +[sub_resource type="SpatialMaterial" id=14] +albedo_color = Color( 0.113725, 0.113725, 0.113725, 1 ) + +[sub_resource type="CylinderMesh" id=15] +material = SubResource( 14 ) +top_radius = 0.05 +bottom_radius = 0.05 +height = 0.1 +radial_segments = 6 + +[sub_resource type="SpatialMaterial" id=16] +albedo_color = Color( 0.682353, 0, 0, 1 ) + +[sub_resource type="PrismMesh" id=17] +material = SubResource( 16 ) +size = Vector3( 0.15, 0.15, 0.2 ) + +[sub_resource type="SpatialMaterial" id=20] +albedo_color = Color( 0.360784, 0.360784, 0.360784, 1 ) + +[sub_resource type="CubeMesh" id=21] +material = SubResource( 20 ) +size = Vector3( 0.5, 0.5, 0.5 ) + +[node name="HexSpace" type="StaticBody"] +script = ExtResource( 1 ) + +[node name="BaseMesh" type="MeshInstance" parent="."] +mesh = SubResource( 1 ) + +[node name="CollisionShape" type="CollisionShape" parent="."] +shape = SubResource( 2 ) + +[node name="Hills" type="Spatial" parent="."] +transform = Transform( 1.5, 0, 0, 0, 3, 0, 0, 0, 1.5, 0, 0, 0 ) +visible = false + +[node name="Hill1" type="MeshInstance" parent="Hills"] +transform = Transform( 0.572221, -0.735731, 0.362302, 0.453934, 0.652079, 0.607237, -0.683013, -0.183013, 0.707107, -0.136769, 0.00248935, -0.0678155 ) +mesh = SubResource( 19 ) + +[node name="Hill2" type="MeshInstance" parent="Hills"] +transform = Transform( 0.128026, -0.722156, 0.679779, 0.453934, 0.652079, 0.607237, -0.88179, 0.230833, 0.411294, 0.112486, -0.0176367, 0.0223942 ) +mesh = SubResource( 19 ) + +[node name="Hill3" type="MeshInstance" parent="Hills"] +transform = Transform( -0.672034, -0.196937, 0.713853, 0.453934, 0.652079, 0.607237, -0.585076, 0.732127, -0.348823, 0.0607607, -0.0176367, 0.146304 ) +mesh = SubResource( 19 ) + +[node name="Mtn4" type="MeshInstance" parent="Hills"] +transform = Transform( 0.0943905, -0.712853, 0.694933, 0.453934, 0.652079, 0.607237, -0.886021, 0.258136, 0.385138, 0.0280236, 0.0174877, -0.12019 ) +mesh = SubResource( 19 ) + +[node name="Mtn5" type="MeshInstance" parent="Hills"] +transform = Transform( -0.602414, -0.086159, 0.805447, 0.479476, 0.657607, 0.576965, -0.579378, 0.733764, -0.35484, 0.195652, -0.00499119, 0.0690676 ) +mesh = SubResource( 19 ) + +[node name="Mtn6" type="MeshInstance" parent="Hills"] +transform = Transform( 0.762554, -0.636833, 0.113821, 0.453934, 0.652079, 0.607237, -0.460929, -0.411384, 0.786325, -0.0791655, 0.0010101, 0.116248 ) +mesh = SubResource( 19 ) + +[node name="Airport" type="Spatial" parent="."] +visible = false + +[node name="MediumRunway" type="MeshInstance" parent="Airport"] +transform = Transform( 0.866025, 0.5, -6.55671e-08, 0, 1.31134e-07, 1, 0.5, -0.866025, 1.13566e-07, 0, 0.251, 0 ) +mesh = SubResource( 7 ) + +[node name="HardRunway" type="MeshInstance" parent="Airport"] +transform = Transform( -5.96046e-08, 1, -1.31134e-07, 0, 1.31134e-07, 1, 1, 5.96046e-08, -7.10543e-15, 0, 0.252, 0 ) +mesh = SubResource( 9 ) + +[node name="EasyRunway" type="MeshInstance" parent="Airport"] +transform = Transform( -0.866025, 0.5, -6.55671e-08, 0, 1.31134e-07, 1, 0.5, 0.866025, -1.13566e-07, 0, 0.253, 0 ) +mesh = SubResource( 11 ) + +[node name="ATCTowerBase" type="MeshInstance" parent="Airport"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0212696, 0.378614, 0.362361 ) +mesh = SubResource( 13 ) + +[node name="ATCTowerTop" type="MeshInstance" parent="Airport"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0212696, 0.547252, 0.362361 ) +mesh = SubResource( 15 ) + +[node name="MeshInstance" type="MeshInstance" parent="Airport"] +transform = Transform( 0.866025, 0, -0.5, 0, 1, 0, 0.5, 0, 0.866025, 0.0160618, 0.319395, -0.39729 ) +mesh = SubResource( 17 ) + +[node name="AirportName" type="Label3D" parent="Airport"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.971102, 0 ) +visible = false +pixel_size = 0.001 +billboard = 1 +fixed_size = true +text = "AIRPORT NAME" +font = ExtResource( 2 ) + +[node name="AirportIcon" type="Sprite3D" parent="Airport"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.366498, 0.366924, 0.20708 ) +pixel_size = 0.0035 +billboard = 1 +transparent = false + +[node name="Mountain" type="Spatial" parent="."] +transform = Transform( 1, 0, 0, 0, 5, 0, 0, 0, 1, 0, -0.838121, 0 ) +visible = false + +[node name="Mtn1" type="MeshInstance" parent="Mountain"] +transform = Transform( 0.702638, 0.466574, 0.537224, -0.711548, 0.460731, 0.530496, 0, -0.755007, 0.655716, 0.15039, 0, 0.227606 ) +mesh = SubResource( 21 ) + +[node name="Mtn2" type="MeshInstance" parent="Mountain"] +transform = Transform( 0.663538, 0.192264, 0.723016, -0.711548, 0.460731, 0.530496, -0.23112, -0.866465, 0.442518, -0.128441, 0.0223821, 0.00454938 ) +mesh = SubResource( 21 ) + +[node name="Mtn3" type="MeshInstance" parent="Mountain"] +transform = Transform( -0.365966, -0.887525, 0.279942, -0.711548, 0.460731, 0.530496, -0.599807, -0.00504872, -0.800129, 0.0776231, -0.0221244, -0.135642 ) +mesh = SubResource( 21 ) diff --git a/objects/Plane.tscn b/objects/Plane.tscn new file mode 100644 index 0000000..21ce972 --- /dev/null +++ b/objects/Plane.tscn @@ -0,0 +1,136 @@ +[gd_scene load_steps=15 format=2] + +[ext_resource path="res://scripts/Plane.gd" type="Script" id=1] +[ext_resource path="res://resources/fonts/Cochineal-Bold.otf" type="DynamicFontData" id=2] +[ext_resource path="res://textures/plane_action_indicator_board.png" type="Texture" id=3] +[ext_resource path="res://textures/gradient_transparent.png" type="Texture" id=4] +[ext_resource path="res://resources/blank_plane_material.material" type="Material" id=5] + +[sub_resource type="CylinderMesh" id=1] +material = ExtResource( 5 ) +top_radius = 0.1 +bottom_radius = 0.1 +height = 0.4 + +[sub_resource type="PrismMesh" id=2] +left_to_right = 0.2 +size = Vector3( 0.18, 0.18, 0.18 ) + +[sub_resource type="CubeMesh" id=3] +size = Vector3( 0.1, 0.05, 0.6 ) + +[sub_resource type="CubeMesh" id=4] +size = Vector3( 0.1, 0.05, 0.3 ) + +[sub_resource type="CylinderShape" id=5] +height = 0.2 +radius = 0.35 + +[sub_resource type="DynamicFont" id=6] +size = 100 +outline_size = 2 +outline_color = Color( 0, 0, 0, 1 ) +font_data = ExtResource( 2 ) + +[sub_resource type="ViewportTexture" id=7] +viewport_path = NodePath("ActionIndicatorViewport") + +[sub_resource type="SpatialMaterial" id=8] +flags_transparent = true +flags_unshaded = true +params_cull_mode = 2 +albedo_color = Color( 0.945098, 1, 0, 0.439216 ) +albedo_texture = ExtResource( 4 ) +uv1_offset = Vector3( 0, 0.498, 0 ) + +[sub_resource type="CylinderMesh" id=9] +material = SubResource( 8 ) +top_radius = 0.4 +bottom_radius = 0.4 +height = 0.3 +radial_segments = 20 + +[node name="Plane" type="Area"] +script = ExtResource( 1 ) + +[node name="Fuselage" type="MeshInstance" parent="."] +transform = Transform( -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0 ) +mesh = SubResource( 1 ) + +[node name="Cone" type="MeshInstance" parent="."] +transform = Transform( -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, -0.287144, 0.0157076, 0 ) +mesh = SubResource( 2 ) + +[node name="Wings" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0623346, 0.0405034, 0 ) +mesh = SubResource( 3 ) + +[node name="Tail" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.19327, 0.0606151, 0 ) +mesh = SubResource( 4 ) + +[node name="CollisionShape" type="CollisionShape" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0276226, 0.0342902, 0 ) +shape = SubResource( 5 ) + +[node name="UnsetIndicator" type="Label3D" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.280024, 0 ) +visible = false +pixel_size = 0.001 +billboard = 1 +fixed_size = true +text = "!" +font = SubResource( 6 ) + +[node name="ActionIndicator" type="Sprite3D" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.00816703, 0 ) +visible = false +centered = false +pixel_size = 0.0015 +billboard = 1 +double_sided = false +no_depth_test = true +fixed_size = true +texture = SubResource( 7 ) + +[node name="SelectionIndicator" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.071805, 0 ) +visible = false +mesh = SubResource( 9 ) + +[node name="ActionIndicatorViewport" type="Viewport" parent="."] +size = Vector2( 320, 64 ) +transparent_bg = true +disable_3d = true +usage = 1 + +[node name="FlightInfo" type="Node2D" parent="ActionIndicatorViewport"] + +[node name="Background" type="Sprite" parent="ActionIndicatorViewport/FlightInfo"] +position = Vector2( 192, 32 ) +z_index = -1 +texture = ExtResource( 3 ) + +[node name="Action1" type="Sprite" parent="ActionIndicatorViewport/FlightInfo"] +position = Vector2( 95, 32 ) +scale = Vector2( 0.625, 0.625 ) + +[node name="Action2" type="Sprite" parent="ActionIndicatorViewport/FlightInfo"] +position = Vector2( 144, 32 ) +scale = Vector2( 0.625, 0.625 ) + +[node name="Action3" type="Sprite" parent="ActionIndicatorViewport/FlightInfo"] +position = Vector2( 193, 32 ) +scale = Vector2( 0.625, 0.625 ) + +[node name="Action4" type="Sprite" parent="ActionIndicatorViewport/FlightInfo"] +position = Vector2( 242, 32 ) +scale = Vector2( 0.625, 0.625 ) + +[node name="Action5" type="Sprite" parent="ActionIndicatorViewport/FlightInfo"] +position = Vector2( 291, 32 ) +scale = Vector2( 0.625, 0.625 ) + +[connection signal="input_event" from="." to="." method="_on_Plane_input_event"] +[connection signal="mouse_entered" from="." to="." method="_on_Plane_mouse_entered"] +[connection signal="mouse_exited" from="." to="." method="_on_Plane_mouse_exited"] diff --git a/objects/PlaneControlBoard.tscn b/objects/PlaneControlBoard.tscn new file mode 100644 index 0000000..4c58d5d --- /dev/null +++ b/objects/PlaneControlBoard.tscn @@ -0,0 +1,292 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://resources/PlaneControlBoard.theme" type="Theme" id=1] +[ext_resource path="res://scripts/PlaneControlBoard.gd" type="Script" id=2] +[ext_resource path="res://textures/airport_indicator_2.png" type="Texture" id=3] +[ext_resource path="res://textures/airport_indicator_3.png" type="Texture" id=4] +[ext_resource path="res://textures/airport_indicator_1.png" type="Texture" id=5] + +[sub_resource type="GDScript" id=3] +resource_name = "action_func" +script/source = "extends VBoxContainer + +var move_first = true + +# 0 = nothing, 1 = forward, 2 = CCW, 3 = CW, 4 = ascend, 5 = descend +func get_action(): + var action = [$ActionOption.get_selected_id()] + if move_first: + action.push_front(1) + else: + action.push_back(1) + +func reset(): + $ActionOption.select(0) + $MoveFirstButton.text = \"\" + $MoveLastButton.text = \"\" + +func disable(): + $MoveFirstButton.disabled = true + $MoveLastButton.disabled = true + $ActionOption.disabled = true + +func enable(): + reset() + set_move_first() + $MoveFirstButton.disabled = false + $MoveLastButton.disabled = false + $ActionOption.disabled = false + +func set_move_first(first = true): + if first: + move_first = true + $MoveFirstButton.text = \">>\" + $MoveLastButton.text = \"\" + else: + move_first = false + $MoveFirstButton.text = \"\" + $MoveLastButton.text = \">>\" +" + +[node name="PlaneControlBoard" type="ColorRect"] +margin_right = 400.0 +margin_bottom = 250.0 +size_flags_horizontal = 0 +size_flags_vertical = 0 +color = Color( 0.988235, 0.984314, 0.972549, 1 ) +script = ExtResource( 2 ) + +[node name="DestinationHBOX" type="HBoxContainer" parent="."] +anchor_left = 0.05 +anchor_top = 0.3 +anchor_right = 0.941 +anchor_bottom = 0.3 +margin_left = -2.0 +margin_top = -70.0 +margin_right = -2.0 +margin_bottom = -6.0 + +[node name="Label" type="Label" parent="DestinationHBOX"] +margin_top = 24.0 +margin_right = 111.0 +margin_bottom = 40.0 +theme = ExtResource( 1 ) +custom_colors/font_color = Color( 0, 0, 0, 1 ) +text = "DESTINATION: " + +[node name="DestinationIcon" type="TextureRect" parent="DestinationHBOX"] +margin_left = 115.0 +margin_right = 179.0 +margin_bottom = 64.0 +texture = ExtResource( 5 ) + +[node name="AltitudeHBox" type="HBoxContainer" parent="."] +anchor_left = 0.05 +anchor_top = 0.3 +anchor_right = 0.941 +anchor_bottom = 0.3 + +[node name="Label" type="Label" parent="AltitudeHBox"] +margin_top = 24.0 +margin_right = 109.0 +margin_bottom = 40.0 +theme = ExtResource( 1 ) +custom_colors/font_color = Color( 0, 0, 0, 1 ) +text = "ALTITUDE: " + +[node name="Altitude1" type="TextureRect" parent="AltitudeHBox"] +margin_left = 113.0 +margin_right = 177.0 +margin_bottom = 64.0 +texture = ExtResource( 5 ) + +[node name="Altitude2" type="TextureRect" parent="AltitudeHBox"] +modulate = Color( 0.3, 0.3, 0.3, 1 ) +margin_left = 181.0 +margin_right = 245.0 +margin_bottom = 64.0 +texture = ExtResource( 3 ) + +[node name="Altitude3" type="TextureRect" parent="AltitudeHBox"] +modulate = Color( 0.3, 0.3, 0.3, 1 ) +margin_left = 249.0 +margin_right = 313.0 +margin_bottom = 64.0 +size_flags_horizontal = 0 +size_flags_vertical = 0 +texture = ExtResource( 4 ) + +[node name="ActionHBox" type="HBoxContainer" parent="."] +anchor_left = 0.05 +anchor_top = 0.647 +anchor_right = 0.95 +anchor_bottom = 0.9 + +[node name="ActionSquare1" type="VBoxContainer" parent="ActionHBox"] +margin_right = 50.0 +margin_bottom = 74.0 +script = SubResource( 3 ) + +[node name="MoveFirstButton" type="Button" parent="ActionHBox/ActionSquare1"] +margin_right = 50.0 +margin_bottom = 22.0 +theme = ExtResource( 1 ) +text = ">>" + +[node name="ActionOption" type="OptionButton" parent="ActionHBox/ActionSquare1"] +margin_top = 26.0 +margin_right = 50.0 +margin_bottom = 48.0 +rect_min_size = Vector2( 50, 0 ) +theme = ExtResource( 1 ) +items = [ "", null, false, 0, null, "←", null, false, 2, null, "→", null, false, 3, null, "↑", null, false, 4, null, "↓", null, false, 5, null ] +selected = 0 + +[node name="MoveLastButton" type="Button" parent="ActionHBox/ActionSquare1"] +margin_top = 52.0 +margin_right = 50.0 +margin_bottom = 74.0 +theme = ExtResource( 1 ) + +[node name="Spacer1" type="Control" parent="ActionHBox"] +margin_left = 54.0 +margin_right = 73.0 +margin_bottom = 74.0 +size_flags_horizontal = 3 + +[node name="ActionSquare2" type="VBoxContainer" parent="ActionHBox"] +margin_left = 77.0 +margin_right = 127.0 +margin_bottom = 74.0 +script = SubResource( 3 ) + +[node name="MoveFirstButton" type="Button" parent="ActionHBox/ActionSquare2"] +margin_right = 50.0 +margin_bottom = 22.0 +theme = ExtResource( 1 ) +text = ">>" + +[node name="ActionOption" type="OptionButton" parent="ActionHBox/ActionSquare2"] +margin_top = 26.0 +margin_right = 50.0 +margin_bottom = 48.0 +rect_min_size = Vector2( 50, 0 ) +theme = ExtResource( 1 ) +items = [ "", null, false, 0, null, "←", null, false, 2, null, "→", null, false, 3, null, "↑", null, false, 4, null, "↓", null, false, 5, null ] +selected = 0 + +[node name="MoveLastButton" type="Button" parent="ActionHBox/ActionSquare2"] +margin_top = 52.0 +margin_right = 50.0 +margin_bottom = 74.0 +theme = ExtResource( 1 ) + +[node name="Spacer2" type="Control" parent="ActionHBox"] +margin_left = 131.0 +margin_right = 151.0 +margin_bottom = 74.0 +size_flags_horizontal = 3 + +[node name="ActionSquare3" type="VBoxContainer" parent="ActionHBox"] +margin_left = 155.0 +margin_right = 205.0 +margin_bottom = 74.0 +script = SubResource( 3 ) + +[node name="MoveFirstButton" type="Button" parent="ActionHBox/ActionSquare3"] +margin_right = 50.0 +margin_bottom = 22.0 +theme = ExtResource( 1 ) +text = ">>" + +[node name="ActionOption" type="OptionButton" parent="ActionHBox/ActionSquare3"] +margin_top = 26.0 +margin_right = 50.0 +margin_bottom = 48.0 +rect_min_size = Vector2( 50, 0 ) +theme = ExtResource( 1 ) +items = [ "", null, false, 0, null, "←", null, false, 2, null, "→", null, false, 3, null, "↑", null, false, 4, null, "↓", null, false, 5, null ] +selected = 0 + +[node name="MoveLastButton" type="Button" parent="ActionHBox/ActionSquare3"] +margin_top = 52.0 +margin_right = 50.0 +margin_bottom = 74.0 +theme = ExtResource( 1 ) + +[node name="Spacer3" type="Control" parent="ActionHBox"] +margin_left = 209.0 +margin_right = 228.0 +margin_bottom = 74.0 +size_flags_horizontal = 3 + +[node name="ActionSquare4" type="VBoxContainer" parent="ActionHBox"] +margin_left = 232.0 +margin_right = 282.0 +margin_bottom = 74.0 +script = SubResource( 3 ) + +[node name="MoveFirstButton" type="Button" parent="ActionHBox/ActionSquare4"] +margin_right = 50.0 +margin_bottom = 22.0 +theme = ExtResource( 1 ) +text = ">>" + +[node name="ActionOption" type="OptionButton" parent="ActionHBox/ActionSquare4"] +margin_top = 26.0 +margin_right = 50.0 +margin_bottom = 48.0 +rect_min_size = Vector2( 50, 0 ) +theme = ExtResource( 1 ) +items = [ "", null, false, 0, null, "←", null, false, 2, null, "→", null, false, 3, null, "↑", null, false, 4, null, "↓", null, false, 5, null ] +selected = 0 + +[node name="MoveLastButton" type="Button" parent="ActionHBox/ActionSquare4"] +margin_top = 52.0 +margin_right = 50.0 +margin_bottom = 74.0 +theme = ExtResource( 1 ) + +[node name="Spacer4" type="Control" parent="ActionHBox"] +margin_left = 286.0 +margin_right = 306.0 +margin_bottom = 74.0 +size_flags_horizontal = 3 + +[node name="ActionSquare5" type="VBoxContainer" parent="ActionHBox"] +margin_left = 310.0 +margin_right = 360.0 +margin_bottom = 74.0 +script = SubResource( 3 ) + +[node name="MoveFirstButton" type="Button" parent="ActionHBox/ActionSquare5"] +margin_right = 50.0 +margin_bottom = 22.0 +theme = ExtResource( 1 ) +text = ">>" + +[node name="ActionOption" type="OptionButton" parent="ActionHBox/ActionSquare5"] +margin_top = 26.0 +margin_right = 50.0 +margin_bottom = 48.0 +rect_min_size = Vector2( 50, 0 ) +theme = ExtResource( 1 ) +items = [ "", null, false, 0, null, "←", null, false, 2, null, "→", null, false, 3, null, "↑", null, false, 4, null, "↓", null, false, 5, null ] +selected = 0 + +[node name="MoveLastButton" type="Button" parent="ActionHBox/ActionSquare5"] +margin_top = 52.0 +margin_right = 50.0 +margin_bottom = 74.0 +theme = ExtResource( 1 ) + +[connection signal="pressed" from="ActionHBox/ActionSquare1/MoveFirstButton" to="ActionHBox/ActionSquare1" method="set_move_first" binds= [ true ]] +[connection signal="pressed" from="ActionHBox/ActionSquare1/MoveLastButton" to="ActionHBox/ActionSquare1" method="set_move_first" binds= [ false ]] +[connection signal="pressed" from="ActionHBox/ActionSquare2/MoveFirstButton" to="ActionHBox/ActionSquare2" method="set_move_first" binds= [ true ]] +[connection signal="pressed" from="ActionHBox/ActionSquare2/MoveLastButton" to="ActionHBox/ActionSquare2" method="set_move_first" binds= [ false ]] +[connection signal="pressed" from="ActionHBox/ActionSquare3/MoveFirstButton" to="ActionHBox/ActionSquare3" method="set_move_first" binds= [ true ]] +[connection signal="pressed" from="ActionHBox/ActionSquare3/MoveLastButton" to="ActionHBox/ActionSquare3" method="set_move_first" binds= [ false ]] +[connection signal="pressed" from="ActionHBox/ActionSquare4/MoveFirstButton" to="ActionHBox/ActionSquare4" method="set_move_first" binds= [ true ]] +[connection signal="pressed" from="ActionHBox/ActionSquare4/MoveLastButton" to="ActionHBox/ActionSquare4" method="set_move_first" binds= [ false ]] +[connection signal="pressed" from="ActionHBox/ActionSquare5/MoveFirstButton" to="ActionHBox/ActionSquare5" method="set_move_first" binds= [ true ]] +[connection signal="pressed" from="ActionHBox/ActionSquare5/MoveLastButton" to="ActionHBox/ActionSquare5" method="set_move_first" binds= [ false ]] diff --git a/pages/GameTable.tscn b/pages/GameTable.tscn new file mode 100644 index 0000000..1e3e3db --- /dev/null +++ b/pages/GameTable.tscn @@ -0,0 +1,55 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://scripts/GameTable.gd" type="Script" id=1] +[ext_resource path="res://textures/wood_board_knotty.png" type="Texture" id=2] +[ext_resource path="res://objects/Plane.tscn" type="PackedScene" id=3] + +[sub_resource type="Environment" id=1] +background_mode = 1 +background_energy = 0.0 +ambient_light_color = Color( 1, 0.960784, 0.921569, 1 ) +ambient_light_energy = 0.5 +ambient_light_sky_contribution = 0.0 +fog_enabled = true +fog_color = Color( 0, 0, 0, 1 ) +fog_depth_end = 20.0 + +[sub_resource type="SpatialMaterial" id=2] +albedo_color = Color( 0.345098, 0.282353, 0.184314, 1 ) +albedo_texture = ExtResource( 2 ) + +[sub_resource type="QuadMesh" id=3] +material = SubResource( 2 ) +size = Vector2( 30, 30 ) + +[node name="GameTable" type="Spatial"] +script = ExtResource( 1 ) +game_difficulty = "hard" + +[node name="Board" type="Spatial" parent="."] + +[node name="ActivePieces" type="Spatial" parent="."] + +[node name="SpotLight" type="SpotLight" parent="."] +transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 15.3023, 0 ) +light_color = Color( 1, 0.941176, 0.733333, 1 ) +light_energy = 1.512 +light_specular = 0.0 +shadow_enabled = true +spot_range = 45.4139 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource( 1 ) + +[node name="Camera" type="Camera" parent="."] +transform = Transform( 1, 0, 0, 0, 0.965939, 0.258768, 0, -0.258768, 0.965939, 0, 3.30213, 10.1497 ) + +[node name="Tabletop" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0 ) +mesh = SubResource( 3 ) + +[node name="Plane" parent="." instance=ExtResource( 3 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.625405, 1.50965, -2.27158 ) + +[node name="Plane2" parent="." instance=ExtResource( 3 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.92594, 0.711815, -1.28117 ) diff --git a/pages/ServerBrowser.tscn b/pages/ServerBrowser.tscn new file mode 100644 index 0000000..c4fcc61 --- /dev/null +++ b/pages/ServerBrowser.tscn @@ -0,0 +1,196 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://network/websocket_client.gd" type="Script" id=1] +[ext_resource path="res://scripts/ServerBrowser.gd" type="Script" id=2] + +[sub_resource type="Gradient" id=15] +offsets = PoolRealArray( 0 ) +colors = PoolColorArray( 0, 0, 0, 1 ) + +[sub_resource type="GradientTexture2D" id=21] +gradient = SubResource( 15 ) +width = 32 +height = 32 + +[sub_resource type="GDScript" id=14] +resource_name = "set_colors_builtin" +script/source = "extends OptionButton + + +func _ready(): + for i in range(get_item_count()): + set_item_icon(i, get_item_icon(i).duplicate()) + var icon = get_item_icon(i) + icon.gradient = icon.gradient.duplicate() + icon.gradient.set_color(0, Globals.colors[i]) + print(icon.gradient.colors) + icon.gradient.colors.remove(0) + + +" + +[node name="ServerBrowser" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 2 ) + +[node name="HostButton" type="Button" parent="."] +margin_left = 688.0 +margin_top = 349.0 +margin_right = 772.0 +margin_bottom = 369.0 +text = "Host Game" + +[node name="UsernameLabel" type="Label" parent="."] +margin_left = 676.0 +margin_top = 100.0 +margin_right = 1074.0 +margin_bottom = 144.0 +text = "Username:" + +[node name="ColorLabel" type="Label" parent="."] +margin_left = 680.0 +margin_top = 132.0 +margin_right = 1078.0 +margin_bottom = 176.0 +text = "Color:" + +[node name="AltColorLabel" type="Label" parent="."] +margin_left = 681.0 +margin_top = 160.0 +margin_right = 1079.0 +margin_bottom = 204.0 +text = "Alt color:" + +[node name="JoinButton" type="Button" parent="."] +margin_left = 689.0 +margin_top = 316.0 +margin_right = 724.0 +margin_bottom = 336.0 +disabled = true +text = "Join" + +[node name="RefreshButton" type="Button" parent="."] +margin_left = 420.0 +margin_top = 388.0 +margin_right = 551.0 +margin_bottom = 408.0 +text = "Refresh Server List" + +[node name="GameList" type="ItemList" parent="."] +margin_left = 314.0 +margin_top = 89.0 +margin_right = 614.0 +margin_bottom = 367.0 + +[node name="Username" type="LineEdit" parent="."] +margin_left = 756.0 +margin_top = 94.0 +margin_right = 870.0 +margin_bottom = 118.0 +text = "Player" +max_length = 32 + +[node name="HostPopup" type="PopupPanel" parent="."] +margin_left = 383.0 +margin_top = 129.0 +margin_right = 633.0 +margin_bottom = 399.0 + +[node name="Control" type="Control" parent="HostPopup"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 246.0 +margin_bottom = 266.0 + +[node name="GameName" type="LineEdit" parent="HostPopup/Control"] +margin_left = 41.0 +margin_top = 22.0 +margin_right = 192.0 +margin_bottom = 55.0 +text = "Player's Game" +max_length = 39 + +[node name="HostConfirmButton" type="Button" parent="HostPopup/Control"] +margin_left = 99.0 +margin_top = 208.0 +margin_right = 212.0 +margin_bottom = 244.0 +text = "Host" + +[node name="PlayerCount" type="OptionButton" parent="HostPopup/Control"] +margin_left = 120.0 +margin_top = 68.0 +margin_right = 216.0 +margin_bottom = 99.0 +text = "2" +items = [ "2", null, false, 2, null, "3", null, false, 3, null, "4", null, false, 4, null, "5", null, false, 5, null, "6", null, false, 6, null ] +selected = 0 + +[node name="CancelHostButton" type="Button" parent="HostPopup/Control"] +margin_left = 30.0 +margin_top = 209.0 +margin_right = 84.0 +margin_bottom = 243.0 +text = "Cancel" + +[node name="PlayerCountLabel" type="Label" parent="HostPopup/Control"] +margin_left = 26.0 +margin_top = 80.0 +margin_right = 76.0 +margin_bottom = 94.0 +text = "Players:" + +[node name="PrivateToggle" type="CheckButton" parent="HostPopup/Control"] +margin_left = 22.0 +margin_top = 116.0 +margin_right = 228.0 +margin_bottom = 156.0 +size_flags_horizontal = 0 +size_flags_vertical = 0 +text = "Password Protected" + +[node name="Password" type="LineEdit" parent="HostPopup/Control"] +visible = false +anchor_left = 0.1 +anchor_right = 0.9 +margin_top = 169.0 +margin_bottom = 193.0 +max_length = 16 +placeholder_text = "Password" +placeholder_alpha = 0.587 + +[node name="PlayerColor" type="OptionButton" parent="."] +margin_left = 758.0 +margin_top = 124.0 +margin_right = 804.0 +margin_bottom = 147.0 +icon = SubResource( 21 ) +expand_icon = true +items = [ "", SubResource( 21 ), false, 0, null, "", SubResource( 21 ), false, 1, null, "", SubResource( 21 ), false, 2, null, "", SubResource( 21 ), false, 3, null, "", SubResource( 21 ), false, 4, null, "", SubResource( 21 ), false, 5, null, "", SubResource( 21 ), false, 6, null, "", SubResource( 21 ), false, 7, null, "", SubResource( 21 ), false, 8, null, "", SubResource( 21 ), false, 9, null ] +selected = 0 +script = SubResource( 14 ) + +[node name="AltPlayerColor" type="OptionButton" parent="."] +margin_left = 758.0 +margin_top = 155.0 +margin_right = 804.0 +margin_bottom = 178.0 +icon = SubResource( 21 ) +expand_icon = true +items = [ "", SubResource( 21 ), false, 0, null, "", SubResource( 21 ), false, 1, null, "", SubResource( 21 ), false, 2, null, "", SubResource( 21 ), false, 3, null, "", SubResource( 21 ), false, 4, null, "", SubResource( 21 ), false, 5, null, "", SubResource( 21 ), false, 6, null, "", SubResource( 21 ), false, 7, null, "", SubResource( 21 ), false, 8, null, "", SubResource( 21 ), false, 9, null ] +selected = 0 +script = SubResource( 14 ) + +[node name="GameCoordinator" type="Node" parent="."] +script = ExtResource( 1 ) + +[node name="GameCoordinatorStatus" type="Label" parent="."] +margin_left = 154.0 +margin_top = 31.0 +margin_right = 354.0 +margin_bottom = 45.0 +text = "Game Coordinator Connection: " + +[connection signal="pressed" from="HostButton" to="HostPopup" method="popup_centered" binds= [ Vector2( 250, 270 ) ]] +[connection signal="pressed" from="HostPopup/Control/CancelHostButton" to="HostPopup" method="set_visible" binds= [ false ]] diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..400300a --- /dev/null +++ b/project.godot @@ -0,0 +1,36 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +[application] + +config/name="ATC" +boot_splash/show_image=false +config/icon="res://icon.png" + +[autoload] + +Globals="*res://scripts/Globals.gd" + +[gui] + +common/drop_mouse_on_gui_input_disabled=true + +[physics] + +common/enable_pause_aware_picking=true + +[rendering] + +quality/driver/driver_name="GLES2" +vram_compression/import_etc=true +vram_compression/import_etc2=false +quality/shadow_atlas/size=8448 +quality/shadow_atlas/size.mobile=4096 +environment/default_environment="res://default_env.tres" diff --git a/resources/PlaneControlBoard.theme b/resources/PlaneControlBoard.theme Binary files differnew file mode 100644 index 0000000..9ccae5a --- /dev/null +++ b/resources/PlaneControlBoard.theme diff --git a/resources/airports.txt b/resources/airports.txt new file mode 100644 index 0000000..387226a --- /dev/null +++ b/resources/airports.txt @@ -0,0 +1,1892 @@ +Academy +Acampo +Acton +Adams +Adelaida +Adin +Aetna Springs +Afton +Agnew +Agua Caliente +Agua Dulce +Aguanga +Aguereberry Point +Ahwahnee +Ainsworth Corner +Akers +Alameda +Alamo +Alamorio +Alberhill +Albion +Alder Springs +Alderpoint +Alleghany +Allendale +Almanor +Alondra Park +Alpaugh +Alpine +Alta +Alta Loma +Alta Sierra +Alta Vista +Altadena +Altamont +Altaville +Alton +Alum Rock +Alvarado +Alviso +Amador +Ambler +Amboy +Amesti +Anchor Bay +Anderson Springs +Andrade +Angelus +Angiola +Angwin +Annapolis +Ansel +Antelope +Antelope Acres +Anza +Applegate +Aptos +Arastraville +Arbuckle +Arcade +Arden +Arena +Argus +Arlington +Arlynda Corners +Armistead +Armona +Arnold +Arnold Heights +Arrowbear +Arrowhead Springs +Artois +Ashford +Ashland +Aspendell +Asti +Athens +Atolia +Atwood +Auberry +August +Aukum +Avery +Avila Beach +Avocado Heights +Avon +Badger +Badwater +Baker +Balboa +Balch Camp +Baldwin Lake +Baldy Mesa +Ballarat +Ballard +Ballena +Ballico +Bangor +Bankhead Springs +Banner +Banta +Bard +Bardsdale +Barrett +Barstow +Bartle +Bartlett Springs +Barton +Bassett +Bassetts +Batto +Baxter +Bay Point +Bayliss +Bayshore +Bealville +Bear Harbor +Bear Valley +Beatty +Beckwourth +Bee Rock +Beegum +Bel Air +Belden +Bell Springs +Bella Vista +Belleview +Bellota +Belvedere +Ben Lomond +Benbow +Bend +Benton +Berenda +Bermuda Dunes +Berry Creek +Berryessa +Berteleda +Bethel Island +Betteravia +Bieber +Big Bar +Big Basin +Big Lagoon Park +Big Meadow +Big Oak Flat +Big Pine +Big River +Big Sur +Bijou +Biola +Birch Hill +Birchville +Birds Landing +Bitney Corner +Bitterwater +Black Point +Blackhawk +Blackwells Corner +Blairsden +Blanchard +Blocksburg +Bloomfield +Bloomington +Blossom +Blossom Valley +Blue Canyon +Blue Jay +Bluewater +Boca +Bodega Bay +Bodfish +Bodie +Bolinas +Bolsa Knolls +Bombay Beach +Bonadelle Ranchos +Bonds Corner +Bonilla +Bonita +Bonnefoy +Bonnie Doon +Bonsall +Boonville +Bootjack +Boron +Boronda +Borosolvay +Borrego +Bostonia +Boulder Creek +Boulder Oaks +Boulevard +Bouquet Canyon +Bowles +Bowman +Bradley +Bradys +Branscomb +Briceburg +Briceland +Bridge Haven +Bridgeport +Bridgeville +Broadmoor +Brockway +Broderick +Brookdale +Brooks +Browns Flat +Brownsville +Bruceville +Brush Creek +Bryn Mawr +Bryte +Buck Meadows +Buckeye +Buckhorn +Buckingham Park +Bucks Bar +Buena +Buena Vista +Buhach +Bummerville +Buntingville +Burbank +Burney +Burnt Ranch +Burrel +Burson +Butte City +Butte Meadows +Buttonwillow +Byron +Bystrom +Cabazon +Cabbage Patch +Cadenasso +Cadiz +Cadwell +Cahuilla +Cairns Corner +Cajon +Calaveritas +Calico +Cal-Ida +Caliente +Callahan +Calpella +Calpine +Calwa +Camarillo +Cambria +Camden +Camp Angelus +Camp Conifer +Camp Connell +Camp Klamath +Camp Meeker +Camp Nelson +Campo Seco +Camptonville +Canby +Canebrake +Canoga Park +Cantil +Cantua Creek +Canyon City +Canyon Dam +Capay +Capetown +Capistrano Beach +Carbona +Carbondale +Caribou +Carlotta +Carmel Highlands +Carmet +Carmichael +Carnelian Bay +Carrick +Carson Hill +Cartago +Caruthers +Casa Conejo +Casa De Oro +Casitas Springs +Casmalia +Caspar +Cassel +Castaic +Castella +Castle Crag +Castle Park +Castro Valley +Castroville +Catheys Valley +Cayton +Cayucos +Cazadero +Cecilville +Cedar Valley +Cedarbrook +Cedarville +Cella +Centerville +Chalfant +Challenge +Chambers Lodge +Chaney Ranch +Charter Oak +Chatsworth +Chawanakee +Chemeketa Park +Cherokee +Cherry Land +Chester +Chilcoot +Chinquapin Junction +Chiquita Lake +Chiriaco Summit +Chittenden +Cholame +Chrisman +Chrome +Chualar +Cima +Cincotta +Circle Oaks +Cisco +Cisco Grove +Citrus +City Terrace +Clairemont +Clam Beach +Clarksburg +Clay +Clear Creek +Clements +Cleone +Cliff House +Clinton +Clio +Clipper Gap +Clipper Mills +Cloride City +Cloverdale +Clyde +Coarsegold +Cobb +Cobbs +Codora +Coffee Creek +Coffing +Cohasset +Cold Springs +Coles Station +Coleville +College City +Collegeville +Collierville +Collinsville +Coloma +Columbia +Comptche +Concow +Conejo +Confidence +Constantia +Cooks Station +Cool +Coolidge Spring +Copco +Copperopolis +Cordelia +Cornell +Corona Del Mar +Corralitos +Coso Junction +Cosumnes +Coto de Caza +Cottage Springs +Cotton Center +Cottonwood +Coulterville +Courtland +Covelo +Covington Mills +Coyote Wells +Cozzens Corner +Crafton +Cranmore +Crannell +Creekside +Crescent Mills +Cressey +Crestline +Crestmore +Creston +Crockett +Cromberg +Cross Roads +Crown +Crows Landing +Crystal Springs +Cucamunga +Cuesta-by-the-Sea +Cummings +Cunningham +Curry Village +Cutler +Cutten +Cuttings Wharf +Cuyama +Daggett +Dairyland +Dales +Dana +Danby +Dardanelle +Darlingtonia +Darrah +Darwin +Date City +Daulton +Davenport +Davis Creek +Day Valley +Dayton +De Bon +De Luz +De Sabla +Deadmans Lake +Deep Springs +Deer Park +Dehesa +Del Aire +Del Loma +Del Rey +Del Rio +Delevan +Delft Colony +Delhi +Delleker +Delta +Denair +Denny +Denverton +Derby Acres +Descanso +Desert Knolls +Devils Den +Devore +Di Giorgio +Diablo +Diamond Springs +Dillon Beach +Dinkey Creek +Dinsmore +Discovery Bay +Dixieland +Dobbins +Dogtown +Dollar Point +Dominguez +Dorrington +Dos Rios +Dougherty +Douglas City +Dove Canyon +Downieville +Doyle +Dozier +Drytown +Ducor +Dulah +Dulzura +Duncans Mills +Dunlap +Dunmovin +Dunneville +Dunnigan +Durham +Dustin Acres +Dutch Flat +Eagle Mountain +Eagle Rock +Eagleville +Earlimart +Earp +East Blythe +Easton +Echo Lake +Eden Springs +Edgemont +Edgewood +Edison +Edna +Eel Rock +El Bonita +El Cerrito +El Dorado +El Encanto Heights +El Granada +El Macero +El Modena +El Nido +El Pinal +El Portal +El Porvenir +El Rio +El Sobrante +El Sueno +El Toro +El Verano +Elders Corners +Elderwood +Eldridge +Electra +Elizabeth Lake +Elk +Elk Creek +Elkhorn +Ellicott +Ellwood +Elm View +Elmira +Elmo +Elmore +Elsinore +Elverta +Embarcadero +Emerald Bay +Emerald Lake Hills +Emigrant Gap +Emmaton +Empire +Encino +Engineers Springs +Enterprise +Esparto +Essex +Estrella +Etheda Springs +Etiwand +Ettawa Springs +Ettersburg +Eucalyptus Hills +Eugene +Evelyn +Evergreen +Fair Oaks +Fair Play +Fairbanks Ranch +Fairhaven +Fairmead +Fairmont +Fairview +Fall River Mills +Fallbrook +Fallen Leaf +Fallon +Famoso +Farmington +Fawnskin +Feather Falls +Felicity +Felix +Fellows +Felterwood +Felton +Fenner +Fern +Fernbridge +Fernbrook +Fetters Hot Springs +Fiddletown +Fieldbrook +Fields Landing +Fig Garden +Fine Gold +Finley +Fish Camp +Fish Springs +Five Corners +Five Points +Fleetridge +Flinn Springs +Florence +Florin +Floriston +Flournoy +Foothill Farms +Foothill Ranch +Forbestown +Ford City +Fords Corner +Forest +Forest Falls +Forest Glen +Forest Knolls +Forest Lake +Forest Meadows +Forest Park +Forest Ranch +Forest Springs +Foresta +Foresthill +Forestville +Forks of Salmon +Fort Baker +Fort Bidwell +Fort Dick +Fort Ord +Fort Romie +Fort Rosecrans +Fort Ross +Fort Seward +Foster +Fountain Springs +Four Corners +Fouts Springs +Franklin +Frazier Park +Fredalba +Fredricksburg +Freds Place +Freeport +Freestone +Fremont Valley +French Camp +French Corral +French Gulch +Fresh Pond +Freshwater +Friant +Frogtown +Fruitdale +Fruto +Fuller Acres +Fulton +Ganns +Garberville +Garden Acres +Garden Farms +Garden Valley +Gardenland +Garey +Garfield +Garlock +Garnet +Gasquet +Gaviota +Gazelle +Genesse +Georgetown +Gerber +Geyserville +Giant Forest +Gibsonville +Gilman Hot Springs +Gilroy Hot Springs +Glacier Lodge +Glamis +Glen Avon +Glen Ellen +Glen Oaks +Glenbrook +Glenburn +Glencoe +Glenhaven +Glenn +Glenwood +Goffs +Gold Flat +Gold Hill +Gold River +Gold Run +Gold Springs +Golden Hills +Goler Heights +Good Hope +Goodyears Bar +Gordola +Gordons Well +Gorman +Goshen +Gottville +Government Flat +Graeagle +Granada Hills +Grandview +Grangeville +Granite Bay +Granite Hills +Granite Springs +Graniteville +Grantville +Grapevine +Graton +Gravesboro +Grays Well +Grayson +Greeley Hill +Green Acres +Green Valley +Greenbrae +Greenfie +Greenhorn +Greenview +Greenville +Greenwich Village +Greenwood +Grenada +Grimes +Grindstone Indian Rancheria +Grizzly Flat +Grossmont +Groveland +Gualala +Guasti +Guatay +Guerneville +Guernewood Park +Guinda +Hacienda +Hagginwood +Halcyon +Hallelujah Junction +Hallwood +Hamburg +Hamilton Branch +Hamilton City +Hammond +Hammonton +Hams Station +Happy Camp +Harbin Springs +Harbinson Canyon +Harbor City +Harden Flat +Hardwick +Harmony Grove +Harpertown +Harris +Harrison Park +Hartley +Harts Place +Haskell Creek +Hat Creek +Hatfield +Hathaway Pines +Havasu Lake +Havilah +Hawkinsville +Hayfork +Hayward +Hazel Creek +Hazelton +Heather Glen +Heber +Helena +Helendale +Helm +Henley +Henleyville +Herald +Herlong +Hernandez +Herndon +Hessel +Hickman +Hidden Meadows +Higgins Corner +Highgrove +Highland Park +Hights Corner +Highway City +Hillcrest +Hills Flat +Hillsdale +Hilmar +Hilt +Hilton Creek +Hinkley +Hiouchi +Hoaglin +Hobart Mills +Hoberg +Hodson +Hollow Tree +Hollydale +Holmes +Holt +Holy City +Homeland +Homestead Valley +Homewood +Honby +Honcut +Honeydew +Hood +Hoopa +Hope Ranch +Hopeton +Hopland +Hoppaw +Hornbrook +Hornitos +Horse Creek +Hough Springs +Howland Flat +Huasna +Hulburd Grove +Humboldt Hill +Hume +Humpheres Station +Huntington Lake +Hurleton +Hyampom +Hydesville +Idyllwild +Ignacio +Igo +Ilmon +Imola +Imperial Gables +Incline +Independence +Indian Falls +Indian Springs +Indianola +Ingot +Inskip +Interlaken +Inverness +Inwood +Inyokern +Iowa Hill +Iron Horse +Irvings Crest +Irwin +Isla Vista +Ivanhoe +Ivanpah +Jackson Gate +Jacumba +Jamacha +Jamesburg +Jamestown +Jamul +Janesville +Jarbo Gap +Jarvis Landing +Jenner +Jesmond Dene +Jimtown +Johannesburg +Johnsondale +Jolon +Jones Corner +Jonesville +Joshua Tree +Julian +Junction City +June Lake +Juniper Hills +Juniper Springs +Kane Springs +Karnak +Kaweah +Kayandee +Kearsarge +Keddie +Keeler +Keenbrook +Keene +Kellogg +Kelsey +Kelseyville +Kelso +Kennedy +Kensington +Kentfield +Kenwood +Keough Hot Springs +Kern City +Kernell +Kernvale +Kernville +Keswick +Kettleman City +Keyes +Kilkare Woods +Kings Beach +Kingston +Kingsville +Kinsley +Kirkville +Kirkwood +Kit Carson +Klamath +Klau +Kneeland +Knights Ferry +Knights Landing +Knob +Knowles +Knoxville +Kono Tayee +Korbel +Kramer +Kyburz +La Barr Meadows +La Conchita +La Costa +La Crescenta +La Cresta +La Grange +La Honda +La Loma +La Moine +La Panza +La Playa +La Porte +La Presa +La Riviera +La Selva +La Sierra +La Vina +Ladera +Laguna +Lagunitas +Lake City +Nacimiento +Lakehead +Lakeshore +Lakeside +Lamont +Lanare +Landers +Larson +Las Cruces +Las Flores +Las Lomas +Laton +Latrobe +Laughlin +Laws +Laytonville +Le Grand +Lebec +Lee Vining +Leesville +Leggett +Leisure Village +Leliter +Lemoncove +Lennox +Lenwood +Leona Valley +Leucadia +Lewiston +Lexington Hills +Likely +Lincoln Acres +Linda +Lindcove +Linden +Lingard +Linnell +Litchfield +Little Norway +Little River +Little Shasta +Little Valley +Littlerock +Live Oak +Llano +Loch Lomond +Locke +Lockeford +Lockwood +Lodge Pole +Lodoga +Log Cabin +Logtown +Loleta +Loma Mar +Loma Portal +Loma Rica +Lomita +Lomo +Lompico +London +Lone Pine +Long Barn +Longvale +Lookout +Loomis Corners +Loraine +Los Alamos +Los Berros +Los Molinos +Los Nietos +Los Olivos +Los Osos +Los Ranchitos +Los Serranos +Lost Hills +Lost Lake +Lotus +Lovelock +Lower Lake +Loyola +Lucerne +Lucia +Ludlow +Lumberyard +Lundy +Lynwood Hills +Lyonsville +Lytle Creek +Lytton +Macdoel +Mad River +Madeline +Madera Acres +Madera Ranchos +Madison +Madrone +Magalia +Magra +Magunden +Majors +Malaga +Manchester +Manila +Mankas Corner +Manton +Manzanita +Maple Creek +Marin City +Marina Del Rey +Marinwood +Mariposa +Markleeville +Marshall +Martell +Martinez +Martins Ferry +Masonic +Mather +Maxwell +Mayfair +Mayflower +McArthur +McCann +McCauley +McCloud +McKays Point +McKinleyville +McKittrick +McMullin +Mead Valley +Meadow Lakes +Mecca +Meeks Bay +Meiners Oaks +Meloland +Mendocino +Menlo Oaks +Mentone +Merced Falls +Mercy Hot Springs +Meridian +Mesa Grande +Mesa Vista +Mesquite Spring +Mettler +Meyers +Michigan Bar +Michigan Bluff +Middle River +Middletown +Midland +Midpines +Midway +Milford +Millers +Mills Orchard +Millville +Milo +Milton +Mineral +Mineral King +Minkler +Minnelusa +Minnesota +Minturn +Mira Loma +Mira Monte +Mira Vista +Mirabel Park +Miramar +Miramonte +Miranda +Mission Beach +Mission Canyon +Mission Hills +Mitchell Mill +Mitchells Corner +Mi-Wuk Village +Moccasin +Modjeska +Mohawk +Mojave +Mokelumne Hill +Monada +Monmouth +Mono City +Monolith +Monson +Monta Vista +Montalvin +Montalvo +Montara +Monte Cristo +Monte Nido +Monte Rio +Montecito +Montesano +Montezuma +Montgomery Creek +Montrose +Moonridge +Moonstone +Morada +Morena +Morettis +Mormon Bar +Moss Beach +Moss Landing +Mossdale +Mount Aukum +Mountain Gate +Mountain Home +Mountain Rest +Mountain View +Mt. Baldy +Mt. Signal +Mugginsville +Muir Beach +Mulford Gardens +Murphys +Murphys Ranch +Muscoy +Myers Flat +Myrtletown +Nanceville +Naples +Nashville +Natoma +Navalencia +Navarro +Nebo +Nelson +Nestor +New Almaden +New Auberry +New Chicago +New Cuyama +New England Mills +New Idria +Newberry Springs +Newbury Park +Newcastle +Newell +Newhall +Newtown +Newville +Nicasio +Nice +Nicholaus +Nichols +Niland +Nimbus +Nipinnawasee +Nipomo +Nipton +Nord +Norden +Normal Heights +Norman +Northridge +Northstar +Northwood +Norton +Noyo +Nubieber +Nuevo +Nyland +Oak Glen +Oak Grove +Oak Knoll +Oak Park +Oak Run +Oakhurst +Oakville +Oasis +O'Brien +Occidental +Ocean View +Oceano +Ocotillo +Ogilby +Oil City +Oildale +Oilfields +Olancha +Old Forbestown +Old Fort Tejon +Old Hopland +Old Mammoth +Olema +Olinda +Olive +Olivehurst +Olivenhain +One Hundred Palms +O'Neals +Ono +Onyx +Opal Cliffs +Ophir +Orangevale +Orcutt +Ordbend +Oregon House +Orford +Orick +Orinda Village +Orleans +Oro Fino +Oro Grande +Oro Loma +Orosi +Orrs Springs +Ortonville +Otay +Outingdale +Pacheco +Pacoima +Page Mill +Paicines +Paintersville +Pajaro +Pala +Palermo +Palm City +Palmdale East +Palmo +Palo Cedro +Palo Verde +Paloma +Panama +Panoche +Panorama +Paradise Cay +Parkfield +Parksdale +Parkway +Parkwood +Pasatiempo +Paskenta +Paso Picacho +Patrick Creek +Patton +Pauma Valley +Paxton +Paynes Creek +Paynesville +Peanut +Pearblossom +Peardale +Pearland +Pearsonville +Pebble Beach +Pecwan +Peddler Hill +Pedley +Peninsula Village +Penn Valley +Penngrove +Pennington +Penryn +Pentz +Pepperwood +Perkins +Pescadero +Peter Pam +Peters +Petrolia +Phelan +Phillips +Philo +Picacho +Piedra +Piercy +Pierpont Bay +Pike +Pilot Hill +Pine Canyon +Pine Cove +Pine Flat +Pine Grove +Pine Hills +Pine Mountain +Pine Ridge +Pine Valley +Pinecrest +Pinedale +Pinehurst +Pineland +Pino Grande +Pinon Hills +Pinyon Pines +Pioneer Station +Pioneertown +Piru +Pittville +Pixley +Plainsburg +Plainview +Planada +Plano +Plantation +Plasse +Plaster City +Platina +Playa Del Rey +Pleasant Grove +Pleasant Valley +Plumas Eureka +Point Loma +Point Pleasant +Point Reyes Station +Pollard Flat +Pollock Pines +Pomins +Pomo +Ponderosa +Pondosa +Pope Valley +Poplar +Port Costa +Portola Hills +Portuguese Bend +Posey +Potrero +Potter Valley +Pozo +Prather +Prattville +Preston +Priest +Princeton +Proberta +Project City +Prunedale +Pulga +Pumpkin Center +Quail Valley +Quaking Aspen +Quartz Hill +Quincy +Rackerby +Radec +Railroad Flat +Rainbow +Raisin City +Ramona +Ranchita +Rancho Calaveras +Rancho Murieta +Rancho Penasquitos +Rancho Rinconada +Rand +Randolph +Randsburg +Ravendale +Raymond +Red Apple +Red Mountain +Redbank +Redcrest +Redway +Redwood Grove +Reefer City +Represa +Requa +Rescue +Reseda +Reward +Rheem Valley +Ribbonwood +Ricardo +Rice +Rices Junction +Rich Bar +Richardson Springs +Richfield +Richgrove +Richvale +Ridgemark +Rimforest +Rimrock +Rincon +Rio Del Mar +Rio Linda +Rio Nido +Rio Oso +Ripley +Ripperdan +River Pines +Riverdale +Riverkern +Riverton +Rob Roy Junction +Robbins +Robla +Rockport +Rockville +Rodeo +Rohnerville +Rolands +Rolinda +Rollingwood +Romoland +Rosamond +Rosedale +Roseland +Rosemont +Rosewood +Ross Corner +Rossmoor +Rough and Ready +Round Mountain +Round Valley +Rovana +Rowland Heights +Rubidoux +Rucker +Rumsey +Running Springs +Ruth +Rutherford +Ryan +Ryde +Sabre City +Saco +Sage +Salavador +Salida +Salmon Creek +Salt Creek Lodge +Saltdale +Salton +Salyer +Samoa +San Andreas +San Ardo +San Benito +San Felipe +San Geronimo +San Gregorio +San Ignacio +San Joaquin City +San Lorenzo +San Lucas +San Luis Rey +San Martin +San Miguel +San Onofre +San Pasqual +San Pedro +San Quentin +San Simeon +San Tomas +San Ysidro +Sanborn +Sandyland +Santa Margarita +Santa Nella +Santa Rita +Santa Susana +Santa Venetia +Santa Ynez +Santa Ysabel +Saticoy +Sattley +Saugus +Saunders Meadow +Sawyers Bar +Scales +Schellville +Sciots Camp +Scotia +Scott Bar +Scott Dam +Scotts Corner +Scottsville +Scottys Castle +Scripps Ranch +Sea Cliff +Seahaven +Searchlight Junction +Searles +Sears Point +Sedco Hills +Seeley +Seiad Valley +Seigler Springs +Seneca +Sepulveda +Sequoia Crest +Serena +Serena Park +Serene Lakes +Sereno Del Mar +Sespe +Seven Pines +Seville +Shackelford +Shadow Hills +Shady Dell +Shady Glen +Shandon +Sharp Park +Shasta +Shaver +Shaws Cove +Sheep Ranch +Sheldon +Shell Beach +Shelter Cove +Sheridan +Sherman Oaks +Rancheria +Shingletown +Shively +Shore Acres +Shoshone +Sierra Brooks +Sierra City +Sierra Paradise +Sierraville +Silver Strand +Silverado +Simmler +Simms +Sisquoc +Sites +Skidoo +Skyforest +Skyland +Skylonda +Sleepy Hollow +Sleepy Valley +Sloat +Sloughhouse +Smartville +Smith River +Smith Station +Smithflat +Snelling +Sobrante +Soda Bay +Soda Springs +Solemint +Somerset +Somes Bar +Somis +Sonora Junction +Soquel +Soulsbyville +Sousa Corner +Spanish Creek +Spanish Diggings +Spanish Flat +Spanish Ranch +Spaulding +Spenceville +Spicer City +Spreckels +Spring Garden +Spring Valley +Springfield +Springville +Spruce Point +Squaw Valley +Squirrel Valley +Stafford +Stallion Springs +Standard +Standfield Hill +Standish +Stanford +Stanislaus +Stateline +Stauffer +Steele Park +Stent +Stevinson +Stewarts Point +Stinson Beach +Stirling City +Stonyford +Storrie +Stovepipe Wells +Stratford +Strathmore +Strawberry +Studio City +Sugarloaf +Sugarpine +Sulphur Springs +Sultana +Summerhome Park +Summerland +Summit City +Sun City +Sun Valley +Suncrest +Sunland +Sunny Brae +Sunnybrook +Sunnymead +Sunnyside +Sunnyslope +Sunol +Sunset Beach +Sunset View +Sunshine Camp +Surf +Surfside +Sutter +Sutter Hill +Swansea +Swanton +Sweetbrier +Sweetland +Sycamore +Sylmar +Taft Heights +Tagus +Tahoma +Talmage +Tamalpais Valley +Tamarack +Tancred +Tara Hills +Tarpey Village +Tarzana +Tassajara +Taylorsville +Tecate +Tecopa +Telegraph City +Temelec +Templeton +Tennant +Terminous +Termo +Terra Bella +Terra Cotta +Terra Linda +The Forks +The Highlands +The Homestead +The Oaks +The Willows +Thermal +Thermalands +Thermalito +Thornton +Thousand Palms +Three Rivers +Tierra Buena +Tierra Del Sol +Tierrasanta +Timber Lodge +Timberland +Tipton +Tisdale +Tobin +Tollhouse +Tomales +Tonyville +Toolville +Topanga +Topanga Beach +Topaz +Toro Canyon +Tower House +Town and Country +Town Talk +Toyon +Trabuco Canyon +Tranquillity +Traver +Treasure Island +Tres Pinos +Trinidad Indian Res +Trinity Center +Trona +Tropico +Trowbridge +Troy +Trull +Tryon Corner +Tudor +Tujunga +Tunnel Station +Tuolumne +Tupman +Tustin Foothills +Tuttle +Tuttletown +Twain Harte +Twin Bridges +Twin Cities +Twin Creeks +Twin Lakes +Twin Oaks +Twin Peaks +Two Rock +Tyndall Landing +Ultra +Union Hill +University City +University Heights +Usona +Uva +Vacation Beach +Val Verde +Valencia +Valerie +Valinda +Valle Vista +Vallecito +Vallemar +Valley Acres +Valley Center +Valley Ford +Valley Home +Valley of the Moon +Valley Ranch +Valley Springs +Valley Wells +Valyermo +Van Nuys +Vanguard +Venice +Ventu Park +Ventucopa +Verdemont +Verdi +Verdugo City +Vernalis +Verona +Vichy Springs +Victor +Vidal +Vidal Junction +View Park +Villa Grande +Vina +Vincent +Vine Hill +Vineburg +Vineyard +Vinton +Viola +Virgilia +Virginia Colony +Vista Verde +Volcano +Volcanoville +Vollmers +Volta +Vorden +Wahtoke Park +Waits Station +Waldon +Walerga +Walker +Wallace +Walnut Grove +Walnut Park +Walsh Landing +Walthal +Warm Springs +Warner Springs +Washington +Washoe +Waterloo +Waterman Canyon Station +Watts +Waukena +Wawona +Weaverville +Webb Station +Weed Patch +Weimar +Weitchpec +Weldon +Wellsona +Wendel +Wentworth Springs +Weott +Westborough +Westlake +Westley +Westmont +Westport +Westridge +Westville +Westwood +Wheaton +Wheatville +Wheeler Ridge +Whiskeytown +Whispering Pines +White Hall +White Horse +White Pines +White River +White Wolf +Whitehawk +Whiteshore Cove +Whitethorn +Whitewater +Whitley Gardens +Whitlow +Whitmore +Wilbur Springs +Wildrose +Wildwood +Wilkerson +Willow Creek +Willow Ranch +Willowbrook +Wilmington +Wilseyville +Wilsonia +Wilton +Winchester +Windsor Hills +Winnetka +Winter Gardens +Winterhaven +Winton +Wishon +Witch Creek +Witter Springs +Wofford Heights +Wolf +Wonder Valley +Woodacre +Woodbridge +Woodcrest +Woodford +Woodland Hills +Woodleaf +Woodside Highlands +Woodville +Woody +Woolsey +Wrights Lake +Wrightwood +Wyandotte +Wynola +Yankee Hill +Yankee Jims +Yermo +Yettem +Yolo +Yorkville +Zamora +Zayante +Zenia diff --git a/resources/blank_plane_material.material b/resources/blank_plane_material.material Binary files differnew file mode 100644 index 0000000..15b3321 --- /dev/null +++ b/resources/blank_plane_material.material diff --git a/resources/external/client_ws_test.py b/resources/external/client_ws_test.py new file mode 100644 index 0000000..9bf5a52 --- /dev/null +++ b/resources/external/client_ws_test.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python + +"""Client using the asyncio API.""" + +import asyncio +from websockets.asyncio.client import connect + + +async def hello(): + async with connect("wss://echo.websocket.org", subprotocols=["lws-mirror-protocol"]) as websocket: + await websocket.send("Hello world!") + message = await websocket.recv() + print(message) + + +if __name__ == "__main__": + asyncio.run(hello())
\ No newline at end of file diff --git a/resources/external/game_coordinator.py b/resources/external/game_coordinator.py new file mode 100644 index 0000000..6904cb0 --- /dev/null +++ b/resources/external/game_coordinator.py @@ -0,0 +1,175 @@ +#!/usr/bin/env python + +""" +WebSocket game coordinator for ATC. +Provides list of currently open games for server-browser purposes, +and provides connection management and game state forwarding between players. + +syntax: python game_coordinator.py [-ip <IP String>] [-port <valid port>] +e.g.: python game_coordinator.py -ip 127.0.0.1 -port 25565 +""" + +import asyncio +import json +import secrets +import sys +import random + +from websockets.asyncio.server import serve + +DEFAULT_PORT = 8181 +DEFAULT_IP = "127.0.0.1" + +LOBBY_STATES = [ "LOBBY", "UNDERWAY", "FINISHED" ] +GAME_STATES = [ "SETUP", "ACTION", "PLACEMENT" ] + +GAMES = {} +# placeholder +#GAMES = {"1b32b1" : {"game_name" : "Game 1", "lobby_state" : "LOBBY", "current_players" : 1, "max_players" : 4, "private" : False}, +# "ab1b27" : {"game_name" : "Patrick's Game", "lobby_state" : "UNDERWAY", "current_players" : 3, "max_players" : 3, "private" : True}, +# "7a7df8" : {"game_name" : "New Jersey ATC", "lobby_state" : "FINISHED", "current_players" : 2, "max_players" : 2, "private" : False}} + +async def select_valid_color(game, color_id, color_id_alt): + taken_ids = set(GAMES[game_id]["players"].keys()) + color_okay = True + for player_color in taken_ids: + if color_id == player_color: + color_okay = False + break + if color_okay: + return color_id + color_okay = True + for player_color in taken_ids: + if color_id_alt == player_color: + color_okay = False + break + if color_okay: + return color_id_alt + + available_colors = list(set(range(10)) ^ taken_ids) + return random.choice(available_colors) + +# Send active games for server browser purposes +async def send_game_list(websocket): + games = {"type" : "game_list", "games" : []} + for game_id, game_info in GAMES.items(): + current_game_info = {"id" : game_id, "game_name" : game_info["game_name"], "state" : game_info["lobby_state"], "current_players" : len(game_info["players"]), "max_players" : game_info["max_players"], "private" : game_info["private"]} + games["games"].append( current_game_info ) + await websocket.send(json.dumps(games)) + + async for message in websocket: # wait for acknowledgment + print(json.loads(message)) + return + # end of connection (closes automatically) + +async def lobby(websocket, game, player_id): + + async for message in websocket: + event = json.loads(message) + + if event["type"] == "game_control": + + # message forwarding + elif event["type"] == "request": + response = {"type" : "request", "data" : event["request_fields"] } + await game["players"][ int(event["source"]) ]["socket"].send( json.dumps(response) ) + elif event["type"] == "request_response": + response = {"type" : "request_response", "data" : event["requested_data"] } + await game["players"][ int(event["destination"]) ]["socket"].send( json.dumps(response) ) + elif event["type"] == "broadcast": + message = {"type" : "broadcast", "payload" : event["payload"]} + for player in game["players"]: + if player != player_id: await player["socket"].send(json.dumps(message)) + + +async def join_game(websocket, event): + for required_field in ["game_id", "username", "color_id", "color_id_alt"]: + if required_field not in event: + response = {"type" : "error", "message" : f"Missing field: '{required_field}'."} + await websocket.send(json.dumps(response)) + return # close connection + + game_id = event["game_id"] + if game_id not in GAMES: + response = {"type" : "error", "message" : f"Game '{game_id}' does not exist."} + await websocket.send(json.dumps(response)) + return # close connection + + if len(GAMES[game_id]["players"]) >= GAMES[game_id]["max_players"]: + response = {"type" : "error", "message" : f"Server full."} + await websocket.send(json.dumps(response)) + return # close connection + + player_color = select_valid_color(GAMES[game_id], int(event["color_id"]), int(event["color_id_alt"])) + + response = {"type" : "JOIN_OK", "game_id" : game_id, "color_id" : player_color} + await websocket.send(json.dumps(response)) + + try: + await lobby(websocket, GAMES[game_id], player_color) + finally: + del GAMES[game_id] + +async def create_game(websocket, event): + for required_field in ["game_name", "username", "color_id", "private", "password", "max_players"]: + if required_field not in event: + response = {"type" : "error", "message" : f"Missing field: '{required_field}'."} + await websocket.send(json.dumps(response)) + return # close connection + + new_game = { "game_name" : event["game_name"], "lobby_state" : "LOBBY", "is_board_generated" : False, "max_players" : event["max_players"], "players" : {} } + event["color_id"] = int(event["color_id"]) + host_player = {"socket" : websocket, "is_host" : True, "username" : event["username"] } + new_game["host_id"] = host_ + new_game["players"][event["color_id"]] = host_player + game_id = secrets.token_urlsafe(12) + GAMES[game_id] = new_game + + response = {"type" : "HOST_OK", "game_id" : game_id} + await websocket.send(json.dumps(response)) + + try: + await lobby(websocket, GAMES[game_id], event["color_id"]) + finally: + del GAMES[game_id] + + +async def new_connection_handler(websocket): + print("Client connected.") + message = await websocket.recv() + event = json.loads(message) + + if event["type"] == "list_open_games": + print("List of games requested.") + await send_game_list(websocket) + elif event["type"] == "create_game": + await create_game(websocket) + elif event["type"] == "join_game": + await join_game(websocket, event) + elif event["type"] == "watch_game": + await watch_game(websocket, event) + + +async def main(ip, port): + async with serve(new_connection_handler, ip, port) as server: + print("serving...") + await server.serve_forever() + + +if __name__ == "__main__": + IP = DEFAULT_IP + PORT = DEFAULT_PORT + args = sys.argv[1:] + for arg_i in range(len(args)): + if args[arg_i] == "-ip" and arg_i < (len(args)-1): + arg_i += 1 + IP = args[arg_i] + if args[arg_i] == "-port" and arg_i < (len(args)-1): + arg_i += 1 + try: + PORT = int(args[arg_i]) + except: + print("Port must be an integer.") + quit() + + asyncio.run(main(IP, PORT))
\ No newline at end of file diff --git a/resources/external/process_placenames.py b/resources/external/process_placenames.py new file mode 100644 index 0000000..718b00a --- /dev/null +++ b/resources/external/process_placenames.py @@ -0,0 +1,13 @@ +if __name__ == "__main__": + placenames = [] + with open("placenames.txt", "r") as f: + for placename in f.readlines(): + if "," in placename: + new_placename = placename.split(",")[0].strip() + if new_placename not in placenames: + placenames.append(new_placename) + print(new_placename) + + with open("airports.txt", "w") as f: + for placename in placenames: + f.write(placename + "\n") diff --git a/resources/external/websocket_test.py b/resources/external/websocket_test.py new file mode 100644 index 0000000..9c29fcf --- /dev/null +++ b/resources/external/websocket_test.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python + +"""Echo server using the asyncio API.""" + +import asyncio +from websockets.asyncio.server import serve + +DEFAULT_PORT = 8181 +DEFAULT_IP = "127.0.0.1" + + +async def echo(websocket): + print("client connected") + async for message in websocket: + await websocket.send(message) + + +async def main(ip, port): + async with serve(echo, ip, port) as server: + print("serving...") + await server.serve_forever() + + +if __name__ == "__main__": + IP = DEFAULT_IP + PORT = DEFAULT_PORT + args = sys.argv[1:] + for arg_i in range(len(args)): + if args[arg_i] == "-ip" and arg_i < (len(args)-1): + arg_i += 1 + IP = args[arg_i] + if args[arg_i] == "-port" and arg_i < (len(args)-1): + arg_i += 1 + try: + PORT = int(args[arg_i]) + except: + print("Port must be an integer.") + return + + asyncio.run(main(IP, PORT))
\ No newline at end of file diff --git a/resources/fonts/Cochineal-Bold.otf b/resources/fonts/Cochineal-Bold.otf Binary files differnew file mode 100644 index 0000000..a88d9ba --- /dev/null +++ b/resources/fonts/Cochineal-Bold.otf diff --git a/resources/fonts/Cochineal-BoldItalic.otf b/resources/fonts/Cochineal-BoldItalic.otf Binary files differnew file mode 100644 index 0000000..629a995 --- /dev/null +++ b/resources/fonts/Cochineal-BoldItalic.otf diff --git a/resources/fonts/Cochineal-Italic.otf b/resources/fonts/Cochineal-Italic.otf Binary files differnew file mode 100644 index 0000000..8d31265 --- /dev/null +++ b/resources/fonts/Cochineal-Italic.otf diff --git a/resources/fonts/Cochineal-Roman.otf b/resources/fonts/Cochineal-Roman.otf Binary files differnew file mode 100644 index 0000000..69335bc --- /dev/null +++ b/resources/fonts/Cochineal-Roman.otf diff --git a/resources/fonts/cochineal_bold_billboard.tres b/resources/fonts/cochineal_bold_billboard.tres new file mode 100644 index 0000000..9d2bc59 --- /dev/null +++ b/resources/fonts/cochineal_bold_billboard.tres @@ -0,0 +1,9 @@ +[gd_resource type="DynamicFont" load_steps=2 format=2] + +[ext_resource path="res://resources/fonts/Cochineal-Bold.otf" type="DynamicFontData" id=1] + +[resource] +size = 40 +outline_size = 2 +outline_color = Color( 0, 0, 0, 1 ) +font_data = ExtResource( 1 ) diff --git a/resources/fonts/cochineal_license.txt b/resources/fonts/cochineal_license.txt new file mode 100644 index 0000000..7db85bc --- /dev/null +++ b/resources/fonts/cochineal_license.txt @@ -0,0 +1,39 @@ + +SIL Open Font License (ofl) + +Version 1.1 – 26 February 2007 +PREAMBLE + +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. +DEFINITIONS + +“Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +“Reserved Font Name” refers to any names specified as such after the copyright statement(s). + +“Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +“Modified Version” refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +“Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. +PERMISSION & CONDITIONS + +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. +TERMINATION + +This license becomes null and void if any of the above conditions are not met. +DISCLAIMER + +THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/resources/placenames_unprocessed.txt b/resources/placenames_unprocessed.txt new file mode 100644 index 0000000..3421d3c --- /dev/null +++ b/resources/placenames_unprocessed.txt @@ -0,0 +1,1909 @@ +Academy, Fresno +Acampo, San Joaquin +Acton, Los Angeles +Adams, Lake +Adelaida, San Luis Obispo +Adin, Modoc +Aetna Springs, Napa +Afton, Glenn +Afton, San Bernardino +Agnew, Santa Clara +Agua Caliente, Sonoma +Agua Dulce, Los Angeles +Aguanga, Riverside +Aguereberry Point, Inyo +Ahwahnee, Madera +Ainsworth Corner, Siskiyou +Akers, San Joaquin +Alameda, Kern +Alamo, Contra Costa +Alamorio, Imperial +Alberhill, Riverside +Albion, Mendocino +Alder Springs, Fresno +Alderpoint, Humboldt +Alleghany, Sierra +Allendale, Solano +Almanor, Plumas +Alondra Park, Los Angeles +Alpaugh, Tulare +Alpine, San Diego +Alta, Placer +Alta Loma, San Bernardino +Alta Sierra, Nevad +Alta Vista, Inyo +Altadena, Los Angeles +Altamont, Alameda +Altaville, Calaveras +Alton, Humboldt +Alum Rock, Santa Clara +Alvarado, Alameda +Alviso, Santa Clara +Amador, Amador +Ambler, Tulare +Amboy, San Bernardino +Amesti, Santa Cruz +Anchor Bay, Mendocino +Anderson Springs, Lake +Andrade, Imperial +Angelus, Oaks, San +Bernardino +Angiola, Tulare +Angwin, Napa +Annapolis, Sonoma +Ansel, Kern +Antelope, Sacramento +Antelope Acres, Los Angeles +Anza, Riverside +Applegate, Placer +Aptos, Santa Cruz +Arastraville, Tuolumne +Arbuckle, Colusa +Arcade, Sacramento +Arden, Sacramento +Arena, Merced +Argus, San Bernardino +Arlington, Riverside +Arlynda Corners, Humboldt +Armistead, Kern +Armona, Kings +Arnold, Calaveras +Arnold Heights, Riverside +Aromas (split Monterey) +Aromas (split San Benito) +Arrowbear, San +Bernardino +Arrowhead Springs, San +Bernardino +Artois, Glenn +Ashford, Inyo +Ashland, Alameda +Aspendell, Inyo +Asti, Sonoma +Athens, Los Angeles +Atolia, San Bernardino +Atwood, Orange +Auberry, Fresno +August, San Joaquin +Aukum, El Dorado +Avery, Calaveras +Avila Beach, San Luis Obispo +Avocado Heights, Los Angeles +Avon, Contra Costa +Badger, Tulare +Badwater, Inyo +Baker, Kern +Balboa, Orange +Balch Camp, Fresno +Baldwin Lake, San +Bernardino +Baldy Mesa, San Bernardino +Ballarat, Inyo +Ballard, Santa Barbara +Ballena, San Diego +Ballico, Merced +Bangor, Butte +Bankhead Springs, San Diego +Banner, San Diego +Banta, San Joaquin +Bard, Imperial +Bardsdale, Ventura +Barrett, Mariposa +Barstow, Fresno +Bartle, Siskiyou +Bartlett Springs, Lake +Barton, Amador +Bassett, Los Angeles +Bassetts, Sierra +Batto, Sonoma +Baxter, Placer +Bay Point, Contra Costa +Bayliss, Glenn +Bayshore, San Mateo +Bealville, Kern +Bear Harbor, Mendocino +Bear Valley, Mariposa +Beatty, Inyo +Beckwourth, Plumas +Bee Rock, San Luis Obispo +Beegum, Shasta +Bel Air, Los Angeles +Belden, Plumas +Bell Springs, Mendocino +Bella Vista, Shasta +Belleview, Humboldt +Bellota, San Joaquin +Belvedere, Los Angeles +Ben Lomond, Santa Cruz +Benbow, Humboldt +Bend, Tehama +Benton, Mono +Berenda, Madera +Bermuda Dunes, Riverside +Berry Creek, Butte +Berryessa, Santa Clara +Berteleda, Del Norte +Bethel Island, Contra Costa +Betteravia, Santa Barbara +Bieber, Lassen +Big Bar, Trinity +Big Basin, Santa Cruz +Big Lagoon Park, Humboldt +Big Meadow, Calaveras +Big Oak Flat, Tuolumne +Big Pine, Inyo +Big River, San Bernardino +Big Sur, Monterey +Bijou, El Dorado +Biola, Fresno +Birch Hill, San Diego +Birchville, Nevada +Birds Landing, Solano +Bitney Corner, Nevada +Bitterwater, San Benito +Black Point, Marin +Blackhawk, Contra Costa +Blackwells Corner, Kern +Blairsden, Plumas +Blanchard, Tuolumne +Blocksburg, Humboldt +Bloomfield, Sonoma +Bloomington, San Bernardino +Blossom, Tehama +Blossom Valley, San Diego +Blue Canyon, Placer +Blue Jay, San Bernardino +Bluewater, San Bernardino +Boca, Nevada +Bodega Bay, Sonoma +Bodfish, Kern +Bodie, Mono +Bolinas, Marin +Bolsa Knolls, Monterey +Bombay Beach, Imperial +Bonadelle Ranchos, Madera +Bonds Corner, Imperial +Bonilla, Sonoma +Bonita, San Diego +Bonnefoy, Amador +Bonnie Doon, Santa Cruz +Bonsall, San Diego +Boonville, Mendocino +Bootjack, Mariposa +Boron, Kern +Boronda, Monterey +Borosolvay, San Bernardino +Borrego, San Diego +Bostonia, San Diego +Boulder Creek, Santa Cruz +Boulder Oaks, San Diego +Boulevard, San Diego +Bouquet Canyon, Los Angeles +Bowles, Fresno +Bowman, Placer +Bradley, Monterey +Bradys, Kern +Branscomb, Mendocino +Briceburg, Mariposa +Briceland, Humboldt +Bridge Haven, Sonoma +Bridgeport, Nevada +Bridgeville, Humboldt +Broadmoor, San Mateo +Brockway, Placer +Broderick, Yolo +Brookdale, Santa Cruz +Brooks, Yolo +Browns Flat, Tuolumne +Brownsville, Yuba +Bruceville, Sacramento +Brush Creek, Butte +Bryn Mawr, San Bernardino +Bryte, Yolo +Buck Meadows, Mariposa +Buckeye, Shasta +Buckhorn, Amador +Buckingham Park, Lake +Bucks Bar, El Dorado +Buena, San Diego +Buena Vista, Sonoma +Buhach, Merced +Bummerville, Calaveras +Buntingville, Lassen +Burbank, Santa Clara +Burney, Shasta +Burnt Ranch, Trinity +Burrel, Fresno +Burson, Calaveras +Butte City, Glenn +Butte Meadows, Butte +Buttonwillow, Kern +Byron, Contra Costa +Bystrom, Stanislaus +Cabazon, Riverside +Cabbage Patch, Calaveras +Cadenasso, Yolo +Cadiz, San Bernardino +Cadwell, Sonoma +Cahuilla, Riverside +Cairns Corner, Tulare +Cajon, San Bernardino +Calaveritas, Calaveras +Calico, San +Cal-Ida, Sierra +Caliente, Kern +Callahan, Siskiyou +Calpella, Mendocino +Calpine, Sierra +Calwa, Fresno +Camarillo, Ventura +Cambria, San Luis Obispo +Camden, Fresno +Camp Angelus, San Bernardino +Camp Conifer, Tulare +Camp Connell, Calaveras +Camp Klamath, Del Norte +Camp Meeker, Sonoma +Camp Nelson, Tulare +Campo Seco, Calaveras +Camptonville, Yuba +Canby, Modoc +Canebrake, Kern +Canoga Park, Los Angeles +Cantil, Kern +Cantua Creek, Fresno +Canyon City, San Diego +Canyon Dam, Plumas +Capay, Yolo +Capetown, Humboldt +Capistrano Beach, Orange +Carbona, San Joaquin +Carbondale, Amador +Caribou, Plumas +Carlotta, Humboldt +Carmel Highlands, Monterey +Carmet, Sonoma +Carmichael, Sacramento +Carnelian Bay, Placer +Carrick, Siskiyou +Carson Hill, Calaveras +Cartago, Inyo +Caruthers, Fresno +Casa Conejo, Ventura +Casa De Oro, San Diego +Casitas Springs, Ventura +Casmalia, Santa Barbara +Caspar, Mendocino +Cassel, Shasta +Castaic, Los Angeles +Castella, Shasta +Castle Crag, Shasta +Castle Park, San Diego +Castro Valley, Alameda +Castroville, Monterey +Catheys Valley, Mariposa +Cayton, Shasta +Cayucos, San Luis Obispo +Cazadero, Sonoma +Cecilville, Siskiyou +Cedar Valley, Madera +Cedarbrook, Fresno +Cedarville, Modoc +Cella, Fresno +Centerville, Shasta +Chalfant, Mono +Challenge, Yuba +Chambers Lodge, Placer +Chaney Ranch, Fresno +Charter Oak, Los Angeles +Chatsworth, Los Angeles +Chawanakee, Fresno +Chemeketa Park, Santa Clara +Cherokee, Nevada +Cherokee, Butte +Cherry Land, Alameda +Chester, Plumas +Chilcoot, Plumas +Chinquapin Junction, Mariposa +Chiquita Lake, El Dorado +Chiriaco Summit, Riverside +Chittenden, Santa Cruz +Cholame, San Luis Obispo +Chrisman, Ventura +Chrome, Glenn +Chualar, Monterey +Cima, San Bernardino +Cincotta, Fresno +Circle Oaks, Napa +Cisco, Placer +Cisco Grove, Placer +Citrus, Los Angeles +City Terrace, Los Angeles +Clairemont, San Diego +Clam Beach, Humboldt +Clarksburg, Yolo +Clay, Sacramento +Clear Creek, Lassen +Clements, San Joaquin +Cleone, Mendocino +Cliff House, Tuolumne +Clinton, Amador +Clio, Plumas +Clipper Gap, Placer +Clipper Mills, Butte +Cloride City, Inyo +Cloverdale, Shasta +Clyde, Contra Costa +Coarsegold, Madera +Cobb, Lake +Cobbs, Humboldt +Codora, Glenn +Coffee Creek, Trinity +Coffing, Sacramento +Cohasset, Butte +Cold Springs, Tuolumne +Coles Station, El Dorado +Coleville, Mono +College City, Colusa +Collegeville, San Joaquin +Collierville, San Joaquin +Collinsville, Solano +Coloma, El Dorado +Columbia, Tuolumne +Comptche, Mendocino +Concow, Butte +Conejo, Fresno +Confidence, Tuolumne +Constantia, Lassen +Cooks Station, Amador +Cool, El Dorado +Coolidge Spring, Imperial +Copco, Siskiyou +Copperopolis, Calaveras +Cordelia, Solano +Cornell, Los Angeles +Corona Del Mar, Orange +Corralitos, Santa Cruz +Coso Junction, Inyo +Cosumnes, Sacramento +Coto de Caza, Orange +Cottage Springs, Calaveras +Cotton Center, Tulare +Cottonwood, Shasta +Coulterville, Mariposa +Courtland, Sacramento +Covelo, Mendocino +Covington Mills, Trinity +Coyote Wells, Imperial +Cozzens Corner, Sonoma +Crafton, San Bernardino +Cranmore, Sutter +Crannell, Humboldt +Creekside, San Bernardino +Crescent Mills, Plumas +Cressey, Merced +Crestline, San Bernardino +Crestmore, San Bernardino +Creston, San Luis Obispo +Crockett, Contra Costa +Cromberg, Plumas +Cross Roads, San Bernardino +Crown, Sonoma +Crows Landing, Stanislaus +Crystal Springs, Alpine +Cucamunga, San Bernardino +Cuesta-by-the-Sea, San Luis +Cummings, Mendocino +Cunningham, Sonoma +Curry Village, Mariposa +Cutler, Tulare +Cutten, Humboldt +Cuttings Wharf, Napa +Cuyama, Santa Barbara +Daggett, San Bernardino +Dairyland, Madera +Dales, Tehama +Dana, Shasta +Danby, San Bernardino +Dardanelle, Tuolumne +Darlingtonia, Del Norte +Darrah, Mariposa +Darwin, Inyo +Date City, Imperial +Daulton, Madera +Davenport, Santa Cruz +Davis Creek, Modoc +Day Valley, Santa Cruz +Dayton, Butte +De Bon, Siskiyou +De Luz, San Diego +De Sabla, Butte +Deadmans Lake, San +Deep Springs, Inyo +Deer Park, Napa +Dehesa, San Diego +Del Aire, Los Angeles +Del Loma, Trinity +Del Rey, Fresno +Del Rio, Stanislaus +Delevan, Colusa +Delft Colony, Tulare +Delhi, Merced +Delleker, Plumas +Delta, Shasta +Denair, Stanislaus +Denny, Trinity +Denverton, Solano +Derby Acres, Kern +Descanso, San Diego +Desert Knolls, San +Devils Den, Kern +Devore, San Bernardino +Di Giorgio, Kern +Diablo, Contra Costa +Diamond Springs, El Dorado +Dillon Beach, Marin +Dinkey Creek, Fresno +Dinsmore, Humboldt +Discovery Bay, Contra Costa +Dixieland, Imperial +Dobbins, Yuba +Dogtown, Calaveras +Dollar Point, Placer +Dominguez, Los Angeles +Dorrington, Calaveras +Dos Rios, Mendocino +Dougherty, Alameda +Douglas City, Trinity +Dove Canyon, Orange +Downieville, Sierra +Doyle, Lassen +Dozier, Solano +Drytown, Amador +Ducor, Tulare +Dulah, Ventura +Dulzura, San Diego +Duncans Mills, Sonoma +Dunlap, Mendocino +Dunmovin, Inyo +Dunneville, San Benito +Dunnigan, Yolo +Durham, Butte +Dustin Acres, Kern +Dutch Flat, Placer +Eagle Mountain, Riverside +Eagle Rock, Los Angeles +Eagleville, Modoc +Earlimart, Tulare +Earp, San Bernardino +East Blythe, Riverside +Easton, Fresno +Echo Lake, El Dorado +Eden Springs, Riverside +Edgemont, Riverside +Edgewood, Siskiyou +Edison, Kern +Edna, San Luis Obispo +Eel Rock, Humboldt +El Bonita, Sonoma +El Cerrito, Riverside +El Dorado, El Dorado +El Encanto Heights, Santa +El Granada, San Mateo +El Macero, Yolo +El Modena, Orange +El Nido, Merced +El Pinal, San Joaquin +El Portal, Mariposa +El Porvenir, Fresno +El Rio, Ventura +El Sobrante, Contra Costa +El Sueno, Santa Barbara +El Toro, Orange +El Verano, Sonoma +Elders Corners, Placer +Elderwood, Tulare +Eldridge, Sonoma +Electra, Amador +Elizabeth Lake, Los Angeles +Elk, Mendocino +Elk Creek, Glenn +Elkhorn, Monterey +Ellicott, Santa Cruz +Ellwood, Santa Barbara +Elm View, Fresno +Elmira, Solano +Elmo, Kern +Elmore, Imperial +Elsinore, Riverside +Elverta, Sacramento +Embarcadero, Sonoma +Emerald Bay, Orange +Emerald Lake Hills, San +Emigrant Gap, Placer +Emmaton, Sacramento +Empire, Stanislaus +Encino, Los Angeles +Engineers Springs, San Diego +Enterprise, Shasta +Esparto, Yolo +Essex, San Bernardino +Estrella, San Luis Obispo +Etheda Springs, Fresno +Etiwand, San Bernardino +Ettawa Springs, Lake +Ettersburg, Humboldt +Eucalyptus Hills, San Diego +Eugene, Stanislaus +Evelyn, Inyo +Evergreen, Santa Clara +Fair Oaks, Sacramento +Fair Play, El Dorado +Fairbanks Ranch, San Diego +Fairhaven, Humboldt +Fairmead , Madera +Fairmont, Los Angeles +Fairview, Tulare +Fall River Mills, Shasta +Fallbrook, San Diego +Fallen Leaf, El Dorado +Fallon, Marin +Famoso, Kern +Farmington, San Joaquin +Fawnskin, San Bernardino +Feather Falls, Butte +Felicity, Imperial +Felix, Calaveras +Fellows, Kern +Felterwood, Del Norte +Felton, Santa Cruz +Fenner, San Bernardino +Fern, Shasta +Fernbridge, Humboldt +Fernbrook, San Diego +Fetters Hot Springs, Sonoma +Fiddletown, Amador +Fieldbrook, Humboldt +Fields Landing, Humboldt +Fig Garden, Fresno +Fine Gold, Madera +Finley, Lake +Fish Camp, Mariposa +Fish Springs, Inyo +Five Corners, San Joaquin +Five Points, Fresno +Fleetridge, San Diego +Flinn Springs, San Diego +Florence, Los Angeles +Florin, Sacramento +Floriston, Nevada +Flournoy, Tehama +Foothill Farms, Sacramento +Foothill Ranch, Orange +Forbestown, Butte +Ford City, Kern +Fords Corner, El Dorado +Forest, Sierra +Forest Falls, San Bernardino +Forest Glen, Trinity +Forest Knolls, Marin +Forest Lake, Lake +Forest Meadows, Calaveras +Forest Park, Santa Cruz +Forest Ranch, Butte +Forest Springs, Nevada +Foresta, Mariposa +Foresthill, Placer +Forestville, Sonoma +Forks of Salmon, Siskiyou +Fort Baker, Marin +Fort Bidwell, Modoc +Fort Dick, Del Norte +Fort Ord, Monterey +Fort Romie, Monterey +Fort Rosecrans, San Diego +Fort Ross, Sonoma +Fort Seward, Humboldt +Foster, San Diego +Fountain Springs, Tulare +Four Corners, Santa Barbara +Fouts Springs, Colusa +Franklin, Sacramento +Frazier Park, Kern +Fredalba, San Bernardino +Fredricksburg, Alpine +Freds Place, El Dorado +Freeport, Sacramento +Freestone, Sonoma +Fremont Valley, Kern +French Camp, San Joaquin +French Corral, Nevada +French Gulch, Shasta +Fresh Pond, El Dorado +Freshwater, Humboldt +Friant, Fresno +Frogtown, Calaveras +Fruitdale, Santa Clara +Fruto, Glenn +Fuller Acres, Kern +Fulton, Sonoma +Ganns, Calaveras +Garberville, Humboldt +Garden Acres, San Joaquin +Garden Farms, San Luis +Garden Valley, El Dorado +Gardenland, Sacramento +Garey, Santa Barbara +Garfield, Kern +Garlock, Kern +Garnet, Riverside +Gasquet, Del Norte +Gaviota, Santa Barbara +Gazelle, Siskiyou +Genesse, Plumas +Georgetown, El Dorado +Gerber, Tehama +Geyserville, Sonoma +Giant Forest, Tulare +Gibsonville, Sierra +Gilman Hot Springs, +Riverside +Gilroy Hot Springs, Santa +Clara +Glacier Lodge, Inyo +Glamis, Imperial +Glen Avon, Riverside +Glen Ellen, Sonoma +Glen Oaks, Riverside +Glenbrook, Nevada +Glenburn, Shasta +Glencoe, Calaveras +Glenhaven, Lake +Glenn, Glenn +Glenwood, Santa Cruz +Goffs, San Bernardino +Gold Flat, Nevada +Gold Hill, El Dorado +Gold River, Sacramento +Gold Run, Placer +Gold Springs, Tuolumne +Golden Hills, Kern +Goler Heights, Kern +Good Hope, Riverside +Goodyears Bar, Sierra +Gordola, Santa Cruz +Gordons Well, Imperial +Gorman, Los Angeles +Goshen, Tulare +Gottville, Siskiyou +Government Flat, Tehama +Graeagle, Plumas +Granada Hills, Los Angeles +Grandview, San Bernardino +Grangeville, Kings +Granite Bay, Placer +Granite Hills, San Diego +Granite Springs, Mariposa +Graniteville, Nevada +Grantville, San Diego +Grapevine, Kern +Graton, Sonoma +Gravesboro, Fresno +Grays Well, Imperial +Grayson, Stanislaus +Greeley Hill, Mariposa +Green Acres, Kern +Green Valley, Solano +Greenbrae, Marin +Greenfie, Kern +Greenhorn, Plumas +Greenview, Siskiyou +Greenville, Plumas +Greenwich Village, Ventura +Greenwood, El Dorado +Grenada, Siskiyou +Grimes, Colusa +Grindstone Indian Rancheria, +Glenn +Grizzly Flat, El Dorado +Grossmont, San Diego +Groveland, Tuolumne +Gualala, Mendocino +Guasti, San Bernardino +Guatay, San Diego +Guerneville, Sonoma +Guernewood Park, Sonoma +Guinda, Yolo +Hacienda, Sonoma +Hagginwood, Sacramento +Halcyon, San Luis Obispo +Hallelujah Junction, Lassen +Hallwood, Yuba +Hamburg, Siskiyou +Hamilton Branch, Plumas +Hamilton City, Glenn +Hammond, Tulare +Hammonton, Yuba +Hams Station, Amador +Happy Camp, Siskiyou +Harbin Springs, Lake +Harbinson Canyon, San Diego +Harbor City, Los Angeles +Harden Flat, Tuolumne +Hardwick, Kings +Harmony Grove, San Diego +Harpertown, Kern +Harris, Humboldt +Harrison Park, San Diego +Hartley, Solano +Harts Place, Kern +Haskell Creek, Sierra +Hat Creek, Shasta +Hatfield, Siskiyou +Hathaway Pines, Calaveras +Havasu Lake, San Bernardino +Havilah, Kern +Hawkinsville, Siskiyou +Hayfork, Trinity +Hayward, Mariposa +Hazel Creek, Shasta +Hazelton, Kern +Heather Glen, Placer +Heber, Imperial +Helena, Trinity +Helendale, San Bernardino +Helm, Fresno +Henley, Siskiyou +Henleyville, Tehama +Herald, Sacramento +Herlong, Lassen +Hernandez, San Benito +Herndon, Fresno +Hessel, Sonoma +Hickman, Stanislaus +Hidden Meadows, San Diego +Higgins Corner, Nevada +Highgrove, Riverside +Highland Park, Los Angeles +Hights Corner, Kern +Highway City, Fresno +Hillcrest, Shasta +Hills Flat, Nevada +Hillsdale, San Mateo +Hilmar, Merced +Hilt, Siskiyou +Hilton Creek, Mono +Hinkley, San Bernardino +Hiouchi, Del Norte +Hoaglin, Trinity +Hobart Mills, Nevada +Hoberg, Lake +Hodson, Calaveras +Hollow Tree, Mendocino +Hollydale, Sonoma +Holmes, Humboldt +Holt, San Joaquin +Holy City, Santa Clara +Homeland, Riverside +Homestead Valley, Marin +Homewood, Placer +Honby, Los Angeles +Honcut, Butte +Honeydew, Humboldt +Hood, Sacramento +Hoopa, Humboldt +Hope Ranch, Santa Barbara +Hopeton, Merced +Hopland, Mendocino +Hoppaw, Del Norte +Hornbrook, Siskiyou +Hornitos, Mariposa +Horse Creek, Siskiyou +Hough Springs, Lake +Howland Flat, Sierra +Huasna, San Luis Obispo +Hulburd Grove, San Diego +Humboldt Hill, Humboldt +Hume, Fresno +Humpheres Station, Fresno +Huntington Lake, Fresno +Hurleton, Butte +Hyampom, Trinity +Hydesville, Humboldt +Idyllwild, Riverside +Ignacio, Marin +Igo, Shasta +Ilmon, Kern +Imola, Napa +Imperial Gables, Imperial +Incline, Mariposa +Independence, Inyo +Indian Falls, Plumas +Indian Springs, San Diego +Indianola, Humboldt +Ingot, Shasta +Inskip, Butte +Interlaken, Santa Cruz +Inverness, Marin +Inwood, Shasta +Inyokern, Kern +Iowa Hill, Placer +Iron Horse, Plumas +Irvings Crest, San Diego +Irwin, Merced +Isla Vista, Santa Barbara +Ivanhoe, Tulare +Ivanpah, San Bernardino +Jackson Gate, Amador +Jacumba, San Diego +Jamacha, San Diego +Jamesburg, Monterey +Jamestown, Tuolumne +Jamul, San Diego +Janesville, Lassen +Jarbo Gap, Butte +Jarvis Landing, Alameda +Jenner, Sonoma +Jesmond Dene, San Diego +Jimtown, Sonoma +Johannesburg, Kern +Johnsondale, Tulare +Jolon, Monterey +Jones Corner, Tulare +Jonesville, Butte +Joshua Tree, San Bernardino +Julian, San Diego +Junction City, Trinity +June Lake, Mono +Juniper Hills, Los Angeles +Juniper Springs, Riverside +Kane Springs, Imperial +Karnak, Sutter +Kaweah, Tulare +Kayandee, Kern +Kearsarge, Inyo +Keddie, Plumas +Keeler, Inyo +Keenbrook, San Bernardino +Keene, Kern +Kellogg, Sonoma +Kelsey, El Dorado +Kelseyville, Lake +Kelso, San Bernardino +Kennedy, San Joaquin +Kensington, Contra Costa +Kentfield, Marin +Kenwood, Sonoma +Keough Hot Springs, Inyo +Kern City, Kern +Kernell, Kern +Kernvale, Kern +Kernville, Kern +Keswick, Shasta +Kettleman City, Kings +Keyes, Stanislaus +Kilkare Woods, Alameda +Kings Beach, Placer +Kingston, San Bernardino +Kingsville, El Dorado +Kinsley, Mariposa +Kirkville, Sutter +Kirkwood, Tehama +Kit Carson, Amador +Klamath, Del Norte +Klau, San Luis Obispo +Kneeland, Humboldt +Knights Ferry, Stanislaus +Knights Landing, Yolo +Knob, Shasta +Knowles, Madera +Knoxville, Napa +Kono Tayee, Lake +Korbel, Sonoma +Korbel, Humboldt +Kramer, San Bernardino +Kyburz, El Dorado +La Barr Meadows, Nevada +La Conchita, Ventura +La Costa, San Diego +La Crescenta, Los Angeles +La Cresta, San Diego +La Grange, Stanislaus +La Honda, San Mateo +La Loma, Stanislaus +La Moine, Shasta +La Panza, San Luis Obispo +La Playa, San Diego +La Porte, Plumas +La Presa, San Diego +La Riviera, Sacramento +La Selva, Santa Cruz +La Sierra, Riverside +La Vina, Madera +Ladera, San Mateo +Laguna, Sacramento +Lagunitas, Marin +Lake City, Modoc +Nacimiento, San LuisObispo +Lakehead, Shasta +Lakeshore, Shasta +Lakeside, San Diego +Lamont, Kern +Lanare, Fresno +Landers, San Bernardino +Larson, San Joaquin +Las Cruces, Santa Barbara +Las Flores, Tehama +Las Lomas, Sonoma +Laton, Fresno +Latrobe, El Dorado +Laughlin, Mendocino +Laws, Inyo +Laytonville, Mendocino +Le Grand, Merced +Lebec, Kern +Lee Vining, Mono +Leesville, Colusa +Leggett, Mendocino +Leisure Village, Ventura +Leliter, Kern +Lemoncove, Tulare +Lennox, Los Angeles +Lenwood, San Bernardino +Leona Valley, Los Angeles +Leucadia, San Diego +Lewiston, Trinity +Lexington Hills, Santa Clara +Likely, Modoc +Lincoln Acres, San Diego +Linda, Yuba +Lindcove, Tulare +Linden, San Joaquin +Lingard, Merced +Linnell, Tulare +Litchfield, Lassen +Little Norway, El Dorado +Little River, Mendocino +Little Shasta, Siskiyou +Little Valley, Lassen +Littlerock, Los Angeles +Live Oak, Santa Cruz +Llano, Los Angeles +Loch Lomond, Lake +Locke, Sacramento +Lockeford, San Joaquin +Lockwood, Monterey +Lodge Pole, Tulare +Lodoga, Colusa +Log Cabin, Yuba +Logtown, El Dorado +Loleta, Humboldt +Loma Mar, San Mateo +Loma Portal, San Diego +Loma Rica, Yuba +Lomita, San Diego +Lomo, Butte +Lompico, Santa Cruz +London, Tulare +Lone Pine, Inyo +Long Barn, Tuolumne +Longvale, Mendocino +Lookout, Modoc +Loomis Corners, Shasta +Loraine, Kern +Los Alamos, Santa Barbara +Los Berros, San Luis Obispo +Los Molinos, Tehama +Los Nietos, Los Angeles +Los Olivos, Santa Barbara +Los Osos, San Luis Obispo +Los Ranchitos, Marin +Los Serranos, San Bernardino +Lost Hills, Kern +Lost Lake, Riverside +Lotus, El Dorado +Lovelock, Butte +Lower Lake, Lake +Loyola, Santa Clara +Lucerne, Lake +Lucia, Monterey +Ludlow, San Bernardino +Lumberyard, Amador +Lundy, Mono +Lynwood Hills, San Diego +Lyonsville, Tehama +Lytle Creek, San Bernardino +Lytton, Sonoma +Macdoel, Siskiyou +Mad River, Trinity +Madeline, Lassen +Madera Acres, Madera +Madera Ranchos, Madera +Madison, Yolo +Madrone, Santa Clara +Magalia, Butte +Magra, Placer +Magunden, Kern +Majors, Santa Cruz +Malaga, Fresno +Manchester, Mendocino +Manila, Humboldt +Mankas Corner, Solano +Manton, Tehama +Manzanita, San Diego +Maple Creek, Humboldt +Marin City, Marin +Marina Del Rey, Los Angeles +Marinwood, Marin +Mariposa, Mariposa +Markleeville, Alpine +Marshall, Marin +Martell, Amador +Martinez, Tuolumne +Martins Ferry, Humboldt +Masonic, Mono +Mather, Tuolumne +Maxwell, Colusa +Mayfair, Kern +Mayflower, Los +McArthur, Shasta +McCann, Humboldt +McCauley, Mariposa +McCloud, Siskiyou +McKays Point, Tulare +McKinleyville, Humboldt +McKittrick, Kern +McMullin, Fresno +Mead Valley, Riverside +Meadow Lakes, Fresno +Mecca, Riverside +Meeks Bay, El Dorado +Meiners Oaks, Ventura +Meloland, Imperial +Mendocino, Mendocino +Menlo Oaks, San Mateo +Mentone, San Bernardino +Merced Falls, Merced +Mercy Hot Springs, Fresno +Meridian, Sutter +Mesa Grande, San Diego +Mesa Vista, Alpine +Mesquite Spring, Inyo +Mettler, Kern +Meyers, El Dorado +Michigan Bar, Sacramento +Michigan Bluff, Placer +Middle River, San Joaquin +Middletown, Lake +Midland, Riverside +Midpines, Mariposa +Midway, Shasta +Milford, Lassen +Millers, Imperial +Mills Orchard, Colusa +Millville, Shasta +Milo, Tulare +Milton, Calaveras +Mineral, Tehama +Mineral King, Tulare +Minkler, Fresno +Minnelusa, San Bernardino +Minnesota, Shasta +Minturn, Madera +Mira Loma, Riverside +Mira Monte, Ventura +Mira Vista, Lake +Mirabel Park, Sonoma +Miramar, San Mateo +Miramonte, Fresno +Miranda, Humboldt +Mission Beach, San Diego +Mission Canyon, Santa +Mission Hills, Los Angeles +Mitchell Mill, Calaveras +Mitchells Corner, Kern +Mi-Wuk Village, Tuolumne +Moccasin, Tuolumne +Modjeska, Orange +Mohawk, Plumas +Mojave, Kern +Mokelumne Hill, Calaveras +Monada, San Joaquin +Monmouth, Fresno +Mono City, Mono +Monolith, Kern +Monson, Tulare +Monta Vista, Santa Clara +Montalvin, Contra Costa +Montalvo, Ventura +Montara, San Mateo +Monte Cristo, Sonoma +Monte Nido, Los Angeles +Monte Rio, Sonoma +Montecito, Santa Barbara +Montesano, Sonoma +Montezuma, Solano +Montgomery Creek, Shasta +Montrose, Los Angeles +Moonridge, San Bernardino +Moonstone, Humboldt +Morada, San Joaquin +Morena, San Diego +Morettis, San Diego +Mormon Bar, Mariposa +Moss Beach, San Mateo +Moss Landing, Monterey +Mossdale, San Joaquin +Mount Aukum, El Dorado +Mountain Gate, Shasta +Mountain Home, San +Mountain Rest, Fresno +Mountain View, Contra Costa +Mt. Baldy, San Bernardino +Mt. Signal, Imperial +Mugginsville, Siskiyou +Muir Beach, Marin +Mulford Gardens, Alameda +Murphys, Calaveras +Murphys Ranch, Calaveras +Muscoy, San Bernardino +Myers Flat, Humboldt +Myrtletown, Humboldt +Nanceville, Tulare +Naples, Santa Barbara +Nashville, El Dorado +Natoma, Sacramento +Navalencia, Fresno +Navarro, Mendocino +Nebo, San Bernardino +Nelson, Butte +Nestor, San Diego +New Almaden, Santa Clara +New Auberry, Fresno +New Chicago, Amador +New Cuyama, Santa Barbara +New England Mills, Placer +New Idria, San Benito +Newberry Springs, San +Newbury Park, Ventura +Newcastle, Placer +Newell, Modoc +Newhall, Los Angeles +Newtown, El Dorado +Newville, Glenn +Nicasio, Marin +Nice, Lake +Nicholaus, Sutter +Nichols, Contra Costa +Niland, Imperial +Nimbus, Sacramento +Nipinnawasee, Madera +Nipomo, San Luis Obispo +Nipton, San Bernardino +Nord, Butte +Norden, Nevada +Normal Heights, San Diego +Norman, Glenn +Northridge, Los Angeles +Northstar, Placer +Northwood, Sonoma +Norton, San Joaquin +Noyo, Mendocino +Nubieber, Lassen +Nuevo, Riverside +Nyland, Ventura +Oak Glen, San Bernardino +Oak Grove, San Diego +Oak Knoll, Napa +Oak Park, Ventura +Oak Run, Shasta +Oakhurst, Madera +Oakville, Napa +Oasis, Mono +O'Brien, Shasta +Occidental, Sonoma +Ocean View, Sonoma +Oceano, San Luis Obispo +Ocotillo, Imperial +Ogilby, Imperial +Oil City, Kern +Oildale, Kern +Oilfields, Fresno +Olancha, Inyo +Old Forbestown, Butte +Old Fort Tejon, Kern +Old Hopland, Mendocino +Old Mammoth, Mono +Olema, Marin +Olinda, Orange +Olive, Orange +Olivehurst, Yuba +Olivenhain, San Diego +One Hundred Palms, Riverside +O'Neals, Madera +Ono, Shasta +Onyx, Kern +Opal Cliffs, Santa Cruz +Ophir, Placer +Orangevale, Sacramento +Orcutt, Santa Barbara +Ordbend, Glenn +Oregon House, Yuba +Orford, San Joaquin +Orick, Humboldt +Orinda Village, Contra Costa +Orleans, Humboldt +Oro Fino, Siskiyou +Oro Grande, San Bernardino +Oro Loma, Fresno +Orosi, Tulare +Orrs Springs, Mendocino +Ortonville, Ventura +Otay, San Diego +Outingdale, El Dorado +Pacheco, Contra Costa +Pacoima, Los Angeles +Page Mill, San Mateo +Paicines, San Benito +Paintersville, Sacramento +Pajaro, Monterey +Pala, San Diego +Palermo, Butte +Palm City, San Diego +Palmdale East, Los Angeles +Palmo, Kern +Palo Cedro, Shasta +Palo Verde, Imperial +Paloma, Calaveras +Panama, Kern +Panoche, San Benito +Panorama, Placer +Paradise Cay, Marin +Parkfield, Monterey +Parksdale, Madera +Parkway, Sacramento +Parkwood, Madera +Pasatiempo, Santa Cruz +Paskenta, Tehama +Paso Picacho, San Diego +Patrick Creek, Del Norte +Patton, San Bernardino +Pauma Valley, San Diego +Paxton, Plumas +Paynes Creek, Tehama +Paynesville, Alpine +Peanut, Trinity +Pearblossom, Los Angeles +Peardale, Nevada +Pearland, Los Angeles +Pearsonville, Inyo +Pebble Beach, Monterey +Pecwan, Humboldt +Peddler Hill, Amador +Pedley, Riverside +Peninsula Village, Plumas +Penn Valley, Nevada +Penngrove, Sonoma +Pennington, Sutter +Penryn, Placer +Pentz, Butte +Pepperwood, Humboldt +Perkins, Sacramento +Pescadero, San Mateo +Peter Pam, Tuolumne +Peters, San Joaquin +Petrolia, Humboldt +Phelan, San Bernardino +Phillips, El Dorado +Philo, Mendocino +Picacho, Imperial +Piedra, Fresno +Piercy, Mendocino +Pierpont Bay, Ventura +Pike, Sierra +Pilot Hill, El Dorado +Pine Canyon, Monterey +Pine Cove, Riverside +Pine Flat, Tulare +Pine Grove, Shasta +Pine Hills, San Diego +Pine Mountain, Kern +Pine Ridge, Fresno +Pine Valley, San Diego +Pinecrest, Tuolumne +Pinedale, Fresno +Pinehurst, Fresno +Pineland, Placer +Pino Grande, El Dorado +Pinon Hills, San Bernardino +Pinyon Pines, Riverside +Pioneer Station, Amador +Pioneertown, San Bernardino +Piru, Ventura +Pittville, Shasta +Pixley, Tulare +Plainsburg, Merced +Plainview, Tulare +Planada, Merced +Plano, Tulare +Plantation, Sonoma +Plasse, Amador +Plaster City, Imperial +Platina, Shasta +Playa Del Rey, Los Angeles +Pleasant Grove, Sutter +Pleasant Valley, El Dorado +Plumas Eureka, Plumas +Point Loma, San Diego +Point Pleasant, Sacramento +Point Reyes Station, Marin +Pollard Flat, Shasta +Pollock Pines, El Dorado +Pomins, El Dorado +Pomo, Mendocino +Ponderosa, Tulare +Pondosa, Siskiyou +Pope Valley, Napa +Poplar, Tulare +Port Costa, Contra Costa +Portola Hills, Orange +Portuguese Bend, Los +Posey, Tulare +Potrero, San Diego +Potter Valley, Mendocino +Pozo, San Luis Obispo +Prather, Fresno +Prattville, Plumas +Preston, Sonoma +Priest, Tuolumne +Princeton, Colusa +Proberta, Tehama +Project City, Shasta +Prunedale, Monterey +Pulga, Butte +Pumpkin Center, Kern +Quail Valley, Riverside +Quaking Aspen, Tulare +Quartz Hill, Los Angeles +Quincy, Plumas +Rackerby, Yuba +Radec, Riverside +Railroad Flat, Calaveras +Rainbow, San Diego +Raisin City, Fresno +Ramona, San Diego +Ranchita, San Diego +Rancho Calaveras, Calaveras +Rancho Murieta, Sacramento +Rancho Penasquitos, San +Rancho Rinconada, Santa +Rand, Kern +Randolph, Sierra +Randsburg, Kern +Ravendale, Lassen +Raymond, Madera +Red Apple, Calaveras +Red Mountain, San +Redbank, Tehama +Redcrest, Humboldt +Redway, Humboldt +Redwood Grove, Santa Cruz +Reefer City, Kern +Represa, Sacramento +Requa, Del Norte +Rescue, El Dorado +Reseda, Los Angeles +Reward, Kern +Reward, Inyo +Rheem Valley, Contra Costa +Ribbonwood, Riverside +Ricardo, Kern +Rice, San Bernardino +Rices Junction, Santa Cruz +Rich Bar, Plumas +Richardson Springs, Butte +Richfield, Tehama +Richgrove, Tulare +Richvale, Butte +Ridgemark, San Benito +Rimforest, San Bernardino +Rimrock, San Bernardino +Rincon, San Diego +Rio Del Mar, Santa Cruz +Rio Linda, Sacramento +Rio Nido, Sonoma +Rio Oso, Sutter +Ripley, Riverside +Ripperdan, Madera +River Pines, Amador +Riverdale, Fresno +Riverkern, Kern +Riverton, El Dorado +Rob Roy Junction, Santa Cruz +Robbins, Sutter +Robla, Sacramento +Rockport, Mendocino +Rockville, Solano +Rodeo, Contra Costa +Rohnerville, Humboldt +Rolands, Sonoma +Rolinda, Fresno +Rollingwood, Contra Costa +Romoland, Riverside +Rosamond, Kern +Rosedale, Kern +Roseland, Sonoma +Rosemont, Sacramento +Rosewood, Humboldt +Ross Corner, Imperial +Rossmoor, Orange +Rough and Ready, Nevada +Round Mountain, Shasta +Round Valley, Inyo +Rovana, Inyo +Rowland Heights, Los Angeles +Rubidoux, Riverside +Rucker, Santa Clara +Rumsey, Yolo +Running Springs, San +Ruth, Trinity +Rutherford, Napa +Ryan, Inyo +Ryde, Sacramento +Sabre City, Placer +Saco, Kern +Sage, Riverside +Salavador, Napa +Salida, Stanislaus +Salmon Creek, Sonoma +Salt Creek Lodge, Shasta +Saltdale, Kern +Salton, Riverside +Salyer, Trinity +Samoa, Humboldt +San Andreas, Calaveras +San Ardo, Monterey +San Benito, San Benito +San Felipe, Santa Clara +San Geronimo, Marin +San Gregorio, San Mateo +San Ignacio, San Diego +San Joaquin City, San +San Lorenzo, Alameda +San Lucas, Monterey +San Luis Rey, San Diego +San Martin, Santa Clara +San Miguel, San Luis Obispo +San Onofre, San +San Pasqual, San Diego +San Pedro, Los Angeles +San Quentin, Marin +San Simeon, San Luis Obispo +San Tomas, Santa Clara +San Ysidro, San Diego +Sanborn, Kern +Sandyland, Santa Barbara +Santa Margarita, San Luis +Obispo +Santa Nella, Merced +Santa Rita, Santa Barbara +Santa Susana, Ventura +Santa Venetia, Marin +Santa Ynez, Santa Barbara +Santa Ysabel, San Diego +Saticoy, Ventura +Sattley, Sierra +Saugus, Los Angeles +Saunders Meadow, Riverside +Sawyers Bar, Siskiyou +Scales, Sierra +Schellville, Sonoma +Sciots Camp, El Dorado +Scotia, Humboldt +Scott Bar, Siskiyou +Scott Dam, Lake +Scotts Corner, Alameda +Scottsville, Amador +Scottys Castle, Inyo +Scripps Ranch, San Diego +Sea Cliff, Ventura +Seahaven, Marin +Searchlight Junction, San Bernardino +Searles, Kern +Sears Point, Sonoma +Sedco Hills, Riverside +Seeley, Imperial +Seiad Valley, Siskiyou +Seigler Springs, Lake +Seneca, Plumas +Sepulveda, Los Angeles +Sequoia Crest, Tulare +Serena, Santa Barbara +Serena Park, Santa Barbara +Serene Lakes, Placer +Sereno Del Mar, Sonoma +Sespe, Ventura +Seven Pines, Inyo +Seville, Tulare +Shackelford, Stanislaus +Shadow Hills, Lake +Shady Dell, San Diego +Shady Glen, Placer +Shandon, San Luis Obispo +Sharp Park, San Mateo +Shasta, Shasta +Shaver, Fresno +Shaws Cove, Orange +Sheep Ranch, Calaveras +Sheldon, Sacramento +Shell Beach, San Luis Obispo +Shelter Cove, Humboldt +Sheridan, Placer +Sherman Oaks, Los Angeles +Sherwood Valley Indian +Rancheria, Mendocino +Shingletown, Shasta +Shively, Humboldt +Shore Acres, Contra Costa +Shoshone, Inyo +Sierra Brooks, Sierra +Sierra City, Sierra +Sierra Paradise, Mono +Sierraville, Sierra +Silver Strand, Ventura +Silverado, Orange +Simmler, San Luis Obispo +Simms, San Joaquin +Sisquoc, Santa Barbara +Sites, Colusa +Skidoo, Inyo +Skyforest, San Bernardino +Skyland, Placer +Skylonda, San Mateo +Sleepy Hollow, Marin +Sleepy Valley, Los Angeles +Sloat, Plumas +Sloughhouse, Sacramento +Smartville, Yuba +Smith River, Del Norte +Smith Station, Tuolumne +Smithflat, El Dorado +Snelling, Merced +Sobrante, Contra Costa +Soda Bay, Lake +Soda Springs, Nevad +Solemint, Los Angeles +Somerset, El Dorado +Somes Bar, Siskiyou +Somis, Ventura +Sonora Junction, Mono +Soquel, Santa Cruz +Soulsbyville, Tuolumne +Sousa Corner, Sonoma +Spanish Creek, Plumas +Spanish Diggings, El +Spanish Flat, Napa +Spanish Ranch, Plumas +Spaulding, Lassen +Spenceville, Nevada +Spicer City, Kern +Spreckels, Monterey +Spring Garden, Plumas +Spring Valley, San Diego +Springfield, Tuolumne +Springville, Tulare +Spruce Point, Humboldt +Squaw Valley, Placer +Squirrel Valley, Kern +Stafford, Humboldt +Stallion Springs, Kern +Standard, Tuolumne +Standfield Hill, Yuba +Standish, Lassen +Stanford, Santa Clara +Stanislaus, Tuolumne +Stateline, El Dorado +Stauffer, Ventura +Steele Park, Napa +Stent, Tuolumne +Stevinson, Merced +Stewarts Point, Sonoma +Stinson Beach, Marin +Stirling City, Butte +Stonyford, Colusa +Storrie, Plumas +Stovepipe Wells, Inyo +Stratford, Kings +Strathmore, Tulare +Strawberry, El Dorado +Studio City, Los Angeles +Sugarloaf, San Bernardino +Sugarpine, Tuolumne +Sulphur Springs, Ventura +Sultana, Tulare +Summerhome Park, Sonoma +Summerland, Santa Barbara +Summit City, Shasta +Sun City, Riverside +Sun Valley, Los Angeles +Suncrest, San Diego +Sunland, Los Angeles +Sunny Brae, Humboldt +Sunnybrook, Amador +Sunnymead, Riverside +Sunnyside, San Diego +Sunnyslope, Riverside +Sunol, Alameda +Sunset Beach, Orange +Sunset View, Nevada +Sunshine Camp, Tuolumne +Surf, Santa Barbara +Surfside, Orange +Sutter, Sutter +Sutter Hill, Amador +Swansea, Inyo +Swanton, Santa Cruz +Sweetbrier, Shasta +Sweetland, Nevada +Sycamore, Colusa +Sylmar, Los Angeles +Taft Heights, Kern +Tagus, Tulare +Tahoma, Placer +Talmage, Mendocino +Tamalpais Valley, Marin +Tamarack, Calaveras +Tancred, Yolo +Tara Hills, Contra Costa +Tarpey Village, Fresno +Tarzana, Los Angeles +Tassajara, Contra Costa +Taylorsville, Plumas +Tecate, San Diego +Tecopa, Inyo +Telegraph City, Calaveras +Temelec, Sonoma +Templeton, San Luis Obispo +Tennant, Siskiyou +Terminous, San Joaquin +Termo, Lassen +Terra Bella, Tulare +Terra Cotta, Riverside +Terra Linda, Marin +The Forks, Mendocino +The Highlands, San Mateo +The Homestead, San Joaquin +The Oaks, Los Angeles +The Willows, San Diego +Thermal, Riverside +Thermalands, Placer +Thermalito, Butte +Thornton, San Joaquin +Thousand Palms, Riverside +Three Rivers, Tulare +Tierra Buena, Sutter +Tierra Del Sol, San Diego +Tierrasanta, San Diego +Timber Lodge, Mariposa +Timberland, Placer +Tipton, Tulare +Tisdale, Sutter +Tobin, Plumas +Tollhouse, Fresno +Tomales, Marin +Tonyville, Tulare +Toolville, Tulare +Topanga, Los Angeles +Topanga Beach, Los Angeles +Topaz, Mono +Toro Canyon, Santa Barbara +Tower House, Shasta +Town and Country, +Town Talk, Nevada +Toyon, Shasta +Trabuco Canyon, Orange +Tranquillity, Fresno +Traver, Tulare +Treasure Island, San Francisco +Tres Pinos, San Benito +Trinidad Indian Res, +Humboldt +Trinity Center, Trinity +Trona, San Bernardino +Tropico, Kern +Trowbridge, Sutter +Troy, Placer +Trull, San Joaquin +Tryon Corner, Del Norte +Tudor, Sutter +Tujunga, Los Angeles +Tunnel Station, Los Angeles +Tuolumne, Tuolumne +Tupman, Kern +Tustin Foothills, Orange +Tuttle, Merced +Tuttletown, Tuolumne +Twain Harte, Tuolumne +Twin Bridges, El Dorado +Twin Cities, Sacramento +Twin Creeks, Santa Clara +Twin Lakes, Santa Cruz +Twin Oaks, San Diego +Twin Peaks, San Bernardino +Two Rock, Sonoma +Tyndall Landing, Yolo +Ultra, Tulare +Union Hill, Nevada +University City, San Diego +University Heights, San Diego +Usona, Mariposa +Uva, Fresno +Vacation Beach, Sonoma +Val Verde, Los Angeles +Valencia, Los Angeles +Valerie, Riverside +Valinda, Los Angeles +Valle Vista, Riverside +Vallecito, Calaveras +Vallemar, San Mateo +Valley Acres, Kern +Valley Center, San Diego +Valley Ford, Sonoma +Valley Home, Stanislaus +Valley of the Moon, San +Valley Ranch, Plumas +Valley Springs, Calaveras +Valley Wells, Inyo +Valyermo, Los Angeles +Van Nuys, Los Angeles +Vanguard, Fresno +Venice, Los Angeles +Ventu Park, Ventura +Ventucopa, Santa Barbara +Verdemont, San Bernardino +Verdi, Sierra +Verdugo City, Los Angeles +Vernalis, San Joaquin +Verona, Sutter +Vichy Springs, Mendocino +Vichy Springs, Napa +Victor, San Joaquin +Vidal, San Bernardino +Vidal Junction, San +View Park, Los Angeles +Villa Grande, Sonoma +Vina, Tehama +Vincent, Los Angeles +Vine Hill, Contra Costa +Vineburg, Sonoma +Vineyard, San Benito +Vinton, Plumas +Viola, Shasta +Virgilia, Plumas +Virginia Colony, Ventura +Vista Verde, San Mateo +Volcano, Amador +Volcanoville, El Dorado +Vollmers, Shasta +Volta, Merced +Vorden, Sacramento +Wahtoke Park, Fresno +Waits Station, Amador +Waldon, Contra Costa +Walerga, Sacramento +Walker, Mono +Wallace, Calaveras +Walnut Grove, Sacramento +Walnut Park, Los Angeles +Walsh Landing, Sonoma +Walthal, San Joaquin +Warm Springs, Alameda +Warner Springs, San Diego +Washington, Nevada +Washoe, Sonoma +Waterloo, San Joaquin +Waterman Canyon Station, +Watts, Los Angeles +Waukena, Tulare +Wawona, Mariposa +Weaverville, Trinity +Webb Station, Mariposa +Weed Patch, Kern +Weimar, Placer +Weitchpec, Humboldt +Weldon, Kern +Wellsona, San Luis Obispo +Wendel, Lassen +Wentworth Springs, El +Weott, Humboldt +Westborough, San Mateo +Westlake, San Mateo +Westley, Stanislaus +Westmont, Los Angeles +Westport, Mendocino +Westridge, San Mateo +Westville, Placer +Westwood, Lassen +Wheaton, San +Wheatville, Fresno +Wheeler Ridge, Kern +Whiskeytown, Shasta +Whispering Pines, Lake +White Hall, El Dorado +White Horse, Modoc +White Pines, Calaveras +White River, Tulare +White Wolf, Tuolumne +Whitehawk, Plumas +Whiteshore Cove, Mendocino +Whitethorn, Humboldt +Whitewater, Riverside +Whitley Gardens, San Luis +Whitlow, Humboldt +Whitmore, Shasta +Wilbur Springs, Colusa +Wildrose, Inyo +Wildwood, Trinity +Wilkerson, Inyo +Willow Creek, Humboldt +Willow Ranch, Modoc +Willowbrook, Los Angeles +Wilmington, Los Angeles +Wilseyville, Calaveras +Wilsonia, Tulare +Wilton, Sacramento +Winchester, Riverside +Windsor Hills, Los Angeles +Winnetka, Los Angeles +Winter Gardens, San Diego +Winterhaven, Imperial +Winton, Merced +Wishon, Madera +Witch Creek, San Diego +Witter Springs, Lake +Wofford Heights, Kern +Wolf, Nevada +Wonder Valley, Fresno +Woodacre, Marin +Woodbridge, San Joaquin +Woodcrest, Riverside +Woodford, Kern +Woodland Hills, Los Angeles +Woodleaf, Yuba +Woodside Highlands, San +Woodville, Tulare +Woody, Kern +Woolsey, Sonoma +Wrights Lake, El Dorado +Wrightwood, San Bernardino +Wyandotte, Butte +Wynola, San Diego +Yankee Hill, Butte +Yankee Jims, Placer +Yermo, San Bernardino +Yettem, Tulare +Yolo, Yolo +Yorkville, Mendocino +Zamora, Yolo +Zayante, Santa Cruz +Zenia, Trinity diff --git a/resources/unused_code.gd b/resources/unused_code.gd new file mode 100644 index 0000000..43570b5 --- /dev/null +++ b/resources/unused_code.gd @@ -0,0 +1,17 @@ +const airport_name_list = 'res://resources/airports.txt' +var airport_names = [] +const airport_difficulties = ["easy", "medium", "hard"] + +func load_airport_names(): + var f = File.new() + f.open(airport_name_list, File.READ) + var index = 1 + while not f.eof_reached(): # iterate through all lines until the end of file is reached + airport_names.push_back(f.get_line()) + f.close() + +func get_random_airport_name(exceptions=[]): + var name_index:int = randi() % len(airport_names) + while airport_names[name_index] in exceptions: + name_index = randi() % len(airport_names) + return airport_names[name_index] diff --git a/scripts/GameTable.gd b/scripts/GameTable.gd new file mode 100644 index 0000000..cbee40f --- /dev/null +++ b/scripts/GameTable.gd @@ -0,0 +1,207 @@ +tool +extends Spatial + +const num_mountains = {"easy" : 0, "medium" : 3, "hard" : 6} +const num_hills = {"easy" : 4, "medium" : 6, "hard" : 8} + +export var hex_side_length = 6 setget set_hex_side_len +export var airports_per_color = 6 setget set_airports_per_color +export var num_airport_colors = 3 setget set_num_airport_colors +export var _generate_board_editor: bool = false setget generate_board_editor + +export (String, "easy", "medium", "hard") var game_difficulty = "easy" + +# hex board represented in square-grid form like so (e.g., 3-length-side hex grid): +# x x x +# x x x x +# x x x x x +# x x x x +# x x x +# going up and to the right is done by decreasing the row by 1 +# going up and to the left is done by decreasing the row by 1 and the column by 1 +var board = [] +var available_board_coords = [] +enum { GROUND_LAYER, WEATHER_LAYER, PLANES_LAYER } + +# Y R B G +var airport_colors = [ Color(1, 1, 0), Color(1, 0, 0), Color(0.3, 0.3, 1), Color(0, 0.8, 0) ] +var airports = {} # id : HexSpace of cell_type airport + +onready var hex_space = preload("res://objects/HexSpace.tscn") + +# directions: E, NE, NW, W, SW, SE +const adjacent_offsets = [ [0,1] , [-1, 0], [-1, -1], [0, -1], [1, 0], [1, 1] ] + +# indices of the offsets that are valid cells to approach from +const approaches_i = {"easy": [0, 1, 2, 3, 4, 5], "medium" : [0,1,3,4], "hard" : [0,3]} + + +func _ready(): + if not Engine.editor_hint: + generate_hex_board() + generate_board_cells() + populate_board() + +func set_hex_side_len(side_length): + hex_side_length = side_length + +func set_airports_per_color(num_airports): + airports_per_color = num_airports + +func set_num_airport_colors(num_colors): + num_airport_colors = num_colors + +func generate_hex_board(): + var number_of_cells = 3*( pow(hex_side_length, 2) - hex_side_length) + 1 + var player_spaces = number_of_cells - 1 # center should always be a mountain + for node in $Board.get_children(): + $Board.remove_child(node) + board = [] # reset board + contents + available_board_coords = [] + var board_diameter = hex_side_length * 2 - 1 + for r in range(board_diameter): + var row_length: int = board_diameter - abs(r-(hex_side_length-1)) + + var row = [] + row.resize(board_diameter) + row.fill(null) # not in hex grid + + if r <= (hex_side_length - 1): + for i in range(row_length): + row[i] = [ 1, [], [] ] # ground cell, weather effects, planes + else: + for i in range(row_length): + row[board_diameter-1-i] = [ 1, [], [] ] # ground cell, weather effects, planes + + board.append(row) + + +func generate_board_cells(): + var cell_size_x = 1 # distance between center of two adjacent hex cells + var row_offset_y:float = cos(deg2rad(30)) * cell_size_x + var board_diam:int = len(board) + var side_len:int = ( board_diam + 1 ) / 2 + + for r in range(board_diam): + var row = board[r] + var z = row_offset_y * (r - board_diam/2) + var offset_x = abs(side_len - (r+1)) * (cell_size_x / 2.0) if (r+1) <= side_len else -1*abs(side_len - (r+1)) * (cell_size_x/2.0) + offset_x -= board_diam/2 * cell_size_x + for c in range(board_diam): + if row[c] == null: continue + var x = offset_x + c * cell_size_x + + var new_cell = hex_space.instance() + new_cell.call_deferred("set", "global_position", Vector3(x, randf()/15, z)) + $Board.add_child(new_cell) + + board[r][c][GROUND_LAYER] = new_cell + if (r == c) and (r == (board_diam/2)): # central cell always a mountain + var cell_type = "mountain" + var args = {} + args["rotation"] = randi() % 6 + new_cell.set_up(cell_type, args) + else: + available_board_coords.push_back( [r, c] ) + +# populate board with airports, hills, and mountains +# depending on game settings +func populate_board(): + var board_diam:int = len(board) + + for _m in range(num_mountains[game_difficulty]): + if len(available_board_coords) < 1: return null + var spot_i:int = randi() % len(available_board_coords) + var spot = available_board_coords[ spot_i ] + var args = {"rotation" : randi() % 6} + board[spot[0]][spot[1]][GROUND_LAYER].set_up("mountain", args) + available_board_coords.pop_at(spot_i) + + for _h in range(num_hills[game_difficulty]): + if len(available_board_coords) < 1: return null + var spot_i:int = randi() % len(available_board_coords) + var spot = available_board_coords[ spot_i ] + var args = {"rotation" : randi() % 6} + board[spot[0]][spot[1]][GROUND_LAYER].set_up("hills", args) + available_board_coords.pop_at(spot_i) + + var airport_id:int = 0 + for c in range(num_airport_colors): + for a in range(airports_per_color): + # find valid spot + var spot_okay:bool = false + var rot:int + var spot_r:int + var spot_c:int + var spot_i:int + var valid_approaches = [] + while (not spot_okay) and (len(available_board_coords) > 0): + spot_i = randi() % len(available_board_coords) + var spot = available_board_coords[ spot_i ] + spot_r = spot[0] + spot_c = spot[1] + + # should no longer be necessary + #if board[spot_r][spot_c] == null: continue + + var has_adjacent_airport = false + for offset in adjacent_offsets: # away from other airports + var new_r: int = spot_r + offset[0] + var new_c: int = spot_c + offset[1] + if new_r < 0 or new_c < 0 or new_r >= board_diam or new_c >= board_diam: # offset out of square grid + continue + var adjacent_cell = board[new_r][new_c] + if adjacent_cell != null and adjacent_cell[GROUND_LAYER].cell_type == "airport": + has_adjacent_airport = true + break + if has_adjacent_airport: + available_board_coords.pop_at(spot_i) + continue + + spot_okay = true + + # find rotation that leaves at least 1 runway open + rot = randi() % 3 + var rot_okay = false + for _i in range(3): + var rot_approaches = adjacent_offsets.slice(rot, 5) + if rot != 0: rot_approaches += adjacent_offsets.slice(0, rot - 1) + + var possible_approaches = [] + for approach_index in approaches_i[game_difficulty]: + possible_approaches.push_back(rot_approaches[approach_index]) + + var has_runway = false + for approach in possible_approaches: + var app_r: int = spot_r + approach[0] + var app_c: int = spot_c + approach[1] + if app_r < 0 or app_r >= board_diam or app_c < 0 or app_c >= board_diam: continue # out of square map + if board[app_r][app_c] == null: continue # out of hex map + if board[app_r][app_c][GROUND_LAYER].cell_type in ["hills", "mountain"]: continue # invalid approach square + has_runway = true + valid_approaches.push_back(approach) + + if has_runway: + rot_okay = true + break + else: + rot += 1 # rotate 60 deg (effectively) + if not rot_okay: + available_board_coords.pop_at(spot_i) + continue + + if not spot_okay: + print('couldnt find spot') + return null # could not form valid map + #print(c, " ", a, "(", spot_r, ", ", spot_c, ")") + var args = {"rotation" : rot, "airport_color" : airport_colors[c], "airport_number" : a+1, "airport_id" : airport_id, "difficulty" : game_difficulty, 'valid_approaches' : valid_approaches} + board[spot_r][spot_c][GROUND_LAYER].set_up("airport", args) + available_board_coords.pop_at(spot_i) + airport_id += 1 + + + +func generate_board_editor(_gbe): + generate_hex_board() + generate_board_cells() + populate_board() diff --git a/scripts/Globals.gd b/scripts/Globals.gd new file mode 100644 index 0000000..18f3d19 --- /dev/null +++ b/scripts/Globals.gd @@ -0,0 +1,7 @@ +extends Node + +# Y R B G W Cy Pk O P dG +const colors = [ Color(1, 1, 0), Color(1, 0, 0), Color(0.3, 0.3, 1), Color(0, 0.8, 0), Color(1, 1, 1), Color(0, 1, 1), Color(1, .35, 1), Color(1, 0.4, 0), Color(0.38, 0, 0.38), Color(0, 0.4, 0) ] + +func _ready(): + set_process(false) diff --git a/scripts/HexSpace.gd b/scripts/HexSpace.gd new file mode 100644 index 0000000..c8269fd --- /dev/null +++ b/scripts/HexSpace.gd @@ -0,0 +1,50 @@ +tool +extends StaticBody + +var cell_type : String = "normal" + +# airport variables +var airport_number : int +var airport_color : Color +var airport_id : int +# cell offsets that describe valid approaches based on runways and surroundings +# used to choose a takeoff position +const bearings = [ [0,1] , [-1, 0], [-1, -1], [0, -1], [1, 0], [1, 1] ] +var valid_approaches = [] +var valid_bearings = [] + + + +func _ready(): + pass + +func set_up(tile_type, settings={}): + valid_bearings = [] # reset + cell_type = tile_type + + if settings["rotation"]: # bearing according to E, NE, etc. + self.global_rotation.y = settings["rotation"] * deg2rad(60) + + if tile_type == "hills": + $Hills.visible = true + elif tile_type == "mountain": + $Mountain.visible = true + elif tile_type == "airport": + $Airport.visible = true + + airport_number = settings["airport_number"] + airport_color = settings["airport_color"] + valid_approaches = settings["valid_approaches"] + for approach in valid_approaches: + var bearing_i = bearings.find(approach) + valid_bearings.push_back(bearings[bearing_i]) + airport_id = settings["airport_id"] + + $Airport/AirportIcon.texture = load("res://textures/airport_indicator_%d.png" % airport_number) + $Airport/AirportIcon.modulate = airport_color + + if settings["difficulty"] == "easy": return + $Airport/EasyRunway.visible = false + if settings["difficulty"] == "hard": + $Airport/MediumRunway.visible = false + diff --git a/scripts/Plane.gd b/scripts/Plane.gd new file mode 100644 index 0000000..62ffc43 --- /dev/null +++ b/scripts/Plane.gd @@ -0,0 +1,44 @@ +extends Area + +var starting_altitude:int = 0 # initial altitude for the turn, determines number of actions +var altitude:int = 0 # 0, 1, or 2 +var pos_x:int +var pos_y:int + +onready var meshes = [$Fuselage, $Cone, $Wings, $Tail] + +# bearings: E, NE, NW, W, SW, SE +const bearings = [ [0,1] , [-1, 0], [-1, -1], [0, -1], [1, 0], [1, 1] ] +var bearing:int = 0 # index of above list of potential bearings + +var destination_num: int # for display purposes only +var destination_col: Color # for display purposes only +var destination_id: int # determines above ^ + +var rotation_tween: Tween = null + +var plane_material + +func _ready(): + plane_material = load("res://resources/blank_plane_material.material").duplicate() + for mesh in meshes: + mesh.set_surface_material(0, plane_material) + + var new_col = Color(randf(), randf(), randf() ) + print(new_col) + set_color(new_col) + + +func set_color(color: Color): + plane_material.set_albedo(color) + +func _on_Plane_mouse_entered(): + $ActionIndicator.visible = true + + +func _on_Plane_mouse_exited(): + $ActionIndicator.visible = false + + +func _on_Plane_input_event(camera, event, position, normal, shape_idx): + pass # Replace with function body. diff --git a/scripts/PlaneControlBoard.gd b/scripts/PlaneControlBoard.gd new file mode 100644 index 0000000..cfe94b5 --- /dev/null +++ b/scripts/PlaneControlBoard.gd @@ -0,0 +1,32 @@ +extends ColorRect + +onready var actions = [$ActionHBox/ActionSquare1, $ActionHBox/ActionSquare2, $ActionHBox/ActionSquare3, $ActionHBox/ActionSquare4, $ActionHBox/ActionSquare5] +onready var altitude_icons = [$AltitudeHBox/Altitude1, $AltitudeHBox/Altitude2, $AltitudeHBox/Altitude3] +var airport_indicators = [] + + +const modulate_selected: Color = Color(1, 1, 1) +const modulate_deselected: Color = Color(0.3, 0.3, 0.3) + +func _ready(): + for i in range(1,7): + airport_indicators.push_back(load("res://textures/airport_indicator_%i.png" % i)) + + for action in actions: + action.reset() + action.disable() + + $DestinationHBOX/DestinationIcon + +func set_altitude_vis(alt): + var index: int = 0 + for icon in altitude_icons: + icon.set_modulate( modulate_selected if index == alt else modulate_deselected ) + index += 1 + +func set_destination(number, color): + $DestinationHBOX/DestinationIcon.texture = airport_indicators[number - 1] + $DestinationHBOX/DestinationIcon.modulate = color + +func update_display_from_plane(plane): + pass diff --git a/scripts/ServerBrowser.gd b/scripts/ServerBrowser.gd new file mode 100644 index 0000000..2a1492e --- /dev/null +++ b/scripts/ServerBrowser.gd @@ -0,0 +1,71 @@ +extends Control + +onready var ws_client = $GameCoordinator +onready var game_list = $GameList + +enum { ANY, GAME_LIST, HOST_RESPONSE, JOIN_RESPONSE, PASSWORD_RESPONSE } + +var game_ids = [] + +# change this!!! +var game_coordinator_url = "ws://127.0.0.1:8181" +var awaiting_connection = false +var expecting = [] +var queued_messages = [] + +func _ready(): + refresh_game_list() + $RefreshButton.connect("pressed", self, "refresh_game_list") + +func join_game(): + $HostPopup.visible = false + $HostButton.disabled = true + $RefreshButton.disabled = true + var message = { "type" : "join_game" } + if ws_client.state != 2: + ws_client.sock_connect_to_url(game_coordinator_url) + queued_messages.push_back( message ) + awaiting_connection = true + else: + ws_client.send_json( message ) + +func host_game(): + pass + +func refresh_game_list(): + $JoinButton.disabled = true + game_ids.clear() + game_list.clear() + + var message = {"type" : "list_open_games"} + if ws_client.state != 2: + ws_client.sock_connect_to_url(game_coordinator_url) + queued_messages.push_back( message ) + awaiting_connection = true + else: + ws_client.send_json( message ) + +func add_games_to_list(games): + for game in games: + var game_str = game["game_name"] + " (" + str(int(game["current_players"])) + "/" + str(int(game["max_players"])) + ") (" +game["state"]+ ")" + (" (PRIVATE)" if game["private"] else "") + game_list.add_item( game_str, null, true if game["state"] == "LOBBY" else false ) + game_ids.append( game["id"] ) + +func handle_gc_message(msg): + if msg == null or msg.error: return + msg = msg.result + if msg["type"] == "game_list": + add_games_to_list(msg["games"]) + ws_client.send_json({"type" : "ack"}) + if msg["type"] == "error": + print(msg["message"]) + +func _process(_delta): + $GameCoordinatorStatus.text = "Game Coordinator Connection: " + str(ws_client.state) + if ws_client.state == 2: + if awaiting_connection: + awaiting_connection = false + for queued_message in queued_messages: + ws_client.send_json( queued_message ) + + handle_gc_message(ws_client.receive(true)) diff --git a/textures/airport_indicator_1.png b/textures/airport_indicator_1.png Binary files differnew file mode 100644 index 0000000..60a09d0 --- /dev/null +++ b/textures/airport_indicator_1.png diff --git a/textures/airport_indicator_1.png.import b/textures/airport_indicator_1.png.import new file mode 100644 index 0000000..dc6e9b0 --- /dev/null +++ b/textures/airport_indicator_1.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.s3tc.stex" +path.etc="res://.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.etc.stex" +metadata={ +"imported_formats": [ "s3tc", "etc" ], +"vram_texture": true +} + +[deps] + +source_file="res://textures/airport_indicator_1.png" +dest_files=[ "res://.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.s3tc.stex", "res://.import/airport_indicator_1.png-a7d726f45f704dec26debbfc4e3db7d1.etc.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=false +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/textures/airport_indicator_2.png b/textures/airport_indicator_2.png Binary files differnew file mode 100644 index 0000000..123ee90 --- /dev/null +++ b/textures/airport_indicator_2.png diff --git a/textures/airport_indicator_2.png.import b/textures/airport_indicator_2.png.import new file mode 100644 index 0000000..4b01f29 --- /dev/null +++ b/textures/airport_indicator_2.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.s3tc.stex" +path.etc="res://.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.etc.stex" +metadata={ +"imported_formats": [ "s3tc", "etc" ], +"vram_texture": true +} + +[deps] + +source_file="res://textures/airport_indicator_2.png" +dest_files=[ "res://.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.s3tc.stex", "res://.import/airport_indicator_2.png-3bac9bff8a274f068838e2bd039be4f8.etc.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=false +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/textures/airport_indicator_3.png b/textures/airport_indicator_3.png Binary files differnew file mode 100644 index 0000000..f3a99e1 --- /dev/null +++ b/textures/airport_indicator_3.png diff --git a/textures/airport_indicator_3.png.import b/textures/airport_indicator_3.png.import new file mode 100644 index 0000000..d495c86 --- /dev/null +++ b/textures/airport_indicator_3.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.s3tc.stex" +path.etc="res://.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.etc.stex" +metadata={ +"imported_formats": [ "s3tc", "etc" ], +"vram_texture": true +} + +[deps] + +source_file="res://textures/airport_indicator_3.png" +dest_files=[ "res://.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.s3tc.stex", "res://.import/airport_indicator_3.png-850a599db19a0f8ddf1b9f895558963a.etc.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/textures/airport_indicator_4.png b/textures/airport_indicator_4.png Binary files differnew file mode 100644 index 0000000..951e747 --- /dev/null +++ b/textures/airport_indicator_4.png diff --git a/textures/airport_indicator_4.png.import b/textures/airport_indicator_4.png.import new file mode 100644 index 0000000..9655515 --- /dev/null +++ b/textures/airport_indicator_4.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.s3tc.stex" +path.etc="res://.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.etc.stex" +metadata={ +"imported_formats": [ "s3tc", "etc" ], +"vram_texture": true +} + +[deps] + +source_file="res://textures/airport_indicator_4.png" +dest_files=[ "res://.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.s3tc.stex", "res://.import/airport_indicator_4.png-dc57ba9b5d0220817ed172bc092766f8.etc.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/textures/airport_indicator_5.png b/textures/airport_indicator_5.png Binary files differnew file mode 100644 index 0000000..1a2cc11 --- /dev/null +++ b/textures/airport_indicator_5.png diff --git a/textures/airport_indicator_5.png.import b/textures/airport_indicator_5.png.import new file mode 100644 index 0000000..1d4efc0 --- /dev/null +++ b/textures/airport_indicator_5.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.s3tc.stex" +path.etc="res://.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.etc.stex" +metadata={ +"imported_formats": [ "s3tc", "etc" ], +"vram_texture": true +} + +[deps] + +source_file="res://textures/airport_indicator_5.png" +dest_files=[ "res://.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.s3tc.stex", "res://.import/airport_indicator_5.png-188edacc43d222c929ce575c4049e8d0.etc.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/textures/airport_indicator_6.png b/textures/airport_indicator_6.png Binary files differnew file mode 100644 index 0000000..cd4254e --- /dev/null +++ b/textures/airport_indicator_6.png diff --git a/textures/airport_indicator_6.png.import b/textures/airport_indicator_6.png.import new file mode 100644 index 0000000..6301c0b --- /dev/null +++ b/textures/airport_indicator_6.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.s3tc.stex" +path.etc="res://.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.etc.stex" +metadata={ +"imported_formats": [ "s3tc", "etc" ], +"vram_texture": true +} + +[deps] + +source_file="res://textures/airport_indicator_6.png" +dest_files=[ "res://.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.s3tc.stex", "res://.import/airport_indicator_6.png-838677d2e506fbd1b34fe0e414171fdf.etc.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/textures/airport_indicator_7.png b/textures/airport_indicator_7.png Binary files differnew file mode 100644 index 0000000..7939c10 --- /dev/null +++ b/textures/airport_indicator_7.png diff --git a/textures/airport_indicator_7.png.import b/textures/airport_indicator_7.png.import new file mode 100644 index 0000000..6aa0d0a --- /dev/null +++ b/textures/airport_indicator_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/airport_indicator_7.png-8aef28698dc5e90e4f05a781ef0a4b66.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/airport_indicator_7.png" +dest_files=[ "res://.import/airport_indicator_7.png-8aef28698dc5e90e4f05a781ef0a4b66.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/textures/airport_indicator_8.png b/textures/airport_indicator_8.png Binary files differnew file mode 100644 index 0000000..a7446f1 --- /dev/null +++ b/textures/airport_indicator_8.png diff --git a/textures/airport_indicator_8.png.import b/textures/airport_indicator_8.png.import new file mode 100644 index 0000000..a814b9d --- /dev/null +++ b/textures/airport_indicator_8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/airport_indicator_8.png-89eae2d53f3fde02be5a1e362fa90166.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/airport_indicator_8.png" +dest_files=[ "res://.import/airport_indicator_8.png-89eae2d53f3fde02be5a1e362fa90166.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/textures/airport_indicator_9.png b/textures/airport_indicator_9.png Binary files differnew file mode 100644 index 0000000..6504072 --- /dev/null +++ b/textures/airport_indicator_9.png diff --git a/textures/airport_indicator_9.png.import b/textures/airport_indicator_9.png.import new file mode 100644 index 0000000..88b0b93 --- /dev/null +++ b/textures/airport_indicator_9.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/airport_indicator_9.png-d7d739cd9cd4206419984a8a11b24119.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/airport_indicator_9.png" +dest_files=[ "res://.import/airport_indicator_9.png-d7d739cd9cd4206419984a8a11b24119.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/textures/ascend.png b/textures/ascend.png Binary files differnew file mode 100644 index 0000000..7c8e969 --- /dev/null +++ b/textures/ascend.png diff --git a/textures/ascend.png.import b/textures/ascend.png.import new file mode 100644 index 0000000..3cd894c --- /dev/null +++ b/textures/ascend.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ascend.png-baee808945f3f047e3ffa74f8f004694.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/ascend.png" +dest_files=[ "res://.import/ascend.png-baee808945f3f047e3ffa74f8f004694.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/textures/descend.png b/textures/descend.png Binary files differnew file mode 100644 index 0000000..282b5d3 --- /dev/null +++ b/textures/descend.png diff --git a/textures/descend.png.import b/textures/descend.png.import new file mode 100644 index 0000000..cae5bd6 --- /dev/null +++ b/textures/descend.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/descend.png-2b127daf15c82c1a4c295b0f6dc0de52.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/descend.png" +dest_files=[ "res://.import/descend.png-2b127daf15c82c1a4c295b0f6dc0de52.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/textures/gradient_transparent.png b/textures/gradient_transparent.png Binary files differnew file mode 100644 index 0000000..2ba863e --- /dev/null +++ b/textures/gradient_transparent.png diff --git a/textures/gradient_transparent.png.import b/textures/gradient_transparent.png.import new file mode 100644 index 0000000..9657fea --- /dev/null +++ b/textures/gradient_transparent.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.s3tc.stex" +path.etc="res://.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.etc.stex" +metadata={ +"imported_formats": [ "s3tc", "etc" ], +"vram_texture": true +} + +[deps] + +source_file="res://textures/gradient_transparent.png" +dest_files=[ "res://.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.s3tc.stex", "res://.import/gradient_transparent.png-6b5f39f2570cc6253db5e63df2b2867c.etc.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/textures/plane_action_indicator_board.png b/textures/plane_action_indicator_board.png Binary files differnew file mode 100644 index 0000000..a92cde4 --- /dev/null +++ b/textures/plane_action_indicator_board.png diff --git a/textures/plane_action_indicator_board.png.import b/textures/plane_action_indicator_board.png.import new file mode 100644 index 0000000..141e0af --- /dev/null +++ b/textures/plane_action_indicator_board.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/plane_action_indicator_board.png-587c22d3b3f1e80978e005a6fa5c8a9f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/plane_action_indicator_board.png" +dest_files=[ "res://.import/plane_action_indicator_board.png-587c22d3b3f1e80978e005a6fa5c8a9f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/textures/turn_ccw.png b/textures/turn_ccw.png Binary files differnew file mode 100644 index 0000000..d5b6fb0 --- /dev/null +++ b/textures/turn_ccw.png diff --git a/textures/turn_ccw.png.import b/textures/turn_ccw.png.import new file mode 100644 index 0000000..154ca31 --- /dev/null +++ b/textures/turn_ccw.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turn_ccw.png-e16b9f191e378e10370b4656d06f96f7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/turn_ccw.png" +dest_files=[ "res://.import/turn_ccw.png-e16b9f191e378e10370b4656d06f96f7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/textures/turn_cw.png b/textures/turn_cw.png Binary files differnew file mode 100644 index 0000000..4c91709 --- /dev/null +++ b/textures/turn_cw.png diff --git a/textures/turn_cw.png.import b/textures/turn_cw.png.import new file mode 100644 index 0000000..7952302 --- /dev/null +++ b/textures/turn_cw.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turn_cw.png-19a47ff445504cb5070b31253c008688.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/turn_cw.png" +dest_files=[ "res://.import/turn_cw.png-19a47ff445504cb5070b31253c008688.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/textures/wood_board_knotty.png b/textures/wood_board_knotty.png Binary files differnew file mode 100644 index 0000000..e4b514e --- /dev/null +++ b/textures/wood_board_knotty.png diff --git a/textures/wood_board_knotty.png.import b/textures/wood_board_knotty.png.import new file mode 100644 index 0000000..6213f57 --- /dev/null +++ b/textures/wood_board_knotty.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.s3tc.stex" +path.etc="res://.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.etc.stex" +metadata={ +"imported_formats": [ "s3tc", "etc" ], +"vram_texture": true +} + +[deps] + +source_file="res://textures/wood_board_knotty.png" +dest_files=[ "res://.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.s3tc.stex", "res://.import/wood_board_knotty.png-6339835a5a3698347d3cf66813c3ce0c.etc.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 |
