From f39e0de9b7fc9c239f67642ce458407ff085c8fd Mon Sep 17 00:00:00 2001 From: Andrey Lesnikov Date: Fri, 22 Mar 2024 19:52:18 +0300 Subject: [PATCH] WIP: other version updates, sorry --- Cargo.lock | 499 ++++++++++++++------------------- Cargo.toml | 6 +- src/core/battle/state.rs | 5 +- src/core/battle/state/apply.rs | 2 +- src/error.rs | 9 +- src/screen/agent_info.rs | 16 +- src/screen/battle.rs | 30 +- src/screen/battle/view.rs | 12 +- src/screen/battle/visualize.rs | 28 +- src/screen/campaign.rs | 26 +- src/screen/confirm.rs | 8 +- src/screen/general_info.rs | 4 +- src/screen/main_menu.rs | 4 +- zgui/Cargo.toml | 2 +- zgui/examples/common/mod.rs | 20 +- zgui/examples/nested.rs | 4 +- zgui/examples/remove.rs | 4 +- zgui/src/lib.rs | 13 +- zscene/Cargo.toml | 2 +- zscene/examples/action.rs | 19 +- zscene/src/sprite.rs | 26 +- 21 files changed, 310 insertions(+), 429 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e7897329..f199264b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,40 +10,71 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] -name = "audir-sles" -version = "0.1.0" +name = "anstream" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea47348666a8edb7ad80cbee3940eb2bccf70df0e6ce09009abe1a836cb779f5" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" [[package]] -name = "audrey" -version = "0.3.0" +name = "anstyle-parse" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58b92a84e89497e3cd25d3672cd5d1c288abaac02c18ff21283f17d118b889b8" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ - "dasp_frame", - "dasp_sample", - "hound", - "lewton", + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys", ] [[package]] @@ -54,9 +85,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "base64" -version = "0.13.1" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "bitflags" @@ -65,28 +96,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] -name = "bumpalo" -version = "3.13.0" +name = "bitflags" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +dependencies = [ + "serde", +] [[package]] -name = "bytemuck" -version = "1.13.1" +name = "bumpalo" +version = "3.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" [[package]] -name = "byteorder" -version = "1.4.3" +name = "bytemuck" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" [[package]] -name = "cc" -version = "1.0.79" +name = "byteorder" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cfg-if" @@ -100,6 +134,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + [[package]] name = "convert_case" version = "0.4.0" @@ -108,38 +148,13 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] -[[package]] -name = "ctor" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "dasp_frame" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a3937f5fe2135702897535c8d4a5553f8b116f76c1529088797f2eee7c5cd6" -dependencies = [ - "dasp_sample", -] - -[[package]] -name = "dasp_sample" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" - [[package]] name = "derive_more" version = "0.99.17" @@ -160,53 +175,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" [[package]] -name = "env_logger" -version = "0.10.0" +name = "env_filter" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" dependencies = [ - "humantime", - "is-terminal", "log", "regex", - "termcolor", ] [[package]] -name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "env_logger" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" dependencies = [ - "cc", - "libc", + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", ] [[package]] name = "fdeflate" -version = "0.3.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" dependencies = [ "simd-adler32", ] [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -239,21 +243,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" - -[[package]] -name = "hound" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d13cdbd5dbb29f9c88095bbdc2590c9cba0d0a1269b983fef6b2cdd7e9f4db1" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "humantime" @@ -263,75 +255,34 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "image" -version = "0.24.6" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" dependencies = [ "bytemuck", "byteorder", "color_quant", - "num-rational", "num-traits", "png", ] -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys", -] - -[[package]] -name = "is-terminal" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" -dependencies = [ - "hermit-abi", - "io-lifetimes", - "rustix", - "windows-sys", -] - -[[package]] -name = "lewton" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d542c1a317036c45c2aa1cf10cc9d403ca91eb2d333ef1a4917e5cb10628bd0" -dependencies = [ - "byteorder", - "ogg", - "smallvec", -] - [[package]] name = "libc" -version = "0.2.146" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" - -[[package]] -name = "linux-raw-sys" -version = "0.3.8" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "log" -version = "0.4.18" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518ef76f2f87365916b142844c16d8fefd85039bc5699050210a7778ee1cd1de" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "macroquad" -version = "0.3.25" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3790f7fd2e4c480108cbfc86488f023b72e1e0bb6ffd5c6cba38049c7e2fbfc" +checksum = "002647f9301eb8827145a6ae71f1fc0b0441d3a3e0648146e3c7de926e78c37d" dependencies = [ "bumpalo", "fontdue", @@ -340,7 +291,7 @@ dependencies = [ "macroquad_macro", "miniquad", "quad-rand", - "quad-snd", + "slotmap", ] [[package]] @@ -358,23 +309,17 @@ dependencies = [ "libc", ] -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "miniquad" -version = "0.3.14" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46381fe09fbf91bfa402a3e4fc26a104c9130562d51f89964c46adbc00591496" +checksum = "91e9c578ad261f84512751bfdd9919c762ecd6103d06051fbdaede35136e1988" dependencies = [ "libc", "ndk-sys", @@ -384,9 +329,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", "simd-adler32", @@ -400,9 +345,9 @@ checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" [[package]] name = "num" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" dependencies = [ "num-complex", "num-integer", @@ -413,28 +358,27 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" dependencies = [ "num-traits", ] [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" dependencies = [ "autocfg", "num-integer", @@ -454,9 +398,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] @@ -470,37 +414,19 @@ dependencies = [ "malloc_buf", ] -[[package]] -name = "ogg" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e571c3517af9e1729d4c63571a27edd660ade0667973bfc74a67c660c2b651" -dependencies = [ - "byteorder", -] - [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "output_vt100" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" -dependencies = [ - "winapi", -] +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "png" -version = "0.17.8" +version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" dependencies = [ - "bitflags", + "bitflags 1.3.2", "crc32fast", "fdeflate", "flate2", @@ -509,34 +435,23 @@ dependencies = [ [[package]] name = "pretty_assertions" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755" +checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" dependencies = [ - "ctor", "diff", - "output_vt100", "yansi", ] [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] -[[package]] -name = "quad-alsa-sys" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66c2f04a6946293477973d85adc251d502da51c57b08cd9c997f0cfd8dcd4b5" -dependencies = [ - "libc", -] - [[package]] name = "quad-rand" version = "0.2.1" @@ -546,24 +461,11 @@ dependencies = [ "rand", ] -[[package]] -name = "quad-snd" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53c954bb70493a2872775b74b663a767686e6d96d242e789d6a92cc4ebd2a64e" -dependencies = [ - "audir-sles", - "audrey", - "libc", - "quad-alsa-sys", - "winapi", -] - [[package]] name = "quote" -version = "1.0.28" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -585,9 +487,21 @@ checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" [[package]] name = "regex" -version = "1.8.4" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", @@ -596,19 +510,20 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.2" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "ron" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300a51053b1cb55c80b7a9fde4120726ddf25ca241a1cbb926626f62fb136bff" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64", - "bitflags", + "bitflags 2.5.0", "serde", + "serde_derive", ] [[package]] @@ -620,59 +535,45 @@ dependencies = [ "semver", ] -[[package]] -name = "rustix" -version = "0.37.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" -dependencies = [ - "bitflags", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys", - "windows-sys", -] - [[package]] name = "semver" -version = "1.0.17" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.53", ] [[package]] name = "simd-adler32" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] -name = "smallvec" -version = "0.6.14" +name = "slotmap" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" dependencies = [ - "maybe-uninit", + "version_check", ] [[package]] @@ -688,24 +589,15 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.18" +version = "2.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "termcolor" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -dependencies = [ - "winapi-util", -] - [[package]] name = "ttf-parser" version = "0.15.2" @@ -714,9 +606,15 @@ checksum = "7b3e06c9b9d80ed6b745c7159c40b311ad2916abb34a49e9be2653b90db0d8dd" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "version_check" @@ -740,15 +638,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -757,18 +646,18 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ "windows-targets", ] [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -781,45 +670,45 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] name = "yansi" @@ -852,6 +741,26 @@ dependencies = [ "zscene", ] +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.53", +] + [[package]] name = "zgui" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 026196fa..b1e3761a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ assets = "assets/" [dependencies] ron = "0.8" log = "0.4" -env_logger = "0.10" +env_logger = "0.11" derive_more = { version = "0.99", features = ["from"] } # TODO: https://github.com/ozkriff/zemeroth/issues/251 serde = { version = "1.0", features = ["derive"] } num = { version = "0.4", default-features = false } @@ -27,8 +27,8 @@ zscene = { path = "zscene" } zcomponents = { path = "zcomponents" } rand = { version = "0.8", default-features = false, features = ["alloc"] } quad-rand = { version = "0.2", features = ["rand"] } -mq = { package = "macroquad", version = "0.3" } -heck = "0.4.1" +mq = { package = "macroquad", version = "0.4" } +heck = "0.5" once_cell = "1.6" [dev-dependencies] diff --git a/src/core/battle/state.rs b/src/core/battle/state.rs index b3799eb3..423ef2ba 100644 --- a/src/core/battle/state.rs +++ b/src/core/battle/state.rs @@ -9,10 +9,7 @@ use crate::core::{ utils, }; -pub use self::{ - apply::apply, - private::{BattleResult, State}, -}; +pub use self::private::{BattleResult, State}; mod apply; mod private; diff --git a/src/core/battle/state/apply.rs b/src/core/battle/state/apply.rs index 2ba8250c..661fcb5f 100644 --- a/src/core/battle/state/apply.rs +++ b/src/core/battle/state/apply.rs @@ -195,7 +195,7 @@ fn apply_event_use_ability(state: &mut State, event: &event::UseAbility) { } Ability::Summon => { assert!(parts.summoner.get_opt(id).is_some()); - let mut summoner = parts.summoner.get_mut(id); + let summoner = parts.summoner.get_mut(id); summoner.count += 1; } _ => {} diff --git a/src/error.rs b/src/error.rs index 55a3a6dd..10fad03e 100644 --- a/src/error.rs +++ b/src/error.rs @@ -9,8 +9,7 @@ pub enum ZError { path: PathBuf, }, IO(io::Error), - MqFile(mq::file::FileError), - MqFont(mq::text::FontError), + Mq(mq::Error), } impl ZError { @@ -29,8 +28,7 @@ impl fmt::Display for ZError { write!(f, "Can't deserialize '{}': {}", s, error) } ZError::IO(ref e) => write!(f, "IO Error: {}", e), - ZError::MqFile(ref e) => write!(f, "Macroquad File error: {}", e), - ZError::MqFont(ref e) => write!(f, "Macroquad Font error: {}", e), + ZError::Mq(ref e) => write!(f, "Macroquad error: {}", e), } } } @@ -42,8 +40,7 @@ impl error::Error for ZError { ZError::Scene(ref e) => Some(e), ZError::RonDeserialize { error, .. } => Some(error), ZError::IO(ref e) => Some(e), - ZError::MqFile(ref e) => Some(e), - ZError::MqFont(ref e) => Some(e), + ZError::Mq(ref e) => Some(e), } } } diff --git a/src/screen/agent_info.rs b/src/screen/agent_info.rs index a61af7c8..ea7b963f 100644 --- a/src/screen/agent_info.rs +++ b/src/screen/agent_info.rs @@ -57,7 +57,7 @@ fn agent_image(typename: &ObjType) -> ZResult> { let h = 0.3; let assets = &assets::get(); let default_frame = ""; - let texture = Drawable::Texture(assets.sprite_frames[typename][default_frame]); + let texture = Drawable::Texture(assets.sprite_frames[typename][default_frame].clone()); let label = ui::Label::new(texture, h)? .with_color(Color::new(1.0, 1.0, 1.0, 1.0)) .stretchable(true); @@ -76,7 +76,7 @@ fn info_panel( prototypes: &Prototypes, typename: &ObjType, ) -> ZResult> { - let font = assets::get().font; + let font = assets::get().font.clone(); let proto = &prototypes.0[typename]; let info = StaticObjectInfo::new(typename, proto); let h = utils::line_heights().normal; @@ -84,7 +84,7 @@ fn info_panel( let mut layout = Box::new(ui::VLayout::new().stretchable(true)); layout.add(agent_image(typename)?); let mut add = |w| layout.add(w); - let text_ = |s: &str| ui::Drawable::text(s, font); + let text_ = |s: &str| ui::Drawable::text(s, font.clone()); let label_ = |text: &str| -> ZResult<_> { Ok(ui::Label::new(text_(text), h)?) }; let label = |text: &str| -> ZResult> { Ok(Box::new(label_(text)?)) }; let label_s = |text: &str| -> ZResult<_> { Ok(Box::new(label_(text)?.stretchable(true))) }; @@ -148,7 +148,7 @@ fn info_panel( let mut line_layout = ui::HLayout::new().stretchable(true); line_layout.add(label(&text)?); line_layout.add(spacer_s()); - let icon = Drawable::Texture(assets::get().textures.icons.info); + let icon = Drawable::Texture(assets::get().textures.icons.info.clone()); let message = Message::AbilityInfo(r_ability.ability); let button = ui::Button::new(icon, h, gui.sender(), message)?; line_layout.add(Box::new(button)); @@ -164,7 +164,7 @@ fn info_panel( let mut line_layout = ui::HLayout::new().stretchable(true); line_layout.add(label(&ability.title())?); line_layout.add(spacer_s()); - let icon = Drawable::Texture(assets::get().textures.icons.info); + let icon = Drawable::Texture(assets::get().textures.icons.info.clone()); let message = Message::PassiveAbilityInfo(ability); let button = ui::Button::new(icon, h, gui.sender(), message)?; line_layout.add(Box::new(button)); @@ -179,7 +179,7 @@ fn info_panel( } fn button_back(gui: &mut ui::Gui, layout_width: f32) -> ZResult> { - let font = assets::get().font; + let font = assets::get().font.clone(); let h = utils::line_heights().normal; let text = ui::Drawable::text("back", font); let msg = Message::Back; @@ -213,7 +213,7 @@ impl AgentInfo { from: &ObjType, to: &ObjType, ) -> ZResult { - let font = assets::get().font; + let font = assets::get().font.clone(); let mut gui = ui::Gui::new(); let mut layout = ui::VLayout::new(); let h = utils::line_heights().big; @@ -226,7 +226,7 @@ impl AgentInfo { let col = { let mut col = Box::new(ui::VLayout::new()); col.add(Box::new(ui::Spacer::new_vertical(panel_from_height * 0.5))); - let text = ui::Drawable::text("=>", font); + let text = ui::Drawable::text("=>", font.clone()); col.add(Box::new(ui::Label::new(text, h)?)); col }; diff --git a/src/screen/battle.rs b/src/screen/battle.rs index 87053c4d..cdac766f 100644 --- a/src/screen/battle.rs +++ b/src/screen/battle.rs @@ -62,8 +62,8 @@ fn line_with_info_button( message: Message, ) -> ZResult> { let h = line_heights().normal; - let font = assets::get().font; - let icon = textures().icons.info; + let font = assets::get().font.clone(); + let icon = textures().icons.info.clone(); let button = ui::Button::new(ui::Drawable::Texture(icon), h, gui.sender(), message)?; let mut line = Box::new(ui::HLayout::new().stretchable(true)); line.add(Box::new(ui::Label::new(ui::Drawable::text(text, font), h)?)); @@ -74,7 +74,7 @@ fn line_with_info_button( // TODO: consider moving ui `build_*` functions to a sub-module fn build_panel_agent_info(gui: &mut Gui, state: &State, id: Id) -> ZResult { - let font = assets::get().font; + let font = assets::get().font.clone(); let parts = state.parts(); let st = parts.strength.get(id); let meta = parts.meta.get(id); @@ -83,7 +83,7 @@ fn build_panel_agent_info(gui: &mut Gui, state: &State, id: Id) -> ZRes let h = line_heights().normal; let space_between_buttons = h / 8.0; let mut add = |w| layout.add(w); - let text_ = |s: &str| ui::Drawable::text(s, font); + let text_ = |s: &str| ui::Drawable::text(s, font.clone()); let label_ = |text: &str| -> ZResult<_> { Ok(ui::Label::new(text_(text), h)?) }; let label = |text: &str| -> ZResult> { Ok(Box::new(label_(text)?)) }; let label_s = |text: &str| -> ZResult<_> { Ok(Box::new(label_(text)?.stretchable(true))) }; @@ -102,7 +102,7 @@ fn build_panel_agent_info(gui: &mut Gui, state: &State, id: Id) -> ZRes drawable_k: 0.3, ..Default::default() }; - let label_dot = ui::Label::from_params(ui::Drawable::Texture(textures().dot), h, param)? + let label_dot = ui::Label::from_params(ui::Drawable::Texture(textures().dot.clone()), h, param)? .with_color(dot_color); line.add(Box::new(label_dot)); line.add(Box::new(ui::Spacer::new_horizontal(h * 0.1))); @@ -185,8 +185,8 @@ fn build_panel_agent_info(gui: &mut Gui, state: &State, id: Id) -> ZRes effect::Duration::Rounds(n) => format!("{} ({}t)", s, n), }; let message = Message::LastingEffectInfo(effect.effect); - let text = ui::Drawable::text(text, font); - let tex_info = ui::Drawable::Texture(textures().icons.info); + let text = ui::Drawable::text(text, font.clone()); + let tex_info = ui::Drawable::Texture(textures().icons.info.clone()); let button_info = ui::Button::new(tex_info, h, gui.sender(), message)?; let icon_effect = visualize::get_effect_icon(&effect.effect); let param = ui::LabelParam { @@ -222,7 +222,7 @@ fn build_panel_agent_abilities( id: Id, mode: &SelectionMode, ) -> ZResult> { - let font = assets::get().font; + let font = &assets::get().font; let parts = state.parts(); let abilities = match parts.abilities.get_opt(id) { Some(abilities) => &abilities.0, @@ -232,8 +232,8 @@ fn build_panel_agent_abilities( let h = line_heights().large; for ability in abilities { let icons = &assets::get().textures.icons.abilities; - let texture = *icons.get(&ability.ability).expect("No such icon found"); - let drawable = ui::Drawable::Texture(texture); + let texture = icons.get(&ability.ability).expect("No such icon found"); + let drawable = ui::Drawable::Texture(texture.clone()); let msg = Message::Ability(ability.ability); let mut button = ui::Button::new(drawable, h, gui.sender(), msg)?; if !state::can_agent_use_ability(state, id, &ability.ability) { @@ -247,7 +247,7 @@ fn build_panel_agent_abilities( if let ability::Status::Cooldown(n) = ability.status { let mut layers = ui::LayersLayout::new(); layers.add(Box::new(button)); - let text = ui::Drawable::text(format!(" ({})", n).as_str(), font); + let text = ui::Drawable::text(format!(" ({})", n).as_str(), font.clone()); let label = ui::Label::new(text, h / 2.0)?; layers.add(Box::new(label)); layout.add(Box::new(layers)); @@ -264,7 +264,7 @@ fn build_panel_agent_abilities( fn build_panel_end_turn(gui: &mut Gui) -> ZResult { let h = line_heights().large; - let tex = ui::Drawable::Texture(textures().icons.end_turn); + let tex = ui::Drawable::Texture(textures().icons.end_turn.clone()); let button = ui::Button::new(tex, h, gui.sender(), Message::EndTurn)?; let layout = ui::VLayout::from_widget(Box::new(button)); let anchor = ui::Anchor(ui::HAnchor::Right, ui::VAnchor::Bottom); @@ -279,8 +279,8 @@ fn build_panel_ability_description( ability: &Ability, id: Id, ) -> ZResult { - let font = assets::get().font; - let text = |s: &str| ui::Drawable::text(s, font); + let font = &assets::get().font; + let text = |s: &str| ui::Drawable::text(s, font.clone()); let h = line_heights().normal; let mut layout = Box::new(ui::VLayout::new().stretchable(true)); let text_title = text(&format!("~~~ {} ~~~", ability.title())); @@ -326,7 +326,7 @@ fn build_panel_ability_description( fn make_gui() -> ZResult> { let mut gui = ui::Gui::new(); let h = line_heights().large; - let icon = textures().icons.main_menu; + let icon = textures().icons.main_menu.clone(); let button = ui::Button::new(ui::Drawable::Texture(icon), h, gui.sender(), Message::Exit)?; let layout = ui::VLayout::from_widget(Box::new(button)); let anchor = ui::Anchor(ui::HAnchor::Left, ui::VAnchor::Top); diff --git a/src/screen/battle/view.rs b/src/screen/battle/view.rs index 10aba9a8..b7b001c0 100644 --- a/src/screen/battle/view.rs +++ b/src/screen/battle/view.rs @@ -177,7 +177,7 @@ impl BattleView { let tile_size = tile_size(map_diameter); let make_marker_sprite = |color: Color| -> ZResult { let h = tile_size * 2.0 * geom::FLATNESS_COEFFICIENT; - let mut sprite = Sprite::from_texture(textures().map.selection, h); + let mut sprite = Sprite::from_texture(&textures().map.selection, h); sprite.set_centered(true); sprite.set_color(color); Ok(sprite) @@ -470,7 +470,7 @@ impl BattleView { fn highlight_tile(&mut self, pos: PosHex, color: Color) -> ZResult { let size = self.tile_size() * 2.0 * geom::FLATNESS_COEFFICIENT; - let mut sprite = Sprite::from_texture(textures().map.white_hex, size); + let mut sprite = Sprite::from_texture(&textures().map.white_hex, size); let color_from = Color { a: 0.0, ..color }; sprite.set_centered(true); sprite.set_color(color_from); @@ -491,7 +491,7 @@ impl BattleView { let chances = hit_chance(state, attacker_id, target_id); let pos = hex_to_point(self.tile_size(), target_pos); let text = format!("{}%", chances.1 * 10); - let font = assets::get().font; + let font = &assets::get().font; let mut sprite = Sprite::from_text((text.as_str(), font), 0.1); sprite.set_pos(pos); sprite.set_centered(true); @@ -506,8 +506,8 @@ impl BattleView { fn make_action_show_tile(state: &State, view: &BattleView, at: PosHex) -> ZResult> { let screen_pos = hex_to_point(view.tile_size(), at); let texture = match state.map().tile(at) { - TileType::Plain => textures().map.tile, - TileType::Rocks => textures().map.tile_rocks, + TileType::Plain => &textures().map.tile, + TileType::Rocks => &textures().map.tile_rocks, }; let size = view.tile_size() * 2.0 * geom::FLATNESS_COEFFICIENT; let mut sprite = Sprite::from_texture(texture, size); @@ -518,7 +518,7 @@ fn make_action_show_tile(state: &State, view: &BattleView, at: PosHex) -> ZResul fn make_action_grass(view: &BattleView, at: PosHex) -> ZResult> { let screen_pos = hex_to_point(view.tile_size(), at); - let mut sprite = Sprite::from_texture(textures().map.grass, view.tile_size() * 2.0); + let mut sprite = Sprite::from_texture(&textures().map.grass, view.tile_size() * 2.0); let v_offset = view.tile_size() * 0.5; // depends on the image let mut screen_pos_grass = screen_pos + geom::rand_tile_offset(view.tile_size(), 0.5); screen_pos_grass.y -= v_offset; diff --git a/src/screen/battle/visualize.rs b/src/screen/battle/visualize.rs index 82e528b1..05961230 100644 --- a/src/screen/battle/visualize.rs +++ b/src/screen/battle/visualize.rs @@ -72,7 +72,7 @@ fn textures() -> &'static assets::Textures { pub fn message(view: &mut BattleView, pos: PosHex, text: &str) -> ZResult> { let visible = [0.0, 0.0, 0.0, 1.0].into(); let invisible = Color::new(0.0, 0.0, 0.0, 0.0); - let font = assets::get().font; + let font = &assets::get().font; let mut sprite = Sprite::from_text((text, font), 0.1); sprite.set_centered(true); let point = view.hex_to_point(pos); @@ -119,14 +119,14 @@ fn announce(view: &mut BattleView, text: &str, time: Duration) -> ZResult ZResult ZResult> { let visible = [0.0, 0.0, 0.0, 1.0].into(); let invisible = [0.0, 0.0, 0.0, 0.0].into(); - let font = assets::get().font; + let font = &assets::get().font; let mut sprite = Sprite::from_text((text, font), 0.1); sprite.set_centered(true); let point = pos + Vec2::new(0.0, view.tile_size() * 0.5); @@ -178,7 +178,7 @@ fn show_blood_particles( let invisible = Color { a: 0.0, ..visible }; let scale = roll_dice(0.05, 0.15); let size = view.tile_size() * 2.0 * scale; - let mut sprite = Sprite::from_texture(textures().map.white_hex, size); + let mut sprite = Sprite::from_texture(&textures().map.white_hex, size); sprite.set_centered(true); sprite.set_pos(point_origin); sprite.set_color(invisible); @@ -197,7 +197,7 @@ fn show_blood_particles( } fn show_blood_spot(view: &mut BattleView, at: PosHex) -> ZResult> { - let mut sprite = Sprite::from_texture(textures().map.blood, view.tile_size() * 2.0); + let mut sprite = Sprite::from_texture(&textures().map.blood, view.tile_size() * 2.0); sprite.set_centered(true); sprite.set_color([1.0, 1.0, 1.0, 0.0].into()); sprite.set_pos(view.hex_to_point(at) + Vec2::new(0.0, view.tile_size() * 0.1)); @@ -213,7 +213,7 @@ fn show_blood_spot(view: &mut BattleView, at: PosHex) -> ZResult } fn show_explosion_ground_mark(view: &mut BattleView, at: PosHex) -> ZResult> { - let tex = textures().map.explosion_ground_mark; + let tex = &textures().map.explosion_ground_mark; let mut sprite = Sprite::from_texture(tex, view.tile_size() * 2.0); sprite.set_centered(true); sprite.set_color([1.0, 1.0, 1.0, 1.0].into()); @@ -248,7 +248,7 @@ fn show_dust(view: &mut BattleView, at: Vec2, count: i32) -> ZResult ZResult Texture2D { let effects = &assets::get().textures.icons.lasting_effects; - *effects.get(effect).expect("No such effect found") + effects.get(effect).expect("No such effect found").clone() } fn generate_brief_obj_info( @@ -460,7 +460,7 @@ fn generate_brief_obj_info( } let mut sprites = Vec::new(); for &(color, point) in &dots { - let mut sprite = Sprite::from_texture(textures().dot, size); + let mut sprite = Sprite::from_texture(&textures().dot, size); sprite.set_centered(true); sprite.set_pos(point); sprite.set_color(Color { a: 0.0, ..color }); @@ -481,7 +481,7 @@ fn generate_brief_obj_info( icon_point.y += icon_size; let effect = &timed_effect.effect; let texture = get_effect_icon(effect); - let mut sprite = Sprite::from_texture(texture, icon_size); + let mut sprite = Sprite::from_texture(&texture, icon_size); sprite.set_pos(icon_point); sprite.set_centered(true); actions.push(action::Show::new(&view.layers().dots, &sprite).boxed()); @@ -972,7 +972,7 @@ fn visualize_effect_create( sprite }; let sprite_shadow = { - let tex = textures().map.shadow; + let tex = &textures().map.shadow; let mut sprite = Sprite::from_texture(tex, size * info.shadow_size_coefficient); sprite.set_centered(true); sprite.set_color(Color { a: 0.0, ..color }); diff --git a/src/screen/campaign.rs b/src/screen/campaign.rs index 5c17024e..dcf9e166 100644 --- a/src/screen/campaign.rs +++ b/src/screen/campaign.rs @@ -45,7 +45,7 @@ fn basic_gui() -> ZResult> { let mut gui = Gui::new(); let h = utils::line_heights().large; let button_menu = { - let icon = Drawable::Texture(assets::get().textures.icons.main_menu); + let icon = Drawable::Texture(assets::get().textures.icons.main_menu.clone()); ui::Button::new(icon, h, gui.sender(), Message::Menu)? }; let mut layout = ui::VLayout::new(); @@ -59,7 +59,7 @@ fn build_panel_agents( gui: &mut ui::Gui, agents: &[ObjType], ) -> ZResult> { - let font = assets::get().font; + let font = &assets::get().font; let mut layout = Box::new(ui::VLayout::new().stretchable(true)); layout.add(label(font, "Your group consists of:")?); layout.add(Box::new(ui::Spacer::new_vertical(line_height_small()))); @@ -70,7 +70,7 @@ fn build_panel_agents( let spacer = ui::Spacer::new_horizontal(line_height_small()).stretchable(true); line.add(Box::new(spacer)); { - let icon = Drawable::Texture(assets::get().textures.icons.info); + let icon = Drawable::Texture(assets::get().textures.icons.info.clone()); let message = Message::AgentInfo(agent_type.clone()); let button = ui::Button::new(icon, line_height(), gui.sender(), message)?; line.add(Box::new(button)); @@ -84,7 +84,7 @@ fn build_panel_agents( } fn build_panel_casualties(state: &State) -> ZResult>> { - let font = assets::get().font; + let font = &assets::get().font; let casualties = state.last_battle_casualties(); if casualties.is_empty() { return Ok(None); @@ -102,7 +102,7 @@ fn build_panel_casualties(state: &State) -> ZResult>> } fn build_panel_renown(state: &State) -> ZResult> { - let font = assets::get().font; + let font = &assets::get().font; let mut layout = Box::new(ui::VLayout::new().stretchable(true)); let renown_text = &format!("Your renown is: {}r", state.renown().0); layout.add(label(font, renown_text)?); @@ -111,7 +111,7 @@ fn build_panel_renown(state: &State) -> ZResult> { } fn build_panel_actions(gui: &mut ui::Gui, state: &State) -> ZResult> { - let font = assets::get().font; + let font = &assets::get().font; let h = line_height(); let mut layout = Box::new(ui::VLayout::new().stretchable(true)); layout.add(label(font, "Actions:")?); @@ -131,7 +131,7 @@ fn build_panel_actions(gui: &mut ui::Gui, state: &State) -> ZResult, state: &State) -> ZResult Message::AgentInfo(agent_type), Action::Upgrade { from, to } => Message::UpgradeInfo { from, to }, @@ -160,7 +160,7 @@ fn build_panel_actions(gui: &mut ui::Gui, state: &State) -> ZResult, state: &State) -> ZResult ZResult> { - let text = ui::Drawable::text(text, font); +fn label(font: &Font, text: &str) -> ZResult> { + let text = ui::Drawable::text(text, font.clone()); Ok(Box::new(ui::Label::new(text, line_height())?)) } @@ -252,9 +252,9 @@ impl Campaign { } fn add_label_central_message(&mut self, text: &str) -> ZResult { - let font = assets::get().font; + let font = &assets::get().font; let h = utils::line_heights().large; - let text = ui::Drawable::text(text, font); + let text = ui::Drawable::text(text, font.clone()); let label = ui::pack(ui::Label::new_with_bg(text, h)?); let anchor = ui::Anchor(ui::HAnchor::Middle, ui::VAnchor::Middle); self.gui.add(&label, anchor); diff --git a/src/screen/confirm.rs b/src/screen/confirm.rs index 6413c9f8..934cb850 100644 --- a/src/screen/confirm.rs +++ b/src/screen/confirm.rs @@ -31,11 +31,11 @@ pub struct Confirm { impl Confirm { pub fn from_lines(lines: &[impl AsRef], sender: Sender) -> ZResult { - let font = assets::get().font; + let font = &assets::get().font; let h = utils::line_heights().big; let mut layout = ui::VLayout::new(); for line in lines { - let text = ui::Drawable::text(line.as_ref(), font); + let text = ui::Drawable::text(line.as_ref(), font.clone()); let label = Box::new(ui::Label::new(text, h)?); layout.add(label); } @@ -47,13 +47,13 @@ impl Confirm { } pub fn from_widget(widget: Box, sender: Sender) -> ZResult { - let font = assets::get().font; + let font = &assets::get().font; let mut gui = ui::Gui::new(); let h = utils::line_heights().big; let mut layout = Box::new(ui::VLayout::new()); let spacer = || Box::new(ui::Spacer::new_vertical(h * 0.5)); let button = |line, message| -> ZResult<_> { - let text = ui::Drawable::text(line, font); + let text = ui::Drawable::text(line, font.clone()); let b = ui::Button::new(text, h, gui.sender(), message)?.stretchable(true); Ok(b) }; diff --git a/src/screen/general_info.rs b/src/screen/general_info.rs index 4d32511a..31f30537 100644 --- a/src/screen/general_info.rs +++ b/src/screen/general_info.rs @@ -21,11 +21,11 @@ pub struct GeneralInfo { impl GeneralInfo { pub fn new(title: &str, lines: &[String]) -> ZResult { - let font = assets::get().font; + let font = &assets::get().font; let mut gui = ui::Gui::new(); let h = utils::line_heights().normal; let mut layout = Box::new(ui::VLayout::new().stretchable(true)); - let text_ = |s: &str| ui::Drawable::text(s, font); + let text_ = |s: &str| ui::Drawable::text(s, font.clone()); let label_ = |text: &str| -> ZResult<_> { Ok(ui::Label::new(text_(text), h)?) }; let label = |text: &str| -> ZResult<_> { Ok(Box::new(label_(text)?)) }; let label_s = |text: &str| -> ZResult<_> { Ok(Box::new(label_(text)?.stretchable(true))) }; diff --git a/src/screen/main_menu.rs b/src/screen/main_menu.rs index 1b005cdc..f6f9e6d0 100644 --- a/src/screen/main_menu.rs +++ b/src/screen/main_menu.rs @@ -25,12 +25,12 @@ enum Message { } fn make_gui() -> ZResult> { - let font = assets::get().font; + let font = &assets::get().font; let mut gui = ui::Gui::new(); let h = utils::line_heights().large; let space = || Box::new(ui::Spacer::new_vertical(h / 8.0)); let button = &mut |text, message| -> ZResult<_> { - let text = ui::Drawable::text(text, font); + let text = ui::Drawable::text(text, font.clone()); let b = ui::Button::new(text, h, gui.sender(), message)?.stretchable(true); Ok(Box::new(b)) }; diff --git a/zgui/Cargo.toml b/zgui/Cargo.toml index 46ea6b20..2737d391 100644 --- a/zgui/Cargo.toml +++ b/zgui/Cargo.toml @@ -9,4 +9,4 @@ keywords = ["gamedev", "gui"] [dependencies] log = "0.4" -mq = { package = "macroquad", version = "0.3" } +mq = { package = "macroquad", version = "0.4" } diff --git a/zgui/examples/common/mod.rs b/zgui/examples/common/mod.rs index 196d95af..a814f7f8 100644 --- a/zgui/examples/common/mod.rs +++ b/zgui/examples/common/mod.rs @@ -7,24 +7,6 @@ use mq::{ texture::{self, Texture2D}, }; -#[derive(Debug)] -pub enum Err { - File(mq::file::FileError), - Font(mq::text::FontError), -} - -impl From for Err { - fn from(err: mq::file::FileError) -> Self { - Err::File(err) - } -} - -impl From for Err { - fn from(err: mq::text::FontError) -> Self { - Err::Font(err) - } -} - pub fn aspect_ratio() -> f32 { mq::window::screen_width() / mq::window::screen_height() } @@ -51,7 +33,7 @@ pub struct Assets { } impl Assets { - pub async fn load() -> Result { + pub async fn load() -> Result { let font = load_ttf_font("zgui/assets/Karla-Regular.ttf").await?; let texture = texture::load_texture("zgui/assets/fire.png").await?; Ok(Self { font, texture }) diff --git a/zgui/examples/nested.rs b/zgui/examples/nested.rs index 8f516d19..709fa2c2 100644 --- a/zgui/examples/nested.rs +++ b/zgui/examples/nested.rs @@ -15,8 +15,8 @@ enum Message { } fn make_gui(assets: common::Assets) -> ui::Result> { - let text = |s| ui::Drawable::text(s, assets.font); - let texture = || ui::Drawable::Texture(assets.texture); + let text = |s| ui::Drawable::text(s, assets.font.clone()); + let texture = || ui::Drawable::Texture(assets.texture.clone()); let mut gui = ui::Gui::new(); { let button = ui::Button::new(texture(), 0.1, gui.sender(), Message::Image)?; diff --git a/zgui/examples/remove.rs b/zgui/examples/remove.rs index 9ed55bb1..a354ea45 100644 --- a/zgui/examples/remove.rs +++ b/zgui/examples/remove.rs @@ -18,7 +18,7 @@ fn make_gui(font: mq::text::Font) -> ui::Result> { } fn make_label(assets: &common::Assets) -> ui::Result { - let texture = ui::Drawable::Texture(assets.texture); + let texture = ui::Drawable::Texture(assets.texture.clone()); let label = ui::Label::new(texture, 0.3)?; Ok(ui::pack(label)) } @@ -31,7 +31,7 @@ struct State { impl State { fn new(assets: common::Assets) -> ui::Result { - let gui = make_gui(assets.font)?; + let gui = make_gui(assets.font.clone())?; let label = None; Ok(Self { assets, gui, label }) } diff --git a/zgui/src/lib.rs b/zgui/src/lib.rs index add16ec9..809d64c7 100644 --- a/zgui/src/lib.rs +++ b/zgui/src/lib.rs @@ -78,12 +78,13 @@ pub enum Drawable { } impl Drawable { + // TODO: consider accepting Font by ref and cloning it inside pub fn text(label: impl Into, font: Font) -> Drawable { Drawable::Text { label: label.into(), font, // TODO: this field doesn't mean much with new macroquad since - // we're using camera_font_scale vefore rendering it anyway. + // we're using camera_font_scale before rendering it anyway. // But it's somewhat tricky to remove this so I'm putting this constant here for now. font_size: 128, } @@ -91,12 +92,12 @@ impl Drawable { fn dimensions(&self) -> Rect { match *self { - Drawable::Texture(texture) => { + Drawable::Texture(ref texture) => { Rect::new(0.0, 0.0, texture.width() as _, texture.height() as _) } Drawable::Text { ref label, - font, + ref font, font_size, } => { let dimensions = measure_text(label, Some(font), font_size, 1.0); @@ -136,7 +137,7 @@ impl Sprite { fn draw(&self) { match self.drawable { - Drawable::Texture(texture) => { + Drawable::Texture(ref texture) => { draw_texture_ex( texture, self.pos.x, @@ -150,7 +151,7 @@ impl Sprite { } Drawable::Text { ref label, - font, + ref font, font_size, } => { // desired font size in camera space @@ -163,7 +164,7 @@ impl Sprite { self.pos.y + (self.dimensions.y + self.dimensions.h) * self.scale.y * 0.5, TextParams { font_size, - font, + font: Some(font), font_scale, font_scale_aspect, rotation: 0.0, diff --git a/zscene/Cargo.toml b/zscene/Cargo.toml index a1d29b34..243d19c1 100644 --- a/zscene/Cargo.toml +++ b/zscene/Cargo.toml @@ -8,4 +8,4 @@ description = "Scene and Actions for gwg" keywords = ["gamedev", "2D"] [dependencies] -mq = { package = "macroquad", version = "0.3" } +mq = { package = "macroquad", version = "0.4" } diff --git a/zscene/examples/action.rs b/zscene/examples/action.rs index d028487b..d3b2669d 100644 --- a/zscene/examples/action.rs +++ b/zscene/examples/action.rs @@ -12,19 +12,12 @@ use zscene::{self, action, Action, Boxed, Layer, Scene, Sprite}; #[derive(Debug)] pub enum Err { - File(mq::file::FileError), - Font(mq::text::FontError), + Mq(mq::Error), } -impl From for Err { - fn from(err: mq::file::FileError) -> Self { - Err::File(err) - } -} - -impl From for Err { - fn from(err: mq::text::FontError) -> Self { - Err::Font(err) +impl From for Err { + fn from(err: mq::Error) -> Self { + Err::Mq(err) } } @@ -72,7 +65,7 @@ impl State { } fn action_demo_move(&self) -> Box { - let mut sprite = Sprite::from_texture(self.assets.texture, 0.5); + let mut sprite = Sprite::from_texture(&self.assets.texture, 0.5); sprite.set_pos(Vec2::new(0.0, -1.0)); let delta = Vec2::new(0.0, 1.5); let move_duration = Duration::from_millis(2_000); @@ -85,7 +78,7 @@ impl State { fn action_demo_show_hide(&self) -> Box { let mut sprite = { - let mut sprite = Sprite::from_text(("some text", self.assets.font), 0.1); + let mut sprite = Sprite::from_text(("some text", &self.assets.font), 0.1); sprite.set_pos(Vec2::new(0.0, 0.0)); sprite.set_scale(2.0); // just testing set_size method let scale = sprite.scale(); diff --git a/zscene/src/sprite.rs b/zscene/src/sprite.rs index 002795f6..2c78ee1b 100644 --- a/zscene/src/sprite.rs +++ b/zscene/src/sprite.rs @@ -26,10 +26,12 @@ enum Drawable { impl Drawable { fn dimensions(&self) -> Rect { match *self { - Drawable::Texture(texture) => Rect::new(0.0, 0.0, texture.width(), texture.height()), + Drawable::Texture(ref texture) => { + Rect::new(0.0, 0.0, texture.width(), texture.height()) + } Drawable::Text { ref label, - font, + ref font, font_size, } => { let dimensions = text::measure_text(label, Some(font), font_size, 1.0); @@ -103,17 +105,17 @@ impl Sprite { Self { data } } - pub fn from_texture(texture: Texture2D, height: f32) -> Self { - Self::from_drawable(Drawable::Texture(texture), height) + pub fn from_texture(texture: &Texture2D, height: f32) -> Self { + Self::from_drawable(Drawable::Texture(texture.clone()), height) } - pub fn from_text((label, font): (&str, Font), height: f32) -> Self { + pub fn from_text((label, font): (&str, &Font), height: f32) -> Self { // TODO: it'd be cool to move this to the drawing method (same as in zgui) let (font_size, _, _) = mq::text::camera_font_scale(height); Self::from_drawable( Drawable::Text { label: label.to_string(), - font, + font: font.clone(), font_size, }, height, @@ -126,10 +128,10 @@ impl Sprite { } pub fn from_textures(frames: &HashMap, height: f32) -> Self { - let tex = *frames.get("").expect("missing default path"); - let mut this = Self::from_texture(tex, height); - for (frame_name, &tex) in frames.iter() { - this.add_frame(frame_name.clone(), Drawable::Texture(tex)); + let tex = frames.get("").expect("missing default path").clone(); + let mut this = Self::from_texture(&tex, height); + for (frame_name, tex) in frames.iter() { + this.add_frame(frame_name.clone(), Drawable::Texture(tex.clone())); } this } @@ -202,7 +204,7 @@ impl Sprite { match drawable { Drawable::Texture(texture) => { texture::draw_texture_ex( - *texture, + texture, data.pos.x, data.pos.y, data.color, @@ -223,7 +225,7 @@ impl Sprite { data.pos.y + (data.dimensions.y + data.dimensions.h) * data.scale.y * 0.5, text::TextParams { font_size: *font_size, - font: *font, + font: Some(font), font_scale: data.scale.x, color: data.color, ..Default::default()