diff --git a/Cargo.lock b/Cargo.lock index 08294349..9f698426 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,12 +20,13 @@ checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" [[package]] name = "accesskit" -version = "0.21.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf203f9d3bd8f29f98833d1fbef628df18f759248a547e7e01cfbf63cda36a99" +checksum = "5351dcebb14b579ccab05f288596b2ae097005be7ee50a7c3d4ca9d0d5a66f6a" dependencies = [ "enumn", "serde", + "uuid 1.23.2", ] [[package]] @@ -38,10 +39,10 @@ dependencies = [ "client-containers", "client-render-base", "client-types", - "client-ui", "egui", "game-interface", "graphics", + "ingame-ui", "math", "num-traits", "ui-base", @@ -85,7 +86,7 @@ dependencies = [ "once_cell", "serde", "version_check", - "zerocopy 0.8.48", + "zerocopy 0.8.50", ] [[package]] @@ -114,9 +115,9 @@ dependencies = [ [[package]] name = "alloc-track" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cbc29fd1a22b9f9ec0b622fb21d6f29ba8fcad7df5a68377c9a4f10705f0584" +checksum = "567268671a146d542f9f4fdaf231d56a79a93f5dca9573132382295cc6f3882a" dependencies = [ "backtrace", "dashmap 5.5.3", @@ -144,6 +145,18 @@ dependencies = [ "libc", ] +[[package]] +name = "alsa" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c88dbbce13b232b26250e1e2e6ac18b6a891a646b8148285036ebce260ac5c3" +dependencies = [ + "alsa-sys", + "bitflags 2.11.1", + "cfg-if", + "libc", +] + [[package]] name = "alsa-sys" version = "0.3.1" @@ -165,7 +178,7 @@ dependencies = [ "cc", "jni 0.22.4", "libc", - "log 0.4.29", + "log 0.4.30", "ndk 0.9.0", "ndk-context", "ndk-sys 0.6.0+11769913", @@ -193,7 +206,7 @@ checksum = "dbb4e440d04be07da1f1bf44fb4495ebd58669372fe0cffa6e48595ac5bd88a3" dependencies = [ "android_log-sys", "env_filter 0.1.4", - "log 0.4.29", + "log 0.4.30", ] [[package]] @@ -299,7 +312,7 @@ dependencies = [ "graphics-backend-traits", "graphics-base-traits", "graphics-types", - "log 0.4.29", + "log 0.4.30", "once_cell", "pool", "rayon", @@ -412,9 +425,6 @@ name = "arbitrary" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" -dependencies = [ - "derive_arbitrary", -] [[package]] name = "arboard" @@ -424,7 +434,7 @@ checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" dependencies = [ "clipboard-win", "image", - "log 0.4.29", + "log 0.4.30", "objc2 0.6.4", "objc2-app-kit 0.3.2", "objc2-core-foundation", @@ -457,6 +467,12 @@ dependencies = [ "password-hash", ] +[[package]] +name = "array-const-fn-init" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bcb85e548c05d407fa6faff46b750ba287714ef32afc0f5e15b4641ffd6affb" + [[package]] name = "arrayref" version = "0.3.9" @@ -528,29 +544,13 @@ dependencies = [ "raw-window-metal", ] -[[package]] -name = "asn1-rs" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" -dependencies = [ - "asn1-rs-derive 0.5.1", - "asn1-rs-impl", - "displaydoc", - "nom 7.1.3", - "num-traits", - "rusticata-macros", - "thiserror 1.0.69", - "time", -] - [[package]] name = "asn1-rs" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f43a50ac4fdca5df8e885c21b835997f0a1cdee65494a6847694a98652d9d8" dependencies = [ - "asn1-rs-derive 0.6.0", + "asn1-rs-derive", "asn1-rs-impl", "displaydoc", "nom 7.1.3", @@ -560,18 +560,6 @@ dependencies = [ "time", ] -[[package]] -name = "asn1-rs-derive" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", - "synstructure", -] - [[package]] name = "asn1-rs-derive" version = "0.6.0" @@ -608,6 +596,7 @@ dependencies = [ "serde_json", "symphonia", "tar", + "tracing", ] [[package]] @@ -622,7 +611,7 @@ dependencies = [ "dotenvy", "env_logger", "image-utils", - "log 0.4.29", + "log 0.4.30", "parking_lot", "serde_json", "tokio", @@ -711,7 +700,7 @@ version = "0.2.2" source = "git+https://github.com/Jupeyy/audiopus_sys.git?branch=ddnet-rs#803c5403ebb6bf7389882d76c00e70128b0a63e3" dependencies = [ "cmake", - "log 0.4.29", + "log 0.4.30", "pkg-config", ] @@ -722,7 +711,7 @@ dependencies = [ "api", "api-auto-mapper", "editor-interface", - "log 0.4.29", + "log 0.4.30", "math", "rustc-hash 2.1.2", ] @@ -738,7 +727,7 @@ dependencies = [ "chrono", "either", "git-version", - "log 0.4.29", + "log 0.4.30", "self-replace", "serde", "serde_json", @@ -750,9 +739,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "av-encoder" @@ -764,7 +753,7 @@ dependencies = [ "graphics-backend", "graphics-backend-traits", "hiarc", - "log 0.4.29", + "log 0.4.30", "pool", "rayon", "sendable", @@ -773,6 +762,28 @@ dependencies = [ "tokio", ] +[[package]] +name = "aws-lc-rs" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", +] + [[package]] name = "axum" version = "0.8.9" @@ -783,10 +794,10 @@ dependencies = [ "bytes", "form_urlencoded", "futures-util", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "http-body-util", - "hyper 1.9.0", + "hyper 1.10.1", "hyper-util", "itoa", "matchit", @@ -814,7 +825,7 @@ checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "http-body-util", "mime", @@ -853,7 +864,7 @@ dependencies = [ "anyhow", "ascii", "blake3", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hex", "hiarc", "owo-colors", @@ -877,10 +888,10 @@ dependencies = [ "base-io-traits", "chrono", "directories 5.0.0", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc", "include_dir", - "log 0.4.29", + "log 0.4.30", "notify", "path-clean", "path-slash", @@ -900,9 +911,9 @@ dependencies = [ "base-io", "base-io-traits", "bytes", - "http 1.4.0", + "http 1.4.1", "http-body-util", - "log 0.4.29", + "log 0.4.30", "reqwest", "tokio", "tower-http", @@ -982,7 +993,7 @@ dependencies = [ "byteorder", "divsufsort", "integer-encoding", - "log 0.4.29", + "log 0.4.30", "rayon", "sacabase", "sacapart", @@ -1021,26 +1032,6 @@ dependencies = [ "virtue", ] -[[package]] -name = "bindgen" -version = "0.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" -dependencies = [ - "bitflags 2.11.1", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "log 0.4.29", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.117", -] - [[package]] name = "bindgen" version = "0.72.1" @@ -1051,11 +1042,13 @@ dependencies = [ "cexpr", "clang-sys", "itertools 0.13.0", + "log 0.4.30", + "prettyplease", "proc-macro2", "quote", "regex", "rustc-hash 2.1.2", - "shlex", + "shlex 1.3.0", "syn 2.0.117", ] @@ -1069,7 +1062,7 @@ dependencies = [ "game-interface", "hiarc", "input-binds", - "log 0.4.29", + "log 0.4.30", "serde_json", ] @@ -1084,11 +1077,11 @@ dependencies = [ [[package]] name = "bit-set" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +checksum = "34ddef2995421ab6a5c779542c81ee77c115206f4ad9d5a8e05f4ff49716a3dd" dependencies = [ - "bit-vec 0.8.0", + "bit-vec 0.9.1", ] [[package]] @@ -1099,16 +1092,22 @@ checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] name = "bit-vec" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +checksum = "b71798fca2c1fe1086445a7258a4bc81e6e49dcd24c8d0dd9a1e57395b603f51" +dependencies = [ + "serde", +] [[package]] -name = "bit-vec" -version = "0.9.1" +name = "bitcode" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71798fca2c1fe1086445a7258a4bc81e6e49dcd24c8d0dd9a1e57395b603f51" +checksum = "0a6ed1b54d8dc333e7be604d00fa9262f4635485ffea923647b6521a5fff045d" dependencies = [ + "arrayvec 0.7.6", + "bytemuck", + "glam 0.33.0", "serde", ] @@ -1145,7 +1144,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -1177,6 +1176,15 @@ dependencies = [ "generic-array 0.14.9", ] +[[package]] +name = "block-buffer" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" +dependencies = [ + "hybrid-array", +] + [[package]] name = "block2" version = "0.5.1" @@ -1197,9 +1205,9 @@ dependencies = [ [[package]] name = "brotli" -version = "8.0.2" +version = "8.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +checksum = "8119e4516436f5708bbc474a9d395bf12f1b5395e93a92a56e647ac3388c8610" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1208,9 +1216,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "5.0.0" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +checksum = "5962523e1b92ce1b5e793d9169b9943eece10d39f62550bc04bb605d75b94924" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1253,9 +1261,12 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" +dependencies = [ + "allocator-api2", +] [[package]] name = "by_address" @@ -1263,40 +1274,18 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" -[[package]] -name = "bytecheck" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" -dependencies = [ - "bytecheck_derive 0.6.12", - "ptr_meta 0.1.4", - "simdutf8", -] - [[package]] name = "bytecheck" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0caa33a2c0edca0419d15ac723dff03f1956f7978329b1e3b5fdaaaed9d3ca8b" dependencies = [ - "bytecheck_derive 0.8.2", - "ptr_meta 0.3.1", + "bytecheck_derive", + "ptr_meta", "rancor", "simdutf8", ] -[[package]] -name = "bytecheck_derive" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "bytecheck_derive" version = "0.8.2" @@ -1351,11 +1340,11 @@ dependencies = [ [[package]] name = "bytesize" -version = "1.3.3" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e93abca9e28e0a1b9877922aacb20576e05d4679ffa78c3d6dc22a26a216659" +checksum = "6bd91ee7b2422bcb158d90ef4d14f75ef67f340943fc4149891dcce8f8b972a3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -1386,7 +1375,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ "bitflags 2.11.1", - "log 0.4.29", + "log 0.4.30", "polling", "rustix 0.38.44", "slab", @@ -1418,14 +1407,14 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.62" +version = "1.2.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" +checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" dependencies = [ "find-msvc-tools", "jobserver", "libc", - "shlex", + "shlex 2.0.1", ] [[package]] @@ -1465,6 +1454,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.1", +] + [[package]] name = "chat" version = "0.1.0" @@ -1475,11 +1475,11 @@ dependencies = [ "client-containers", "client-render-base", "client-types", - "client-ui", "egui", "game-base", "game-interface", "graphics", + "ingame-ui", "math", "ui-base", "ui-generic", @@ -1626,7 +1626,7 @@ dependencies = [ "game-interface", "graphics", "hiarc", - "log 0.4.29", + "log 0.4.30", "tracing", "ui-base", "ui-generic", @@ -1648,10 +1648,10 @@ dependencies = [ "game-interface", "graphics", "graphics-types", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc", "image-utils", - "log 0.4.29", + "log 0.4.30", "math", "num-traits", "rayon", @@ -1685,7 +1685,7 @@ dependencies = [ "graphics", "graphics-backend", "graphics-types", - "log 0.4.29", + "log 0.4.30", "math", "pool", "rayon", @@ -1711,7 +1711,7 @@ dependencies = [ "game-interface", "graphics", "graphics-backend", - "log 0.4.29", + "log 0.4.30", "pool", "rayon", "sound", @@ -1735,14 +1735,14 @@ dependencies = [ "game-state-wasm", "graphics", "graphics-backend", - "log 0.4.29", + "log 0.4.30", "map", "pool", "rayon", "render-game-wasm", "sound", "tracing", - "wasmparser 0.240.0", + "wasmparser 0.251.0", ] [[package]] @@ -1766,12 +1766,13 @@ dependencies = [ "client-containers", "client-render-base", "client-types", - "client-ui", + "client-ui-utils", "egui", "game-base", "game-interface", "graphics", "graphics-types", + "ingame-ui", "math", "serde", "ui-base", @@ -1798,11 +1799,11 @@ dependencies = [ "graphics", "graphics-backend-traits", "graphics-types", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc", "image-utils", "legacy-map", - "log 0.4.29", + "log 0.4.30", "map", "math", "num-derive", @@ -1812,10 +1813,11 @@ dependencies = [ "rustc-hash 2.1.2", "serde", "sound", - "strum 0.27.2", + "strum", + "tile-map-collision", "time", + "tracing", "url", - "vanilla", ] [[package]] @@ -1829,7 +1831,7 @@ dependencies = [ "client-render", "client-render-base", "client-types", - "client-ui", + "client-ui-utils", "config", "egui", "game-base", @@ -1837,6 +1839,7 @@ dependencies = [ "game-interface", "graphics", "graphics-types", + "ingame-ui", "map", "math", "num-traits", @@ -1844,9 +1847,10 @@ dependencies = [ "rayon", "serde", "sound", + "tile-map-collision", + "tracing", "ui-base", "url", - "vanilla", ] [[package]] @@ -1891,6 +1895,7 @@ dependencies = [ "client-containers", "client-render-base", "client-types", + "client-ui-utils", "command-parser", "config", "demo", @@ -1903,17 +1908,14 @@ dependencies = [ "game-config", "game-interface", "gcd", - "geo", "graphics", "graphics-types", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", "hiarc", - "log 0.4.29", + "log 0.4.30", "master-server-types", "math", "num-rational", "num-traits", - "pool", "rayon", "serde", "serde_json", @@ -1923,7 +1925,31 @@ dependencies = [ "ui-base", "ui-generic", "url", - "vanilla", +] + +[[package]] +name = "client-ui-utils" +version = "0.1.0" +dependencies = [ + "anyhow", + "base-io", + "chrono", + "client-containers", + "client-render-base", + "egui", + "egui_extras", + "fuzzy-matcher", + "game-interface", + "graphics", + "graphics-types", + "hiarc", + "math", + "pool", + "rayon", + "sound", + "tracing", + "ui-base", + "url", ] [[package]] @@ -1944,6 +1970,12 @@ dependencies = [ "cc", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "cocoa" version = "0.25.0" @@ -1955,7 +1987,7 @@ dependencies = [ "cocoa-foundation", "core-foundation 0.9.4", "core-graphics", - "foreign-types 0.5.0", + "foreign-types", "libc", "objc", ] @@ -1985,6 +2017,26 @@ dependencies = [ "unicode-width 0.2.2", ] +[[package]] +name = "codespan-reporting" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" +dependencies = [ + "serde", + "termcolor", + "unicode-width 0.2.2", +] + +[[package]] +name = "color" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ec7c5eb7a16992b1904d76c517d170ab353b0e0b3d5a0c81a8a0cd1037893cf" +dependencies = [ + "bytemuck", +] + [[package]] name = "colorchoice" version = "1.0.5" @@ -2062,7 +2114,7 @@ dependencies = [ "ddnet-accounts-types", "game-database", "game-database-backend", - "log 0.4.29", + "log 0.4.30", "network", "reqwest", "serde_json", @@ -2162,6 +2214,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + [[package]] name = "const-random" version = "0.1.18" @@ -2232,7 +2290,7 @@ dependencies = [ "bitflags 1.3.2", "core-foundation 0.9.4", "core-graphics-types", - "foreign-types 0.5.0", + "foreign-types", "libc", ] @@ -2278,14 +2336,14 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6" dependencies = [ - "bindgen 0.72.1", + "bindgen", ] [[package]] name = "corosensei" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c54787b605c7df106ceccf798df23da4f2e09918defad66705d1cedf3bb914f" +checksum = "6886a0c0f263965933c438626e7179139a62b978a33aa18281cbf0cd5a975f34" dependencies = [ "autocfg", "cfg-if", @@ -2300,14 +2358,14 @@ version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" dependencies = [ - "alsa", + "alsa 0.9.1", "core-foundation-sys", "coreaudio-rs 0.11.3", "dasp_sample", "jni 0.21.1", "js-sys", "libc", - "mach2", + "mach2 0.4.3", "ndk 0.8.0", "ndk-context", "oboe", @@ -2319,28 +2377,32 @@ dependencies = [ [[package]] name = "cpal" -version = "0.16.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbd307f43cc2a697e2d1f8bc7a1d824b5269e052209e28883e5bc04d095aaa3f" +checksum = "5b1f9c7312f19fc2fa12fd7acaf38de54e8320ba10d1a02dcbe21038def51ccb" dependencies = [ - "alsa", + "alsa 0.10.0", "coreaudio-rs 0.13.0", "dasp_sample", "jni 0.21.1", "js-sys", "libc", - "mach2", + "mach2 0.5.0", "ndk 0.9.0", "ndk-context", "num-derive", "num-traits", + "objc2 0.6.4", "objc2-audio-toolbox", + "objc2-avf-audio", "objc2-core-audio", "objc2-core-audio-types", + "objc2-core-foundation", + "objc2-foundation 0.3.2", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows 0.54.0", + "windows 0.62.2", ] [[package]] @@ -2361,28 +2423,50 @@ dependencies = [ "libc", ] +[[package]] +name = "cranelift-assembler-x64" +version = "0.129.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b242b4c3675139f52f0b55624fb92571551a344305c5998f55ad20fa527bc55" +dependencies = [ + "cranelift-assembler-x64-meta", +] + +[[package]] +name = "cranelift-assembler-x64-meta" +version = "0.129.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "499715f19799219f32641b14f2a162f91e50bc1b61c2d2184c2be971716f5c56" +dependencies = [ + "cranelift-srcgen", +] + [[package]] name = "cranelift-bforest" -version = "0.110.2" +version = "0.129.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305d51c180ebdc46ef61bc60c54ae6512db3bc9a05842a1f1e762e45977019ab" +checksum = "9a92d78cc3f087d7e7073828f08d98c7074a3a062b6b29a1b7783ce74305685e" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-bitset" -version = "0.110.3" +version = "0.129.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "690d8ae6c73748e5ce3d8fe59034dceadb8823e6c8994ba324141c5eae909b0e" +checksum = "edcc73d756f2e0d7eda6144fe64a2bc69c624de893cb1be51f1442aed77881d2" +dependencies = [ + "wasmtime-internal-core", +] [[package]] name = "cranelift-codegen" -version = "0.110.2" +version = "0.129.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7ca95e831c18d1356da783765c344207cbdffea91e13e47fa9327dbb2e0719" +checksum = "683d94c2cd0d73b41369b88da1129589bc3a2d99cf49979af1d14751f35b7a1b" dependencies = [ "bumpalo", + "cranelift-assembler-x64", "cranelift-bforest", "cranelift-bitset", "cranelift-codegen-meta", @@ -2390,65 +2474,78 @@ dependencies = [ "cranelift-control", "cranelift-entity", "cranelift-isle", - "gimli 0.28.1", - "hashbrown 0.14.5", - "log 0.4.29", + "gimli 0.33.0", + "hashbrown 0.15.5", + "libm", + "log 0.4.30", "regalloc2", - "rustc-hash 1.1.0", + "rustc-hash 2.1.2", + "serde", "smallvec", "target-lexicon", + "wasmtime-internal-core", ] [[package]] name = "cranelift-codegen-meta" -version = "0.110.3" +version = "0.129.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a2d2ab65e6cbf91f81781d8da65ec2005510f18300eff21a99526ed6785863" +checksum = "483b2c94a1b7f6fba0714387ba34ca56d114b2214a80be018acbb2ed40e09a1e" dependencies = [ + "cranelift-assembler-x64-meta", "cranelift-codegen-shared", + "cranelift-srcgen", + "heck", ] [[package]] name = "cranelift-codegen-shared" -version = "0.110.3" +version = "0.129.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efcff860573cf3db9ae98fbd949240d78b319df686cc306872e7fab60e9c84d7" +checksum = "c4aae718c336a52d90d4ebe9a2d8c3cf0906a4bee78f0e6867e777eebbe554fe" [[package]] name = "cranelift-control" -version = "0.110.3" +version = "0.129.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d70e5b75c2d5541ef80a99966ccd97aaa54d2a6af19ea31759a28538e1685a" +checksum = "a18e94519070dc56cddb71906a08cea6a28a1d7c58ed501b88f273fa6b45fa07" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.110.2" +version = "0.129.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a48cb0a194c9ba82fec35a1e492055388d89b2e3c03dee9dcf2488892be8004d" +checksum = "59d8e72637246edd2cba337939850caa8b201f6315925ec4c156fdd089999699" dependencies = [ "cranelift-bitset", + "wasmtime-internal-core", ] [[package]] name = "cranelift-frontend" -version = "0.110.2" +version = "0.129.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8327afc6c1c05f4be62fefce5b439fa83521c65363a322e86ea32c85e7ceaf64" +checksum = "4c31db0085c3dfa131e739c3b26f9f9c84d69a9459627aac1ac4ef8355e3411b" dependencies = [ "cranelift-codegen", - "log 0.4.29", + "log 0.4.30", "smallvec", "target-lexicon", ] [[package]] name = "cranelift-isle" -version = "0.110.2" +version = "0.129.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524d804c1ebd8c542e6f64e71aa36934cec17c5da4a9ae3799796220317f5d23" + +[[package]] +name = "cranelift-srcgen" +version = "0.129.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56b08621c00321efcfa3eee6a3179adc009e21ea8d24ca7adc3c326184bc3f48" +checksum = "4a1a001a9dc4557d9e2be324bc932621c0aa9bf33b74dfefa2338f0bf8913329" [[package]] name = "crc" @@ -2558,6 +2655,15 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "hybrid-array", +] + [[package]] name = "csv" version = "1.4.0" @@ -2579,6 +2685,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", +] + [[package]] name = "cursor-icon" version = "1.2.0" @@ -2597,7 +2712,7 @@ dependencies = [ "cfg-if", "cpufeatures 0.2.17", "curve25519-dalek-derive", - "digest", + "digest 0.10.7", "fiat-crypto", "rustc_version", "subtle", @@ -2617,12 +2732,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.14.4" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core 0.14.4", - "darling_macro 0.14.4", + "darling_core 0.20.11", + "darling_macro 0.20.11", ] [[package]] @@ -2647,16 +2762,16 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.4" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", - "syn 1.0.109", + "strsim 0.11.1", + "syn 2.0.117", ] [[package]] @@ -2687,13 +2802,13 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.14.4" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core 0.14.4", + "darling_core 0.20.11", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] @@ -2759,9 +2874,9 @@ checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] name = "ddnet-account-client" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbac4f30e2dc6632789194bb684adc843e7edcf9d9d099e49e0553d01dc9ee9b" +checksum = "9237c844dae5a155528f5e33027512f628db0daf2f20b7f860b7217307c7df18" dependencies = [ "anyhow", "async-trait", @@ -2773,14 +2888,14 @@ dependencies = [ "serde_json", "thiserror 2.0.18", "x509-cert", - "x509-parser 0.16.0", + "x509-parser", ] [[package]] name = "ddnet-account-client-http-fs" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9004caaafde669225232a14ade28e7f972a9f42ed2d044e6b6ee1243a167d25d" +checksum = "d18215f21298c85374ba8847a4ab3260909dac9f977bb073097e97f5f9faeb83" dependencies = [ "anyhow", "async-trait", @@ -2802,9 +2917,9 @@ dependencies = [ [[package]] name = "ddnet-account-client-reqwest" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5b16d118b5a2f4f83b6827972fb12d22e104d5c786e716ef450cbba4b66685" +checksum = "81cf5909154bbe0621c2271ae88484f46a76bb40ba0bf7039dfbbb4506b055d1" dependencies = [ "anyhow", "async-trait", @@ -2816,9 +2931,9 @@ dependencies = [ [[package]] name = "ddnet-account-game-server" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db12e617f93d315a9819402a02745aec6f74402969a8d3cae96a39da5d9077a" +checksum = "1e160d9a5472cbb55995c6684047808e54d93bbf2f1711b9063f7ac52aedfa3c" dependencies = [ "anyhow", "async-trait", @@ -2831,9 +2946,9 @@ dependencies = [ [[package]] name = "ddnet-account-sql" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16fc9aacb4f6a687aab009c2dfa77664fc05c52062fe2475373c10bd28993ef" +checksum = "830689a06f98612e9b96e04bbe9afbe7d58b7cb933740159195214d3e5e17515" dependencies = [ "anyhow", "async-trait", @@ -2843,28 +2958,28 @@ dependencies = [ [[package]] name = "ddnet-accounts-shared" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa20d458e7932b0942e99ae22122924059c214ed6d2b2005860329f7195172e6" +checksum = "803709280c35ffda321ed8c4044fcdfbdffa62d84b054f4354cc2f1e67114f5b" dependencies = [ "anyhow", "argon2", "chrono", - "const-oid", + "const-oid 0.9.6", "ddnet-accounts-types", "der", "ecdsa", "ed25519-dalek", "email_address", - "generic-array 1.4.1", + "generic-array 1.4.3", "hex", "machine-uid", "p256", "rand 0.8.6", - "rcgen 0.13.2", + "rcgen", "serde", "spki", - "strum 0.26.3", + "strum", "thiserror 2.0.18", "url", "x509-cert", @@ -2872,9 +2987,9 @@ dependencies = [ [[package]] name = "ddnet-accounts-types" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d79237cd097ee4edc03bf18219af985d881027e0a06bdac67c72d5171a52006b" +checksum = "1bebdba8df10053a11e6770673f630be67886a940eb9bb41a319878c2c43768a" [[package]] name = "ddnet-info-proxy" @@ -2887,7 +3002,7 @@ dependencies = [ "base-io", "base-io-traits", "client-ui", - "log 0.4.29", + "log 0.4.30", "reqwest", "serde", "tokio", @@ -2928,6 +3043,7 @@ dependencies = [ "client-replay", "client-types", "client-ui", + "client-ui-utils", "command-parser", "config", "config-fs", @@ -2955,12 +3071,13 @@ dependencies = [ "graphics-backend-traits", "graphics-base-traits", "graphics-types", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc", "image-utils", + "ingame-ui", "input-binds", "legacy-proxy", - "log 0.4.29", + "log 0.4.30", "map", "math", "microphone", @@ -2972,7 +3089,7 @@ dependencies = [ "parking_lot", "pool", "prediction-timer", - "rand 0.9.4", + "rand 0.10.1", "rayon", "serde", "serde-value", @@ -2982,6 +3099,7 @@ dependencies = [ "stats_alloc", "steam", "thread-priority", + "tile-map-collision", "tokio", "tracing", "trybuild", @@ -3001,7 +3119,7 @@ dependencies = [ "anyhow", "flate2", "itertools 0.10.5", - "log 0.4.29", + "log 0.4.30", "ndarray", "num-complex", "realfft", @@ -3029,7 +3147,7 @@ dependencies = [ "game-base", "game-interface", "itertools 0.14.0", - "log 0.4.29", + "log 0.4.30", "serde", "tempfile", "zstd", @@ -3055,34 +3173,20 @@ version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ - "const-oid", + "const-oid 0.9.6", "der_derive", "flagset", "pem-rfc7468", "zeroize", ] -[[package]] -name = "der-parser" -version = "9.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" -dependencies = [ - "asn1-rs 0.6.2", - "displaydoc", - "nom 7.1.3", - "num-bigint", - "num-traits", - "rusticata-macros", -] - [[package]] name = "der-parser" version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" dependencies = [ - "asn1-rs 0.7.2", + "asn1-rs", "displaydoc", "nom 7.1.3", "num-bigint", @@ -3122,56 +3226,34 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "derive_arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "derive_builder" -version = "0.12.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ "derive_builder_macro", ] [[package]] name = "derive_builder_core" -version = "0.12.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ - "darling 0.14.4", + "darling 0.20.11", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] name = "derive_builder_macro" -version = "0.12.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 1.0.109", -] - -[[package]] -name = "derive_more" -version = "0.99.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" -dependencies = [ - "proc-macro2", - "quote", "syn 2.0.117", ] @@ -3210,12 +3292,24 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", + "block-buffer 0.10.4", + "const-oid 0.9.6", + "crypto-common 0.1.6", "subtle", ] +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.0", + "const-oid 0.10.2", + "crypto-common 0.2.2", + "ctutils", +] + [[package]] name = "dilate" version = "0.1.0" @@ -3245,15 +3339,6 @@ dependencies = [ "dirs-sys 0.5.0", ] -[[package]] -name = "dirs" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" -dependencies = [ - "dirs-sys 0.5.0", -] - [[package]] name = "dirs-sys" version = "0.4.1" @@ -3298,9 +3383,9 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", @@ -3386,16 +3471,6 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" -[[package]] -name = "earcutr" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01" -dependencies = [ - "itertools 0.11.0", - "num-traits", -] - [[package]] name = "ecdsa" version = "0.16.9" @@ -3403,7 +3478,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der", - "digest", + "digest 0.10.7", "elliptic-curve", "rfc6979", "signature", @@ -3412,9 +3487,9 @@ dependencies = [ [[package]] name = "ecolor" -version = "0.33.3" +version = "0.34.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71ddb8ac7643d1dba1bb02110e804406dd459a838efcb14011ced10556711a8e" +checksum = "a05fbfa222ffb51989d5ccf33e5f7aebfcf96c5023413856b0c3618a7f79896e" dependencies = [ "bytemuck", "emath", @@ -3442,7 +3517,7 @@ dependencies = [ "ed25519", "rand_core 0.6.4", "serde", - "sha2", + "sha2 0.10.9", "subtle", "zeroize", ] @@ -3462,7 +3537,7 @@ dependencies = [ "client-containers", "client-notifications", "client-render-base", - "client-ui", + "client-ui-utils", "config", "ed25519-dalek", "editor-auto-mapper-wasm", @@ -3479,17 +3554,17 @@ dependencies = [ "game-interface", "graphics", "graphics-types", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc", "image-utils", "legacy-map", - "log 0.4.29", + "log 0.4.30", "map", "map-convert-lib", "math", "network", "pool", - "rand 0.9.4", + "rand 0.10.1", "rayon", "regex", "rustc-hash 2.1.2", @@ -3561,7 +3636,7 @@ dependencies = [ "graphics-backend", "graphics-base-traits", "graphics-types", - "log 0.4.29", + "log 0.4.30", "network", "rayon", "serde", @@ -3621,16 +3696,16 @@ dependencies = [ [[package]] name = "egui" -version = "0.33.3" +version = "0.34.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9b567d356674e9a5121ed3fedfb0a7c31e059fe71f6972b691bcd0bfc284e3" +checksum = "42112be0ae157289312b92b3dfaf20e911b5a3c4c65d4aab0e7c47fbc0ce16e3" dependencies = [ "accesskit", "ahash 0.8.12", "bitflags 2.11.1", "emath", "epaint", - "log 0.4.29", + "log 0.4.30", "nohash-hasher", "profiling", "serde", @@ -3640,9 +3715,9 @@ dependencies = [ [[package]] name = "egui-file-dialog" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35f17e09f18a266f4ee9f1de0c22a6838d60b34d86a6c766f3d707accd483e50" +checksum = "b530b58f428bcffb58281ad1c3a59ee559ffd2354aa54d5bf1a2ef418fdcebb3" dependencies = [ "directories 6.0.0", "dunce", @@ -3652,9 +3727,9 @@ dependencies = [ [[package]] name = "egui-notify" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d811c81c13fbce131116eeb6b228086f2c7eb6e4105e03ceb3a358c53c1668" +checksum = "6a29b39d9d60a29c217d0e86ef8221cd2e736f841aba75b5c32a3a0cade5f802" dependencies = [ "egui", ] @@ -3671,17 +3746,17 @@ dependencies = [ [[package]] name = "egui-winit" -version = "0.33.3" +version = "0.34.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec6687e5bb551702f4ad10ac428bab12acf9d53047ebb1082d4a0ed8c6251a29" +checksum = "967c5b323625d46d46a59b5daba3fef742248d27693cc18972458619858c4239" dependencies = [ "arboard", "bytemuck", "egui", - "log 0.4.29", - "objc2 0.5.2", - "objc2-foundation 0.2.2", - "objc2-ui-kit", + "log 0.4.30", + "objc2 0.6.4", + "objc2-foundation 0.3.2", + "objc2-ui-kit 0.3.2", "profiling", "raw-window-handle", "web-time", @@ -3691,9 +3766,9 @@ dependencies = [ [[package]] name = "egui_commonmark" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5246a4e9b83c345ec8230933bd0dca16d1c3c11db0edd4fd9c1a90683240b49" +checksum = "55df531ff51161b3c6212e0ee2166b370f150254bf4448a8a15c3d26fec87958" dependencies = [ "egui", "egui_commonmark_backend", @@ -3703,9 +3778,9 @@ dependencies = [ [[package]] name = "egui_commonmark_backend" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3cff846279556f57af8ea606f2e4ceaf83e60b81db014c126dfb926fa06c75b" +checksum = "fe04399ca5a2196965833a2918e50400449721fd9350e31ae7d84d6690859437" dependencies = [ "egui", "egui_extras", @@ -3714,24 +3789,24 @@ dependencies = [ [[package]] name = "egui_extras" -version = "0.33.3" +version = "0.34.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01d34e845f01c62e3fded726961092e70417d66570c499b9817ab24674ca4ed" +checksum = "598d8675f6fd9088db8a93d8c7aacda936b2f3d0c2b0660ad1744a45b5caf922" dependencies = [ "ahash 0.8.12", "egui", "enum-map", "image", - "log 0.4.29", + "log 0.4.30", "mime_guess2", "profiling", ] [[package]] name = "egui_plot" -version = "0.34.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc9b427a837264e55381a5cade6e28fe83ac5b165a61b9c888548c732a9c95" +checksum = "d7bd66213736bf9a9a53dc4888570b9194fc0db906507517a7fcc787e888ac47" dependencies = [ "ahash 0.8.12", "egui", @@ -3740,9 +3815,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" dependencies = [ "serde", ] @@ -3755,7 +3830,7 @@ checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct", "crypto-bigint", - "digest", + "digest 0.10.7", "ff", "generic-array 0.14.9", "group", @@ -3778,9 +3853,9 @@ dependencies = [ [[package]] name = "emath" -version = "0.33.3" +version = "0.34.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "491bdf728bf25ddd9ad60d4cf1c48588fa82c013a2440b91aa7fc43e34a07c32" +checksum = "b53f0d33a479321da6b0caa71366c9f67e8a2c149762d90bdc0d16e601ee8ecb" dependencies = [ "bytemuck", "serde", @@ -3795,9 +3870,9 @@ dependencies = [ "api-ui-game", "client-containers", "client-render-base", - "client-ui", "egui", "graphics", + "ingame-ui", "ui-base", "ui-generic", ] @@ -3829,22 +3904,22 @@ dependencies = [ [[package]] name = "enum-iterator" -version = "0.7.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eeac5c5edb79e4e39fe8439ef35207780a11f69c52cbe424ce3dfad4cb78de6" +checksum = "a4549325971814bda7a44061bf3fe7e487d447cba01e4220a4b454d630d7a016" dependencies = [ "enum-iterator-derive", ] [[package]] name = "enum-iterator-derive" -version = "0.7.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c134c37760b27a871ba422106eedbb8247da973a09e82558bf26d619c882b159" +checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] @@ -3930,7 +4005,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ - "log 0.4.29", + "log 0.4.30", "regex", ] @@ -3940,7 +4015,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" dependencies = [ - "log 0.4.29", + "log 0.4.30", "regex", ] @@ -3960,25 +4035,29 @@ dependencies = [ "anstyle", "env_filter 1.0.1", "jiff", - "log 0.4.29", + "log 0.4.30", ] [[package]] name = "epaint" -version = "0.33.3" +version = "0.34.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009d0dd3c2163823a0abdb899451ecbc78798dec545ee91b43aff1fa790bab62" +checksum = "6675898a291ec212fc3df04f537d177fce8496120244590e6359dcaa4c25da79" dependencies = [ - "ab_glyph", "ahash 0.8.12", "bytemuck", "ecolor", "emath", - "log 0.4.29", + "font-types", + "log 0.4.30", "nohash-hasher", "parking_lot", "profiling", + "self_cell", "serde", + "skrifa", + "smallvec", + "vello_cpu", ] [[package]] @@ -4005,13 +4084,21 @@ checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" [[package]] name = "etcetera" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +checksum = "de48cc4d1c1d97a20fd819def54b890cadde72ed3ad0c614822a0a433361be96" dependencies = [ "cfg-if", - "home", - "windows-sys 0.48.0", + "windows-sys 0.61.2", +] + +[[package]] +name = "euclid" +version = "0.22.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" +dependencies = [ + "num-traits", ] [[package]] @@ -4041,12 +4128,6 @@ dependencies = [ "image-utils", ] -[[package]] -name = "fallible-iterator" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" - [[package]] name = "fast-srgb8" version = "1.0.0" @@ -4074,6 +4155,15 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "fearless_simd" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb2907d1f08b2b316b9223ced5b0e89d87028ba8deae9764741dba8ff7f3903" +dependencies = [ + "bytemuck", +] + [[package]] name = "ff" version = "0.13.1" @@ -4086,9 +4176,9 @@ dependencies = [ [[package]] name = "ffmpeg-next" -version = "8.0.0" +version = "8.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d658424d233cbd993a972dd73a66ca733acd12a494c68995c9ac32ae1fe65b40" +checksum = "f7c4bd5ab1ac61f29c634df1175d350ded29cf74c3c6d4f7030431a5ae3c7d5d" dependencies = [ "bitflags 2.11.1", "ffmpeg-sys-next", @@ -4097,10 +4187,10 @@ dependencies = [ [[package]] name = "ffmpeg-sys-next" -version = "8.0.1" -source = "git+https://github.com/Jupeyy/rust-ffmpeg-sys.git?branch=pr_mingw_workaround#d3c8f775b9865bd04977f9113d6f4484e4b8b692" +version = "8.1.0" +source = "git+https://github.com/Jupeyy/rust-ffmpeg-sys.git?branch=pr_mingw_workaround#581c451312c03d5e79737a1ac4173c8ffb5064f5" dependencies = [ - "bindgen 0.72.1", + "bindgen", "cc", "libc", "num_cpus", @@ -4160,17 +4250,11 @@ dependencies = [ "zlib-rs", ] -[[package]] -name = "float_next_after" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" - [[package]] name = "flume" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ "futures-core", "futures-sink", @@ -4196,12 +4280,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] -name = "foreign-types" -version = "0.3.2" +name = "font-types" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +checksum = "5b38ad915f6dadd993ced50848a8291a543bd41ca62bc10740d5e64e2ab4cfd7" dependencies = [ - "foreign-types-shared 0.1.1", + "bytemuck", + "serde", ] [[package]] @@ -4211,7 +4296,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" dependencies = [ "foreign-types-macros", - "foreign-types-shared 0.3.1", + "foreign-types-shared", ] [[package]] @@ -4225,12 +4310,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "foreign-types-shared" version = "0.3.1" @@ -4395,7 +4474,7 @@ dependencies = [ "config", "game-config", "game-interface", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc", "indexmap 2.14.0", "math", @@ -4488,7 +4567,7 @@ dependencies = [ "ddnet-accounts-types", "either", "game-database", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc", "math", "num-derive", @@ -4496,7 +4575,7 @@ dependencies = [ "pool", "rustc-hash 2.1.2", "serde", - "strum 0.27.2", + "strum", ] [[package]] @@ -4508,7 +4587,7 @@ dependencies = [ "bincode", "game-base", "game-interface", - "log 0.4.29", + "log 0.4.30", "network", "pool", "serde", @@ -4550,13 +4629,13 @@ dependencies = [ "game-network", "game-state-wasm", "http-accounts", - "log 0.4.29", + "log 0.4.30", "map", "map-convert-lib", "master-server-types", "network", "pool", - "rand 0.9.4", + "rand 0.10.1", "rayon", "rustc-hash 2.1.2", "serde", @@ -4608,55 +4687,15 @@ dependencies = [ [[package]] name = "generic-array" -version = "1.4.1" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dab9e9188e97a93276e1fe7b56401b851e2b45a46d045ca658100c1303ada649" +checksum = "c2e55f16dcf0e9c00efbe2e655ffe45fc98e7066b52bc92f8a79e64060a79351" dependencies = [ "rustversion", "serde_core", "typenum", ] -[[package]] -name = "geo" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fc1a1678e54befc9b4bcab6cd43b8e7f834ae8ea121118b0fd8c42747675b4a" -dependencies = [ - "earcutr", - "float_next_after", - "geo-types", - "geographiclib-rs", - "i_overlay", - "log 0.4.29", - "num-traits", - "robust", - "rstar", - "spade", -] - -[[package]] -name = "geo-types" -version = "0.7.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94776032c45f950d30a13af6113c2ad5625316c9abfbccee4dd5a6695f8fe0f5" -dependencies = [ - "approx", - "num-traits", - "rayon", - "rstar", - "serde", -] - -[[package]] -name = "geographiclib-rs" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5a7f08910fd98737a6eda7568e7c5e645093e073328eeef49758cfe8b0489c7" -dependencies = [ - "libm", -] - [[package]] name = "gethostname" version = "1.1.0" @@ -4701,10 +4740,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", "wasip2", "wasip3", + "wasm-bindgen", ] [[package]] @@ -4718,20 +4760,21 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" -dependencies = [ - "fallible-iterator", - "indexmap 2.14.0", - "stable_deref_trait", -] +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "gimli" -version = "0.32.3" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" +checksum = "0bf7f043f89559805f8c7cacc432749b2fa0d0a0a9ee46ce47164ed5ba7f126c" +dependencies = [ + "fnv", + "hashbrown 0.16.1", + "indexmap 2.14.0", + "stable_deref_trait", +] [[package]] name = "git-version" @@ -4762,6 +4805,12 @@ dependencies = [ "mint", ] +[[package]] +name = "glam" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb167719045debebe9f532320accc7b5c993c5a3b813f5696a11d5ca7bdc57b" + [[package]] name = "glob" version = "0.3.3" @@ -4776,7 +4825,7 @@ checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" dependencies = [ "aho-corasick", "bstr", - "log 0.4.29", + "log 0.4.30", "regex-automata", "regex-syntax", ] @@ -4823,7 +4872,7 @@ dependencies = [ "graphics-types", "hiarc", "libc", - "log 0.4.29", + "log 0.4.30", "math", "naga", "naga_oil", @@ -4837,7 +4886,7 @@ dependencies = [ "replace_with", "serde", "serde_json", - "strum 0.27.2", + "strum", "thiserror 2.0.18", "thread-priority", ] @@ -4902,7 +4951,7 @@ dependencies = [ "num-traits", "pool", "serde", - "strum 0.27.2", + "strum", ] [[package]] @@ -4946,7 +4995,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.4.0", + "http 1.4.1", "indexmap 2.14.0", "slab", "tokio", @@ -4963,16 +5012,7 @@ dependencies = [ "cfg-if", "crunchy", "num-traits", - "zerocopy 0.8.48", -] - -[[package]] -name = "hash32" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" -dependencies = [ - "byteorder", + "zerocopy 0.8.50", ] [[package]] @@ -4995,18 +5035,12 @@ name = "hashbrown" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" -dependencies = [ - "ahash 0.8.12", -] [[package]] name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash 0.8.12", -] [[package]] name = "hashbrown" @@ -5014,10 +5048,7 @@ version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "allocator-api2", - "equivalent", "foldhash 0.1.5", - "serde", ] [[package]] @@ -5036,23 +5067,28 @@ name = "hashbrown" version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "foldhash 0.2.0", + "serde", + "serde_core", +] [[package]] name = "hashlink" version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +source = "git+https://github.com/Jupeyy/hashlink/?branch=ddnet#f8eb5c4bbfdc3fae6ea9bb9e9c7e33f82cffae0b" dependencies = [ "hashbrown 0.15.5", + "serde", ] [[package]] name = "hashlink" -version = "0.10.0" -source = "git+https://github.com/Jupeyy/hashlink/?branch=ddnet#f8eb5c4bbfdc3fae6ea9bb9e9c7e33f82cffae0b" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0b22561a9c04a7cb1a302c013e0259cd3b4bb619f145b32f72b8b4bcbed230" dependencies = [ - "hashbrown 0.15.5", - "serde", + "hashbrown 0.16.1", ] [[package]] @@ -5067,7 +5103,7 @@ dependencies = [ "http 0.2.12", "httpdate", "mime", - "sha1", + "sha1 0.10.6", ] [[package]] @@ -5079,16 +5115,6 @@ dependencies = [ "http 0.2.12", ] -[[package]] -name = "heapless" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" -dependencies = [ - "hash32", - "stable_deref_trait", -] - [[package]] name = "heck" version = "0.5.0" @@ -5141,7 +5167,7 @@ dependencies = [ "egui", "either", "fixed", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc-macro", "kira", "mint", @@ -5149,7 +5175,7 @@ dependencies = [ "rayon", "rustc-hash 2.1.2", "serde_json", - "spin 0.10.0", + "spin 0.12.0", "thiserror 2.0.18", "time", "tinyset", @@ -5170,11 +5196,11 @@ dependencies = [ [[package]] name = "hkdf" -version = "0.12.4" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ - "hmac", + "hmac 0.13.0", ] [[package]] @@ -5183,16 +5209,16 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] -name = "home" -version = "0.5.12" +name = "hmac" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ - "windows-sys 0.61.2", + "digest 0.11.3", ] [[package]] @@ -5208,9 +5234,9 @@ dependencies = [ [[package]] name = "http" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +checksum = "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0" dependencies = [ "bytes", "itoa", @@ -5246,7 +5272,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.4.0", + "http 1.4.1", ] [[package]] @@ -5257,7 +5283,7 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "pin-project-lite", ] @@ -5290,10 +5316,10 @@ dependencies = [ "base", "client-containers", "client-render-base", - "client-ui", "egui", "game-interface", "graphics", + "ingame-ui", "pool", "ui-base", "ui-generic", @@ -5309,6 +5335,15 @@ dependencies = [ "image-utils", ] +[[package]] +name = "hybrid-array" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" version = "0.14.32" @@ -5335,16 +5370,16 @@ dependencies = [ [[package]] name = "hyper" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" +checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" dependencies = [ "atomic-waker", "bytes", "futures-channel", "futures-core", "h2 0.4.14", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "httparse", "httpdate", @@ -5361,30 +5396,13 @@ version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ - "http 1.4.0", - "hyper 1.9.0", + "http 1.4.1", + "hyper 1.10.1", "hyper-util", "rustls", "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.7", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper 1.9.0", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", ] [[package]] @@ -5397,14 +5415,14 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", - "hyper 1.9.0", + "hyper 1.10.1", "ipnet", "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.3", + "socket2 0.6.4", "system-configuration", "tokio", "tower-service", @@ -5412,49 +5430,6 @@ dependencies = [ "windows-registry", ] -[[package]] -name = "i_float" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "010025c2c532c8d82e42d0b8bb5184afa449fa6f06c709ea9adcb16c49ae405b" -dependencies = [ - "libm", -] - -[[package]] -name = "i_key_sort" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9190f86706ca38ac8add223b2aed8b1330002b5cdbbce28fb58b10914d38fc27" - -[[package]] -name = "i_overlay" -version = "4.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413183068e6e0289e18d7d0a1f661b81546e6918d5453a44570b9ab30cbed1b3" -dependencies = [ - "i_float", - "i_key_sort", - "i_shape", - "i_tree", - "rayon", -] - -[[package]] -name = "i_shape" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ea154b742f7d43dae2897fcd5ead86bc7b5eefcedd305a7ebf9f69d44d61082" -dependencies = [ - "i_float", -] - -[[package]] -name = "i_tree" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e6d558e6d4c7b82bc51d9c771e7a927862a161a7d87bf2b0541450e0e20915" - [[package]] name = "iana-time-zone" version = "0.1.65" @@ -5465,7 +5440,7 @@ dependencies = [ "core-foundation-sys", "iana-time-zone-haiku", "js-sys", - "log 0.4.29", + "log 0.4.30", "wasm-bindgen", "windows-core 0.62.2", ] @@ -5602,7 +5577,7 @@ checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a" dependencies = [ "crossbeam-deque", "globset", - "log 0.4.29", + "log 0.4.30", "memchr", "regex-automata", "same-file", @@ -5678,7 +5653,32 @@ dependencies = [ ] [[package]] -name = "ingame_menu" +name = "ingame-ui" +version = "0.1.0" +dependencies = [ + "base", + "client-containers", + "client-render-base", + "client-types", + "client-ui-utils", + "egui", + "egui_commonmark", + "egui_extras", + "fuzzy-matcher", + "game-base", + "game-interface", + "graphics", + "hashlink 0.10.0", + "math", + "pool", + "serde", + "tracing", + "ui-base", + "ui-generic", +] + +[[package]] +name = "ingame_menu" version = "0.1.0" dependencies = [ "anyhow", @@ -5689,6 +5689,7 @@ dependencies = [ "client-containers", "client-render-base", "client-ui", + "client-ui-utils", "egui", "email_address", "game-base", @@ -5800,24 +5801,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -5844,12 +5827,12 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.24" +version = "0.2.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00b5dbd620d61dfdcb6007c9c1f6054ebd75319f163d886a9055cec1155073d" +checksum = "4603d3033e49e2b0e31229fcab20a5d40089c607d975cd9c80551dc69eed9102" dependencies = [ "jiff-static", - "log 0.4.29", + "log 0.4.30", "portable-atomic", "portable-atomic-util", "serde_core", @@ -5857,9 +5840,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.24" +version = "0.2.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e000de030ff8022ea1da3f466fbb0f3a809f5e51ed31f6dd931c35181ad8e6d7" +checksum = "782d32378dddf207193ac91cefb848ad41abb58195c95168e1291227a0832b47" dependencies = [ "proc-macro2", "quote", @@ -5876,7 +5859,7 @@ dependencies = [ "cfg-if", "combine", "jni-sys 0.3.1", - "log 0.4.29", + "log 0.4.30", "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", @@ -5892,7 +5875,7 @@ dependencies = [ "combine", "jni-macros", "jni-sys 0.4.1", - "log 0.4.29", + "log 0.4.30", "simd_cesu8", "thiserror 2.0.18", "walkdir", @@ -5952,9 +5935,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.98" +version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" +checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" dependencies = [ "cfg-if", "futures-util", @@ -5969,7 +5952,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a9f9dff5e262540b628b00d5e1a772270a962d6869f8695bb24832ff3b394" dependencies = [ "cpal 0.15.3", - "glam", + "glam 0.29.3", "mint", "paste", "ringbuf", @@ -6008,14 +5991,23 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "kurbo" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b60dfc32f652b926df6192e55525b16d186c69d47876c3ead4da5cc9f8450e2" +dependencies = [ + "arrayvec 0.7.6", + "euclid", + "polycool", + "smallvec", +] + [[package]] name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin 0.9.8", -] [[package]] name = "leb128" @@ -6038,7 +6030,7 @@ dependencies = [ "config", "flate2", "graphics-types", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc", "image-utils", "itertools 0.14.0", @@ -6073,16 +6065,17 @@ dependencies = [ "libtw2-net", "libtw2-packer", "libtw2-snapshot", - "log 0.4.29", + "log 0.4.30", "map", "master-server-types", "math", "network", "pool", - "rand 0.9.4", + "rand 0.10.1", "rayon", "serde_json", - "sha2", + "sha2 0.11.0", + "tile-map-collision", "tokio", "uuid 0.8.2", "vanilla", @@ -6156,14 +6149,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" +checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" dependencies = [ "bitflags 2.11.1", "libc", "plain", - "redox_syscall 0.7.5", + "redox_syscall 0.8.0", ] [[package]] @@ -6296,6 +6289,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee" +[[package]] +name = "linebender_resource_handle" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4" + [[package]] name = "linux-raw-sys" version = "0.1.4" @@ -6395,14 +6394,14 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.29", + "log 0.4.30", ] [[package]] name = "log" -version = "0.4.29" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "616ec5685824bcc94416c6d4a7a446eea774a31efd7062c8480ba6fd06d7a6e5" [[package]] name = "logos" @@ -6446,11 +6445,11 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "lz4_flex" -version = "0.11.6" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373f5eceeeab7925e0c1098212f2fbc4d416adec9d35051a6ab251e824c1854a" +checksum = "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e" dependencies = [ - "twox-hash 2.1.2", + "twox-hash", ] [[package]] @@ -6468,11 +6467,26 @@ dependencies = [ "libc", ] +[[package]] +name = "mach2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a1b95cd5421ec55b445b5ae102f5ea0e768de1f82bd3001e11f426c269c3aea" +dependencies = [ + "libc", +] + +[[package]] +name = "mach2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dae608c151f68243f2b000364e1f7b186d9c29845f7d2d85bd31b9ad77ad552b" + [[package]] name = "machine-uid" -version = "0.5.4" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d7217d573cdb141d6da43113b098172e057d39915d79c4bdedbc3aacd46bd96" +checksum = "cfe0d6336d341b10ae80e099b8f3c59f34bf8aef66ef25e83aa98bf2955c0ae7" dependencies = [ "libc", "windows-registry", @@ -6486,8 +6500,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb4bdc8b0ce69932332cf76d24af69c3a155242af95c226b2ab6c2e371ed1149" dependencies = [ "thiserror 2.0.18", - "zerocopy 0.8.48", - "zerocopy-derive 0.8.48", + "zerocopy 0.8.50", + "zerocopy-derive 0.8.50", ] [[package]] @@ -6503,6 +6517,7 @@ dependencies = [ "client-containers", "client-render-base", "client-ui", + "client-ui-utils", "egui", "email_address", "game-base", @@ -6532,23 +6547,25 @@ dependencies = [ "base-fs", "base-io", "bincode", + "bitcode", "bitflags 2.11.1", "brotli", "difference", "fixed", "flate2", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc", "image-utils", "is_sorted", "lz4_flex", "math", "rayon", - "ruzstd 0.8.3", + "ruzstd", "serde", "serde_json", "serde_with", "time", + "tracing", "zstd", ] @@ -6562,7 +6579,7 @@ dependencies = [ "base-io", "clap 4.6.1", "env_logger", - "log 0.4.29", + "log 0.4.30", "map", "map-convert-lib", "rayon", @@ -6605,12 +6622,12 @@ dependencies = [ "env_logger", "headers", "hex", - "log 0.4.29", + "log 0.4.30", "master-server-types", - "rand 0.9.4", + "rand 0.10.1", "serde", "serde_json", - "sha2", + "sha2 0.11.0", "tokio", "tokio-stream", "warp", @@ -6653,7 +6670,7 @@ dependencies = [ "hiarc", "num-traits", "palette", - "rand 0.9.4", + "rand 0.10.1", "rand_xoshiro", "serde", ] @@ -6670,19 +6687,19 @@ dependencies = [ [[package]] name = "md-5" -version = "0.10.6" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +checksum = "69b6441f590336821bb897fb28fc622898ccceb1d6cea3fde5ea86b090c4de98" dependencies = [ "cfg-if", - "digest", + "digest 0.11.3", ] [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" [[package]] name = "memmap2" @@ -6728,11 +6745,11 @@ dependencies = [ "atomic_enum", "audiopus_sys", "base", - "cpal 0.16.0", + "cpal 0.17.1", "crossbeam", "deep_filter", "hiarc", - "log 0.4.29", + "log 0.4.30", "ndarray", "opus", "rubato 0.16.2", @@ -6792,21 +6809,21 @@ checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" [[package]] name = "mio" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" dependencies = [ "libc", - "log 0.4.29", + "log 0.4.30", "wasi", "windows-sys 0.61.2", ] [[package]] name = "more-asserts" -version = "0.2.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" +checksum = "1fafa6961cabd9c63bcd77a45d7e3b7f3b552b70417831fb0f56db717e72407e" [[package]] name = "motd" @@ -6814,8 +6831,8 @@ version = "0.1.0" dependencies = [ "api-ui", "api-ui-game", - "client-ui", "egui", + "ingame-ui", "ui-base", "ui-generic", ] @@ -6852,22 +6869,22 @@ dependencies = [ [[package]] name = "naga" -version = "27.0.3" +version = "29.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" +checksum = "0dd91265cc2454558f659b3b4b9640f0ddb8cc6521277f166b8a8c181c898079" dependencies = [ "arrayvec 0.7.6", - "bit-set 0.8.0", + "bit-set 0.9.1", "bitflags 2.11.1", "cfg-if", "cfg_aliases", - "codespan-reporting", + "codespan-reporting 0.13.1", "half", "hashbrown 0.16.1", "hexf-parse", "indexmap 2.14.0", "libm", - "log 0.4.29", + "log 0.4.30", "num-traits", "once_cell", "pp-rs", @@ -6879,11 +6896,11 @@ dependencies = [ [[package]] name = "naga_oil" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310c347db1b30e69581f3b84dc9a5c311ed583f67851b39b77953cb7a066c97f" +checksum = "319f03062940ed85c03da020042618356bb8ca5263020322930883b05e30208e" dependencies = [ - "codespan-reporting", + "codespan-reporting 0.12.0", "data-encoding", "indexmap 2.14.0", "naga", @@ -6900,7 +6917,7 @@ version = "0.1.0" dependencies = [ "anyhow", "base", - "log 0.4.29", + "log 0.4.30", "native-display", "raw-window-handle", "tracing", @@ -6909,13 +6926,12 @@ dependencies = [ [[package]] name = "native-dialog" -version = "0.9.6" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2373fb763ea6962e8c586571c7f9c5d8c995f9777cbdebbe0180263691bd4b" +checksum = "971a75894502033d79718a00a86e03595caa1a3620e0cba1985a5fde8d2e0b66" dependencies = [ "ascii", "block2 0.6.2", - "dirs", "dispatch2", "formatx", "objc2 0.6.4", @@ -6927,7 +6943,7 @@ dependencies = [ "thiserror 2.0.18", "versions", "wfd", - "which", + "which 7.0.3", "winapi", ] @@ -6939,23 +6955,6 @@ dependencies = [ "raw-window-handle", ] -[[package]] -name = "native-tls" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" -dependencies = [ - "libc", - "log 0.4.29", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - [[package]] name = "ndarray" version = "0.15.6" @@ -6978,7 +6977,7 @@ checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" dependencies = [ "bitflags 2.11.1", "jni-sys 0.3.1", - "log 0.4.29", + "log 0.4.30", "ndk-sys 0.5.0+25.2.9519653", "num_enum", "thiserror 1.0.69", @@ -6992,7 +6991,7 @@ checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ "bitflags 2.11.1", "jni-sys 0.3.1", - "log 0.4.29", + "log 0.4.30", "ndk-sys 0.6.0+11769913", "num_enum", "raw-window-handle", @@ -7037,7 +7036,7 @@ dependencies = [ "ed25519-dalek", "futures-util", "ipnet", - "log 0.4.29", + "log 0.4.30", "num-derive", "num-traits", "pollster", @@ -7045,7 +7044,7 @@ dependencies = [ "prefix-trie", "quinn 0.11.7", "rand 0.8.6", - "rcgen 0.14.8", + "rcgen", "rustls", "serde", "serde_json", @@ -7103,7 +7102,7 @@ dependencies = [ "inotify", "kqueue", "libc", - "log 0.4.29", + "log 0.4.30", "mio", "notify-types", "walkdir", @@ -7152,22 +7151,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-bigint-dig" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" -dependencies = [ - "lazy_static", - "libm", - "num-integer", - "num-iter", - "num-traits", - "rand 0.8.6", - "smallvec", - "zeroize", -] - [[package]] name = "num-complex" version = "0.4.6" @@ -7347,6 +7330,16 @@ dependencies = [ "objc2-foundation 0.3.2", ] +[[package]] +name = "objc2-avf-audio" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13a380031deed8e99db00065c45937da434ca987c034e13b87e4441f9e4090be" +dependencies = [ + "objc2 0.6.4", + "objc2-foundation 0.3.2", +] + [[package]] name = "objc2-cloud-kit" version = "0.2.2" @@ -7381,6 +7374,7 @@ dependencies = [ "objc2 0.6.4", "objc2-core-audio-types", "objc2-core-foundation", + "objc2-foundation 0.3.2", ] [[package]] @@ -7412,7 +7406,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ "bitflags 2.11.1", + "block2 0.6.2", "dispatch2", + "libc", "objc2 0.6.4", ] @@ -7479,6 +7475,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ "bitflags 2.11.1", + "block2 0.6.2", + "libc", "objc2 0.6.4", "objc2-core-foundation", ] @@ -7572,6 +7570,18 @@ dependencies = [ "objc2-user-notifications", ] +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags 2.11.1", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", +] + [[package]] name = "objc2-uniform-type-identifiers" version = "0.2.2" @@ -7598,25 +7608,25 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ - "crc32fast", - "flate2", - "hashbrown 0.14.5", - "indexmap 2.14.0", "memchr", - "ruzstd 0.5.0", ] [[package]] name = "object" -version = "0.37.3" +version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +checksum = "271638cd5fa9cca89c4c304675ca658efc4e64a66c716b7cfe1afb4b9611dbbc" dependencies = [ + "crc32fast", + "flate2", + "hashbrown 0.16.1", + "indexmap 2.14.0", "memchr", + "ruzstd", ] [[package]] @@ -7672,22 +7682,13 @@ dependencies = [ "cc", ] -[[package]] -name = "oid-registry" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" -dependencies = [ - "asn1-rs 0.6.2", -] - [[package]] name = "oid-registry" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" dependencies = [ - "asn1-rs 0.7.2", + "asn1-rs", ] [[package]] @@ -7702,49 +7703,12 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "openssl" -version = "0.10.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a45fa2aa886c42762255da344f0a0d313e254066c46aad76f300c3d3da62d967" -dependencies = [ - "bitflags 2.11.1", - "cfg-if", - "foreign-types 0.3.2", - "libc", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "openssl-probe" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" -[[package]] -name = "openssl-sys" -version = "0.9.116" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28a22dc7140cda5f096e5e7724a6962ca81a7f8bfd2979f9b18c11af56318c4" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "option-ext" version = "0.2.0" @@ -7768,9 +7732,9 @@ dependencies = [ [[package]] name = "orbclient" -version = "0.3.54" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a570f6bca41d29acb2139229a7c873ec99bc9a313bd10804081d89bfac8ff329" +checksum = "5df339f526ea9a60e371768d50efc2f2508c7203290731565d1f7a6f71d21747" dependencies = [ "libc", "libredox", @@ -7812,15 +7776,14 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "oxipng" -version = "9.1.5" +version = "10.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c613f0f566526a647c7473f6a8556dbce22c91b13485ee4b4ec7ab648e4973" +checksum = "85eaaaa67c73558edaf5270e28abdf8d0663d88e8e7570cf894eff25305f4ed2" dependencies = [ "bitvec", - "crossbeam-channel", "indexmap 2.14.0", "libdeflater", - "log 0.4.29", + "log 0.4.30", "rayon", "rgb", "rustc-hash 2.1.2", @@ -7835,7 +7798,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "primeorder", - "sha2", + "sha2 0.10.9", ] [[package]] @@ -7949,6 +7912,19 @@ dependencies = [ "base64ct", ] +[[package]] +name = "peniko" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "839c8299360d2e998bdb106dc0a6cd71dcc5f4df51df1b620361bf50e283cca6" +dependencies = [ + "bytemuck", + "color", + "kurbo", + "linebender_resource_handle", + "smallvec", +] + [[package]] name = "percent-encoding" version = "2.3.2" @@ -7995,7 +7971,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" dependencies = [ "pest", - "sha2", + "sha2 0.10.9", ] [[package]] @@ -8068,17 +8044,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" -[[package]] -name = "pkcs1" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" -dependencies = [ - "der", - "pkcs8", - "spki", -] - [[package]] name = "pkcs8" version = "0.10.2" @@ -8147,12 +8112,21 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" +[[package]] +name = "polycool" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50596ddc09eb5ad5f75cacd40209568e66df71baf86e1499a0e99c4cff12a5a6" +dependencies = [ + "arrayvec 0.7.6", +] + [[package]] name = "pool" version = "0.1.0" dependencies = [ "bincode", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc", "parking_lot", "rustc-hash 2.1.2", @@ -8204,7 +8178,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.48", + "zerocopy 0.8.50", ] [[package]] @@ -8233,10 +8207,11 @@ dependencies = [ [[package]] name = "prefix-trie" -version = "0.8.4" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf6e3177f0684016a5c209b00882e15f8bdd3f3bb48f0491df10cd102d0c6e7" +checksum = "fbeb97a96d43f215f842f6ab81e8c7b5f6e9b912495c3178127f54f9dce28e32" dependencies = [ + "array-const-fn-init", "either", "ipnet", "num-traits", @@ -8276,7 +8251,7 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.25.11+spec-1.1.0", + "toml_edit", ] [[package]] @@ -8354,33 +8329,13 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive 0.1.4", -] - [[package]] name = "ptr_meta" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b9a0cf95a1196af61d4f1cbdab967179516d9a4a4312af1f31948f8f6224a79" dependencies = [ - "ptr_meta_derive 0.3.1", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "ptr_meta_derive", ] [[package]] @@ -8396,9 +8351,9 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a14896dfa883796f1cb410461aef38810ea05f2b2c33c5aded3649095fdad" +checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" dependencies = [ "bitflags 2.11.1", "memchr", @@ -8470,7 +8425,7 @@ dependencies = [ "quinn-udp 0.5.14", "rustc-hash 2.1.2", "rustls", - "socket2 0.6.3", + "socket2 0.6.4", "thiserror 2.0.18", "tokio", "tracing", @@ -8502,6 +8457,7 @@ version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ + "aws-lc-rs", "bytes", "getrandom 0.3.4", "lru-slab", @@ -8539,7 +8495,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.3", + "socket2 0.6.4", "tracing", "windows-sys 0.60.2", ] @@ -8577,7 +8533,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a063ea72381527c2a0561da9c80000ef822bdd7c3241b1cc1b12100e3df081ee" dependencies = [ - "ptr_meta 0.3.1", + "ptr_meta", ] [[package]] @@ -8601,6 +8557,17 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +dependencies = [ + "chacha20", + "getrandom 0.4.2", + "rand_core 0.10.1", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -8639,6 +8606,12 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + [[package]] name = "rand_distr" version = "0.4.3" @@ -8651,13 +8624,19 @@ dependencies = [ [[package]] name = "rand_xoshiro" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" +checksum = "662effc7698e08ea324d3acccf8d9d7f7bf79b9785e270a174ea36e56900c91d" dependencies = [ - "rand_core 0.9.5", + "rand_core 0.10.1", ] +[[package]] +name = "rangemap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "973443cf09a9c8656b574a866ab68dfa19f0867d0340648c7d2f6a71b8a8ea68" + [[package]] name = "raw-window-handle" version = "0.6.2" @@ -8704,29 +8683,26 @@ dependencies = [ [[package]] name = "rcgen" -version = "0.13.2" +version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" +checksum = "57f6d249aad744e274e682777a50283a225a32705394ee6d5fcc01efa25e4055" dependencies = [ "pem", "ring", "rustls-pki-types", "time", - "yasna 0.5.2", + "x509-parser", + "yasna", ] [[package]] -name = "rcgen" -version = "0.14.8" +name = "read-fonts" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57f6d249aad744e274e682777a50283a225a32705394ee6d5fcc01efa25e4055" +checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" dependencies = [ - "pem", - "ring", - "rustls-pki-types", - "time", - "x509-parser 0.18.1", - "yasna 0.6.0", + "bytemuck", + "font-types", ] [[package]] @@ -8758,9 +8734,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4666a1a60d8412eab19d94f6d13dcc9cea0a5ef4fdf6a5db306537413c661b1b" +checksum = "7c7591fa2c6b601dfcfe5f043f65a1c39fcdf50efefcd7f1572e538c1f4b398d" dependencies = [ "bitflags 2.11.1", ] @@ -8809,14 +8785,15 @@ dependencies = [ [[package]] name = "regalloc2" -version = "0.9.3" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" +checksum = "08effbc1fa53aaebff69521a5c05640523fab037b34a4a2c109506bc938246fa" dependencies = [ - "hashbrown 0.13.2", - "log 0.4.29", - "rustc-hash 1.1.0", - "slice-group-by", + "allocator-api2", + "bumpalo", + "hashbrown 0.15.5", + "log 0.4.30", + "rustc-hash 2.1.2", "smallvec", ] @@ -8857,7 +8834,7 @@ checksum = "e6b6ebd13bc009aef9cd476c1310d49ac354d36e240cf1bd753290f3dc7199a7" dependencies = [ "bitflags 1.3.2", "libc", - "mach2", + "mach2 0.4.3", "windows-sys 0.52.0", ] @@ -8867,7 +8844,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cadadef317c2f20755a64d7fdc48f9e7178ee6b0e1f7fce33fa60f1d68a276e6" dependencies = [ - "bytecheck 0.8.2", + "bytecheck", ] [[package]] @@ -8916,37 +8893,34 @@ checksum = "51743d3e274e2b18df81c4dc6caf8a5b8e15dbe799e0dca05c7617380094e884" [[package]] name = "reqwest" -version = "0.12.28" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" dependencies = [ "base64 0.22.1", "bytes", "encoding_rs", "futures-core", "h2 0.4.14", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "http-body-util", - "hyper 1.9.0", + "hyper 1.10.1", "hyper-rustls", - "hyper-tls", "hyper-util", "js-sys", - "log 0.4.29", + "log 0.4.30", "mime", - "native-tls", "percent-encoding", "pin-project-lite", "quinn 0.11.9", "rustls", "rustls-pki-types", + "rustls-platform-verifier", "serde", "serde_json", - "serde_urlencoded", "sync_wrapper", "tokio", - "tokio-native-tls", "tokio-rustls", "tower", "tower-http", @@ -8955,7 +8929,6 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 1.0.7", ] [[package]] @@ -8964,7 +8937,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "hmac", + "hmac 0.12.1", "subtle", ] @@ -9006,17 +8979,17 @@ version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73389e0c99e664f919275ab5b5b0471391fe9a8de61e1dff9b1eaf56a90f16e3" dependencies = [ - "bytecheck 0.8.2", + "bytecheck", "bytes", "hashbrown 0.17.1", "indexmap 2.14.0", "munge", - "ptr_meta 0.3.1", + "ptr_meta", "rancor", "rend", "rkyv_derive", "tinyvec", - "uuid 1.23.1", + "uuid 1.23.2", ] [[package]] @@ -9030,43 +9003,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "robust" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e27ee8bb91ca0adcf0ecb116293afa12d393f9c2b9b9cd54d33e8078fe19839" - -[[package]] -name = "rsa" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" -dependencies = [ - "const-oid", - "digest", - "num-bigint-dig", - "num-integer", - "num-traits", - "pkcs1", - "pkcs8", - "rand_core 0.6.4", - "signature", - "spki", - "subtle", - "zeroize", -] - -[[package]] -name = "rstar" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "421400d13ccfd26dfa5858199c30a5d76f9c54e0dba7575273025b43c5175dbb" -dependencies = [ - "heapless", - "num-traits", - "smallvec", -] - [[package]] name = "rubato" version = "0.14.1" @@ -9197,6 +9133,7 @@ version = "0.23.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" dependencies = [ + "aws-lc-rs", "once_cell", "ring", "rustls-pki-types", @@ -9205,6 +9142,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rustls-native-certs" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pki-types" version = "1.14.1" @@ -9215,12 +9164,40 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rustls-platform-verifier" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" +dependencies = [ + "core-foundation 0.10.1", + "core-foundation-sys", + "jni 0.22.4", + "log 0.4.30", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + [[package]] name = "rustls-webpki" version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -9232,24 +9209,13 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" -[[package]] -name = "ruzstd" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" -dependencies = [ - "byteorder", - "derive_more 0.99.20", - "twox-hash 1.6.3", -] - [[package]] name = "ruzstd" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7c1c839d570d835527c9a5e4db7cb2198683a988cb9d7293fc8674e6bd58fc8" dependencies = [ - "twox-hash 2.1.2", + "twox-hash", ] [[package]] @@ -9315,20 +9281,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "schemars" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" -dependencies = [ - "dyn-clone", - "indexmap 2.14.0", - "schemars_derive", - "serde", - "serde_json", - "url", -] - [[package]] name = "schemars" version = "0.9.0" @@ -9348,16 +9300,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" dependencies = [ "dyn-clone", + "indexmap 2.14.0", "ref-cast", + "schemars_derive", "serde", "serde_json", + "url", ] [[package]] name = "schemars_derive" -version = "0.8.22" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +checksum = "7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f" dependencies = [ "proc-macro2", "quote", @@ -9387,10 +9342,10 @@ dependencies = [ "base", "client-containers", "client-render-base", - "client-ui", "egui", "game-interface", "graphics", + "ingame-ui", "math", "pool", "ui-base", @@ -9404,7 +9359,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" dependencies = [ "ab_glyph", - "log 0.4.29", + "log 0.4.30", "memmap2 0.9.10", "smithay-client-toolkit", "tiny-skia", @@ -9550,9 +9505,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "indexmap 2.14.0", "itoa", @@ -9573,15 +9528,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - [[package]] name = "serde_spanned" version = "1.1.1" @@ -9668,7 +9614,18 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures 0.2.17", - "digest", + "digest 0.10.7", +] + +[[package]] +name = "sha1" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aacc4cc499359472b4abe1bf11d0b12e688af9a805fa5e3016f9a386dc2d0214" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "digest 0.11.3", ] [[package]] @@ -9679,7 +9636,18 @@ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures 0.2.17", - "digest", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "digest 0.11.3", ] [[package]] @@ -9707,13 +9675,19 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + [[package]] name = "signature" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "digest", + "digest 0.10.7", "rand_core 0.6.4", ] @@ -9762,16 +9736,20 @@ dependencies = [ ] [[package]] -name = "slab" -version = "0.4.12" +name = "skrifa" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" +checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" +dependencies = [ + "bytemuck", + "read-fonts", +] [[package]] -name = "slice-group-by" -version = "0.3.1" +name = "slab" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" @@ -9793,7 +9771,7 @@ dependencies = [ "calloop-wayland-source", "cursor-icon", "libc", - "log 0.4.29", + "log 0.4.30", "memmap2 0.9.10", "rustix 0.38.44", "thiserror 1.0.69", @@ -9828,9 +9806,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", "windows-sys 0.61.2", @@ -9858,24 +9836,12 @@ dependencies = [ "config", "hiarc", "kira", - "log 0.4.29", + "log 0.4.30", "math", "mint", "sound", ] -[[package]] -name = "spade" -version = "2.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9699399fd9349b00b184f5635b074f9ec93afffef30c853f8c875b32c0f8c7fa" -dependencies = [ - "hashbrown 0.16.1", - "num-traits", - "robust", - "smallvec", -] - [[package]] name = "spin" version = "0.9.8" @@ -9887,15 +9853,15 @@ dependencies = [ [[package]] name = "spin" -version = "0.10.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" +checksum = "1527984ca054dfca79333baec451042863f485fbee01b7bf6d911de915cac865" [[package]] name = "spirv" -version = "0.3.0+sdk-1.3.268.0" +version = "0.4.0+sdk-1.4.341.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f" dependencies = [ "bitflags 2.11.1", ] @@ -9908,7 +9874,7 @@ checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der", - "sha2", + "sha2 0.10.9", ] [[package]] @@ -9923,9 +9889,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.8.6" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" +checksum = "378620ccc25c62c89d8be1c819e76a88d59bdcc3304733330788948e619bfd71" dependencies = [ "sqlx-core", "sqlx-macros", @@ -9936,12 +9902,13 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.8.6" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" +checksum = "05b44e85bf579a8eeb4ceaa77a3a523baf2bf0e9bac7e40f405d537b5d2d5ccb" dependencies = [ "base64 0.22.1", "bytes", + "cfg-if", "chrono", "crc", "crossbeam-queue", @@ -9951,31 +9918,30 @@ dependencies = [ "futures-intrusive", "futures-io", "futures-util", - "hashbrown 0.15.5", - "hashlink 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hashbrown 0.16.1", + "hashlink 0.11.0", "indexmap 2.14.0", - "log 0.4.29", + "log 0.4.30", "memchr", - "once_cell", "percent-encoding", "rustls", "serde", "serde_json", - "sha2", + "sha2 0.10.9", "smallvec", "thiserror 2.0.18", "tokio", "tokio-stream", "tracing", "url", - "webpki-roots 0.26.11", + "webpki-roots 1.0.7", ] [[package]] name = "sqlx-macros" -version = "0.8.6" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" +checksum = "bd2b84f2bc39a5705ef27ec785a11c934a41bbd4a24941e257927cddc26b60bf" dependencies = [ "proc-macro2", "quote", @@ -9986,77 +9952,62 @@ dependencies = [ [[package]] name = "sqlx-macros-core" -version = "0.8.6" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" +checksum = "fb8d96de5fdc85a5c4ec813432b523ec637e80ba98f046555f75f7908ddac7c3" dependencies = [ + "cfg-if", "dotenvy", "either", "heck", "hex", - "once_cell", "proc-macro2", "quote", "serde", "serde_json", - "sha2", + "sha2 0.10.9", "sqlx-core", "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", "syn 2.0.117", + "thiserror 2.0.18", "tokio", "url", ] [[package]] name = "sqlx-mysql" -version = "0.8.6" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" +checksum = "90b8020fe17c5f2c245bfa2505d7ef59c5604839527c740266ad2214acebea27" dependencies = [ - "atoi", - "base64 0.22.1", "bitflags 2.11.1", "byteorder", "bytes", "chrono", "crc", - "digest", + "digest 0.11.3", "dotenvy", "either", - "futures-channel", "futures-core", - "futures-io", "futures-util", "generic-array 0.14.9", - "hex", - "hkdf", - "hmac", - "itoa", - "log 0.4.29", - "md-5", - "memchr", - "once_cell", + "log 0.4.30", "percent-encoding", - "rand 0.8.6", - "rsa", "serde", - "sha1", - "sha2", - "smallvec", + "sha1 0.11.0", + "sha2 0.11.0", "sqlx-core", - "stringprep", "thiserror 2.0.18", "tracing", - "whoami", ] [[package]] name = "sqlx-postgres" -version = "0.8.6" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" +checksum = "87a2bdd6e83f6b3ea525ca9fee568030508b58355a43d0b2c1674d5f79dcd65e" dependencies = [ "atoi", "base64 0.22.1", @@ -10071,17 +10022,15 @@ dependencies = [ "futures-util", "hex", "hkdf", - "hmac", - "home", + "hmac 0.13.0", "itoa", - "log 0.4.29", + "log 0.4.30", "md-5", "memchr", - "once_cell", - "rand 0.8.6", + "rand 0.10.1", "serde", "serde_json", - "sha2", + "sha2 0.11.0", "smallvec", "sqlx-core", "stringprep", @@ -10092,23 +10041,23 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.8.6" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" +checksum = "488e99c397a62007e4229aec669a179816339afc6d2620ca6fa420dbee2e982c" dependencies = [ "atoi", "chrono", "flume", + "form_urlencoded", "futures-channel", "futures-core", "futures-executor", "futures-intrusive", "futures-util", "libsqlite3-sys", - "log 0.4.29", + "log 0.4.30", "percent-encoding", "serde", - "serde_urlencoded", "sqlx-core", "thiserror 2.0.18", "tracing", @@ -10145,10 +10094,10 @@ dependencies = [ "game-database", "game-interface", "graphics-types", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc", "legacy-map", - "log 0.4.29", + "log 0.4.30", "map", "math", "num", @@ -10160,6 +10109,7 @@ dependencies = [ "serde", "serde_json", "thiserror 2.0.18", + "tracing", "vanilla", ] @@ -10182,16 +10132,16 @@ dependencies = [ "anyhow", "async-trait", "base", - "log 0.4.29", + "log 0.4.30", "steamworks", "tokio", ] [[package]] name = "steamworks" -version = "0.12.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "722f54c70818b8debdc25b18618b77a0a69fa280012c29e7904d32f9136299fc" +checksum = "5ff29921f6a7e8c85b0c971ec3c42002b9f535e3b8f4358cb22911d43709739a" dependencies = [ "bitflags 2.11.1", "paste", @@ -10201,9 +10151,9 @@ dependencies = [ [[package]] name = "steamworks-sys" -version = "0.12.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42862065c9e685d08cc3d9f6c609d4b46bd9684ec7e9420688eb979213469582" +checksum = "ae139f051204a4af015d4f0ed3a1f7a51020d03a44c7cf249168c543d88131e9" [[package]] name = "strength_reduce" @@ -10245,12 +10195,6 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - [[package]] name = "strsim" version = "0.11.1" @@ -10259,40 +10203,18 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros 0.26.4", -] - -[[package]] -name = "strum" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" -dependencies = [ - "strum_macros 0.27.2", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.117", + "strum_macros", ] [[package]] name = "strum_macros" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" dependencies = [ "heck", "proc-macro2", @@ -10338,7 +10260,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c91565e180aea25d9b80a910c546802526ffd0072d0b8974e3ebe59b686c9976" dependencies = [ - "log 0.4.29", + "log 0.4.30", "symphonia-core", "symphonia-metadata", "symphonia-utils-xiph", @@ -10351,7 +10273,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4872dd6bb56bf5eac799e3e957aa1981086c3e613b27e0ac23b176054f7c57ed" dependencies = [ "lazy_static", - "log 0.4.29", + "log 0.4.30", "symphonia-core", "symphonia-metadata", ] @@ -10362,7 +10284,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e89d716c01541ad3ebe7c91ce4c8d38a7cf266a3f7b2f090b108fb0cb031d95" dependencies = [ - "log 0.4.29", + "log 0.4.30", "symphonia-core", ] @@ -10372,7 +10294,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f025837c309cd69ffef572750b4a2257b59552c5399a5e49707cc5b1b85d1c73" dependencies = [ - "log 0.4.29", + "log 0.4.30", "symphonia-core", "symphonia-utils-xiph", ] @@ -10387,7 +10309,7 @@ dependencies = [ "bitflags 1.3.2", "bytemuck", "lazy_static", - "log 0.4.29", + "log 0.4.30", ] [[package]] @@ -10396,7 +10318,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b4955c67c1ed3aa8ae8428d04ca8397fbef6a19b2b051e73b5da8b1435639cb" dependencies = [ - "log 0.4.29", + "log 0.4.30", "symphonia-core", "symphonia-metadata", "symphonia-utils-xiph", @@ -10409,7 +10331,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2d7c3df0e7d94efb68401d81906eae73c02b40d5ec1a141962c592d0f11a96f" dependencies = [ "extended", - "log 0.4.29", + "log 0.4.30", "symphonia-core", "symphonia-metadata", ] @@ -10422,7 +10344,7 @@ checksum = "36306ff42b9ffe6e5afc99d49e121e0bd62fe79b9db7b9681d48e29fa19e6b16" dependencies = [ "encoding_rs", "lazy_static", - "log 0.4.29", + "log 0.4.30", "symphonia-core", ] @@ -10480,14 +10402,14 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.37.2" +version = "0.38.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16607d5caffd1c07ce073528f9ed972d88db15dd44023fa57142963be3feb11f" +checksum = "92ab6a2f8bfe508deb3c6406578252e491d299cbbf3bc0529ecc3313aee4a52f" dependencies = [ "libc", "objc2-core-foundation", "objc2-io-kit", - "windows 0.61.3", + "windows 0.62.2", ] [[package]] @@ -10530,9 +10452,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.16" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" +checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" [[package]] name = "target-triple" @@ -10641,7 +10563,7 @@ dependencies = [ "bitflags 2.11.1", "cfg-if", "libc", - "log 0.4.29", + "log 0.4.30", "rustversion", "windows 0.61.3", ] @@ -10669,6 +10591,23 @@ dependencies = [ "zune-jpeg", ] +[[package]] +name = "tile-map-collision" +version = "0.1.0" +dependencies = [ + "anyhow", + "bitflags 2.11.1", + "config", + "game-interface", + "hiarc", + "legacy-map", + "log 0.4.30", + "map", + "math", + "rustc-hash 2.1.2", + "serde", +] + [[package]] name = "time" version = "0.3.47" @@ -10719,7 +10658,7 @@ dependencies = [ "arrayvec 0.7.6", "bytemuck", "cfg-if", - "log 0.4.29", + "log 0.4.30", "tiny-skia-path", ] @@ -10796,7 +10735,7 @@ dependencies = [ "libc", "mio", "pin-project-lite", - "socket2 0.6.3", + "socket2 0.6.4", "tokio-macros", "windows-sys 0.61.2", ] @@ -10812,16 +10751,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - [[package]] name = "tokio-rustls" version = "0.26.4" @@ -10845,12 +10774,12 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c" dependencies = [ "futures-util", - "log 0.4.29", + "log 0.4.30", "rustls", "rustls-pki-types", "tokio", @@ -10872,19 +10801,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "indexmap 2.14.0", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", -] - [[package]] name = "toml" version = "1.1.2+spec-1.1.0" @@ -10893,20 +10809,11 @@ checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap 2.14.0", "serde_core", - "serde_spanned 1.1.1", - "toml_datetime 1.1.1+spec-1.1.0", + "serde_spanned", + "toml_datetime", "toml_parser", "toml_writer", - "winnow 1.0.3", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", + "winnow", ] [[package]] @@ -10920,28 +10827,14 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap 2.14.0", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_write", - "winnow 0.7.15", -] - -[[package]] -name = "toml_edit" -version = "0.25.11+spec-1.1.0" +version = "0.25.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" dependencies = [ "indexmap 2.14.0", - "toml_datetime 1.1.1+spec-1.1.0", + "toml_datetime", "toml_parser", - "winnow 1.0.3", + "winnow", ] [[package]] @@ -10950,15 +10843,9 @@ version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 1.0.3", + "winnow", ] -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - [[package]] name = "toml_writer" version = "1.1.1+spec-1.1.0" @@ -10991,7 +10878,7 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "http 1.4.0", + "http 1.4.1", "http-body 1.0.1", "http-body-util", "http-range-header", @@ -11027,7 +10914,7 @@ version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ - "log 0.4.29", + "log 0.4.30", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -11060,7 +10947,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "log 0.4.29", + "log 0.4.30", "once_cell", "tracing-core", ] @@ -11096,7 +10983,7 @@ dependencies = [ "dyn-clone", "educe", "lazy_static", - "log 0.4.29", + "log 0.4.30", "maplit", "ndarray", "num-integer", @@ -11137,7 +11024,7 @@ checksum = "d5f72648d914f724e188cf679f3dd74f069eea36d8670633acf8889b94391a54" dependencies = [ "derive-new", "educe", - "log 0.4.29", + "log 0.4.30", "tract-core", ] @@ -11155,7 +11042,7 @@ dependencies = [ "lazy_static", "liquid", "liquid-core", - "log 0.4.29", + "log 0.4.30", "num-traits", "paste", "scan_fmt", @@ -11173,7 +11060,7 @@ checksum = "0895153ea97091967f92121715a5c80fbcc0841c53a1b2fb9ba93a89ed644357" dependencies = [ "byteorder", "flate2", - "log 0.4.29", + "log 0.4.30", "nom 7.1.3", "tar", "tract-core", @@ -11189,7 +11076,7 @@ dependencies = [ "bytes", "derive-new", "educe", - "log 0.4.29", + "log 0.4.30", "memmap2 0.5.10", "num-integer", "prost", @@ -11207,7 +11094,7 @@ checksum = "eb740c8e25f65f6e070c9438fb4c2671d72d36470c01e49b3002e61c7c01d0cb" dependencies = [ "educe", "getrandom 0.2.17", - "log 0.4.29", + "log 0.4.30", "rand 0.8.6", "rand_distr", "rustfft", @@ -11222,7 +11109,7 @@ checksum = "502f5ecdcb6c84d3c7caa1bbb2f23dbe0980055f8bd615fe3ef9ba37cb8f22dd" dependencies = [ "downcast-rs", "lazy_static", - "log 0.4.29", + "log 0.4.30", "tract-pulse-opl", ] @@ -11274,7 +11161,7 @@ dependencies = [ "serde_json", "target-triple", "termcolor", - "toml 1.1.2+spec-1.1.0", + "toml", ] [[package]] @@ -11285,44 +11172,39 @@ checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" [[package]] name = "tungstenite" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" dependencies = [ "bytes", "data-encoding", - "http 1.4.0", + "http 1.4.1", "httparse", - "log 0.4.29", + "log 0.4.30", "rand 0.9.4", "rustls", "rustls-pki-types", - "sha1", + "sha1 0.10.6", "thiserror 2.0.18", - "utf-8", ] [[package]] name = "twox-hash" -version = "1.6.3" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" -dependencies = [ - "cfg-if", - "static_assertions", -] +checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" [[package]] -name = "twox-hash" -version = "2.1.2" +name = "typed-path" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" +checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" [[package]] name = "typenum" -version = "1.20.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -11488,12 +11370,6 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -11517,11 +11393,12 @@ dependencies = [ [[package]] name = "uuid" -version = "1.23.1" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" +checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7" dependencies = [ "js-sys", + "serde_core", "wasm-bindgen", ] @@ -11539,7 +11416,6 @@ dependencies = [ "base", "base-io", "bincode", - "bitflags 2.11.1", "chrono", "command-parser", "config", @@ -11547,10 +11423,10 @@ dependencies = [ "game-base", "game-database", "game-interface", - "hashlink 0.10.0 (git+https://github.com/Jupeyy/hashlink/?branch=ddnet)", + "hashlink 0.10.0", "hiarc", "legacy-map", - "log 0.4.29", + "log 0.4.30", "map", "math", "num", @@ -11561,6 +11437,8 @@ dependencies = [ "serde", "serde_json", "thiserror 2.0.18", + "tile-map-collision", + "tracing", ] [[package]] @@ -11575,6 +11453,32 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +[[package]] +name = "vello_common" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd1a4c633ce09e7d713df1a6e036644a125e15e0c169cfb5180ddf5836ca04b" +dependencies = [ + "bytemuck", + "fearless_simd", + "hashbrown 0.16.1", + "log 0.4.30", + "peniko", + "skrifa", + "smallvec", +] + +[[package]] +name = "vello_cpu" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0162bfe48aabf6a9fdcd401b628c7d9f260c2cbabb343c70a65feba6f7849edc" +dependencies = [ + "bytemuck", + "hashbrown 0.16.1", + "vello_common", +] + [[package]] name = "version_check" version = "0.9.5" @@ -11593,26 +11497,26 @@ dependencies = [ [[package]] name = "virtual-fs" -version = "0.601.0" +version = "0.701.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8defc513ce70576bdbb4305ee67c0cba647af18c0995de8f1fa1271b724c9859" +checksum = "5f7c930f8e21d1ed6b230a1d8aa41d498a1444303a751aff2e2be33a13e900ec" dependencies = [ "async-trait", "bytes", "dashmap 6.2.1", - "derive_more 2.1.1", + "derive_more", "dunce", "filetime", "fs_extra", "futures", - "getrandom 0.2.17", + "getrandom 0.4.2", "indexmap 2.14.0", "libc", "pin-project-lite", "replace_with", "shared-buffer", "slab", - "thiserror 1.0.69", + "thiserror 2.0.18", "tokio", "tracing", "virtual-mio", @@ -11621,15 +11525,16 @@ dependencies = [ [[package]] name = "virtual-mio" -version = "0.601.0" +version = "0.701.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a14806a3f25b70315764760c376d9f68937f5467013891bc7497a33d24105097" +checksum = "a3f4cb0799de3e2b41c2d5131982a5e35f58c91b17a46d13625c3abd114a99b6" dependencies = [ "async-trait", "bytes", "futures", + "parking", "serde", - "thiserror 1.0.69", + "thiserror 2.0.18", "tracing", ] @@ -11667,10 +11572,11 @@ dependencies = [ "api-ui-game", "client-containers", "client-render-base", - "client-ui", + "client-ui-utils", "egui", "game-interface", "graphics", + "ingame-ui", "ui-base", "ui-generic", ] @@ -11715,7 +11621,7 @@ dependencies = [ "headers", "http 0.2.12", "hyper 0.14.32", - "log 0.4.29", + "log 0.4.30", "mime", "mime_guess", "percent-encoding", @@ -11754,17 +11660,11 @@ dependencies = [ "wit-bindgen 0.51.0", ] -[[package]] -name = "wasite" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" - [[package]] name = "wasm-bindgen" -version = "0.2.121" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" +checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" dependencies = [ "cfg-if", "once_cell", @@ -11775,9 +11675,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.71" +version = "0.4.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8" +checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" dependencies = [ "js-sys", "wasm-bindgen", @@ -11785,9 +11685,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.121" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" +checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -11795,9 +11695,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.121" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" +checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" dependencies = [ "bumpalo", "proc-macro2", @@ -11808,9 +11708,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.121" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" +checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" dependencies = [ "unicode-ident", ] @@ -11925,15 +11825,15 @@ dependencies = [ [[package]] name = "wasmer" -version = "6.1.0" +version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d85671948f8886a1cc946141c0b688a5617603c103699a5fceeebeb4e75b0b6" +checksum = "57bf3ce47ae9ef62e35c0b23e89b72250548d6d960d0832a5638b05a701769a8" dependencies = [ - "bindgen 0.70.1", + "bindgen", "bytes", "cfg-if", "cmake", - "derive_more 2.1.1", + "derive_more", "indexmap 2.14.0", "js-sys", "more-asserts", @@ -11944,7 +11844,7 @@ dependencies = [ "shared-buffer", "tar", "target-lexicon", - "thiserror 1.0.69", + "thiserror 2.0.18", "tracing", "wasm-bindgen", "wasmer-compiler", @@ -11952,51 +11852,58 @@ dependencies = [ "wasmer-derive", "wasmer-types", "wasmer-vm", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "wasmer-compiler" -version = "6.1.0" +version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4946475adc0af265af8f10aadf4d4a3c64845bcd3801c655bdd81ce5e3ee869b" +checksum = "1998787df9de3e84b66616766fb795e9aab954a8ca1e40eb92ef759e325bc782" dependencies = [ "backtrace", "bytes", "cfg-if", + "crossbeam-channel", "enum-iterator", "enumset", + "itertools 0.14.0", "leb128", "libc", "macho-unwind-info", - "memmap2 0.6.2", + "memmap2 0.9.10", "more-asserts", - "object 0.32.2", + "object 0.38.1", + "rangemap", + "rayon", "region", "rkyv", "self_cell", "shared-buffer", "smallvec", "target-lexicon", - "thiserror 1.0.69", + "tempfile", + "thiserror 2.0.18", "wasmer-types", "wasmer-vm", - "wasmparser 0.224.1", - "windows-sys 0.59.0", - "xxhash-rust", + "wasmparser 0.245.1", + "which 8.0.2", + "windows-sys 0.61.2", ] [[package]] name = "wasmer-compiler-cranelift" -version = "6.1.0" +version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "780f9c2050941b4e3f6bb82d32bd796a6c1750d2f97cbd892f07b384bb6af6f8" +checksum = "757fd205d4e2aac6662fc75f4859e6675ab51f4436b86086d47bfa83439c8931" dependencies = [ "cranelift-codegen", "cranelift-entity", "cranelift-frontend", - "gimli 0.28.1", - "itertools 0.12.1", + "gimli 0.33.0", + "indexmap 2.14.0", + "itertools 0.14.0", + "leb128", "more-asserts", "rayon", "smallvec", @@ -12008,9 +11915,9 @@ dependencies = [ [[package]] name = "wasmer-config" -version = "0.601.0" +version = "0.701.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6c7a72bfcba1000b7609e034e0d470575fae8215b597c2c6554661729d64c22" +checksum = "07967692e8546a192ad40fd2b628f8d0733d62dd5989a8a2590d77f541584dba" dependencies = [ "anyhow", "bytesize", @@ -12019,33 +11926,33 @@ dependencies = [ "hex", "indexmap 2.14.0", "saffron", - "schemars 0.8.22", + "schemars 1.2.1", "semver", "serde", "serde_json", "serde_yaml", - "thiserror 1.0.69", - "toml 0.8.23", + "thiserror 2.0.18", + "toml", "url", ] [[package]] name = "wasmer-derive" -version = "6.1.0" +version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546f3380840cd63fdcc390f04cd19002f2dfa19b4691b77ecbd27642bd93452" +checksum = "80beffc36bead448bac84e1145d860523729c4e34e441332d56076a8a16b2d64" dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] name = "wasmer-package" -version = "0.601.0" +version = "0.701.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedc3a5cd721e8b12778d1858b9583aca8b91927a73f5fdf0c876cd5bbb6ac56" +checksum = "239bf46bf6ae3653a7efa60e3cfd1a4f0466e319cbaff97643adcb81ff5db156" dependencies = [ "anyhow", "bytes", @@ -12058,12 +11965,12 @@ dependencies = [ "semver", "serde", "serde_json", - "sha2", + "sha2 0.11.0", "shared-buffer", "tar", "tempfile", - "thiserror 1.0.69", - "toml 0.8.23", + "thiserror 2.0.18", + "toml", "url", "wasmer-config", "wasmer-types", @@ -12072,32 +11979,32 @@ dependencies = [ [[package]] name = "wasmer-types" -version = "6.1.0" +version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a4027ce165e8dc776dc5e2a3231a96983e6dc7330efd97b793cfc4e973ad0c" +checksum = "c805281d86063190ad76fbc12d6397aaf33ba60a5c9834e98ee0dcb8f889df7d" dependencies = [ - "bytecheck 0.6.12", + "bytecheck", "enum-iterator", "enumset", - "getrandom 0.2.17", + "getrandom 0.4.2", "hex", "indexmap 2.14.0", "more-asserts", "rkyv", - "sha2", + "sha2 0.11.0", "target-lexicon", - "thiserror 1.0.69", - "wasmparser 0.224.1", - "xxhash-rust", + "thiserror 2.0.18", + "wasmparser 0.245.1", ] [[package]] name = "wasmer-vm" -version = "6.1.0" +version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c37d5be291eea00a00d077ce3a427bb3074709ee386ec358f18f0b7da33be01" +checksum = "2be14431ae698689440eadaa3d9563e266da4f889adda2749743f317680daa20" dependencies = [ "backtrace", + "bytesize", "cc", "cfg-if", "corosensei", @@ -12105,52 +12012,64 @@ dependencies = [ "dashmap 6.2.1", "enum-iterator", "fnv", + "gimli 0.33.0", "indexmap 2.14.0", + "itertools 0.14.0", "libc", "libunwind", - "mach2", + "mach2 0.6.0", "memoffset", "more-asserts", + "parking_lot", "region", "rustversion", "scopeguard", - "thiserror 1.0.69", + "thiserror 2.0.18", "wasmer-types", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "wasmparser" -version = "0.224.1" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f17a5917c2ddd3819e84c661fae0d6ba29d7b9c1f0e96c708c65a9c4188e11" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ "bitflags 2.11.1", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "semver", ] [[package]] name = "wasmparser" -version = "0.240.0" +version = "0.245.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b722dcf61e0ea47440b53ff83ccb5df8efec57a69d150e4f24882e4eba7e24a4" +checksum = "4f08c9adee0428b7bddf3890fc27e015ac4b761cc608c822667102b8bfd6995e" dependencies = [ "bitflags 2.11.1", - "hashbrown 0.15.5", - "indexmap 2.14.0", - "semver", - "serde", ] [[package]] name = "wasmparser" -version = "0.244.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +checksum = "437970b35b1a85cfde9c74b2398352d8d653f3bd8e3a3db0c063ea8f5b4b36ff" dependencies = [ "bitflags 2.11.1", - "hashbrown 0.15.5", + "hashbrown 0.17.1", "indexmap 2.14.0", "semver", + "serde", +] + +[[package]] +name = "wasmtime-internal-core" +version = "42.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a4a3f055a804a2f3d86e816a9df78a8fa57762212a8506164959224a40cd48" +dependencies = [ + "libm", ] [[package]] @@ -12257,16 +12176,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" dependencies = [ "dlib", - "log 0.4.29", + "log 0.4.30", "once_cell", "pkg-config", ] [[package]] name = "web-sys" -version = "0.3.98" +version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa" +checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" dependencies = [ "js-sys", "wasm-bindgen", @@ -12290,7 +12209,7 @@ checksum = "0fc95580916af1e68ff6a7be07446fc5db73ebf71cf092de939bbf5f7e189f72" dependencies = [ "core-foundation 0.10.1", "jni 0.22.4", - "log 0.4.29", + "log 0.4.30", "ndk-context", "objc2 0.6.4", "objc2-foundation 0.3.2", @@ -12300,9 +12219,9 @@ dependencies = [ [[package]] name = "webc" -version = "10.0.1" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637506ca3c48eae3301e97f0167aa1b46cdfdd479d008b868a19715182e48ae3" +checksum = "20b8b523112384e8c1caf77cffdd371ca7e0013779f081e6beafc537f5b5325d" dependencies = [ "anyhow", "base64 0.22.1", @@ -12317,15 +12236,24 @@ dependencies = [ "libc", "once_cell", "path-clean", - "rand 0.8.6", + "rand 0.9.4", "serde", "serde_json", - "sha2", + "sha2 0.10.9", "shared-buffer", - "thiserror 1.0.69", + "thiserror 2.0.18", "url", ] +[[package]] +name = "webpki-root-certs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "webpki-roots" version = "0.26.11" @@ -12373,15 +12301,20 @@ dependencies = [ ] [[package]] -name = "whoami" -version = "1.6.1" +name = "which" +version = "8.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" +checksum = "81995fafaaaf6ae47a7d0cc83c67caf92aeb7e5331650ae6ff856f7c0c60c459" dependencies = [ - "libredox", - "wasite", + "libc", ] +[[package]] +name = "whoami" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "998767ef88740d1f5b0682a9c53c24431453923962269c2db68ee43788c5a40d" + [[package]] name = "winapi" version = "0.3.9" @@ -12438,11 +12371,23 @@ version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-collections", + "windows-collections 0.2.0", "windows-core 0.61.2", - "windows-future", + "windows-future 0.2.1", "windows-link 0.1.3", - "windows-numerics", + "windows-numerics 0.2.0", +] + +[[package]] +name = "windows" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections 0.3.2", + "windows-core 0.62.2", + "windows-future 0.3.2", + "windows-numerics 0.3.1", ] [[package]] @@ -12454,6 +12399,15 @@ dependencies = [ "windows-core 0.61.2", ] +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" +dependencies = [ + "windows-core 0.62.2", +] + [[package]] name = "windows-core" version = "0.54.0" @@ -12498,7 +12452,18 @@ checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ "windows-core 0.61.2", "windows-link 0.1.3", - "windows-threading", + "windows-threading 0.1.0", +] + +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", + "windows-threading 0.2.1", ] [[package]] @@ -12545,6 +12510,16 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-numerics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", +] + [[package]] name = "windows-registry" version = "0.6.1" @@ -12727,6 +12702,15 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -12933,7 +12917,7 @@ dependencies = [ "objc2 0.5.2", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", - "objc2-ui-kit", + "objc2-ui-kit 0.2.2", "orbclient", "percent-encoding", "pin-project", @@ -12960,15 +12944,6 @@ dependencies = [ "xkbcommon-dl", ] -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] - [[package]] name = "winnow" version = "1.0.3" @@ -13050,7 +13025,7 @@ dependencies = [ "anyhow", "bitflags 2.11.1", "indexmap 2.14.0", - "log 0.4.29", + "log 0.4.30", "serde", "serde_derive", "serde_json", @@ -13069,7 +13044,7 @@ dependencies = [ "anyhow", "id-arena", "indexmap 2.14.0", - "log 0.4.29", + "log 0.4.30", "semver", "serde", "serde_derive", @@ -13131,41 +13106,24 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94" dependencies = [ - "const-oid", + "const-oid 0.9.6", "der", "spki", "tls_codec", ] -[[package]] -name = "x509-parser" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" -dependencies = [ - "asn1-rs 0.6.2", - "data-encoding", - "der-parser 9.0.0", - "lazy_static", - "nom 7.1.3", - "oid-registry 0.7.1", - "rusticata-macros", - "thiserror 1.0.69", - "time", -] - [[package]] name = "x509-parser" version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d43b0f71ce057da06bc0851b23ee24f3f86190b07203dd8f567d0b706a185202" dependencies = [ - "asn1-rs 0.7.2", + "asn1-rs", "data-encoding", - "der-parser 10.0.0", + "der-parser", "lazy_static", "nom 7.1.3", - "oid-registry 0.8.1", + "oid-registry", "ring", "rusticata-macros", "thiserror 2.0.18", @@ -13196,7 +13154,7 @@ checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ "bitflags 2.11.1", "dlib", - "log 0.4.29", + "log 0.4.30", "once_cell", "xkeysym", ] @@ -13207,21 +13165,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" -[[package]] -name = "xxhash-rust" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" - -[[package]] -name = "yasna" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" -dependencies = [ - "time", -] - [[package]] name = "yasna" version = "0.6.0" @@ -13267,11 +13210,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.48" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1" dependencies = [ - "zerocopy-derive 0.8.48", + "zerocopy-derive 0.8.50", ] [[package]] @@ -13287,9 +13230,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.48" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639" dependencies = [ "proc-macro2", "quote", @@ -13372,15 +13315,15 @@ dependencies = [ [[package]] name = "zip" -version = "6.0.0" +version = "8.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2a05c7c36fde6c09b08576c9f7fb4cda705990f73b58fe011abf7dfb24168b" +checksum = "2d04a6b5381502aa6087c94c669499eb1602eb9c5e8198e534de571f7154809b" dependencies = [ - "arbitrary", "crc32fast", "flate2", "indexmap 2.14.0", "memchr", + "typed-path", "zopfli", ] @@ -13404,7 +13347,7 @@ checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" dependencies = [ "bumpalo", "crc32fast", - "log 0.4.29", + "log 0.4.30", "simd-adler32", ] diff --git a/Cargo.toml b/Cargo.toml index ad1f9112..4f550a8b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,6 +68,7 @@ members = [ "game/client-replay", "game/client-types", "game/client-ui", + "game/client-ui-utils", "game/community", "game/demo", "game/ddnet-info-proxy", @@ -85,6 +86,7 @@ members = [ "game/game-state-wasm", "game/ghost", "game/http-accounts", + "game/ingame-ui", "game/legacy-map", "game/legacy-proxy", "game/map", @@ -92,6 +94,7 @@ members = [ "game/master-server-types", "game/prediction-timer", "game/render-game-wasm", + "game/tile-map-collision", "game/vanilla", "lib/api", "lib/api-macros", @@ -205,6 +208,7 @@ pool = { path = "lib/pool" } sound = { path = "lib/sound" } sound-backend = { path = "lib/sound-backend" } steam = { path = "lib/steam" } +tile-map-collision = { path = "game/tile-map-collision" } ui-base = { path = "lib/ui-base" } ui-generic = { path = "lib/ui-generic" } ui-wasm-manager = { path = "lib/ui-wasm-manager" } @@ -225,6 +229,7 @@ client-render-game = { path = "game/client-render-game" } client-replay = { path = "game/client-replay" } client-types = { path = "game/client-types" } client-ui = { path = "game/client-ui", features = ["binds"] } +client-ui-utils = { path = "game/client-ui-utils" } demo = { path = "game/demo", features = ["recorder"] } ddnet-info-proxy = { path = "game/ddnet-info-proxy" } editor = { path = "game/editor", default-features = false } @@ -237,69 +242,70 @@ game-network = { path = "game/game-network" } game-server = { path = "game/game-server", default-features = false } game-state-wasm = { path = "game/game-state-wasm" } ghost = { path = "game/ghost" } +ingame-ui = { path = "game/ingame-ui" } legacy-proxy = { path = "game/legacy-proxy" } prediction-timer = { path = "game/prediction-timer" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -arrayvec = "0.7.6" -bincode = { version = "2.0.1", features = ["serde"] } -bytes = "1.10.1" -chrono = { version = "0.4.42", features = ["serde"] } -crossbeam = "0.8.4" -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -egui-winit = { version = "0.33.0", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +arrayvec = "0.7" +bincode = { version = "2", features = ["serde"] } +bytes = "1" +chrono = { version = "0.4", features = ["serde"] } +crossbeam = "0.8" +egui = { version = "0.34", default-features = false, features = ["serde"] } +egui-winit = { version = "0.34", default-features = false, features = [ "x11", "arboard", "links", ] } -egui_extras = { version = "0.33.0" } -emath = "0.33.0" -env_logger = "0.11.8" -fixed = "1.29.0" +egui_extras = { version = "0.34" } +emath = "0.34" +env_logger = "0.11" +fixed = "1" hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", ] } hiarc = { path = "lib/hiarc", features = ["derive"] } -log = "0.4.28" -num = "0.4.3" -parking_lot = "0.12.5" -rand = { version = "0.9.2", features = ["std_rng"], default-features = false } -rayon = "1.11.0" -serde = "1.0.228" -serde-value = "0.7.0" -serde_json = "1.0.145" -thread-priority = "3.0.0" -tokio = { version = "1.48.0", features = [ +log = "0.4" +num = "0.4" +parking_lot = "0.12" +rand = { version = "0.10", features = ["std_rng"], default-features = false } +rayon = "1" +serde = "1" +serde-value = "0.7" +serde_json = "1" +thread-priority = "3" +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "fs", "time", "macros", ] } -tracing = { version = "0.1.41", default-features = false, features = [ +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } trybuild = "1.0" -url = "2.5.7" -x509-cert = { version = "0.2.5" } +url = "2" +x509-cert = { version = "0.2" } audiopus_sys = { git = "https://github.com/Jupeyy/audiopus_sys.git", branch = "ddnet-rs", features = [ "static", ] } -alloc-track = { version = "0.3.1", optional = true } -stats_alloc = { version = "0.1.10", optional = true } +alloc-track = { version = "0.4", optional = true } +stats_alloc = { version = "0.1", optional = true } [target.'cfg(not(target_os = "android"))'.dependencies] -native-dialog = "0.9.3" +native-dialog = "0.9" [target.'cfg(target_os = "android")'.dependencies] -android_logger = "0.15.1" -ndk = { version = "0.9.0", default-features = false } +android_logger = "0.15" +ndk = { version = "0.9", default-features = false } [target.'cfg(target_arch = "wasm32")'.dependencies] -tracing = { version = "0.1.41", default-features = false, features = [ +tracing = { version = "0.1", default-features = false, features = [ "max_level_off", "release_max_level_off", ] } diff --git a/examples/lib-modules/editor-lib/Cargo.toml b/examples/lib-modules/editor-lib/Cargo.toml index 8107a6f1..29dadeac 100644 --- a/examples/lib-modules/editor-lib/Cargo.toml +++ b/examples/lib-modules/editor-lib/Cargo.toml @@ -14,6 +14,6 @@ config = { path = "../../../lib/config" } graphics = { path = "../../../lib/graphics" } sound = { path = "../../../lib/sound" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -once_cell = "1.21.3" -rayon = "1.11.0" +egui = { version = "0.34", default-features = false, features = ["serde"] } +once_cell = "1" +rayon = "1" diff --git a/examples/wasm-modules/actionfeed/Cargo.toml b/examples/wasm-modules/actionfeed/Cargo.toml index b1f8b10d..ed26c095 100644 --- a/examples/wasm-modules/actionfeed/Cargo.toml +++ b/examples/wasm-modules/actionfeed/Cargo.toml @@ -18,8 +18,8 @@ api-ui-game = { path = "../../../game/api-ui-game" } client-containers = { path = "../../../game/client-containers" } client-render-base = { path = "../../../game/client-render-base" } client-types = { path = "../../../game/client-types" } -client-ui = { path = "../../../game/client-ui" } game-interface = { path = "../../../game/game-interface" } +ingame-ui = { path = "../../../game/ingame-ui" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -num-traits = "0.2.19" +egui = { version = "0.34", default-features = false, features = ["serde"] } +num-traits = "0.2" diff --git a/examples/wasm-modules/actionfeed/src/actionfeed/page.rs b/examples/wasm-modules/actionfeed/src/actionfeed/page.rs index 01e7ff62..29d016e7 100644 --- a/examples/wasm-modules/actionfeed/src/actionfeed/page.rs +++ b/examples/wasm-modules/actionfeed/src/actionfeed/page.rs @@ -146,11 +146,11 @@ impl ActionfeedPage { }); } - client_ui::actionfeed::main_frame::render( + ingame_ui::actionfeed::main_frame::render( ui, &mut UiRenderPipe::new( pipe.cur_time, - &mut client_ui::actionfeed::user_data::UserData { + &mut ingame_ui::actionfeed::user_data::UserData { canvas_handle: &self.canvas_handle, stream_handle: &self.stream_handle, entries: &entries.into(), diff --git a/examples/wasm-modules/auto-mapper/Cargo.toml b/examples/wasm-modules/auto-mapper/Cargo.toml index 5cbfa969..3249bdc9 100644 --- a/examples/wasm-modules/auto-mapper/Cargo.toml +++ b/examples/wasm-modules/auto-mapper/Cargo.toml @@ -13,5 +13,5 @@ math = { path = "../../../lib/math" } api-auto-mapper = { path = "../../../game/api-auto-mapper" } editor-interface = { path = "../../../game/editor-interface" } -log = "0.4.28" -rustc-hash = "2.1.1" +log = "0.4" +rustc-hash = "2" diff --git a/examples/wasm-modules/chat/Cargo.toml b/examples/wasm-modules/chat/Cargo.toml index fb06f20f..7480e17f 100644 --- a/examples/wasm-modules/chat/Cargo.toml +++ b/examples/wasm-modules/chat/Cargo.toml @@ -18,8 +18,8 @@ api-ui-game = { path = "../../../game/api-ui-game" } client-containers = { path = "../../../game/client-containers" } client-render-base = { path = "../../../game/client-render-base" } client-types = { path = "../../../game/client-types" } -client-ui = { path = "../../../game/client-ui" } game-base = { path = "../../../game/game-base" } game-interface = { path = "../../../game/game-interface" } +ingame-ui = { path = "../../../game/ingame-ui" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } diff --git a/examples/wasm-modules/chat/src/chat/page.rs b/examples/wasm-modules/chat/src/chat/page.rs index d73ec9fb..b777d0e6 100644 --- a/examples/wasm-modules/chat/src/chat/page.rs +++ b/examples/wasm-modules/chat/src/chat/page.rs @@ -4,13 +4,13 @@ use api_ui_game::render::create_skin_container; use client_containers::skins::SkinContainer; use client_render_base::render::tee::RenderTee; use client_types::chat::{ChatMsg, MsgSystem, ServerMsg, SystemMsgPlayerSkin}; -use client_ui::chat::user_data::{ChatMode, MsgInChat}; use game_base::network::types::chat::{ChatPlayerInfo, NetChatMsgPlayerChannel}; use game_interface::types::{character_info::NetworkSkinInfo, id_gen::IdGenerator}; use graphics::{ graphics::graphics::Graphics, handles::{canvas::canvas::GraphicsCanvasHandle, stream::stream::GraphicsStreamHandle}, }; +use ingame_ui::chat::user_data::{ChatMode, MsgInChat}; use math::math::vector::ubvec4; use ui_base::types::{UiRenderPipe, UiState}; use ui_generic::traits::UiPageInterface; @@ -144,11 +144,11 @@ impl ChatPage { }), add_time: Duration::MAX, }); - client_ui::chat::main_frame::render( + ingame_ui::chat::main_frame::render( ui, &mut UiRenderPipe::new( pipe.cur_time, - &mut client_ui::chat::user_data::UserData { + &mut ingame_ui::chat::user_data::UserData { entries: &entries, show_chat_history: false, is_input_active: false, diff --git a/examples/wasm-modules/connecting/Cargo.toml b/examples/wasm-modules/connecting/Cargo.toml index c240bb8e..e5205e5b 100644 --- a/examples/wasm-modules/connecting/Cargo.toml +++ b/examples/wasm-modules/connecting/Cargo.toml @@ -14,4 +14,4 @@ ui-generic = { path = "../../../lib/ui-generic" } api-ui-game = { path = "../../../game/api-ui-game" } client-ui = { path = "../../../game/client-ui" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } diff --git a/examples/wasm-modules/console/Cargo.toml b/examples/wasm-modules/console/Cargo.toml index 5a9d564e..a79d2174 100644 --- a/examples/wasm-modules/console/Cargo.toml +++ b/examples/wasm-modules/console/Cargo.toml @@ -19,4 +19,4 @@ client-render-base = { path = "../../../game/client-render-base" } client-types = { path = "../../../game/client-types" } client-ui = { path = "../../../game/client-ui" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } diff --git a/examples/wasm-modules/demo_player/Cargo.toml b/examples/wasm-modules/demo_player/Cargo.toml index a475ad73..b453264c 100644 --- a/examples/wasm-modules/demo_player/Cargo.toml +++ b/examples/wasm-modules/demo_player/Cargo.toml @@ -16,4 +16,4 @@ ui-generic = { path = "../../../lib/ui-generic" } api-ui-game = { path = "../../../game/api-ui-game" } client-ui = { path = "../../../game/client-ui" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } diff --git a/examples/wasm-modules/emote_wheel/Cargo.toml b/examples/wasm-modules/emote_wheel/Cargo.toml index f1fd30d6..1cfe4a07 100644 --- a/examples/wasm-modules/emote_wheel/Cargo.toml +++ b/examples/wasm-modules/emote_wheel/Cargo.toml @@ -16,6 +16,6 @@ ui-generic = { path = "../../../lib/ui-generic" } api-ui-game = { path = "../../../game/api-ui-game" } client-containers = { path = "../../../game/client-containers" } client-render-base = { path = "../../../game/client-render-base" } -client-ui = { path = "../../../game/client-ui" } +ingame-ui = { path = "../../../game/ingame-ui" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } diff --git a/examples/wasm-modules/emote_wheel/src/emote_wheel/page.rs b/examples/wasm-modules/emote_wheel/src/emote_wheel/page.rs index 41bdd1be..8e60ba81 100644 --- a/examples/wasm-modules/emote_wheel/src/emote_wheel/page.rs +++ b/examples/wasm-modules/emote_wheel/src/emote_wheel/page.rs @@ -1,11 +1,11 @@ use api_ui_game::render::{create_emoticons_container, create_skin_container}; use client_containers::{emoticons::EmoticonsContainer, skins::SkinContainer}; use client_render_base::render::tee::RenderTee; -use client_ui::emote_wheel::user_data::EmoteWheelMousePos; use graphics::{ graphics::graphics::Graphics, handles::{canvas::canvas::GraphicsCanvasHandle, stream::stream::GraphicsStreamHandle}, }; +use ingame_ui::emote_wheel::user_data::EmoteWheelMousePos; use ui_base::types::{UiRenderPipe, UiState}; use ui_generic::traits::UiPageInterface; @@ -34,11 +34,11 @@ impl EmoteWheelPage { pipe: &mut UiRenderPipe<()>, ui_state: &mut UiState, ) { - client_ui::emote_wheel::main_frame::render( + ingame_ui::emote_wheel::main_frame::render( ui, &mut UiRenderPipe::new( pipe.cur_time, - &mut client_ui::emote_wheel::user_data::UserData { + &mut ingame_ui::emote_wheel::user_data::UserData { events: &mut Default::default(), canvas_handle: &self.canvas_handle, stream_handle: &self.stream_handle, diff --git a/examples/wasm-modules/graphics-mod/Cargo.toml b/examples/wasm-modules/graphics-mod/Cargo.toml index 362d0b78..9311c6ff 100644 --- a/examples/wasm-modules/graphics-mod/Cargo.toml +++ b/examples/wasm-modules/graphics-mod/Cargo.toml @@ -41,12 +41,12 @@ pool = { path = "../../../lib/pool", features = ["enable_hiarc"] } api-state = { path = "../../../game/api-state" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -arrayvec = "0.7.6" -bitflags = { version = "2.10.0", features = ["serde"] } -num-derive = "0.4.2" -num-traits = "0.2.19" -rayon = "1.11.0" -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +arrayvec = "0.7" +bitflags = { version = "2", features = ["serde"] } +num-derive = "0.4" +num-traits = "0.2" +rayon = "1" +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } diff --git a/examples/wasm-modules/hud/Cargo.toml b/examples/wasm-modules/hud/Cargo.toml index 8d420bee..a1080b4d 100644 --- a/examples/wasm-modules/hud/Cargo.toml +++ b/examples/wasm-modules/hud/Cargo.toml @@ -18,7 +18,7 @@ ui-generic = { path = "../../../lib/ui-generic" } api-ui-game = { path = "../../../game/api-ui-game" } client-containers = { path = "../../../game/client-containers" } client-render-base = { path = "../../../game/client-render-base" } -client-ui = { path = "../../../game/client-ui" } game-interface = { path = "../../../game/game-interface" } +ingame-ui = { path = "../../../game/ingame-ui" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } diff --git a/examples/wasm-modules/hud/src/hud/page.rs b/examples/wasm-modules/hud/src/hud/page.rs index e1255be3..9d0a2639 100644 --- a/examples/wasm-modules/hud/src/hud/page.rs +++ b/examples/wasm-modules/hud/src/hud/page.rs @@ -2,7 +2,6 @@ use api_ui_game::render::{create_ctf_container, create_skin_container}; use base::{linked_hash_map_view::FxLinkedHashMap, network_string::PoolNetworkString}; use client_containers::{ctf::CtfContainer, skins::SkinContainer}; use client_render_base::render::tee::RenderTee; -use client_ui::hud::user_data::RenderDateTime; use game_interface::types::{ character_info::{NetworkCharacterInfo, NetworkSkinInfo}, id_gen::IdGenerator, @@ -19,6 +18,7 @@ use graphics::{ graphics::graphics::Graphics, handles::{canvas::canvas::GraphicsCanvasHandle, stream::stream::GraphicsStreamHandle}, }; +use ingame_ui::hud::user_data::RenderDateTime; use pool::{datatypes::PoolString, rc::PoolRc}; use ui_base::types::{UiRenderPipe, UiState}; use ui_generic::traits::UiPageInterface; @@ -68,11 +68,11 @@ impl HudPage { pipe: &mut UiRenderPipe<()>, ui_state: &mut UiState, ) { - client_ui::hud::main_frame::render( + ingame_ui::hud::main_frame::render( ui, &mut UiRenderPipe::new( pipe.cur_time, - &mut client_ui::hud::user_data::UserData { + &mut ingame_ui::hud::user_data::UserData { race_round_timer_counter: &456156, ticks_per_second: &50.try_into().unwrap(), /*game: Some(&GameRenderInfo::Match { diff --git a/examples/wasm-modules/ingame_menu/Cargo.toml b/examples/wasm-modules/ingame_menu/Cargo.toml index a768967f..0397ea01 100644 --- a/examples/wasm-modules/ingame_menu/Cargo.toml +++ b/examples/wasm-modules/ingame_menu/Cargo.toml @@ -18,12 +18,13 @@ api-ui-game = { path = "../../../game/api-ui-game" } client-containers = { path = "../../../game/client-containers" } client-render-base = { path = "../../../game/client-render-base" } client-ui = { path = "../../../game/client-ui" } +client-ui-utils = { path = "../../../game/client-ui-utils" } game-base = { path = "../../../game/game-base" } game-config = { path = "../../../game/game-config" } game-interface = { path = "../../../game/game-interface" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -email_address = { version = "0.2.9", features = ["serde"] } -serde_json = "1.0.145" +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +egui = { version = "0.34", default-features = false, features = ["serde"] } +email_address = { version = "0.2", features = ["serde"] } +serde_json = "1" diff --git a/examples/wasm-modules/ingame_menu/src/ingame_menu/mod.rs b/examples/wasm-modules/ingame_menu/src/ingame_menu/mod.rs index a8f1157e..86ed8dcd 100644 --- a/examples/wasm-modules/ingame_menu/src/ingame_menu/mod.rs +++ b/examples/wasm-modules/ingame_menu/src/ingame_menu/mod.rs @@ -1,9 +1,7 @@ use api::{GRAPHICS, IO, RUNTIME_THREAD_POOL, SOUND}; use client_containers::container::ContainerLoadOptions; -use client_ui::{ - main_menu::theme_container::{THEME_CONTAINER_PATH, ThemeContainer}, - thumbnail_container::ThumbnailContainer, -}; +use client_ui::main_menu::theme_container::{THEME_CONTAINER_PATH, ThemeContainer}; +use client_ui_utils::thumbnail_container::ThumbnailContainer; pub mod page; pub mod profiles; diff --git a/examples/wasm-modules/ingame_menu/src/ingame_menu/page.rs b/examples/wasm-modules/ingame_menu/src/ingame_menu/page.rs index 41b899ca..94037e36 100644 --- a/examples/wasm-modules/ingame_menu/src/ingame_menu/page.rs +++ b/examples/wasm-modules/ingame_menu/src/ingame_menu/page.rs @@ -31,8 +31,8 @@ use client_ui::{ monitors::UiMonitors, profiles_interface::ProfilesInterface, theme_container::ThemeContainer, user_data::MainMenuInterface, }, - thumbnail_container::{DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer}, }; +use client_ui_utils::thumbnail_container::{DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer}; use game_base::server_browser::{ ServerBrowserData, ServerBrowserInfo, ServerBrowserInfoMap, ServerBrowserServer, }; diff --git a/examples/wasm-modules/mainmenu/Cargo.toml b/examples/wasm-modules/mainmenu/Cargo.toml index c8b73732..066dcdc5 100644 --- a/examples/wasm-modules/mainmenu/Cargo.toml +++ b/examples/wasm-modules/mainmenu/Cargo.toml @@ -18,11 +18,12 @@ api-ui-game = { path = "../../../game/api-ui-game" } client-containers = { path = "../../../game/client-containers" } client-render-base = { path = "../../../game/client-render-base" } client-ui = { path = "../../../game/client-ui" } +client-ui-utils = { path = "../../../game/client-ui-utils" } game-base = { path = "../../../game/game-base" } game-config = { path = "../../../game/game-config" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -email_address = { version = "0.2.9", features = ["serde"] } -serde_json = "1.0.145" +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +egui = { version = "0.34", default-features = false, features = ["serde"] } +email_address = { version = "0.2", features = ["serde"] } +serde_json = "1" diff --git a/examples/wasm-modules/mainmenu/src/mainmenu/mod.rs b/examples/wasm-modules/mainmenu/src/mainmenu/mod.rs index 84c6a001..934edb1f 100644 --- a/examples/wasm-modules/mainmenu/src/mainmenu/mod.rs +++ b/examples/wasm-modules/mainmenu/src/mainmenu/mod.rs @@ -1,9 +1,7 @@ use api::{GRAPHICS, IO, RUNTIME_THREAD_POOL, SOUND}; use client_containers::container::ContainerLoadOptions; -use client_ui::{ - main_menu::theme_container::{THEME_CONTAINER_PATH, ThemeContainer}, - thumbnail_container::ThumbnailContainer, -}; +use client_ui::main_menu::theme_container::{THEME_CONTAINER_PATH, ThemeContainer}; +use client_ui_utils::thumbnail_container::ThumbnailContainer; pub mod page; pub mod profiles; diff --git a/examples/wasm-modules/mainmenu/src/mainmenu/page.rs b/examples/wasm-modules/mainmenu/src/mainmenu/page.rs index 2c3f592f..5359739e 100644 --- a/examples/wasm-modules/mainmenu/src/mainmenu/page.rs +++ b/examples/wasm-modules/mainmenu/src/mainmenu/page.rs @@ -31,8 +31,8 @@ use client_ui::{ theme_container::ThemeContainer, user_data::MainMenuInterface, }, - thumbnail_container::{DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer}, }; +use client_ui_utils::thumbnail_container::{DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer}; use game_base::server_browser::ServerBrowserPlayer; use game_base::server_browser::{ ServerBrowserData, ServerBrowserInfo, ServerBrowserInfoMap, ServerBrowserServer, diff --git a/examples/wasm-modules/motd/Cargo.toml b/examples/wasm-modules/motd/Cargo.toml index 3e464f2b..cc8b62e0 100644 --- a/examples/wasm-modules/motd/Cargo.toml +++ b/examples/wasm-modules/motd/Cargo.toml @@ -12,6 +12,6 @@ ui-base = { path = "../../../lib/ui-base" } ui-generic = { path = "../../../lib/ui-generic" } api-ui-game = { path = "../../../game/api-ui-game" } -client-ui = { path = "../../../game/client-ui" } +ingame-ui = { path = "../../../game/ingame-ui" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } diff --git a/examples/wasm-modules/motd/src/motd/page.rs b/examples/wasm-modules/motd/src/motd/page.rs index 848834f0..04629080 100644 --- a/examples/wasm-modules/motd/src/motd/page.rs +++ b/examples/wasm-modules/motd/src/motd/page.rs @@ -1,4 +1,4 @@ -use client_ui::motd::user_data::UserData; +use ingame_ui::motd::user_data::UserData; use ui_base::types::{UiRenderPipe, UiState}; use ui_generic::traits::UiPageInterface; @@ -21,7 +21,7 @@ impl MotdPage { pipe: &mut UiRenderPipe<()>, ui_state: &mut UiState, ) { - client_ui::motd::main_frame::render( + ingame_ui::motd::main_frame::render( ui, &mut UiRenderPipe { cur_time: pipe.cur_time, diff --git a/examples/wasm-modules/prediction_timer_ui/Cargo.toml b/examples/wasm-modules/prediction_timer_ui/Cargo.toml index 6ae7c777..65721223 100644 --- a/examples/wasm-modules/prediction_timer_ui/Cargo.toml +++ b/examples/wasm-modules/prediction_timer_ui/Cargo.toml @@ -15,5 +15,5 @@ ui-generic = { path = "../../../lib/ui-generic" } api-ui-game = { path = "../../../game/api-ui-game" } prediction-timer = { path = "../../../game/prediction-timer" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -egui_plot = { version = "0.34.0" } +egui = { version = "0.34", default-features = false, features = ["serde"] } +egui_plot = { version = "0.35" } diff --git a/examples/wasm-modules/scoreboard/Cargo.toml b/examples/wasm-modules/scoreboard/Cargo.toml index ae571a39..3b446ee5 100644 --- a/examples/wasm-modules/scoreboard/Cargo.toml +++ b/examples/wasm-modules/scoreboard/Cargo.toml @@ -19,7 +19,7 @@ ui-generic = { path = "../../../lib/ui-generic" } api-ui-game = { path = "../../../game/api-ui-game" } client-containers = { path = "../../../game/client-containers" } client-render-base = { path = "../../../game/client-render-base" } -client-ui = { path = "../../../game/client-ui" } game-interface = { path = "../../../game/game-interface" } +ingame-ui = { path = "../../../game/ingame-ui" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } diff --git a/examples/wasm-modules/scoreboard/src/scoreboard/page.rs b/examples/wasm-modules/scoreboard/src/scoreboard/page.rs index c0289561..5ad9141f 100644 --- a/examples/wasm-modules/scoreboard/src/scoreboard/page.rs +++ b/examples/wasm-modules/scoreboard/src/scoreboard/page.rs @@ -243,11 +243,11 @@ impl Scoreboard { }), }); } - client_ui::scoreboard::main_frame::render( + ingame_ui::scoreboard::main_frame::render( ui, &mut UiRenderPipe::new( pipe.cur_time, - &mut client_ui::scoreboard::user_data::UserData { + &mut ingame_ui::scoreboard::user_data::UserData { scoreboard: &game_interface::types::render::scoreboard::Scoreboard { game: ScoreboardGameType::SidedPlay { ignore_stage: *red_stages.front().unwrap().0, @@ -291,12 +291,12 @@ impl Scoreboard { for _ in 0..12 { spectator_players.push(()); } - client_ui::scoreboard::main_frame::render( + ingame_ui::scoreboard::main_frame::render( ui, &mut UiRenderPipe::new( pipe.cur_time, pipe.config, - client_ui::scoreboard::user_data::UserData { + ingame_ui::scoreboard::user_data::UserData { game_data: &ScoreboardGameType::SoloPlay { players, spectator_players, diff --git a/examples/wasm-modules/state/Cargo.toml b/examples/wasm-modules/state/Cargo.toml index cd992bce..12806d31 100644 --- a/examples/wasm-modules/state/Cargo.toml +++ b/examples/wasm-modules/state/Cargo.toml @@ -44,6 +44,7 @@ ignored = [ "serde_json", "thiserror", "vanilla", + "tracing", ] [dependencies] @@ -71,25 +72,28 @@ legacy-map = { path = "../../../game/legacy-map" } map = { path = "../../../game/map" } vanilla = { path = "../../../game/vanilla" } -ddnet-accounts-types = { version = "0.1.0" } +ddnet-accounts-types = { version = "0.2" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -arrayvec = { version = "0.7.6", features = ["serde"] } -async-trait = "0.1.89" -bincode = { features = ["serde"], version = "2.0.1" } -bitflags = { version = "2.10.0", features = ["serde"] } -chrono = { version = "0.4.42", default-features = false, features = ["serde"] } -flate2 = "1.1.5" +anyhow = { version = "1", features = ["backtrace"] } +arrayvec = { version = "0.7", features = ["serde"] } +async-trait = "0.1" +bincode = { version = "2", features = ["serde"] } +bitflags = { version = "2", features = ["serde"] } +chrono = { version = "0.4", default-features = false, features = ["serde"] } +flate2 = "1" hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", ] } -log = "0.4.28" -num = "0.4.3" -num-derive = "0.4.2" -num-traits = "0.2.19" -rayon = "1.11.0" -rustc-hash = "2.1.1" -serde = "1.0.228" -serde_json = "1.0.145" -thiserror = "2.0.17" +log = "0.4" +num = "0.4" +num-derive = "0.4" +num-traits = "0.2" +rayon = "1" +rustc-hash = "2" +serde = "1" +serde_json = "1" +thiserror = "2" +tracing = { version = "0.1", default-features = false, features = [ + "attributes", +] } diff --git a/examples/wasm-modules/state/src/collision.rs b/examples/wasm-modules/state/src/collision_overwrite.rs similarity index 100% rename from examples/wasm-modules/state/src/collision.rs rename to examples/wasm-modules/state/src/collision_overwrite.rs diff --git a/examples/wasm-modules/state/src/lib.rs b/examples/wasm-modules/state/src/lib.rs index fa244b07..14a2ce14 100644 --- a/examples/wasm-modules/state/src/lib.rs +++ b/examples/wasm-modules/state/src/lib.rs @@ -7,7 +7,6 @@ use game_interface::interface::{ }; use state::state::GameState; -pub mod collision; pub mod entities; pub mod events; pub mod game_objects; @@ -41,6 +40,11 @@ pub mod reusable { pub use api::{DB, IO_RUNTIME}; pub use api_state::*; +mod collision_overwrite; +pub mod collision { + pub use super::collision_overwrite::collision::*; +} + #[unsafe(no_mangle)] fn mod_state_new( map: Vec, diff --git a/examples/wasm-modules/ui/Cargo.toml b/examples/wasm-modules/ui/Cargo.toml index 1a0a38ed..ec4a60a2 100644 --- a/examples/wasm-modules/ui/Cargo.toml +++ b/examples/wasm-modules/ui/Cargo.toml @@ -13,4 +13,4 @@ ui-generic = { path = "../../../lib/ui-generic" } api-ui-game = { path = "../../../game/api-ui-game" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } diff --git a/examples/wasm-modules/vote/Cargo.toml b/examples/wasm-modules/vote/Cargo.toml index 28573c68..545be50c 100644 --- a/examples/wasm-modules/vote/Cargo.toml +++ b/examples/wasm-modules/vote/Cargo.toml @@ -16,7 +16,8 @@ ui-generic = { path = "../../../lib/ui-generic" } api-ui-game = { path = "../../../game/api-ui-game" } client-containers = { path = "../../../game/client-containers" } client-render-base = { path = "../../../game/client-render-base" } -client-ui = { path = "../../../game/client-ui" } +client-ui-utils = { path = "../../../game/client-ui-utils" } game-interface = { path = "../../../game/game-interface" } +ingame-ui = { path = "../../../game/ingame-ui" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } diff --git a/examples/wasm-modules/vote/src/vote/mod.rs b/examples/wasm-modules/vote/src/vote/mod.rs index c524181c..721271bb 100644 --- a/examples/wasm-modules/vote/src/vote/mod.rs +++ b/examples/wasm-modules/vote/src/vote/mod.rs @@ -1,6 +1,6 @@ use api::{GRAPHICS, IO, RUNTIME_THREAD_POOL, SOUND}; use client_containers::container::ContainerLoadOptions; -use client_ui::thumbnail_container::ThumbnailContainer; +use client_ui_utils::thumbnail_container::ThumbnailContainer; pub mod page; diff --git a/examples/wasm-modules/vote/src/vote/page.rs b/examples/wasm-modules/vote/src/vote/page.rs index a8dd9304..f6f9401b 100644 --- a/examples/wasm-modules/vote/src/vote/page.rs +++ b/examples/wasm-modules/vote/src/vote/page.rs @@ -3,10 +3,7 @@ use std::time::Duration; use api_ui_game::render::create_skin_container; use client_containers::skins::SkinContainer; use client_render_base::render::tee::RenderTee; -use client_ui::{ - thumbnail_container::{DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer}, - vote::user_data::{VoteRenderData, VoteRenderType}, -}; +use client_ui_utils::thumbnail_container::{DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer}; use game_interface::votes::{ MapCategoryVoteKey, MapVote, MapVoteDetails, MapVoteKey, VoteState, VoteType, Voted, }; @@ -14,6 +11,7 @@ use graphics::{ graphics::graphics::Graphics, handles::{canvas::canvas::GraphicsCanvasHandle, stream::stream::GraphicsStreamHandle}, }; +use ingame_ui::vote::user_data::{VoteRenderData, VoteRenderType}; use ui_base::types::{UiRenderPipe, UiState}; use ui_generic::traits::UiPageInterface; @@ -47,11 +45,11 @@ impl VotePage { pipe: &mut UiRenderPipe<()>, ui_state: &mut UiState, ) { - client_ui::vote::main_frame::render( + ingame_ui::vote::main_frame::render( ui, &mut UiRenderPipe::new( pipe.cur_time, - &mut client_ui::vote::user_data::UserData { + &mut ingame_ui::vote::user_data::UserData { canvas_handle: &self.canvas_handle, stream_handle: &self.stream_handle, skin_container: &mut self.skin_container, @@ -60,7 +58,7 @@ impl VotePage { vote_data: VoteRenderData { ty: VoteRenderType::PlayerVoteKick( - client_ui::vote::user_data::VoteRenderPlayer { + ingame_ui::vote::user_data::VoteRenderPlayer { name: "nameless tee", skin: &Default::default(), skin_info: &Default::default(), diff --git a/game/api-auto-mapper/Cargo.toml b/game/api-auto-mapper/Cargo.toml index 24c5ee8f..c20e6033 100644 --- a/game/api-auto-mapper/Cargo.toml +++ b/game/api-auto-mapper/Cargo.toml @@ -9,4 +9,4 @@ editor-interface = { path = "../editor-interface" } api = { path = "../../lib/api" } api-wasm-macros = { path = "../../lib/api-wasm-macros" } -once_cell = "1.21.3" +once_cell = "1" diff --git a/game/api-editor/Cargo.toml b/game/api-editor/Cargo.toml index 4a981bf3..6c5adad9 100644 --- a/game/api-editor/Cargo.toml +++ b/game/api-editor/Cargo.toml @@ -11,5 +11,5 @@ api-wasm-macros = { path = "../../lib/api-wasm-macros" } config = { path = "../../lib/config" } graphics-types = { path = "../../lib/graphics-types" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -once_cell = "1.21.3" +egui = { version = "0.34", default-features = false, features = ["serde"] } +once_cell = "1" diff --git a/game/api-render-game/Cargo.toml b/game/api-render-game/Cargo.toml index c2aaafd0..cbe57387 100644 --- a/game/api-render-game/Cargo.toml +++ b/game/api-render-game/Cargo.toml @@ -13,4 +13,4 @@ client-render-game = { path = "../client-render-game" } game-config = { path = "../game-config" } game-interface = { path = "../game-interface" } -once_cell = "1.21.3" +once_cell = "1" diff --git a/game/api-state/Cargo.toml b/game/api-state/Cargo.toml index 496dd4b7..d1550368 100644 --- a/game/api-state/Cargo.toml +++ b/game/api-state/Cargo.toml @@ -14,4 +14,4 @@ game-database = { path = "../../lib/game-database" } math = { path = "../../lib/math" } pool = { path = "../../lib/pool" } -once_cell = "1.21.3" +once_cell = "1" diff --git a/game/assets-base/Cargo.toml b/game/assets-base/Cargo.toml index d748e3db..08e3c677 100644 --- a/game/assets-base/Cargo.toml +++ b/game/assets-base/Cargo.toml @@ -11,13 +11,16 @@ hiarc = { path = "../../lib/hiarc", features = [ "enable_serde_json", ] } -anyhow = { version = "1.0.100", features = ["backtrace"] } -chrono = { version = "0.4.42", default-features = false, features = ["serde"] } -rustc-hash = "2.1.1" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -symphonia = { version = "0.5.5", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +chrono = { version = "0.4", default-features = false, features = ["serde"] } +rustc-hash = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +symphonia = { version = "0.5", default-features = false, features = [ "ogg", "vorbis", ] } -tar = "0.4.44" +tar = "0.4" +tracing = { version = "0.1", default-features = false, features = [ + "attributes", +] } diff --git a/game/assets-base/src/tar.rs b/game/assets-base/src/tar.rs index a218ca20..8202935c 100644 --- a/game/assets-base/src/tar.rs +++ b/game/assets-base/src/tar.rs @@ -10,6 +10,7 @@ use tar::Header; use anyhow::anyhow; use rustc_hash::FxHashMap; use tar::EntryType; +use tracing::instrument; pub struct TarReaderWrapper { cur_pos: Arc, @@ -201,6 +202,7 @@ pub fn tar_file_entries(reader: &mut TarReader) -> anyhow::Result>>() } +#[instrument(level = "trace", skip_all)] pub fn tar_entry_to_file(entry: &TarEntry) -> anyhow::Result<&[u8]> { Ok(entry.file.get(entry.range.clone()).ok_or_else(|| { std::io::Error::new( diff --git a/game/assets-splitting/Cargo.toml b/game/assets-splitting/Cargo.toml index 1915960d..17def6c5 100644 --- a/game/assets-splitting/Cargo.toml +++ b/game/assets-splitting/Cargo.toml @@ -8,5 +8,5 @@ edition = "2024" [dependencies] image-utils = { path = "../../lib/image-utils" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -rayon = "1.11.0" +anyhow = { version = "1", features = ["backtrace"] } +rayon = "1" diff --git a/game/binds/Cargo.toml b/game/binds/Cargo.toml index e46115cc..38331f70 100644 --- a/game/binds/Cargo.toml +++ b/game/binds/Cargo.toml @@ -11,6 +11,6 @@ command-parser = { path = "../../lib/command-parser" } hiarc = { path = "../../lib/hiarc" } input-binds = { path = "../../lib/input-binds" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -log = "0.4.28" -serde_json = "1.0.145" +anyhow = { version = "1", features = ["backtrace"] } +log = "0.4" +serde_json = "1" diff --git a/game/client-accounts/Cargo.toml b/game/client-accounts/Cargo.toml index 37ce55c7..a7bb5a7a 100644 --- a/game/client-accounts/Cargo.toml +++ b/game/client-accounts/Cargo.toml @@ -10,11 +10,11 @@ steam = { path = "../../lib/steam" } client-ui = { path = "../client-ui" } http-accounts = { path = "../http-accounts" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -chrono = { version = "0.4.42" } -ddnet-account-client-http-fs = { version = "0.3.0" } -ddnet-accounts-shared = { version = "0.2.0" } -email_address = { version = "0.2.9", features = ["serde"] } -serde_json = "1.0.145" -url = { version = "2.5.7", features = ["serde"] } +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +chrono = { version = "0.4" } +ddnet-account-client-http-fs = { version = "0.4" } +ddnet-accounts-shared = { version = "0.3" } +email_address = { version = "0.2", features = ["serde"] } +serde_json = "1" +url = { version = "2", features = ["serde"] } diff --git a/game/client-console/Cargo.toml b/game/client-console/Cargo.toml index 738115d0..143b3341 100644 --- a/game/client-console/Cargo.toml +++ b/game/client-console/Cargo.toml @@ -22,9 +22,9 @@ hiarc = { path = "../../lib/hiarc", features = ["derive"] } ui-base = { path = "../../lib/ui-base" } ui-generic = { path = "../../lib/ui-generic" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -log = "0.4.28" -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } +log = "0.4" +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } diff --git a/game/client-containers/Cargo.toml b/game/client-containers/Cargo.toml index 124d04a7..31012097 100644 --- a/game/client-containers/Cargo.toml +++ b/game/client-containers/Cargo.toml @@ -25,21 +25,21 @@ assets-base = { path = "../assets-base" } assets-splitting = { path = "../assets-splitting" } game-interface = { path = "../game-interface" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -arrayvec = "0.7.6" -either = "1.15.0" -fixed = "1.29.0" +anyhow = { version = "1", features = ["backtrace"] } +arrayvec = "0.7" +either = "1" +fixed = "1" hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", ] } -log = "0.4.28" -num-traits = "0.2.19" -rayon = "1.11.0" -rustc-hash = "2.1.1" -serde_json = "1.0.145" -tokio = { version = "1.48.0", default-features = false, features = ["sync"] } -tracing = { version = "0.1.41", default-features = false, features = [ +log = "0.4" +num-traits = "0.2" +rayon = "1" +rustc-hash = "2" +serde_json = "1" +tokio = { version = "1", default-features = false, features = ["sync"] } +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -url = "2.5.7" +url = "2" diff --git a/game/client-containers/src/container.rs b/game/client-containers/src/container.rs index ae7b22c7..3acb5d9b 100644 --- a/game/client-containers/src/container.rs +++ b/game/client-containers/src/container.rs @@ -1095,6 +1095,15 @@ where } } + /// Checks if the task that loads the default value + /// is finished, or the default item is already loaded + #[instrument(level = "trace", skip_all)] + pub fn is_default_task_loaded(&self) -> bool { + self.default_item + .as_ref() + .is_none_or(|task| task.task.is_finished()) + } + /// Checks if default already loaded without initiating the loading process #[instrument(level = "trace", skip_all)] pub fn is_default_loaded(&self) -> bool { diff --git a/game/client-demo/Cargo.toml b/game/client-demo/Cargo.toml index 26e75107..9af0ec9d 100644 --- a/game/client-demo/Cargo.toml +++ b/game/client-demo/Cargo.toml @@ -31,11 +31,11 @@ game-base = { path = "../game-base" } game-config = { path = "../game-config" } game-interface = { path = "../game-interface" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -log = "0.4.28" -rayon = "1.11.0" -serde = { version = "1.0.228", features = ["derive"] } -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } +log = "0.4" +rayon = "1" +serde = { version = "1", features = ["derive"] } +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } diff --git a/game/client-ghost/Cargo.toml b/game/client-ghost/Cargo.toml index 8265f4e4..f4e59f77 100644 --- a/game/client-ghost/Cargo.toml +++ b/game/client-ghost/Cargo.toml @@ -20,5 +20,5 @@ client-render-game = { path = "../client-render-game" } game-config = { path = "../game-config" } game-interface = { path = "../game-interface" } -log = "0.4.28" -rayon = "1.11.0" +log = "0.4" +rayon = "1" diff --git a/game/client-map/Cargo.toml b/game/client-map/Cargo.toml index 93f740e8..7a5f6f29 100644 --- a/game/client-map/Cargo.toml +++ b/game/client-map/Cargo.toml @@ -21,10 +21,10 @@ game-state-wasm = { path = "../game-state-wasm" } map = { path = "../map" } render-game-wasm = { path = "../render-game-wasm" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -log = "0.4.28" -rayon = "1.11.0" -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +log = "0.4" +rayon = "1" +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -wasmparser = "0.240.0" +wasmparser = "0.251" diff --git a/game/client-notifications/Cargo.toml b/game/client-notifications/Cargo.toml index 6dad0555..e7fd2c13 100644 --- a/game/client-notifications/Cargo.toml +++ b/game/client-notifications/Cargo.toml @@ -9,8 +9,8 @@ graphics = { path = "../../lib/graphics" } ui-base = { path = "../../lib/ui-base" } ui-generic = { path = "../../lib/ui-generic" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -egui-notify = "0.21.0" -tracing = { version = "0.1.41", default-features = false, features = [ +egui = { version = "0.34", default-features = false, features = ["serde"] } +egui-notify = "0.22" +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } diff --git a/game/client-render-base/Cargo.toml b/game/client-render-base/Cargo.toml index fb0038dc..507ec9b8 100644 --- a/game/client-render-base/Cargo.toml +++ b/game/client-render-base/Cargo.toml @@ -24,23 +24,26 @@ game-config = { path = "../game-config" } game-interface = { path = "../game-interface" } legacy-map = { path = "../legacy-map" } map = { path = "../map" } -vanilla = { path = "../vanilla" } +tile-map-collision = { path = "../tile-map-collision" } hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", ] } -anyhow = { version = "1.0.100", features = ["backtrace"] } -bincode = { version = "2.0.1", features = ["serde"] } -fixed = "1.29.0" -futures = "0.3.31" -log = "0.4.28" -num-derive = "0.4.2" -num-traits = "0.2.19" -rayon = "1.11.0" -rustc-hash = "2.1.1" -serde = { version = "1.0.228", features = ["derive"] } -strum = { version = "0.27.2", features = ["derive"] } -time = { version = "0.3.44", features = ["serde"] } -url = { version = "2.5.7", features = ["serde"] } +anyhow = { version = "1", features = ["backtrace"] } +bincode = { version = "2", features = ["serde"] } +fixed = "1" +futures = "0.3" +log = "0.4" +num-derive = "0.4" +num-traits = "0.2" +rayon = "1" +rustc-hash = "2" +serde = { version = "1", features = ["derive"] } +strum = { version = "0.28", features = ["derive"] } +time = { version = "0.3", features = ["serde"] } +tracing = { version = "0.1", default-features = false, features = [ + "attributes", +] } +url = { version = "2", features = ["serde"] } diff --git a/game/client-render-base/src/map/render_map_base.rs b/game/client-render-base/src/map/render_map_base.rs index 1f299b64..3c8526ab 100644 --- a/game/client-render-base/src/map/render_map_base.rs +++ b/game/client-render-base/src/map/render_map_base.rs @@ -41,8 +41,9 @@ use map::{file::MapFileReader, map::Map}; use math::math::vector::vec2; use rayon::iter::{IntoParallelIterator, ParallelIterator}; use sound::{commands::SoundSceneCreateProps, scene_handle::SoundSceneHandle, sound::SoundManager}; +use tile_map_collision::collision::{Collision, DEFAULT_TICKS_PER_SECOND}; +use tracing::instrument; use url::Url; -use vanilla::collision::collision::Collision; pub struct ClientMapFileData { pub collision: Box, @@ -442,7 +443,11 @@ impl RenderMapLoading { let physics_group = map.groups.physics.clone(); let (collision, upload_data) = runtime_tp.join( || { - let collision = Collision::new(physics_group, false); + let collision = Collision::new( + physics_group, + false, + DEFAULT_TICKS_PER_SECOND, + ); benchmark.bench_multi("preparing collisions"); collision }, @@ -553,6 +558,7 @@ impl ClientMapRender { } } + #[instrument(level = "trace", skip_all)] pub fn continue_loading(&mut self) -> anyhow::Result> { let mut eval = || { let mut self_helper = Self::None; diff --git a/game/client-render-base/src/render/mod.rs b/game/client-render-base/src/render/mod.rs index c4c9f96a..179cbbc8 100644 --- a/game/client-render-base/src/render/mod.rs +++ b/game/client-render-base/src/render/mod.rs @@ -6,4 +6,5 @@ pub mod particle; pub mod particle_manager; pub mod tee; pub mod toolkit; +pub mod weapon_visuals; pub mod weapons; diff --git a/game/client-render-base/src/render/particle_manager.rs b/game/client-render-base/src/render/particle_manager.rs index 9be85fb5..e1952ab7 100644 --- a/game/client-render-base/src/render/particle_manager.rs +++ b/game/client-render-base/src/render/particle_manager.rs @@ -32,7 +32,7 @@ use math::math::{ }; use num_derive::FromPrimitive; use num_traits::FromPrimitive; -use vanilla::collision::collision::Collision; +use tile_map_collision::collision::Collision; use super::particle::Particle; diff --git a/game/client-render-base/src/render/toolkit.rs b/game/client-render-base/src/render/toolkit.rs index d09587ed..7fb735a7 100644 --- a/game/client-render-base/src/render/toolkit.rs +++ b/game/client-render-base/src/render/toolkit.rs @@ -1,5 +1,12 @@ use std::time::Duration; +use crate::{ + map::render_pipe::GameTimeInfo, + render::weapon_visuals::{ + NINJA_PICKUP_VISUAL_SIZE, NINJA_WEAPON_VISUAL_SIZE, get_ninja_sprite_scale, get_scale, + get_weapon_sprite_scale, get_weapon_visual_scale, + }, +}; use client_containers::{ container::ContainerKey, hooks::{Hook, HookContainer}, @@ -33,12 +40,6 @@ use math::math::{ PI, PI_F64, Rng, RngSlice, angle, distance, mix, normalize, vector::{dvec2, ubvec4, vec2}, }; -use vanilla::weapons::definitions::weapon_def::{ - NINJA_PICKUP_VISUAL_SIZE, NINJA_WEAPON_VISUAL_SIZE, get_ninja_sprite_scale, get_scale, - get_weapon_sprite_scale, get_weapon_visual_scale, -}; - -use crate::map::render_pipe::GameTimeInfo; use super::{ animation::{AnimState, TeeAnimationFrame}, diff --git a/game/client-render-base/src/render/weapon_visuals.rs b/game/client-render-base/src/render/weapon_visuals.rs new file mode 100644 index 00000000..48a3d026 --- /dev/null +++ b/game/client-render-base/src/render/weapon_visuals.rs @@ -0,0 +1,29 @@ +use game_interface::types::{emoticons::EnumCount, weapons::WeaponType}; +use math::math::{length, vector::vec2}; + +pub const WEAPON_VISUAL_SIZES: [f32; WeaponType::COUNT] = [3.0, 2.0, 3.0, 3.0, 3.0, 92.0 / 32.0]; +pub const NINJA_PICKUP_VISUAL_SIZE: f32 = 4.0; +pub const NINJA_WEAPON_VISUAL_SIZE: f32 = 3.0; + +pub const WEAPON_SCALES: [(usize, usize); WeaponType::COUNT] = + [(4, 3), (4, 2), (8, 2), (8, 2), (7, 2), (7, 3)]; +pub const NINJA_PICKUP_VISUAL_SCALE: (usize, usize) = (8, 2); + +pub fn get_weapon_visual_scale(weapon: &WeaponType) -> f32 { + WEAPON_VISUAL_SIZES[*weapon as usize] +} + +pub fn get_scale(x: f32, y: f32) -> (f32, f32) { + let f = length(&vec2::new(x, y)); + (x / f, y / f) +} + +pub fn get_weapon_sprite_scale(weapon: &WeaponType) -> (f32, f32) { + let scale = WEAPON_SCALES[*weapon as usize]; + get_scale(scale.0 as f32, scale.1 as f32) +} + +pub fn get_ninja_sprite_scale() -> (f32, f32) { + let scale = NINJA_PICKUP_VISUAL_SCALE; + get_scale(scale.0 as f32, scale.1 as f32) +} diff --git a/game/client-render-game/Cargo.toml b/game/client-render-game/Cargo.toml index 8b198ed8..dcb62f78 100644 --- a/game/client-render-game/Cargo.toml +++ b/game/client-render-game/Cargo.toml @@ -19,15 +19,19 @@ client-containers = { path = "../client-containers" } client-render = { path = "../client-render" } client-render-base = { path = "../client-render-base" } client-types = { path = "../client-types" } -client-ui = { path = "../client-ui" } +client-ui-utils = { path = "../client-ui-utils" } game-base = { path = "../game-base" } game-config = { path = "../game-config" } game-interface = { path = "../game-interface" } +ingame-ui = { path = "../ingame-ui" } map = { path = "../map" } -vanilla = { path = "../vanilla" } +tile-map-collision = { path = "../tile-map-collision" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -num-traits = "0.2.19" -rayon = "1.11.0" -serde = { version = "1.0.228", features = ["derive"] } -url = { version = "2.5.7", features = ["serde"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } +num-traits = "0.2" +rayon = "1" +serde = { version = "1", features = ["derive"] } +tracing = { version = "0.1", default-features = false, features = [ + "attributes", +] } +url = { version = "2", features = ["serde"] } diff --git a/game/client-render-game/src/components/hud.rs b/game/client-render-game/src/components/hud.rs index 8749c167..407f4e04 100644 --- a/game/client-render-game/src/components/hud.rs +++ b/game/client-render-game/src/components/hud.rs @@ -9,8 +9,10 @@ use client_containers::{ weapons::{WeaponContainer, Weapons}, }; use client_render::hud::page::{HudRender, HudRenderPipe}; -use client_render_base::render::tee::RenderTee; -use client_ui::hud::user_data::RenderDateTime; +use client_render_base::render::{ + tee::RenderTee, + weapon_visuals::{get_weapon_sprite_scale, get_weapon_visual_scale}, +}; use game_interface::types::{ emoticons::{EnumCount, IntoEnumIterator}, game::{GameTickType, NonZeroGameTickType}, @@ -33,9 +35,9 @@ use graphics::{ streaming::quad_scope_begin, }; use graphics_types::rendering::State; +use ingame_ui::hud::user_data::RenderDateTime; use math::math::{PI, vector::vec2}; use ui_base::ui::UiCreator; -use vanilla::weapons::definitions::weapon_def::{get_weapon_sprite_scale, get_weapon_visual_scale}; const GRID_SIZE: f32 = 24.0; diff --git a/game/client-render-game/src/components/players.rs b/game/client-render-game/src/components/players.rs index 35508286..e3c43ca1 100644 --- a/game/client-render-game/src/components/players.rs +++ b/game/client-render-game/src/components/players.rs @@ -39,7 +39,7 @@ use graphics::{ use graphics_types::rendering::{State, WrapType}; use pool::datatypes::PoolFxLinkedHashMap; -use vanilla::collision::collision::Collision; +use tile_map_collision::collision::Collision; use game_interface::types::{ character_info::{MAX_ASSET_NAME_LEN, NetworkSkinInfo}, diff --git a/game/client-render-game/src/render_game.rs b/game/client-render-game/src/render_game.rs index 9f475cf1..5ac3d0de 100644 --- a/game/client-render-game/src/render_game.rs +++ b/game/client-render-game/src/render_game.rs @@ -18,7 +18,10 @@ use base::{ }; use base_io::io::Io; use camera::Camera; -use client_containers::utils::{RenderGameContainers, load_containers}; +use client_containers::{ + container::ContainerKey, + utils::{RenderGameContainers, load_containers}, +}; pub use client_render::emote_wheel::render::EmoteWheelInput; use client_render::{ actionfeed::render::{ActionfeedRender, ActionfeedRenderPipe}, @@ -44,17 +47,10 @@ use client_types::{ actionfeed::{Action, ActionInFeed, ActionKill, ActionPlayer}, chat::{ChatMsg, MsgSystem, ServerMsg, SystemMsgPlayerSkin}, }; -use client_ui::{ - chat::user_data::{ChatEvent, ChatMode, MsgInChat}, - emote_wheel::user_data::EmoteWheelEvent, - hud::user_data::RenderDateTime, - spectator_selection::user_data::SpectatorSelectionEvent, - thumbnail_container::{ - DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer, load_thumbnail_container, - }, - time_display::TimeDisplay, - vote::user_data::{VoteRenderData, VoteRenderPlayer, VoteRenderType}, +use client_ui_utils::thumbnail_container::{ + DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer, load_thumbnail_container, }; +use client_ui_utils::time_display::TimeDisplay; use config::config::ConfigDebug; use egui::{FontDefinitions, Rect}; use game_base::network::{ @@ -97,6 +93,13 @@ use graphics::{ handles::{backend::backend::GraphicsBackendHandle, canvas::canvas::GraphicsCanvasHandle}, }; use graphics_types::rendering::ColorRgba; +use ingame_ui::{ + chat::user_data::{ChatEvent, ChatMode, MsgInChat}, + emote_wheel::user_data::EmoteWheelEvent, + hud::user_data::RenderDateTime, + spectator_selection::user_data::SpectatorSelectionEvent, + vote::user_data::{VoteRenderData, VoteRenderPlayer, VoteRenderType}, +}; use math::math::{Rng, RngSlice, vector::vec2}; use pool::{ datatypes::{ @@ -112,6 +115,7 @@ use sound::{ commands::SoundSceneCreateProps, scene_object::SceneObject, sound::SoundManager, sound_listener::SoundListener, types::SoundPlayProps, }; +use tracing::instrument; use ui_base::ui::UiCreator; use url::Url; @@ -415,6 +419,22 @@ pub struct RenderGameInput { type RenderPlayerHelper = (i32, i32, u32, u32, (PlayerId, RenderGameForPlayer)); +macro_rules! for_each_resource_container { + ($call:ident) => { + $call!(skin_container, skin); + $call!(weapon_container, weapon); + $call!(hook_container, hook); + $call!(ctf_container, ctf); + $call!(ninja_container, ninja); + $call!(freeze_container, freeze); + $call!(entities_container, entities); + $call!(hud_container, hud); + $call!(emoticons_container, emoticons); + $call!(particles_container, particles); + $call!(game_container, game); + }; +} + pub struct RenderGame { // containers containers: RenderGameContainers, @@ -484,7 +504,7 @@ impl RenderGame { Some("downloaded".as_ref()), )); - let mut containers = load_containers( + let containers = load_containers( io, thread_pool, props.resource_http_download_url, @@ -516,7 +536,7 @@ impl RenderGame { let motd = MotdRender::new(graphics, &creator); let spectator_selection = SpectatorSelectionRender::new(graphics, &creator); - let mut map_vote_thumbnails_container = load_thumbnail_container( + let map_vote_thumbnails_container = load_thumbnail_container( io.clone(), thread_pool.clone(), DEFAULT_THUMBNAIL_CONTAINER_PATH, @@ -527,13 +547,6 @@ impl RenderGame { props.resource_download_server, ); - Self::update_containers_impl( - &mut containers, - &mut map_vote_thumbnails_container, - cur_time, - props.client_local_infos.iter(), - ); - Ok(Self { // containers containers, @@ -2539,17 +2552,19 @@ impl RenderGame { } } - fn check_required_containers_loaded(&mut self) -> bool { + fn check_required_local_character_containers_loaded(&mut self) -> bool { let loaded = self.client_local_infos.iter().all(|i| { - self.containers.skin_container.is_loaded_or_failed(&i.skin) - && self - .containers - .particles_container - .is_loaded_or_failed(&i.particles) - && self - .containers - .entities_container - .is_loaded_or_failed(&i.entities) + let mut loaded = true; + + macro_rules! check_loaded { + ($container:ident, $resource:ident) => { + loaded &= self.containers.$container.is_loaded_or_failed(&i.$resource); + }; + } + + for_each_resource_container!(check_loaded); + + loaded }); // since we don't need the property anymore after they are loaded // clear it to save memory & performance. @@ -2559,6 +2574,29 @@ impl RenderGame { loaded } + fn check_required_containers_default_loaded(containers: &mut RenderGameContainers) -> bool { + let mut loaded = true; + + macro_rules! check_loaded { + ($container:ident, $resource:ident) => { + let is_loaded = containers.$container.is_default_task_loaded(); + + // if loaded also load into memory + if is_loaded { + containers + .$container + .get_or_default_opt(None::<&ContainerKey>); + } + + loaded &= is_loaded; + }; + } + + for_each_resource_container!(check_loaded); + + loaded + } + fn update_containers_impl<'a, F>( containers: &mut RenderGameContainers, map_vote_thumbnails_container: &mut ThumbnailContainer, @@ -2567,90 +2605,32 @@ impl RenderGame { ) where F: Iterator + Clone, { - containers.skin_container.update( - cur_time, - &Duration::from_secs(5), - &Duration::from_secs(1), - character_infos.clone().map(|info| info.skin.borrow()), - None, - ); - containers.weapon_container.update( - cur_time, - &Duration::from_secs(5), - &Duration::from_secs(1), - character_infos.clone().map(|info| info.weapon.borrow()), - None, - ); - containers.hook_container.update( - cur_time, - &Duration::from_secs(5), - &Duration::from_secs(1), - character_infos.clone().map(|info| info.hook.borrow()), - None, - ); - containers.ctf_container.update( - cur_time, - &Duration::from_secs(5), - &Duration::from_secs(1), - character_infos.clone().map(|info| info.ctf.borrow()), - None, - ); - containers.ninja_container.update( - cur_time, - &Duration::from_secs(5), - &Duration::from_secs(1), - character_infos.clone().map(|info| info.ninja.borrow()), - None, - ); - containers.freeze_container.update( - cur_time, - &Duration::from_secs(5), - &Duration::from_secs(1), - character_infos.clone().map(|info| info.freeze.borrow()), - None, - ); - containers.entities_container.update( - cur_time, - &Duration::from_secs(5), - &Duration::from_secs(1), - character_infos.clone().map(|info| info.entities.borrow()), - None, - ); - containers.hud_container.update( - cur_time, - &Duration::from_secs(5), - &Duration::from_secs(1), - character_infos.clone().map(|info| info.hud.borrow()), - None, - ); - containers.emoticons_container.update( - cur_time, - &Duration::from_secs(5), - &Duration::from_secs(1), - character_infos.clone().map(|info| info.emoticons.borrow()), - None, - ); - containers.particles_container.update( - cur_time, - &Duration::from_secs(5), - &Duration::from_secs(1), - character_infos.clone().map(|info| info.particles.borrow()), - None, - ); - containers.game_container.update( - cur_time, - &Duration::from_secs(5), - &Duration::from_secs(1), - character_infos.map(|info| info.game.borrow()), - None, - ); - map_vote_thumbnails_container.update( - cur_time, - &Duration::from_secs(5), - &Duration::from_secs(1), - [].into_iter(), - None, - ); + let keep_alive = Duration::from_secs(5); + let timeout = Duration::from_secs(1); + + macro_rules! update_container { + ($container:ident, $resource:ident) => { + containers.$container.update( + cur_time, + &keep_alive, + &timeout, + character_infos.clone().map(|info| info.$resource.borrow()), + None, + ); + }; + } + + for_each_resource_container!(update_container); + + if map_vote_thumbnails_container.is_default_loaded() { + map_vote_thumbnails_container.update( + cur_time, + &keep_alive, + &timeout, + [].into_iter(), + None, + ); + } } fn update_containers( @@ -2872,8 +2852,11 @@ impl RenderGameInterface for RenderGame { res } + #[instrument(level = "trace", skip_all)] fn continue_loading(&mut self) -> Result { - let containers_loaded = self.check_required_containers_loaded(); + let containers_loaded = + Self::check_required_containers_default_loaded(&mut self.containers) + && self.check_required_local_character_containers_loaded(); self.map .continue_loading() .map(|m| m.is_some() && containers_loaded) diff --git a/game/client-render/Cargo.toml b/game/client-render/Cargo.toml index ea0d85f8..66966aad 100644 --- a/game/client-render/Cargo.toml +++ b/game/client-render/Cargo.toml @@ -14,9 +14,10 @@ ui-generic = { path = "../../lib/ui-generic" } client-containers = { path = "../client-containers" } client-render-base = { path = "../client-render-base" } client-types = { path = "../client-types" } -client-ui = { path = "../client-ui" } +client-ui-utils = { path = "../client-ui-utils" } game-base = { path = "../game-base" } game-interface = { path = "../game-interface" } +ingame-ui = { path = "../ingame-ui" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -serde = { version = "1.0.228", features = ["derive"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } +serde = { version = "1", features = ["derive"] } diff --git a/game/client-render/src/actionfeed/render.rs b/game/client-render/src/actionfeed/render.rs index e4a70e40..d1e71999 100644 --- a/game/client-render/src/actionfeed/render.rs +++ b/game/client-render/src/actionfeed/render.rs @@ -3,10 +3,6 @@ use std::{collections::VecDeque, time::Duration}; use client_containers::{ninja::NinjaContainer, skins::SkinContainer, weapons::WeaponContainer}; use client_render_base::render::{tee::RenderTee, toolkit::ToolkitRender}; use client_types::actionfeed::ActionInFeed; -use client_ui::actionfeed::{ - page::ActionFeedUi, - user_data::{RenderTeeInfo, UserData}, -}; use egui::Color32; use graphics::{ graphics::graphics::Graphics, @@ -15,6 +11,10 @@ use graphics::{ stream::stream::GraphicsStreamHandle, texture::texture::GraphicsTextureHandle, }, }; +use ingame_ui::actionfeed::{ + page::ActionFeedUi, + user_data::{RenderTeeInfo, UserData}, +}; use ui_generic::traits::UiPageInterface; use ui_base::{ diff --git a/game/client-render/src/chat/render.rs b/game/client-render/src/chat/render.rs index 1893024b..2f8086cd 100644 --- a/game/client-render/src/chat/render.rs +++ b/game/client-render/src/chat/render.rs @@ -6,10 +6,6 @@ use std::{ use base::linked_hash_map_view::FxLinkedHashMap; use client_containers::skins::SkinContainer; use client_render_base::render::tee::RenderTee; -use client_ui::chat::{ - page::ChatUi, - user_data::{ChatEvent, ChatMode, MsgInChat, UserData}, -}; use egui::Color32; use game_interface::types::{ id_types::{CharacterId, PlayerId}, @@ -22,6 +18,10 @@ use graphics::{ stream::stream::GraphicsStreamHandle, texture::texture::GraphicsTextureHandle, }, }; +use ingame_ui::chat::{ + page::ChatUi, + user_data::{ChatEvent, ChatMode, MsgInChat, UserData}, +}; use ui_base::{ remember_mut::RememberMut, diff --git a/game/client-render/src/emote_wheel/render.rs b/game/client-render/src/emote_wheel/render.rs index 29af635c..93d6f0d7 100644 --- a/game/client-render/src/emote_wheel/render.rs +++ b/game/client-render/src/emote_wheel/render.rs @@ -2,10 +2,6 @@ use std::time::Duration; use client_containers::{emoticons::EmoticonsContainer, skins::SkinContainer}; use client_render_base::render::tee::RenderTee; -use client_ui::emote_wheel::{ - page::EmoteWheelUi, - user_data::{EmoteWheelEvent, EmoteWheelMousePos, UserData}, -}; use egui::Color32; use game_interface::types::{character_info::NetworkSkinInfo, resource_key::ResourceKey}; use graphics::{ @@ -15,6 +11,10 @@ use graphics::{ stream::stream::GraphicsStreamHandle, texture::texture::GraphicsTextureHandle, }, }; +use ingame_ui::emote_wheel::{ + page::EmoteWheelUi, + user_data::{EmoteWheelEvent, EmoteWheelMousePos, UserData}, +}; use serde::{Deserialize, Serialize}; use ui_base::{ diff --git a/game/client-render/src/hud/page.rs b/game/client-render/src/hud/page.rs index 99360440..105f4a15 100644 --- a/game/client-render/src/hud/page.rs +++ b/game/client-render/src/hud/page.rs @@ -3,10 +3,6 @@ use std::time::Duration; use base::linked_hash_map_view::FxLinkedHashMap; use client_containers::{ctf::CtfContainer, skins::SkinContainer}; use client_render_base::render::tee::RenderTee; -use client_ui::hud::{ - page::HudUi, - user_data::{RenderDateTime, UserData}, -}; use egui::Color32; use game_interface::types::{ game::{GameTickType, NonZeroGameTickType}, @@ -20,6 +16,10 @@ use graphics::{ stream::stream::GraphicsStreamHandle, texture::texture::GraphicsTextureHandle, }, }; +use ingame_ui::hud::{ + page::HudUi, + user_data::{RenderDateTime, UserData}, +}; use ui_base::{ types::UiRenderPipe, ui::{UiContainer, UiCreator}, diff --git a/game/client-render/src/motd/page.rs b/game/client-render/src/motd/page.rs index 277a0021..97d04b3e 100644 --- a/game/client-render/src/motd/page.rs +++ b/game/client-render/src/motd/page.rs @@ -1,6 +1,5 @@ use std::time::Duration; -use client_ui::motd::{page::MotdUi, user_data::UserData}; use egui::Color32; use graphics::{ graphics::graphics::Graphics, @@ -9,6 +8,7 @@ use graphics::{ stream::stream::GraphicsStreamHandle, texture::texture::GraphicsTextureHandle, }, }; +use ingame_ui::motd::{page::MotdUi, user_data::UserData}; use ui_base::{ types::UiRenderPipe, ui::{UiContainer, UiCreator}, diff --git a/game/client-render/src/scoreboard/render.rs b/game/client-render/src/scoreboard/render.rs index 92f4308d..409acfba 100644 --- a/game/client-render/src/scoreboard/render.rs +++ b/game/client-render/src/scoreboard/render.rs @@ -3,7 +3,6 @@ use std::time::Duration; use base::linked_hash_map_view::FxLinkedHashMap; use client_containers::{flags::FlagsContainer, skins::SkinContainer}; use client_render_base::render::tee::RenderTee; -use client_ui::scoreboard::{page::ScoreboardUi, user_data::UserData}; use egui::Color32; use graphics::{ graphics::graphics::Graphics, @@ -12,6 +11,7 @@ use graphics::{ stream::stream::GraphicsStreamHandle, texture::texture::GraphicsTextureHandle, }, }; +use ingame_ui::scoreboard::{page::ScoreboardUi, user_data::UserData}; use game_interface::types::{ id_types::CharacterId, diff --git a/game/client-render/src/spectator_selection/page.rs b/game/client-render/src/spectator_selection/page.rs index 7d0eb0ed..9def63db 100644 --- a/game/client-render/src/spectator_selection/page.rs +++ b/game/client-render/src/spectator_selection/page.rs @@ -3,10 +3,6 @@ use std::{collections::VecDeque, time::Duration}; use base::linked_hash_map_view::FxLinkedHashMap; use client_containers::skins::SkinContainer; use client_render_base::render::tee::RenderTee; -use client_ui::spectator_selection::{ - page::SpectatorSelectionUi, - user_data::{SpectatorSelectionEvent, UserData}, -}; use egui::Color32; use game_interface::types::{id_types::CharacterId, render::character::CharacterInfo}; use graphics::{ @@ -16,6 +12,10 @@ use graphics::{ stream::stream::GraphicsStreamHandle, texture::texture::GraphicsTextureHandle, }, }; +use ingame_ui::spectator_selection::{ + page::SpectatorSelectionUi, + user_data::{SpectatorSelectionEvent, UserData}, +}; use ui_base::{ types::UiRenderPipe, ui::{UiContainer, UiCreator}, diff --git a/game/client-render/src/vote/render.rs b/game/client-render/src/vote/render.rs index a193eefa..b4665e8b 100644 --- a/game/client-render/src/vote/render.rs +++ b/game/client-render/src/vote/render.rs @@ -2,13 +2,7 @@ use std::time::Duration; use client_containers::skins::SkinContainer; use client_render_base::render::tee::RenderTee; -use client_ui::{ - thumbnail_container::ThumbnailContainer, - vote::{ - page::VoteUi, - user_data::{UserData, VoteRenderData}, - }, -}; +use client_ui_utils::thumbnail_container::ThumbnailContainer; use egui::{Color32, Rect}; use graphics::{ graphics::graphics::Graphics, @@ -17,6 +11,10 @@ use graphics::{ stream::stream::GraphicsStreamHandle, texture::texture::GraphicsTextureHandle, }, }; +use ingame_ui::vote::{ + page::VoteUi, + user_data::{UserData, VoteRenderData}, +}; use ui_base::{ types::UiRenderPipe, diff --git a/game/client-replay/Cargo.toml b/game/client-replay/Cargo.toml index 597fe627..3685b02a 100644 --- a/game/client-replay/Cargo.toml +++ b/game/client-replay/Cargo.toml @@ -10,6 +10,6 @@ client-demo = { path = "../client-demo", default-features = false } demo = { path = "../demo", features = ["recorder"] } game-interface = { path = "../game-interface" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -rayon = "1.11.0" +anyhow = { version = "1", features = ["backtrace"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } +rayon = "1" diff --git a/game/client-types/Cargo.toml b/game/client-types/Cargo.toml index 17c9e072..7cae8ff9 100644 --- a/game/client-types/Cargo.toml +++ b/game/client-types/Cargo.toml @@ -13,5 +13,5 @@ game-base = { path = "../game-base" } game-config = { path = "../game-config" } game-interface = { path = "../game-interface" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -serde = { version = "1.0.228", features = ["derive"] } +anyhow = { version = "1", features = ["backtrace"] } +serde = { version = "1", features = ["derive"] } diff --git a/game/client-ui-utils/Cargo.toml b/game/client-ui-utils/Cargo.toml new file mode 100644 index 00000000..c2e766b7 --- /dev/null +++ b/game/client-ui-utils/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "client-ui-utils" +version = "0.1.0" +edition = "2024" + +[dependencies] +client-containers = { path = "../client-containers" } +client-render-base = { path = "../client-render-base" } +game-interface = { path = "../game-interface" } + +base-io = { path = "../../lib/base-io" } +graphics = { path = "../../lib/graphics" } +graphics-types = { path = "../../lib/graphics-types" } +hiarc = { path = "../../lib/hiarc", features = ["derive"] } +math = { path = "../../lib/math" } +pool = { path = "../../lib/pool" } +sound = { path = "../../lib/sound" } +ui-base = { path = "../../lib/ui-base" } + +anyhow = { version = "1", features = ["backtrace"] } +chrono = { version = "0.4", default-features = false, features = ["serde"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } +egui_extras = { version = "0.34" } +fuzzy-matcher = "0.3" +rayon = "1" +tracing = { version = "0.1", default-features = false, features = [ + "attributes", +] } +url = { version = "2", features = ["serde"] } diff --git a/game/client-ui/src/main_menu/settings/list/entry.rs b/game/client-ui-utils/src/assets_list/entry.rs similarity index 95% rename from game/client-ui/src/main_menu/settings/list/entry.rs rename to game/client-ui-utils/src/assets_list/entry.rs index f3007489..8b8838fd 100644 --- a/game/client-ui/src/main_menu/settings/list/entry.rs +++ b/game/client-ui-utils/src/assets_list/entry.rs @@ -22,10 +22,7 @@ pub fn render( ui.scope_builder(UiBuilder::new().max_rect(rect), |ui| { ui.with_layout( - Layout::top_down(egui::Align::Center) - .with_main_justify(true) - .with_cross_justify(true) - .with_main_wrap(true), + Layout::top_down(egui::Align::Center).with_cross_justify(true), |ui| { let mut clicked = sense.clicked(); Frame::default() diff --git a/game/client-ui/src/main_menu/settings/list/list.rs b/game/client-ui-utils/src/assets_list/mod.rs similarity index 98% rename from game/client-ui/src/main_menu/settings/list/list.rs rename to game/client-ui-utils/src/assets_list/mod.rs index ac1b8789..04e43418 100644 --- a/game/client-ui/src/main_menu/settings/list/list.rs +++ b/game/client-ui-utils/src/assets_list/mod.rs @@ -12,6 +12,7 @@ use ui_base::{ }; #[instrument(level = "trace", skip_all)] +#[allow(clippy::too_many_arguments)] pub fn render<'a>( ui: &mut egui::Ui, entries: impl Iterator, @@ -60,7 +61,7 @@ pub fn render<'a>( matcher.fuzzy_match(name, &search_str).is_some() }) { - super::entry::render( + entry::render( ui, entry_index, entry_name, @@ -120,3 +121,5 @@ pub fn render<'a>( }) }); } + +pub mod entry; diff --git a/game/client-ui/src/utils.rs b/game/client-ui-utils/src/lib.rs similarity index 99% rename from game/client-ui/src/utils.rs rename to game/client-ui-utils/src/lib.rs index 8eb45399..6c56b8fc 100644 --- a/game/client-ui/src/utils.rs +++ b/game/client-ui-utils/src/lib.rs @@ -1,3 +1,5 @@ +#![allow(clippy::too_many_arguments)] + use std::{rc::Rc, time::Duration}; use client_containers::{ @@ -41,6 +43,10 @@ use pool::mt_datatypes::PoolVec; use tracing::instrument; use ui_base::{custom_callback::CustomCallbackTrait, types::UiState}; +pub mod assets_list; +pub mod thumbnail_container; +pub mod time_display; + /// TODO: this function exists in the editor already. graphics also have a similar one. pub fn rotate(center: &vec2, rotation: f32, points: &mut [vec2]) { let c = rotation.cos(); diff --git a/game/client-ui/src/thumbnail_container.rs b/game/client-ui-utils/src/thumbnail_container.rs similarity index 99% rename from game/client-ui/src/thumbnail_container.rs rename to game/client-ui-utils/src/thumbnail_container.rs index 8430a9bc..22b025bd 100644 --- a/game/client-ui/src/thumbnail_container.rs +++ b/game/client-ui-utils/src/thumbnail_container.rs @@ -152,7 +152,7 @@ pub fn load_thumbnail_container( &scene, path.as_ref(), ContainerLoadOptions { - assume_unused: true, + assume_unused: false, ..Default::default() }, ) diff --git a/game/client-ui/src/time_display.rs b/game/client-ui-utils/src/time_display.rs similarity index 100% rename from game/client-ui/src/time_display.rs rename to game/client-ui-utils/src/time_display.rs diff --git a/game/client-ui/Cargo.toml b/game/client-ui/Cargo.toml index 3cace403..92358f59 100644 --- a/game/client-ui/Cargo.toml +++ b/game/client-ui/Cargo.toml @@ -10,12 +10,12 @@ binds = ["dep:binds"] client-containers = { path = "../client-containers" } client-render-base = { path = "../client-render-base" } client-types = { path = "../client-types" } +client-ui-utils = { path = "../client-ui-utils" } demo = { path = "../demo" } game-base = { path = "../game-base" } game-config = { path = "../game-config" } game-interface = { path = "../game-interface" } master-server-types = { path = "../master-server-types" } -vanilla = { path = "../vanilla" } binds = { path = "../binds", optional = true } @@ -28,44 +28,38 @@ graphics = { path = "../../lib/graphics" } graphics-types = { path = "../../lib/graphics-types" } hiarc = { path = "../../lib/hiarc", features = ["derive"] } math = { path = "../../lib/math" } -pool = { path = "../../lib/pool" } sound = { path = "../../lib/sound" } ui-base = { path = "../../lib/ui-base" } ui-generic = { path = "../../lib/ui-generic" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -egui_commonmark = "0.22.0" -egui_extras = { version = "0.33.0" } -email_address = { version = "0.2.9", features = ["serde"] } -fuzzy-matcher = "0.3.7" -gcd = "2.3.0" -geo = "0.31.0" -hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ - "serde", - "serde_impl", -] } -log = "0.4.28" -num-rational = "0.4.2" -num-traits = "0.2.19" -rayon = "1.11.0" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -serde_with = "3.15.1" -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +egui = { version = "0.34", default-features = false, features = ["serde"] } +egui_commonmark = "0.23" +egui_extras = { version = "0.34" } +email_address = { version = "0.2", features = ["serde"] } +fuzzy-matcher = "0.3" +gcd = "2" +log = "0.4" +num-rational = "0.4" +num-traits = "0.2" +rayon = "1" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +serde_with = "3" +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -url = { version = "2.5.7", features = ["serde"] } +url = { version = "2", features = ["serde"] } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -chrono = { version = "0.4.42", default-features = false, features = [ +chrono = { version = "0.4", default-features = false, features = [ "serde", "clock", ] } [target.'cfg(target_arch = "wasm32")'.dependencies] -chrono = { version = "0.4.42", default-features = false, features = [ +chrono = { version = "0.4", default-features = false, features = [ "serde", "alloc", ] } diff --git a/game/client-ui/src/console/console_list.rs b/game/client-ui/src/console/console_list.rs index 1c41f58f..56d71893 100644 --- a/game/client-ui/src/console/console_list.rs +++ b/game/client-ui/src/console/console_list.rs @@ -1,4 +1,4 @@ -use egui::Layout; +use egui::{Frame, Layout}; use tracing::instrument; use ui_base::types::UiRenderPipe; @@ -19,7 +19,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, has_text_sel let mut text_as_str = pipe.user_data.msgs.as_str(); let text = egui::TextEdit::multiline(&mut text_as_str) .id_source("console-text-output") - .frame(false) + .frame(Frame::NONE) .show(ui); *has_text_selection = text.cursor_range.is_some_and(|range| !range.is_empty()); }, diff --git a/game/client-ui/src/console/input.rs b/game/client-ui/src/console/input.rs index de8b2dea..9fe23268 100644 --- a/game/client-ui/src/console/input.rs +++ b/game/client-ui/src/console/input.rs @@ -5,7 +5,7 @@ use client_types::console::{ }; use command_parser::parser::{Command, CommandParseResult, CommandType, CommandsTyped, Syn, parse}; use egui::{ - Color32, FontId, Id, Layout, RichText, TextBuffer, TextFormat, + Color32, FontId, Frame, Id, Layout, RichText, TextBuffer, TextFormat, text::{CCursor, LayoutJob}, text_selection::CCursorRange, }; @@ -235,7 +235,7 @@ pub fn render( .font(FontId::monospace(12.0)) .id(inp_id) .layouter(&mut layouter) - .frame(false) + .frame(Frame::NONE) .show(ui); *pipe.user_data.cursor = label .state diff --git a/game/client-ui/src/demo_player/main_frame.rs b/game/client-ui/src/demo_player/main_frame.rs index 2f4713d2..9e8f84f8 100644 --- a/game/client-ui/src/demo_player/main_frame.rs +++ b/game/client-ui/src/demo_player/main_frame.rs @@ -2,8 +2,8 @@ use std::time::Duration; use base::duration_ext::DurationToRaceStr; use egui::{ - Align2, Button, Color32, CornerRadius, FontId, Frame, Grid, Layout, Rect, Shadow, Stroke, - TopBottomPanel, Vec2, Window, + Align2, Button, Color32, CornerRadius, FontId, Frame, Grid, Layout, Panel, Rect, Shadow, + Stroke, Vec2, Window, }; use tracing::instrument; @@ -19,8 +19,8 @@ use super::user_data::UserData; /// not required #[instrument(level = "trace", skip_all)] pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &mut UiState) { - let res = TopBottomPanel::bottom("demo-main") - .exact_height(40.0) + let res = Panel::bottom("demo-main") + .exact_size(40.0) .frame( Frame::NONE .shadow(Shadow::NONE) @@ -29,7 +29,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m ) .show_separator_line(false) .resizable(false) - .show(ui.ctx(), |ui| { + .show_inside(ui, |ui| { ui.set_clip_rect(ui.ctx().content_rect()); ui.style_mut().spacing.item_spacing.y = 0.0; let mut rect = ui.available_rect_before_wrap(); diff --git a/game/client-ui/src/ingame_menu/call_vote/map.rs b/game/client-ui/src/ingame_menu/call_vote/map.rs index 1855cd91..c5c025de 100644 --- a/game/client-ui/src/ingame_menu/call_vote/map.rs +++ b/game/client-ui/src/ingame_menu/call_vote/map.rs @@ -21,10 +21,9 @@ use ui_base::{ utils::{add_margins, get_margin}, }; -use crate::{ - events::UiEvent, ingame_menu::user_data::UserData, sort::sortable_header, - time_display::TimeDisplay, utils::render_texture_for_ui, -}; +use client_ui_utils::{render_texture_for_ui, time_display::TimeDisplay}; + +use crate::{events::UiEvent, ingame_menu::user_data::UserData, sort::sortable_header}; #[derive(Debug, Default, Clone, Copy, Serialize, Deserialize)] enum ListView { @@ -438,8 +437,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m match list_view { ListView::Images => { // show as list - use super::super::super::main_menu::settings::list; - list::list::render( + client_ui_utils::assets_list::render( ui, map_infos.iter().map(|(key, _)| { (key.name.as_str(), ContainerItemIndexType::Disk) diff --git a/game/client-ui/src/ingame_menu/page.rs b/game/client-ui/src/ingame_menu/page.rs index 673627c5..4e95d9e8 100644 --- a/game/client-ui/src/ingame_menu/page.rs +++ b/game/client-ui/src/ingame_menu/page.rs @@ -11,6 +11,10 @@ use sound::sound::SoundManager; use ui_base::types::{UiRenderPipe, UiState}; use ui_generic::traits::UiPageInterface; +use client_ui_utils::thumbnail_container::{ + DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer, load_thumbnail_container, +}; + use crate::{ events::UiEvents, main_menu::{ @@ -18,9 +22,6 @@ use crate::{ page::MainMenuUi, player_settings_ntfy::PlayerSettingsSync, profiles_interface::ProfilesInterface, spatial_chat::SpatialChat, }, - thumbnail_container::{ - DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer, load_thumbnail_container, - }, }; use super::{ diff --git a/game/client-ui/src/ingame_menu/server_players/main_frame.rs b/game/client-ui/src/ingame_menu/server_players/main_frame.rs index 03cde759..8765c3e5 100644 --- a/game/client-ui/src/ingame_menu/server_players/main_frame.rs +++ b/game/client-ui/src/ingame_menu/server_players/main_frame.rs @@ -9,7 +9,7 @@ use ui_base::{ }; use crate::ingame_menu::user_data::UserData; -use crate::utils::render_flag_for_ui; +use client_ui_utils::render_flag_for_ui; #[instrument(level = "trace", skip_all)] pub fn render(ui: &mut egui::Ui, ui_state: &mut UiState, pipe: &mut UiRenderPipe) { diff --git a/game/client-ui/src/ingame_menu/user_data.rs b/game/client-ui/src/ingame_menu/user_data.rs index e314bf7a..f633cf59 100644 --- a/game/client-ui/src/ingame_menu/user_data.rs +++ b/game/client-ui/src/ingame_menu/user_data.rs @@ -1,6 +1,8 @@ use math::math::Rng; -use crate::{main_menu, thumbnail_container::ThumbnailContainer}; +use client_ui_utils::thumbnail_container::ThumbnailContainer; + +use crate::main_menu; use super::{ account_info::AccountInfo, server_info::GameServerInfo, server_players::ServerPlayers, diff --git a/game/client-ui/src/lib.rs b/game/client-ui/src/lib.rs index d29f8827..9a28f5b4 100644 --- a/game/client-ui/src/lib.rs +++ b/game/client-ui/src/lib.rs @@ -1,21 +1,10 @@ #![allow(clippy::too_many_arguments)] #![allow(clippy::module_inception)] -pub mod actionfeed; -pub mod chat; pub mod connect; pub mod console; pub mod demo_player; -pub mod emote_wheel; pub mod events; -pub mod hud; pub mod ingame_menu; pub mod main_menu; -pub mod motd; -pub mod scoreboard; pub mod sort; -pub mod spectator_selection; -pub mod thumbnail_container; -pub mod time_display; -pub mod utils; -pub mod vote; diff --git a/game/client-ui/src/main_menu/communities/list.rs b/game/client-ui/src/main_menu/communities/list.rs index 758c39dd..9b1888e1 100644 --- a/game/client-ui/src/main_menu/communities/list.rs +++ b/game/client-ui/src/main_menu/communities/list.rs @@ -6,11 +6,9 @@ use game_interface::types::resource_key::ResourceKey; use math::math::vector::vec2; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{ - main_menu::{communities::IconUrlHash, user_data::UserData}, - thumbnail_container::Thumbnail, - utils::render_texture_for_ui, -}; +use client_ui_utils::{render_texture_for_ui, thumbnail_container::Thumbnail}; + +use crate::main_menu::{communities::IconUrlHash, user_data::UserData}; pub fn community_list( ui: &mut egui::Ui, @@ -30,7 +28,7 @@ pub fn community_list( .entry("community-explore-search".to_string()) .or_default(); let mut next_name = None; - super::super::settings::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted .keys() diff --git a/game/client-ui/src/main_menu/content/browser/filter.rs b/game/client-ui/src/main_menu/content/browser/filter.rs index 004bc662..c49dbc85 100644 --- a/game/client-ui/src/main_menu/content/browser/filter.rs +++ b/game/client-ui/src/main_menu/content/browser/filter.rs @@ -5,7 +5,9 @@ use egui_extras::{Size, StripBuilder}; use game_base::server_browser::ServerFilter; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_flag_for_ui}; +use client_ui_utils::render_flag_for_ui; + +use crate::main_menu::user_data::UserData; /// button & popover pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &mut UiState) { @@ -82,7 +84,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m |ui| { let servers = &pipe.user_data.browser_data; let server_locations = servers.locations(); - super::super::super::settings::list::list::render( + client_ui_utils::assets_list::render( ui, server_locations .iter() diff --git a/game/client-ui/src/main_menu/content/browser/friend_list/list/entry.rs b/game/client-ui/src/main_menu/content/browser/friend_list/list/entry.rs index f7b9ff9a..d9bd9359 100644 --- a/game/client-ui/src/main_menu/content/browser/friend_list/list/entry.rs +++ b/game/client-ui/src/main_menu/content/browser/friend_list/list/entry.rs @@ -6,10 +6,9 @@ use game_interface::types::render::character::TeeEye; use math::math::vector::vec2; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{ - main_menu::user_data::UserData, - utils::{render_flag_for_ui, render_tee_for_ui}, -}; +use client_ui_utils::{render_flag_for_ui, render_tee_for_ui}; + +use crate::main_menu::user_data::UserData; /// single server list entry pub fn render( diff --git a/game/client-ui/src/main_menu/content/browser/info_panel/player_list/list/entry.rs b/game/client-ui/src/main_menu/content/browser/info_panel/player_list/list/entry.rs index c3c387b9..5d371ae2 100644 --- a/game/client-ui/src/main_menu/content/browser/info_panel/player_list/list/entry.rs +++ b/game/client-ui/src/main_menu/content/browser/info_panel/player_list/list/entry.rs @@ -13,7 +13,7 @@ use graphics::handles::{ use math::math::vector::vec2; use ui_base::types::{UiRenderPipe, UiState}; -use crate::utils::{render_flag_for_ui, render_tee_for_ui}; +use client_ui_utils::{render_flag_for_ui, render_tee_for_ui}; pub struct EntryData<'a> { pub stream_handle: &'a GraphicsStreamHandle, diff --git a/game/client-ui/src/main_menu/leftbar/main_frame.rs b/game/client-ui/src/main_menu/leftbar/main_frame.rs index e8fdba0b..2ed25feb 100644 --- a/game/client-ui/src/main_menu/leftbar/main_frame.rs +++ b/game/client-ui/src/main_menu/leftbar/main_frame.rs @@ -15,17 +15,15 @@ use math::math::vector::vec2; use tracing::instrument; use ui_base::{style::bg_frame_color, types::UiState}; -use crate::{ - main_menu::{ - communities::IconUrlHash, - constants::{ - MENU_COMMUNITY_PREFIX, MENU_EXPLORE_COMMUNITIES_NAME, MENU_FAVORITES_NAME, - MENU_INTERNET_NAME, MENU_LAN_NAME, MENU_PROFILE_NAME, MENU_SETTINGS_NAME, - }, - user_data::{PROFILE_SKIN_PREVIEW, ProfileSkin, UserData}, +use client_ui_utils::{render_tee_for_ui, render_texture_for_ui, thumbnail_container::Thumbnail}; + +use crate::main_menu::{ + communities::IconUrlHash, + constants::{ + MENU_COMMUNITY_PREFIX, MENU_EXPLORE_COMMUNITIES_NAME, MENU_FAVORITES_NAME, + MENU_INTERNET_NAME, MENU_LAN_NAME, MENU_PROFILE_NAME, MENU_SETTINGS_NAME, }, - thumbnail_container::Thumbnail, - utils::{render_tee_for_ui, render_texture_for_ui}, + user_data::{PROFILE_SKIN_PREVIEW, ProfileSkin, UserData}, }; enum CustomRender<'a> { diff --git a/game/client-ui/src/main_menu/page.rs b/game/client-ui/src/main_menu/page.rs index a616006c..3ebad082 100644 --- a/game/client-ui/src/main_menu/page.rs +++ b/game/client-ui/src/main_menu/page.rs @@ -49,13 +49,14 @@ use ui_base::types::{UiRenderPipe, UiState}; use ui_generic::traits::UiPageInterface; use url::Url; +use client_ui_utils::thumbnail_container::{ + DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer, load_thumbnail_container, +}; + use crate::{ events::UiEvents, ingame_menu::{client_info::ClientInfo, raw_input_info::RawInputInfo}, main_menu::{ddnet_info::DdnetInfoRequest, user_data::MainMenuInterface}, - thumbnail_container::{ - DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer, load_thumbnail_container, - }, }; use super::{ diff --git a/game/client-ui/src/main_menu/profile/account_info.rs b/game/client-ui/src/main_menu/profile/account_info.rs index 70362eda..8fc1ab7c 100644 --- a/game/client-ui/src/main_menu/profile/account_info.rs +++ b/game/client-ui/src/main_menu/profile/account_info.rs @@ -11,13 +11,12 @@ use game_interface::types::{ use math::math::vector::{ubvec4, vec2}; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{ - main_menu::{ - profiles_interface::{LinkedCredential, ProfilesInterface}, - settings::player::tee::main_frame::{eye_to_render_eye, render_skin}, - user_data::{PROFILE_SKIN_PREVIEW, ProfileSkin, ProfileState, UserData}, - }, - utils::render_tee_for_ui, +use client_ui_utils::render_tee_for_ui; + +use crate::main_menu::{ + profiles_interface::{LinkedCredential, ProfilesInterface}, + settings::player::tee::main_frame::{eye_to_render_eye, render_skin}, + user_data::{PROFILE_SKIN_PREVIEW, ProfileSkin, ProfileState, UserData}, }; use super::back_bar::back_bar; diff --git a/game/client-ui/src/main_menu/settings/general/themes.rs b/game/client-ui/src/main_menu/settings/general/themes.rs index 5c5a4083..66d81794 100644 --- a/game/client-ui/src/main_menu/settings/general/themes.rs +++ b/game/client-ui/src/main_menu/settings/general/themes.rs @@ -4,7 +4,9 @@ use game_interface::types::resource_key::{NetworkResourceKey, ResourceKey}; use math::math::vector::vec2; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_texture_for_ui}; +use client_ui_utils::render_texture_for_ui; + +use crate::main_menu::user_data::UserData; pub fn theme_list(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &mut UiState) { let entries = pipe.user_data.theme_container.entries_index(); @@ -20,7 +22,7 @@ pub fn theme_list(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state .entry("theme-search".to_string()) .or_default(); let mut next_name = None; - super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 50.0, diff --git a/game/client-ui/src/main_menu/settings/graphics/main_frame.rs b/game/client-ui/src/main_menu/settings/graphics/main_frame.rs index 4129a08a..a9188abd 100644 --- a/game/client-ui/src/main_menu/settings/graphics/main_frame.rs +++ b/game/client-ui/src/main_menu/settings/graphics/main_frame.rs @@ -1,4 +1,4 @@ -use config::traits::ConfigValue; +use config::{config::ConfigWindow, traits::ConfigValue}; use egui::{Button, Color32, DragValue, Grid, Id, Layout, Modal, ScrollArea, Stroke, TextEdit}; use egui_extras::{Size, StripBuilder}; use game_config::config::ConfigRender; @@ -9,6 +9,10 @@ use ui_base::types::UiRenderPipe; use crate::{events::UiEvent, main_menu::user_data::UserData}; +fn is_borderless_fullscreen(wnd: &ConfigWindow) -> bool { + !wnd.fullscreen && wnd.maximized && !wnd.decorated +} + fn render_settings(ui: &mut egui::Ui, pipe: &mut UiRenderPipe) { let config = &mut pipe.user_data.config.engine; let config_game = &mut pipe.user_data.config.game; @@ -19,7 +23,7 @@ fn render_settings(ui: &mut egui::Ui, pipe: &mut UiRenderPipe) { egui::ComboBox::new("fullscreen_mode", "") .selected_text(if wnd.fullscreen { "fullscreen" - } else if !wnd.fullscreen && wnd.maximized && !wnd.decorated { + } else if is_borderless_fullscreen(wnd) { "borderless-fullscreen" } else { "windowed" @@ -272,52 +276,58 @@ fn render_monitors(ui: &mut egui::Ui, pipe: &mut UiRenderPipe) { ) } )); - ui.style_mut().spacing.scroll.floating = false; - ScrollArea::vertical().show(ui, |ui| { - ui.set_width(ui.available_width()); - let style = ui.style_mut(); - style.visuals.widgets.inactive.weak_bg_fill = Color32::from_black_alpha(50); - style.visuals.widgets.active.weak_bg_fill = Color32::from_black_alpha(50); - style.visuals.widgets.hovered.weak_bg_fill = Color32::from_black_alpha(50); - for mode in &monitors.video_modes { - let wnd = &mut config.engine.wnd; - if ui - .add( - Button::new(fmt_res( - mode.width, - mode.height, - mode.refresh_rate_mhz, - )) - .selected( - wnd.fullscreen_width == mode.width - && wnd.fullscreen_height == mode.height - && wnd.refresh_rate_mhz == mode.refresh_rate_mhz, - ), - ) - .clicked() - { - const INFO_NAME: &str = "info-ingame-aspect"; - let mut ingame_aspect_info: bool = config.storage(INFO_NAME); + let is_borderless_fullscreen = is_borderless_fullscreen(wnd); + if is_borderless_fullscreen { + ui.add_space(10.0); + ui.label("Borderless fullscreen uses your desktop's resolution."); + } else { + ui.style_mut().spacing.scroll.floating = false; + ScrollArea::vertical().show(ui, |ui| { + ui.set_width(ui.available_width()); + let style = ui.style_mut(); + style.visuals.widgets.inactive.weak_bg_fill = Color32::from_black_alpha(50); + style.visuals.widgets.active.weak_bg_fill = Color32::from_black_alpha(50); + style.visuals.widgets.hovered.weak_bg_fill = Color32::from_black_alpha(50); + for mode in &monitors.video_modes { let wnd = &mut config.engine.wnd; - if ingame_aspect_info || !wnd.fullscreen { - if wnd.fullscreen { - wnd.fullscreen_width = mode.width; - wnd.fullscreen_height = mode.height; + if ui + .add( + Button::new(fmt_res( + mode.width, + mode.height, + mode.refresh_rate_mhz, + )) + .selected( + wnd.fullscreen_width == mode.width + && wnd.fullscreen_height == mode.height + && wnd.refresh_rate_mhz == mode.refresh_rate_mhz, + ), + ) + .clicked() + { + const INFO_NAME: &str = "info-ingame-aspect"; + let mut ingame_aspect_info: bool = config.storage(INFO_NAME); + let wnd = &mut config.engine.wnd; + if ingame_aspect_info || !wnd.fullscreen { + if wnd.fullscreen { + wnd.fullscreen_width = mode.width; + wnd.fullscreen_height = mode.height; + } else { + wnd.window_width = mode.width as f64; + wnd.window_height = mode.height as f64; + } + wnd.refresh_rate_mhz = mode.refresh_rate_mhz; } else { - wnd.window_width = mode.width as f64; - wnd.window_height = mode.height as f64; + config + .path() + .add_query((SHOW_INFO_ASPECT.into(), "1".into())); + ingame_aspect_info = true; } - wnd.refresh_rate_mhz = mode.refresh_rate_mhz; - } else { - config - .path() - .add_query((SHOW_INFO_ASPECT.into(), "1".into())); - ingame_aspect_info = true; + config.set_storage(INFO_NAME, &ingame_aspect_info); } - config.set_storage(INFO_NAME, &ingame_aspect_info); } - } - }); + }); + } }, ); } diff --git a/game/client-ui/src/main_menu/settings/language/list.rs b/game/client-ui/src/main_menu/settings/language/list.rs index c3dea1cc..e7988099 100644 --- a/game/client-ui/src/main_menu/settings/language/list.rs +++ b/game/client-ui/src/main_menu/settings/language/list.rs @@ -4,7 +4,9 @@ use client_containers::container::ContainerItemIndexType; use game_interface::types::resource_key::NetworkResourceKey; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_flag_for_ui}; +use client_ui_utils::render_flag_for_ui; + +use crate::main_menu::user_data::UserData; struct Language { flag: String, @@ -36,7 +38,7 @@ pub fn lang_list(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: .entry("lang-search".to_string()) .or_default(); let mut next_name = None; - super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 50.0, diff --git a/game/client-ui/src/main_menu/settings/list/mod.rs b/game/client-ui/src/main_menu/settings/list/mod.rs deleted file mode 100644 index ca0264fb..00000000 --- a/game/client-ui/src/main_menu/settings/list/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod entry; -pub mod list; diff --git a/game/client-ui/src/main_menu/settings/mod.rs b/game/client-ui/src/main_menu/settings/mod.rs index 45428f54..834d6c98 100644 --- a/game/client-ui/src/main_menu/settings/mod.rs +++ b/game/client-ui/src/main_menu/settings/mod.rs @@ -2,7 +2,6 @@ pub mod constants; pub mod general; pub mod graphics; pub mod language; -pub mod list; pub mod main_frame; pub mod player; pub mod search_settings; diff --git a/game/client-ui/src/main_menu/settings/player/assets/ctf.rs b/game/client-ui/src/main_menu/settings/player/assets/ctf.rs index 0c5ecb47..cf41d2be 100644 --- a/game/client-ui/src/main_menu/settings/player/assets/ctf.rs +++ b/game/client-ui/src/main_menu/settings/player/assets/ctf.rs @@ -8,7 +8,9 @@ use graphics::handles::texture::texture::TextureContainer; use math::math::vector::vec2; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_texture_for_ui}; +use client_ui_utils::render_texture_for_ui; + +use crate::main_menu::user_data::UserData; pub fn ctf_list( ui: &mut egui::Ui, @@ -29,7 +31,7 @@ pub fn ctf_list( .entry("ctf-search".to_string()) .or_default(); let mut next_name = None; - super::super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 150.0, diff --git a/game/client-ui/src/main_menu/settings/player/assets/emoticons.rs b/game/client-ui/src/main_menu/settings/player/assets/emoticons.rs index 2a43dcd2..6d0476ba 100644 --- a/game/client-ui/src/main_menu/settings/player/assets/emoticons.rs +++ b/game/client-ui/src/main_menu/settings/player/assets/emoticons.rs @@ -8,7 +8,9 @@ use game_interface::types::{ use math::math::vector::vec2; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_emoticon_for_ui}; +use client_ui_utils::render_emoticon_for_ui; + +use crate::main_menu::user_data::UserData; pub fn emoticons_list( ui: &mut egui::Ui, @@ -29,7 +31,7 @@ pub fn emoticons_list( .entry("emoticons-search".to_string()) .or_default(); let mut next_name = None; - super::super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 150.0, diff --git a/game/client-ui/src/main_menu/settings/player/assets/entities.rs b/game/client-ui/src/main_menu/settings/player/assets/entities.rs index 75fce93c..5e6237c0 100644 --- a/game/client-ui/src/main_menu/settings/player/assets/entities.rs +++ b/game/client-ui/src/main_menu/settings/player/assets/entities.rs @@ -4,7 +4,9 @@ use client_render_base::map::map_buffered::ClientMapBuffered; use game_interface::types::{character_info::MAX_ASSET_NAME_LEN, resource_key::NetworkResourceKey}; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_entities_for_ui}; +use client_ui_utils::render_entities_for_ui; + +use crate::main_menu::user_data::UserData; pub fn entities_list( ui: &mut egui::Ui, @@ -25,7 +27,7 @@ pub fn entities_list( .entry("entites-search".to_string()) .or_default(); let mut next_name = None; - super::super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 200.0, diff --git a/game/client-ui/src/main_menu/settings/player/assets/freeze.rs b/game/client-ui/src/main_menu/settings/player/assets/freeze.rs index 564182e0..b8786bea 100644 --- a/game/client-ui/src/main_menu/settings/player/assets/freeze.rs +++ b/game/client-ui/src/main_menu/settings/player/assets/freeze.rs @@ -7,7 +7,9 @@ use game_interface::types::{ use math::math::vector::vec2; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_texture_for_ui}; +use client_ui_utils::render_texture_for_ui; + +use crate::main_menu::user_data::UserData; pub fn freeze_list( ui: &mut egui::Ui, @@ -28,7 +30,7 @@ pub fn freeze_list( .entry("freeze-search".to_string()) .or_default(); let mut next_name = None; - super::super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 100.0, diff --git a/game/client-ui/src/main_menu/settings/player/assets/game.rs b/game/client-ui/src/main_menu/settings/player/assets/game.rs index c6e30431..86eaa9a4 100644 --- a/game/client-ui/src/main_menu/settings/player/assets/game.rs +++ b/game/client-ui/src/main_menu/settings/player/assets/game.rs @@ -8,7 +8,9 @@ use graphics::handles::texture::texture::TextureContainer; use math::math::vector::vec2; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_texture_for_ui}; +use client_ui_utils::render_texture_for_ui; + +use crate::main_menu::user_data::UserData; pub fn game_list( ui: &mut egui::Ui, @@ -29,7 +31,7 @@ pub fn game_list( .entry("game-search".to_string()) .or_default(); let mut next_name = None; - super::super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 150.0, diff --git a/game/client-ui/src/main_menu/settings/player/assets/hook.rs b/game/client-ui/src/main_menu/settings/player/assets/hook.rs index fb0b5783..e3bc306c 100644 --- a/game/client-ui/src/main_menu/settings/player/assets/hook.rs +++ b/game/client-ui/src/main_menu/settings/player/assets/hook.rs @@ -4,7 +4,9 @@ use game_interface::types::{character_info::MAX_ASSET_NAME_LEN, resource_key::Ne use math::math::vector::vec2; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_hook_for_ui}; +use client_ui_utils::render_hook_for_ui; + +use crate::main_menu::user_data::UserData; pub fn hook_list( ui: &mut egui::Ui, @@ -25,7 +27,7 @@ pub fn hook_list( .entry("hooks-search".to_string()) .or_default(); let mut next_name = None; - super::super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 100.0, diff --git a/game/client-ui/src/main_menu/settings/player/assets/hud.rs b/game/client-ui/src/main_menu/settings/player/assets/hud.rs index 3504fde0..d090266b 100644 --- a/game/client-ui/src/main_menu/settings/player/assets/hud.rs +++ b/game/client-ui/src/main_menu/settings/player/assets/hud.rs @@ -10,7 +10,9 @@ use graphics::handles::texture::texture::TextureContainer; use math::math::vector::vec2; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_texture_for_ui}; +use client_ui_utils::render_texture_for_ui; + +use crate::main_menu::user_data::UserData; pub fn hud_list( ui: &mut egui::Ui, @@ -31,7 +33,7 @@ pub fn hud_list( .entry("hud-search".to_string()) .or_default(); let mut next_name = None; - super::super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 150.0, diff --git a/game/client-ui/src/main_menu/settings/player/assets/ninja.rs b/game/client-ui/src/main_menu/settings/player/assets/ninja.rs index b899d409..f634b045 100644 --- a/game/client-ui/src/main_menu/settings/player/assets/ninja.rs +++ b/game/client-ui/src/main_menu/settings/player/assets/ninja.rs @@ -7,7 +7,9 @@ use game_interface::types::{ }; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_tee_for_ui_with_skin}; +use client_ui_utils::render_tee_for_ui_with_skin; + +use crate::main_menu::user_data::UserData; pub fn ninja_list( ui: &mut egui::Ui, @@ -28,7 +30,7 @@ pub fn ninja_list( .entry("ninja-search".to_string()) .or_default(); let mut next_name = None; - super::super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 100.0, diff --git a/game/client-ui/src/main_menu/settings/player/assets/particles.rs b/game/client-ui/src/main_menu/settings/player/assets/particles.rs index 353ce2c8..dec17c7b 100644 --- a/game/client-ui/src/main_menu/settings/player/assets/particles.rs +++ b/game/client-ui/src/main_menu/settings/player/assets/particles.rs @@ -8,7 +8,9 @@ use graphics::handles::texture::texture::TextureContainer; use math::math::vector::vec2; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_texture_for_ui}; +use client_ui_utils::render_texture_for_ui; + +use crate::main_menu::user_data::UserData; pub fn particles_list( ui: &mut egui::Ui, @@ -29,7 +31,7 @@ pub fn particles_list( .entry("particles-search".to_string()) .or_default(); let mut next_name = None; - super::super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 150.0, diff --git a/game/client-ui/src/main_menu/settings/player/assets/weapons.rs b/game/client-ui/src/main_menu/settings/player/assets/weapons.rs index 1cfada11..65642fc9 100644 --- a/game/client-ui/src/main_menu/settings/player/assets/weapons.rs +++ b/game/client-ui/src/main_menu/settings/player/assets/weapons.rs @@ -7,7 +7,9 @@ use game_interface::types::{ use math::math::vector::vec2; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{main_menu::user_data::UserData, utils::render_weapon_for_ui}; +use client_ui_utils::render_weapon_for_ui; + +use crate::main_menu::user_data::UserData; pub fn weapon_list( ui: &mut egui::Ui, @@ -28,7 +30,7 @@ pub fn weapon_list( .entry("weapons-search".to_string()) .or_default(); let mut next_name = None; - super::super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 150.0, diff --git a/game/client-ui/src/main_menu/settings/player/main_frame.rs b/game/client-ui/src/main_menu/settings/player/main_frame.rs index 9a0b5497..61c9970f 100644 --- a/game/client-ui/src/main_menu/settings/player/main_frame.rs +++ b/game/client-ui/src/main_menu/settings/player/main_frame.rs @@ -5,10 +5,9 @@ use game_interface::types::render::character::TeeEye; use tracing::instrument; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{ - main_menu::{settings::constants::SETTINGS_SUB_UI_PAGE_QUERY, user_data::UserData}, - utils::render_tee_for_ui, -}; +use client_ui_utils::render_tee_for_ui; + +use crate::main_menu::{settings::constants::SETTINGS_SUB_UI_PAGE_QUERY, user_data::UserData}; #[instrument(level = "trace", skip_all)] pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &mut UiState) { @@ -69,7 +68,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m let cur_profile = path.query.get("selected-profile").cloned(); let search = path.query.entry("profile-search".to_string()).or_default(); - super::super::list::list::render( + client_ui_utils::assets_list::render( ui, config .players diff --git a/game/client-ui/src/main_menu/settings/player/misc/main_frame.rs b/game/client-ui/src/main_menu/settings/player/misc/main_frame.rs index ac901a82..085254ca 100644 --- a/game/client-ui/src/main_menu/settings/player/misc/main_frame.rs +++ b/game/client-ui/src/main_menu/settings/player/misc/main_frame.rs @@ -11,10 +11,9 @@ use ui_base::{ types::{UiRenderPipe, UiState}, }; -use crate::{ - main_menu::{settings::player::profile_selector::profile_selector, user_data::UserData}, - utils::render_flag_for_ui, -}; +use client_ui_utils::render_flag_for_ui; + +use crate::main_menu::{settings::player::profile_selector::profile_selector, user_data::UserData}; pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &mut UiState) { ui.with_layout(Layout::top_down(egui::Align::Min), |ui| { @@ -81,7 +80,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m .entry("flag-search".to_string()) .or_default(); let mut next_name = None; - super::super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 50.0, diff --git a/game/client-ui/src/main_menu/settings/player/tee/main_frame.rs b/game/client-ui/src/main_menu/settings/player/tee/main_frame.rs index 1589d941..f558faf7 100644 --- a/game/client-ui/src/main_menu/settings/player/tee/main_frame.rs +++ b/game/client-ui/src/main_menu/settings/player/tee/main_frame.rs @@ -18,10 +18,9 @@ use ui_base::{ types::{UiRenderPipe, UiState}, }; -use crate::{ - main_menu::{settings::player::profile_selector::profile_selector, user_data::UserData}, - utils::render_tee_for_ui, -}; +use client_ui_utils::render_tee_for_ui; + +use crate::main_menu::{settings::player::profile_selector::profile_selector, user_data::UserData}; pub fn eye_to_render_eye(eye: ConfigTeeEye) -> TeeEye { match eye { @@ -208,7 +207,7 @@ pub fn render_skin( .entry("skin-search".to_string()) .or_default(); let mut next_name = None; - super::super::super::list::list::render( + client_ui_utils::assets_list::render( ui, entries_sorted.iter().map(|(name, &ty)| (name.as_str(), ty)), 100.0, diff --git a/game/client-ui/src/main_menu/theme_container.rs b/game/client-ui/src/main_menu/theme_container.rs index a692b351..081caccc 100644 --- a/game/client-ui/src/main_menu/theme_container.rs +++ b/game/client-ui/src/main_menu/theme_container.rs @@ -1,4 +1,4 @@ -use crate::thumbnail_container::ThumbnailContainer; +use client_ui_utils::thumbnail_container::ThumbnailContainer; pub type ThemeContainer = ThumbnailContainer; pub const THEME_CONTAINER_PATH: &str = "themes/"; diff --git a/game/client-ui/src/main_menu/user_data.rs b/game/client-ui/src/main_menu/user_data.rs index bd6cfbd3..cb202325 100644 --- a/game/client-ui/src/main_menu/user_data.rs +++ b/game/client-ui/src/main_menu/user_data.rs @@ -33,10 +33,11 @@ use math::math::vector::ubvec4; use serde::{Deserialize, Serialize}; use url::Url; +use client_ui_utils::thumbnail_container::ThumbnailContainer; + use crate::{ events::UiEvents, ingame_menu::{client_info::ClientInfo, raw_input_info::RawInputInfo}, - thumbnail_container::ThumbnailContainer, }; use super::{ diff --git a/game/community/Cargo.toml b/game/community/Cargo.toml index f2aeb8d4..273a8a6c 100644 --- a/game/community/Cargo.toml +++ b/game/community/Cargo.toml @@ -6,6 +6,6 @@ edition = "2024" [dependencies] base = { path = "../../lib/base" } -serde = { version = "1.0.228", features = ["derive"] } +serde = { version = "1", features = ["derive"] } -ddnet-accounts-types = { version = "0.1.0" } +ddnet-accounts-types = { version = "0.2" } diff --git a/game/ddnet-info-proxy/Cargo.toml b/game/ddnet-info-proxy/Cargo.toml index 26b9db3d..3d6a68ad 100644 --- a/game/ddnet-info-proxy/Cargo.toml +++ b/game/ddnet-info-proxy/Cargo.toml @@ -10,22 +10,22 @@ base-io-traits = { path = "../../lib/base-io-traits" } client-ui = { path = "../client-ui" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -axum = "0.8.6" -reqwest = { version = "0.12.24", default-features = false, features = [ - "rustls-tls", +anyhow = { version = "1", features = ["backtrace"] } +axum = "0.8" +reqwest = { version = "0.13", default-features = false, features = [ + "rustls", "json", ] } -serde = { version = "1.0.228", features = ["derive"] } -tokio = { version = "1.48.0", features = [ +serde = { version = "1", features = ["derive"] } +tokio = { version = "1", features = [ "rt-multi-thread", "macros", "sync", "time", ] } -tracing = { version = "0.1.41", default-features = false, features = [ +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -url = { version = "2.5.7", features = ["serde"] } -log = "0.4.28" -async-trait = "0.1.89" +url = { version = "2", features = ["serde"] } +log = "0.4" +async-trait = "0.1" diff --git a/game/demo/Cargo.toml b/game/demo/Cargo.toml index cb722360..3b77b011 100644 --- a/game/demo/Cargo.toml +++ b/game/demo/Cargo.toml @@ -13,11 +13,11 @@ bin-patch = { path = "../../lib/bin-patch" } game-base = { path = "../game-base" } game-interface = { path = "../game-interface" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -bincode = { features = ["serde"], version = "2.0.1" } -itertools = "0.14.0" -log = "0.4.28" -serde = { version = "1.0.228", features = ["derive"] } +anyhow = { version = "1", features = ["backtrace"] } +bincode = { version = "2", features = ["serde"] } +itertools = "0.14" +log = "0.4" +serde = { version = "1", features = ["derive"] } zstd = { version = "0.13", default-features = false, features = [ "experimental", "zdict_builder", @@ -26,5 +26,5 @@ zstd = { version = "0.13", default-features = false, features = [ # feature related base-io = { path = "../../lib/base-io", optional = true } -chrono = { version = "0.4.42", features = ["serde"], optional = true } -tempfile = { version = "3.23.0", optional = true } +chrono = { version = "0.4", features = ["serde"], optional = true } +tempfile = { version = "3", optional = true } diff --git a/game/editor-auto-mapper-wasm/Cargo.toml b/game/editor-auto-mapper-wasm/Cargo.toml index 505a9d06..cb6c499a 100644 --- a/game/editor-auto-mapper-wasm/Cargo.toml +++ b/game/editor-auto-mapper-wasm/Cargo.toml @@ -11,8 +11,8 @@ base-io-traits = { path = "../../lib/base-io-traits" } cache = { path = "../../lib/cache" } wasm-runtime = { path = "../../lib/wasm-runtime" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -wasmer = { version = "6.1.0", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +wasmer = { version = "7", default-features = false, features = [ "sys", "cranelift", ] } diff --git a/game/editor-interface/Cargo.toml b/game/editor-interface/Cargo.toml index 27c65f6f..a8ac91c3 100644 --- a/game/editor-interface/Cargo.toml +++ b/game/editor-interface/Cargo.toml @@ -6,4 +6,4 @@ edition = "2024" [dependencies] map = { path = "../map" } -serde = { version = "1.0.228", features = ["derive"] } +serde = { version = "1", features = ["derive"] } diff --git a/game/editor-wasm/Cargo.toml b/game/editor-wasm/Cargo.toml index f2d7c115..f527cab7 100644 --- a/game/editor-wasm/Cargo.toml +++ b/game/editor-wasm/Cargo.toml @@ -20,14 +20,14 @@ wasm-runtime = { path = "../../lib/wasm-runtime" } editor = { path = "../editor", default-features = false } -anyhow = { version = "1.0.100", features = ["backtrace"] } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -libloading = "0.9.0" -rayon = "1.11.0" -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } +libloading = "0.9" +rayon = "1" +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -wasmer = { version = "6.1.0", default-features = false, features = [ +wasmer = { version = "7", default-features = false, features = [ "sys", "cranelift", ] } diff --git a/game/editor/Cargo.toml b/game/editor/Cargo.toml index ee32ebbe..3de31cb1 100644 --- a/game/editor/Cargo.toml +++ b/game/editor/Cargo.toml @@ -23,7 +23,7 @@ camera = { path = "../camera" } client-containers = { path = "../client-containers" } client-notifications = { path = "../client-notifications" } client-render-base = { path = "../client-render-base" } -client-ui = { path = "../client-ui" } +client-ui-utils = { path = "../client-ui-utils" } editor-auto-mapper-wasm = { path = "../editor-auto-mapper-wasm" } editor-interface = { path = "../editor-interface" } egui-timeline = { path = "../egui-timeline" } @@ -35,43 +35,43 @@ map = { path = "../map" } map-convert-lib = { path = "../map-convert-lib" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -egui-file-dialog = { version = "0.12.0", default-features = false } -egui_commonmark = "0.22.0" -egui_extras = { version = "0.33.0" } +egui = { version = "0.34", default-features = false, features = ["serde"] } +egui-file-dialog = { version = "0.13", default-features = false } +egui_commonmark = "0.23" +egui_extras = { version = "0.34" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -bincode = { version = "2.0.1", features = ["serde"] } -ed25519-dalek = { version = "2.2.0", features = ["serde"] } -enum_dispatch = "0.3.13" -fixed = "1.29.0" +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +bincode = { version = "2", features = ["serde"] } +ed25519-dalek = { version = "2", features = ["serde"] } +enum_dispatch = "0.3" +fixed = "1" hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", ] } -log = "0.4.28" -rand = { version = "0.9.2", features = ["thread_rng"] } -rayon = "1.11.0" -regex = "1.12.2" -rustc-hash = "2.1.1" -scan_fmt = "0.2.6" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -serde_with = "3.15.1" -tempfile = { version = "3.23.0" } -time = { version = "0.3.44", features = ["serde"] } -tokio = { version = "1.48.0", features = [ +log = "0.4" +rand = { version = "0.10", features = ["thread_rng"] } +rayon = "1" +regex = "1" +rustc-hash = "2" +scan_fmt = "0.2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +serde_with = "3" +tempfile = { version = "3" } +time = { version = "0.3", features = ["serde"] } +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "fs", "time", "macros", ] } -tracing = { version = "0.1.41", default-features = false, features = [ +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -x509-cert = { version = "0.2.5" } +x509-cert = { version = "0.2" } [dev-dependencies] base-fs = { path = "../../lib/base-fs" } diff --git a/game/editor/src/dbg/invalid.rs b/game/editor/src/dbg/invalid.rs index c735adf2..42326f28 100644 --- a/game/editor/src/dbg/invalid.rs +++ b/game/editor/src/dbg/invalid.rs @@ -23,7 +23,7 @@ use map::map::{ resources::{MapResourceMetaData, MapResourceRef}, }; use math::math::vector::uffixed; -use rand::RngCore; +use rand::Rng; use crate::{ actions::actions::{ diff --git a/game/editor/src/dbg/valid.rs b/game/editor/src/dbg/valid.rs index 90f64e64..8a18e220 100644 --- a/game/editor/src/dbg/valid.rs +++ b/game/editor/src/dbg/valid.rs @@ -21,7 +21,7 @@ use map::map::{ resources::{MapResourceMetaData, MapResourceRef}, }; use math::math::vector::uffixed; -use rand::RngCore; +use rand::Rng; use crate::{ actions::{ diff --git a/game/editor/src/editor.rs b/game/editor/src/editor.rs index 7a6003ce..50427e67 100644 --- a/game/editor/src/editor.rs +++ b/game/editor/src/editor.rs @@ -2817,7 +2817,7 @@ impl Editor { pub enum EditorResult { Close, Minimize, - PlatformOutput(egui::PlatformOutput), + PlatformOutput(Box), } pub trait EditorInterface { @@ -2863,7 +2863,7 @@ impl EditorInterface for Editor { if let Some((latest_pointer, scroll_delta, keys, modifiers)) = input_state.map(|inp| { ( inp.pointer.clone(), - inp.raw_scroll_delta, + inp.smooth_scroll_delta, inp.keys_down.clone(), inp.modifiers, ) @@ -2959,7 +2959,7 @@ impl EditorInterface for Editor { if let Some(res) = forced_result { res } else { - EditorResult::PlatformOutput(ui_output) + EditorResult::PlatformOutput(Box::new(ui_output)) } } diff --git a/game/editor/src/server.rs b/game/editor/src/server.rs index ca7d53dc..12a468b6 100644 --- a/game/editor/src/server.rs +++ b/game/editor/src/server.rs @@ -28,7 +28,7 @@ use network::network::{ event::NetworkEvent, types::{NetworkServerCertMode, NetworkServerCertModeResult}, }; -use rand::{RngCore, seq::SliceRandom}; +use rand::{Rng, seq::SliceRandom}; use sound::sound_mt::SoundMultiThreaded; use crate::{ diff --git a/game/editor/src/tools/tile_layer/brush.rs b/game/editor/src/tools/tile_layer/brush.rs index c895ffc9..40bca812 100644 --- a/game/editor/src/tools/tile_layer/brush.rs +++ b/game/editor/src/tools/tile_layer/brush.rs @@ -39,7 +39,7 @@ use map::{ }; use math::math::vector::{dvec2, ivec2, ubvec4, usvec2, vec2, vec4}; use pool::mt_datatypes::PoolVec; -use rand::RngCore; +use rand::Rng; use crate::{ actions::actions::{ diff --git a/game/editor/src/ui/animation_panel/panel.rs b/game/editor/src/ui/animation_panel/panel.rs index 28b1aec6..5e0e4d2b 100644 --- a/game/editor/src/ui/animation_panel/panel.rs +++ b/game/editor/src/ui/animation_panel/panel.rs @@ -53,11 +53,11 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st let tools = &mut *pipe.user_data.tools; let res = { - let mut panel = egui::TopBottomPanel::bottom("animations_panel") + let mut panel = egui::Panel::bottom("animations_panel") .resizable(true) - .height_range(300.0..=600.0); + .size_range(300.0..=600.0); panel = panel - .default_height(300.0) + .default_size(300.0) .frame(Frame::side_top_panel(ui.style()).inner_margin(Margin::same(15))); // if anim panel is open, and quads/sounds are selected diff --git a/game/editor/src/ui/assets_store_panel/panel.rs b/game/editor/src/ui/assets_store_panel/panel.rs index bc1ff506..6f177d78 100644 --- a/game/editor/src/ui/assets_store_panel/panel.rs +++ b/game/editor/src/ui/assets_store_panel/panel.rs @@ -2,7 +2,8 @@ use std::collections::{BTreeMap, HashSet}; use base::hash::{Hash, generate_hash_for}; use client_containers::container::ContainerItemIndexType; -use client_ui::{main_menu::settings::list::list, utils::render_texture_for_ui}; +use client_ui_utils::assets_list; +use client_ui_utils::render_texture_for_ui; use egui::{Button, Rect, UiBuilder}; use game_interface::types::resource_key::ResourceKey; use map::{ @@ -31,10 +32,10 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st }; let res = { - let mut panel = egui::SidePanel::right("assets_store_panel") + let mut panel = egui::Panel::right("assets_store_panel") .resizable(true) - .width_range(600.0..=1200.0); - panel = panel.default_width(800.0); + .size_range(600.0..=1200.0); + panel = panel.default_size(800.0); let res = panel.show_inside(ui, |ui| { ui.horizontal(|ui| { @@ -87,7 +88,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st let selected_fully_loaded = pipe.user_data.sound_images_container.is_loaded(&key) && key.name.as_str() != "default"; - list::render( + assets_list::render( ui, entries .iter() @@ -214,7 +215,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st pipe.user_data.quad_tile_images_container.is_loaded(&key) && key.name.as_str() != "default"; - list::render( + assets_list::render( ui, entries .iter() diff --git a/game/editor/src/ui/auto_mapper/auto_mapper.rs b/game/editor/src/ui/auto_mapper/auto_mapper.rs index 26a83d9c..54a2f813 100644 --- a/game/editor/src/ui/auto_mapper/auto_mapper.rs +++ b/game/editor/src/ui/auto_mapper/auto_mapper.rs @@ -5,7 +5,7 @@ use std::{ use base::hash::fmt_hash; use client_render_base::map::map_buffered::graphic_tile::tile_flags_to_uv; -use client_ui::utils::render_texture_for_ui; +use client_ui_utils::render_texture_for_ui; use egui::{ Color32, ComboBox, DragValue, Frame, Rect, ScrollArea, Sense, Spacing, Stroke, Window, vec2, }; diff --git a/game/editor/src/ui/bottom_panel/panel.rs b/game/editor/src/ui/bottom_panel/panel.rs index 480f6ce5..e287bb5f 100644 --- a/game/editor/src/ui/bottom_panel/panel.rs +++ b/game/editor/src/ui/bottom_panel/panel.rs @@ -291,10 +291,10 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st let item_height = style.spacing.interact_size.y; let row_height = item_height + style.spacing.item_spacing.y; let height = row_height * 2.0; - let res = egui::TopBottomPanel::bottom("bottom_panel") + let res = egui::Panel::bottom("bottom_panel") .resizable(false) - .default_height(height) - .height_range(height..=height) + .default_size(height) + .size_range(height..=height) .show_inside(ui, |ui| { egui::ScrollArea::horizontal().show(ui, |ui| { ui.vertical(|ui| { diff --git a/game/editor/src/ui/chat_panel/panel.rs b/game/editor/src/ui/chat_panel/panel.rs index 781eb097..572d6de8 100644 --- a/game/editor/src/ui/chat_panel/panel.rs +++ b/game/editor/src/ui/chat_panel/panel.rs @@ -22,10 +22,10 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st }; let res = { - let mut panel = egui::SidePanel::right("chat_panel") + let mut panel = egui::Panel::right("chat_panel") .resizable(true) - .width_range(300.0..=600.0); - panel = panel.default_width(500.0); + .size_range(300.0..=600.0); + panel = panel.default_size(500.0); let mut close_chat = None; diff --git a/game/editor/src/ui/group_and_layer/layer_props.rs b/game/editor/src/ui/group_and_layer/layer_props.rs index 5a08bc82..f42bc801 100644 --- a/game/editor/src/ui/group_and_layer/layer_props.rs +++ b/game/editor/src/ui/group_and_layer/layer_props.rs @@ -12,7 +12,7 @@ use map::{ types::NonZeroU16MinusOne, }; use math::math::vector::{ffixed, nffixed, nfvec4, vec2_base}; -use rand::RngCore; +use rand::Rng; use time::Duration; use ui_base::{ types::{UiRenderPipe, UiState}, diff --git a/game/editor/src/ui/left_panel/panel.rs b/game/editor/src/ui/left_panel/panel.rs index d130b6a2..926c34aa 100644 --- a/game/editor/src/ui/left_panel/panel.rs +++ b/game/editor/src/ui/left_panel/panel.rs @@ -11,10 +11,10 @@ use crate::{ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &mut UiState) { let res = { - let mut panel = egui::SidePanel::left("left_panel") + let mut panel = egui::Panel::left("left_panel") .resizable(true) - .width_range(120.0..=260.0); - panel = panel.default_width(200.0); + .size_range(120.0..=260.0); + panel = panel.default_size(200.0); Some(panel.show_inside(ui, |ui| { let map = &mut pipe.user_data.editor_tab.map; diff --git a/game/editor/src/ui/page.rs b/game/editor/src/ui/page.rs index 8e1c3786..05ed5b4a 100644 --- a/game/editor/src/ui/page.rs +++ b/game/editor/src/ui/page.rs @@ -29,7 +29,7 @@ impl EditorUi { style.interaction.show_tooltips_only_when_still = false; style.interaction.tooltip_delay = 0.0; style.visuals.clip_rect_margin = 6.0; - ui.ctx().set_style(style); + ui.ctx().set_global_style(style); ui.reset_style(); } } diff --git a/game/editor/src/ui/server_config_variables/panel.rs b/game/editor/src/ui/server_config_variables/panel.rs index a208f8c0..f74e12ea 100644 --- a/game/editor/src/ui/server_config_variables/panel.rs +++ b/game/editor/src/ui/server_config_variables/panel.rs @@ -23,11 +23,11 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st } let res = { - let mut panel = egui::TopBottomPanel::bottom("server_config_variables_panel") + let mut panel = egui::Panel::bottom("server_config_variables_panel") .resizable(true) - .height_range(300.0..=600.0); + .size_range(300.0..=600.0); panel = panel - .default_height(300.0) + .default_size(300.0) .frame(Frame::side_top_panel(ui.style()).inner_margin(Margin::same(15))); Some(panel.show_inside(ui, |ui| { diff --git a/game/editor/src/ui/server_settings/panel.rs b/game/editor/src/ui/server_settings/panel.rs index 1eba14ef..df4358de 100644 --- a/game/editor/src/ui/server_settings/panel.rs +++ b/game/editor/src/ui/server_settings/panel.rs @@ -110,11 +110,11 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st } let res = { - let mut panel = egui::TopBottomPanel::bottom("server_settings_panel") + let mut panel = egui::Panel::bottom("server_settings_panel") .resizable(true) - .height_range(300.0..=600.0); + .size_range(300.0..=600.0); panel = panel - .default_height(300.0) + .default_size(300.0) .frame(Frame::side_top_panel(ui.style()).inner_margin(Margin::same(15))); Some(panel.show_inside(ui, |ui| { diff --git a/game/editor/src/ui/top_menu/menu.rs b/game/editor/src/ui/top_menu/menu.rs index 65e131d7..949211ea 100644 --- a/game/editor/src/ui/top_menu/menu.rs +++ b/game/editor/src/ui/top_menu/menu.rs @@ -23,10 +23,10 @@ pub fn render(ui: &mut egui::Ui, ui_state: &mut UiState, pipe: &mut UiRenderPipe let style = ui.style(); // 4.0 is some margin for strokes let height = style.spacing.interact_size.y + style.spacing.item_spacing.y + 4.0; - let res = egui::TopBottomPanel::top("top_menu") + let res = egui::Panel::top("top_menu") .resizable(false) - .default_height(height) - .height_range(height..=height) + .default_size(height) + .size_range(height..=height) .show_inside(ui, |ui| { egui::ScrollArea::horizontal().show(ui, |ui| { let menu_dialog_mode = &mut *pipe.user_data.menu_dialog_mode; diff --git a/game/editor/src/ui/top_tabs/main_frame.rs b/game/editor/src/ui/top_tabs/main_frame.rs index 4e2a3db1..0e40fae9 100644 --- a/game/editor/src/ui/top_tabs/main_frame.rs +++ b/game/editor/src/ui/top_tabs/main_frame.rs @@ -12,10 +12,10 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m let style = ui.style(); // 4.0 is some margin for strokes let height = style.spacing.interact_size.y + style.spacing.item_spacing.y + 4.0; - let res = egui::TopBottomPanel::top("top_tabs") + let res = egui::Panel::top("top_tabs") .resizable(false) - .default_height(height) - .height_range(height..=height) + .default_size(height) + .size_range(height..=height) .show_inside(ui, |ui| { ui.horizontal(|ui| { ui.style_mut().spacing.item_spacing.x = 0.0; diff --git a/game/editor/src/ui/top_toolbar/speedup.rs b/game/editor/src/ui/top_toolbar/speedup.rs index 032e8e50..9d123709 100644 --- a/game/editor/src/ui/top_toolbar/speedup.rs +++ b/game/editor/src/ui/top_toolbar/speedup.rs @@ -18,10 +18,10 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st let style = ui.style(); let height = style.spacing.interact_size.y + style.spacing.item_spacing.y; - let res = egui::TopBottomPanel::top("top_toolbar_speedup_extra") + let res = egui::Panel::top("top_toolbar_speedup_extra") .resizable(false) - .default_height(height) - .height_range(height..=height) + .default_size(height) + .size_range(height..=height) .show_inside(ui, |ui| { egui::ScrollArea::horizontal().show(ui, |ui| { ui.horizontal(|ui| { diff --git a/game/editor/src/ui/top_toolbar/switch.rs b/game/editor/src/ui/top_toolbar/switch.rs index 4872cf9a..ae722fca 100644 --- a/game/editor/src/ui/top_toolbar/switch.rs +++ b/game/editor/src/ui/top_toolbar/switch.rs @@ -35,10 +35,10 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st })); } - let res = egui::TopBottomPanel::top("top_toolbar_switch_extra") + let res = egui::Panel::top("top_toolbar_switch_extra") .resizable(false) - .default_height(height) - .height_range(height..=height) + .default_size(height) + .size_range(height..=height) .show_inside(ui, |ui| { egui::ScrollArea::horizontal().show(ui, |ui| { ui.horizontal(|ui| { diff --git a/game/editor/src/ui/top_toolbar/tele.rs b/game/editor/src/ui/top_toolbar/tele.rs index ae3fd35c..3745363e 100644 --- a/game/editor/src/ui/top_toolbar/tele.rs +++ b/game/editor/src/ui/top_toolbar/tele.rs @@ -35,10 +35,10 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st })); } - let res = egui::TopBottomPanel::top("top_toolbar_tele_extra") + let res = egui::Panel::top("top_toolbar_tele_extra") .resizable(false) - .default_height(height) - .height_range(height..=height) + .default_size(height) + .size_range(height..=height) .show_inside(ui, |ui| { egui::ScrollArea::horizontal().show(ui, |ui| { ui.horizontal(|ui| { diff --git a/game/editor/src/ui/top_toolbar/toolbar.rs b/game/editor/src/ui/top_toolbar/toolbar.rs index a449458f..26059d56 100644 --- a/game/editor/src/ui/top_toolbar/toolbar.rs +++ b/game/editor/src/ui/top_toolbar/toolbar.rs @@ -411,10 +411,10 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st let style = ui.style(); // 4.0 is some margin for strokes let height = style.spacing.interact_size.y + style.spacing.item_spacing.y + 4.0; - let res = egui::TopBottomPanel::top("top_toolbar") + let res = egui::Panel::top("top_toolbar") .resizable(false) - .default_height(height) - .height_range(height..=height) + .default_size(height) + .size_range(height..=height) .show_inside(ui, |ui| { egui::ScrollArea::horizontal().show(ui, |ui| { ui.horizontal(|ui| { @@ -532,10 +532,10 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st let tools = &mut pipe.user_data.tools; let res = match &tools.active_tool { - ActiveTool::Tiles(_) => egui::TopBottomPanel::top("top_toolbar_tiles_extra") + ActiveTool::Tiles(_) => egui::Panel::top("top_toolbar_tiles_extra") .resizable(false) - .default_height(height) - .height_range(height..=height) + .default_size(height) + .size_range(height..=height) .show_inside(ui, |ui| { egui::ScrollArea::horizontal().show(ui, |ui| { ui.horizontal(|ui| { @@ -544,10 +544,10 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st }); }), ActiveTool::Quads(_) => { - egui::TopBottomPanel::top("top_toolbar_quads_extra") + egui::Panel::top("top_toolbar_quads_extra") .resizable(false) - .default_height(height) - .height_range(height..=height) + .default_size(height) + .size_range(height..=height) .show_inside(ui, |ui| { egui::ScrollArea::horizontal().show(ui, |ui| { ui.horizontal(|ui| { @@ -694,10 +694,10 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st }) } ActiveTool::Sounds(_) => { - egui::TopBottomPanel::top("top_toolbar_sound_extra") + egui::Panel::top("top_toolbar_sound_extra") .resizable(false) - .default_height(height) - .height_range(height..=height) + .default_size(height) + .size_range(height..=height) .show_inside(ui, |ui| { egui::ScrollArea::horizontal().show(ui, |ui| { ui.horizontal(|ui| { diff --git a/game/editor/src/ui/top_toolbar/tune.rs b/game/editor/src/ui/top_toolbar/tune.rs index 5731653b..ba74e21d 100644 --- a/game/editor/src/ui/top_toolbar/tune.rs +++ b/game/editor/src/ui/top_toolbar/tune.rs @@ -383,10 +383,10 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_st })); } - let res = egui::TopBottomPanel::top("top_toolbar_tune_extra") + let res = egui::Panel::top("top_toolbar_tune_extra") .resizable(false) - .default_height(height) - .height_range(height..=height) + .default_size(height) + .size_range(height..=height) .show_inside(ui, |ui| { egui::ScrollArea::horizontal().show(ui, |ui| { ui.horizontal(|ui| { diff --git a/game/editor/src/ui/user_data.rs b/game/editor/src/ui/user_data.rs index 8cb51f13..1356d278 100644 --- a/game/editor/src/ui/user_data.rs +++ b/game/editor/src/ui/user_data.rs @@ -127,6 +127,13 @@ impl EditorMenuDialogMode { .default_file_icon("\u{f15b}") .default_folder_icon("\u{f07c}") .removable_device_icon("\u{f1f8}") + .parent_directory_icon("\u{f062}") + .back_icon("\u{f060}") + .forward_icon("\u{f061}") + .new_folder_icon("\u{f65e}") + .menu_icon("\u{f0c9}") + .search_icon("\u{1f50d}") + .path_edit_icon("\u{f303}") .labels(egui_file_dialog::FileDialogLabels { title_select_directory: "\u{f07c} Select Folder".to_string(), title_select_file: "\u{f07c} Open File".to_string(), @@ -176,6 +183,7 @@ impl EditorMenuDialogMode { rename_pinned_folder: "\u{f303} Rename".to_string(), working_directory: "\u{f08e} Go to working directory".to_string(), + select_all: "\u{f14a}".to_string(), save_extension_any: "Any".to_string(), }) } diff --git a/game/egui-timeline/Cargo.toml b/game/egui-timeline/Cargo.toml index 867ceff5..c783d131 100644 --- a/game/egui-timeline/Cargo.toml +++ b/game/egui-timeline/Cargo.toml @@ -8,5 +8,5 @@ math = { path = "../../lib/math" } map = { path = "../map" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -egui_extras = { version = "0.33.0" } +egui = { version = "0.34", default-features = false, features = ["serde"] } +egui_extras = { version = "0.34" } diff --git a/game/game-base/Cargo.toml b/game/game-base/Cargo.toml index a5838954..ede093cf 100644 --- a/game/game-base/Cargo.toml +++ b/game/game-base/Cargo.toml @@ -14,16 +14,16 @@ pool = { path = "../../lib/pool" } game-config = { path = "../game-config" } game-interface = { path = "../game-interface" } -anyhow = { version = "1.0.100", features = ["backtrace"] } +anyhow = { version = "1", features = ["backtrace"] } hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", ] } -indexmap = "2.12.0" -serde = { version = "1.0.228", features = ["derive"] } -serde_with = "3.15.1" -thiserror = "2.0.17" -time = { version = "0.3.44", features = ["serde"] } +indexmap = "2" +serde = { version = "1", features = ["derive"] } +serde_with = "3" +thiserror = "2" +time = { version = "0.3", features = ["serde"] } [dev-dependencies] -rustc-hash = "2.1.1" +rustc-hash = "2" diff --git a/game/game-config-fs/Cargo.toml b/game/game-config-fs/Cargo.toml index 673f0126..9408b3ee 100644 --- a/game/game-config-fs/Cargo.toml +++ b/game/game-config-fs/Cargo.toml @@ -8,4 +8,4 @@ base-io = { path = "../../lib/base-io" } game-config = { path = "../game-config" } -anyhow = { version = "1.0.100", features = ["backtrace"] } +anyhow = { version = "1", features = ["backtrace"] } diff --git a/game/game-config/Cargo.toml b/game/game-config/Cargo.toml index db603d05..ec2fc49e 100644 --- a/game/game-config/Cargo.toml +++ b/game/game-config/Cargo.toml @@ -8,6 +8,6 @@ config = { path = "../../lib/config" } game-interface = { path = "../game-interface" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" +anyhow = { version = "1", features = ["backtrace"] } +serde = { version = "1", features = ["derive"] } +serde_json = "1" diff --git a/game/game-interface/Cargo.toml b/game/game-interface/Cargo.toml index 7a041717..fe8e463d 100644 --- a/game/game-interface/Cargo.toml +++ b/game/game-interface/Cargo.toml @@ -22,18 +22,18 @@ math = { path = "../../lib/math" } pool = { path = "../../lib/pool", features = ["enable_hiarc"] } # non-local libs -ddnet-accounts-types = { version = "0.1.0" } +ddnet-accounts-types = { version = "0.2" } -ascii = { version = "1.1.0", features = ["serde"] } -bitflags = { version = "2.10.0", features = ["serde"] } -chrono = { version = "0.4.42", default-features = false, features = ["serde"] } -either = { version = "1.15.0", features = ["serde"] } +ascii = { version = "1", features = ["serde"] } +bitflags = { version = "2", features = ["serde"] } +chrono = { version = "0.4", default-features = false, features = ["serde"] } +either = { version = "1", features = ["serde"] } hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", ] } -num-derive = "0.4.2" -num-traits = "0.2.19" -rustc-hash = "2.1.1" -serde = { version = "1.0.228", features = ["derive"] } -strum = { version = "0.27.2", features = ["derive"] } +num-derive = "0.4" +num-traits = "0.2" +rustc-hash = "2" +serde = { version = "1", features = ["derive"] } +strum = { version = "0.28", features = ["derive"] } diff --git a/game/game-network/Cargo.toml b/game/game-network/Cargo.toml index 2152179f..7b95b944 100644 --- a/game/game-network/Cargo.toml +++ b/game/game-network/Cargo.toml @@ -11,11 +11,11 @@ pool = { path = "../../lib/pool" } game-base = { path = "../game-base" } game-interface = { path = "../game-interface" } -async-trait = "0.1.89" -bincode = { features = ["serde"], version = "2.0.1" } -log = "0.4.28" -serde = "1.0.228" -tokio = { version = "1.48.0", features = [ +async-trait = "0.1" +bincode = { version = "2", features = ["serde"] } +log = "0.4" +serde = "1" +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "time", diff --git a/game/game-server/Cargo.toml b/game/game-server/Cargo.toml index 3e2fcbb2..8445f9d9 100644 --- a/game/game-server/Cargo.toml +++ b/game/game-server/Cargo.toml @@ -34,28 +34,26 @@ vanilla = { path = "../vanilla" } game-state-wasm = { path = "../game-state-wasm" } map-convert-lib = { path = "../map-convert-lib" } -ddnet-account-client-http-fs = { version = "0.3.0" } -ddnet-account-game-server = { version = "0.3.0", features = ["sqlite"] } -ddnet-accounts-shared = { version = "0.2.0" } +ddnet-account-client-http-fs = { version = "0.4" } +ddnet-account-game-server = { version = "0.4", features = ["sqlite"] } +ddnet-accounts-shared = { version = "0.3" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -bincode = { version = "2.0.1", features = ["serde"] } -chrono = { version = "0.4.42", features = ["serde"] } +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +bincode = { version = "2", features = ["serde"] } +chrono = { version = "0.4", features = ["serde"] } difference = "2.0" -ed25519-dalek = { version = "2.2.0" } -either = "1.15.0" -futures = "0.3.31" -log = "0.4.28" -rand = { version = "0.9.2", features = [ - "thread_rng", -], default-features = false } -rayon = "1.11.0" -rustc-hash = "2.1.1" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -thread-priority = "3.0.0" -tracing = { version = "0.1.41", default-features = false, features = [ +ed25519-dalek = { version = "2" } +either = "1" +futures = "0.3" +log = "0.4" +rand = { version = "0.10", features = ["thread_rng"], default-features = false } +rayon = "1" +rustc-hash = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +thread-priority = "3" +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -x509-cert = { version = "0.2.5" } +x509-cert = { version = "0.2" } diff --git a/game/game-server/src/rcon.rs b/game/game-server/src/rcon.rs index 30f2006f..8a70c68e 100644 --- a/game/game-server/src/rcon.rs +++ b/game/game-server/src/rcon.rs @@ -5,7 +5,7 @@ use game_interface::{ rcon_entries::AuthLevel, types::player_info::{AccountId, PlayerUniqueId}, }; -use rand::Rng; +use rand::RngExt; use crate::client::ServerClient; diff --git a/game/game-server/src/server.rs b/game/game-server/src/server.rs index 473c4a27..c462c837 100644 --- a/game/game-server/src/server.rs +++ b/game/game-server/src/server.rs @@ -58,7 +58,7 @@ use network::network::{ }, }; use pool::{datatypes::PoolFxLinkedHashMap, mt_datatypes::PoolCow, pool::Pool}; -use rand::RngCore; +use rand::Rng; use sql::database::{Database, DatabaseDetails}; use tracing::instrument; use vanilla::{ diff --git a/game/game-state-wasm/Cargo.toml b/game/game-state-wasm/Cargo.toml index 409c834e..09648c8e 100644 --- a/game/game-state-wasm/Cargo.toml +++ b/game/game-state-wasm/Cargo.toml @@ -19,11 +19,11 @@ game-interface = { path = "../game-interface" } vanilla = { path = "../vanilla" } #ddnet = { git = "https://gitlab.com/Jupstar/twgame", rev = "4e5bd44981a2b27d9b46d0db0442f84e81c90cb8" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -wasmer = { version = "6.1.0", default-features = false, features = [ +wasmer = { version = "7", default-features = false, features = [ "sys", "cranelift", ] } diff --git a/game/game-state-wasm/src/game/state_wasm_manager.rs b/game/game-state-wasm/src/game/state_wasm_manager.rs index 48c0b588..ccd6ea2f 100644 --- a/game/game-state-wasm/src/game/state_wasm_manager.rs +++ b/game/game-state-wasm/src/game/state_wasm_manager.rs @@ -110,6 +110,7 @@ impl GameStateWasmManager { .await } + #[instrument(level = "trace", skip_all)] pub fn new( game_mod: GameStateMod, map: Vec, diff --git a/game/http-accounts/Cargo.toml b/game/http-accounts/Cargo.toml index 0884488e..68e6808f 100644 --- a/game/http-accounts/Cargo.toml +++ b/game/http-accounts/Cargo.toml @@ -6,9 +6,9 @@ edition = "2024" [dependencies] base-io-traits = { path = "../../lib/base-io-traits" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -url = { version = "2.5.7", features = ["serde"] } +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +url = { version = "2", features = ["serde"] } -ddnet-account-client = { version = "0.2.0" } -ddnet-account-client-http-fs = { version = "0.3.0" } +ddnet-account-client = { version = "0.3" } +ddnet-account-client-http-fs = { version = "0.4" } diff --git a/game/ingame-ui/Cargo.toml b/game/ingame-ui/Cargo.toml new file mode 100644 index 00000000..525fa632 --- /dev/null +++ b/game/ingame-ui/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "ingame-ui" +version = "0.1.0" +edition = "2024" + +[dependencies] +base = { path = "../../lib/base" } +client-containers = { path = "../client-containers" } +client-render-base = { path = "../client-render-base" } +client-types = { path = "../client-types" } +client-ui-utils = { path = "../client-ui-utils" } +game-base = { path = "../game-base" } +game-interface = { path = "../game-interface" } +graphics = { path = "../../lib/graphics" } +math = { path = "../../lib/math" } +pool = { path = "../../lib/pool" } + +egui = { version = "0.34", default-features = false, features = ["serde"] } +egui_commonmark = "0.23" +egui_extras = { version = "0.34" } +fuzzy-matcher = "0.3" +hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ + "serde", + "serde_impl", +] } +serde = { version = "1", features = ["derive"] } +tracing = { version = "0.1", default-features = false, features = [ + "attributes", +] } +ui-base = { path = "../../lib/ui-base" } +ui-generic = { path = "../../lib/ui-generic" } diff --git a/game/client-ui/src/actionfeed/feed_list.rs b/game/ingame-ui/src/actionfeed/feed_list.rs similarity index 100% rename from game/client-ui/src/actionfeed/feed_list.rs rename to game/ingame-ui/src/actionfeed/feed_list.rs diff --git a/game/client-ui/src/actionfeed/kill_entry.rs b/game/ingame-ui/src/actionfeed/kill_entry.rs similarity index 96% rename from game/client-ui/src/actionfeed/kill_entry.rs rename to game/ingame-ui/src/actionfeed/kill_entry.rs index 01529195..82141bfc 100644 --- a/game/client-ui/src/actionfeed/kill_entry.rs +++ b/game/ingame-ui/src/actionfeed/kill_entry.rs @@ -1,15 +1,14 @@ +use client_render_base::render::weapon_visuals::get_weapon_visual_scale; use client_types::actionfeed::ActionKill; use egui::{Color32, Layout, Rect}; use game_interface::{events::GameWorldActionKillWeapon, types::render::character::TeeEye}; use math::math::vector::vec2; use tracing::instrument; use ui_base::types::{UiRenderPipe, UiState}; -use vanilla::weapons::definitions::weapon_def::get_weapon_visual_scale; -use crate::{ - actionfeed::shared::entry_frame, - utils::{render_tee_for_ui, render_texture_for_ui, render_weapon_for_ui}, -}; +use client_ui_utils::{render_tee_for_ui, render_texture_for_ui, render_weapon_for_ui}; + +use crate::actionfeed::shared::entry_frame; use super::user_data::{RenderTeeInfo, UserData}; diff --git a/game/client-ui/src/actionfeed/main_frame.rs b/game/ingame-ui/src/actionfeed/main_frame.rs similarity index 100% rename from game/client-ui/src/actionfeed/main_frame.rs rename to game/ingame-ui/src/actionfeed/main_frame.rs diff --git a/game/client-ui/src/actionfeed/mod.rs b/game/ingame-ui/src/actionfeed/mod.rs similarity index 100% rename from game/client-ui/src/actionfeed/mod.rs rename to game/ingame-ui/src/actionfeed/mod.rs diff --git a/game/client-ui/src/actionfeed/page.rs b/game/ingame-ui/src/actionfeed/page.rs similarity index 100% rename from game/client-ui/src/actionfeed/page.rs rename to game/ingame-ui/src/actionfeed/page.rs diff --git a/game/client-ui/src/actionfeed/race_finish_entry.rs b/game/ingame-ui/src/actionfeed/race_finish_entry.rs similarity index 96% rename from game/client-ui/src/actionfeed/race_finish_entry.rs rename to game/ingame-ui/src/actionfeed/race_finish_entry.rs index 2ffbb869..5256afdc 100644 --- a/game/client-ui/src/actionfeed/race_finish_entry.rs +++ b/game/ingame-ui/src/actionfeed/race_finish_entry.rs @@ -8,7 +8,9 @@ use math::math::vector::vec2; use tracing::instrument; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{actionfeed::shared::entry_frame, utils::render_tee_for_ui}; +use client_ui_utils::render_tee_for_ui; + +use crate::actionfeed::shared::entry_frame; use super::user_data::{RenderTeeInfo, UserData}; diff --git a/game/client-ui/src/actionfeed/shared.rs b/game/ingame-ui/src/actionfeed/shared.rs similarity index 100% rename from game/client-ui/src/actionfeed/shared.rs rename to game/ingame-ui/src/actionfeed/shared.rs diff --git a/game/client-ui/src/actionfeed/user_data.rs b/game/ingame-ui/src/actionfeed/user_data.rs similarity index 100% rename from game/client-ui/src/actionfeed/user_data.rs rename to game/ingame-ui/src/actionfeed/user_data.rs diff --git a/game/client-ui/src/chat/chat_entry.rs b/game/ingame-ui/src/chat/chat_entry.rs similarity index 99% rename from game/client-ui/src/chat/chat_entry.rs rename to game/ingame-ui/src/chat/chat_entry.rs index b8e2f95b..043ffbf6 100644 --- a/game/client-ui/src/chat/chat_entry.rs +++ b/game/ingame-ui/src/chat/chat_entry.rs @@ -8,7 +8,7 @@ use math::math::vector::vec2; use tracing::instrument; use ui_base::types::{UiRenderPipe, UiState}; -use crate::utils::render_tee_for_ui; +use client_ui_utils::render_tee_for_ui; use super::{ shared::{MARGIN, MARGIN_FROM_TEE, TEE_SIZE, entry_frame}, diff --git a/game/client-ui/src/chat/chat_list.rs b/game/ingame-ui/src/chat/chat_list.rs similarity index 100% rename from game/client-ui/src/chat/chat_list.rs rename to game/ingame-ui/src/chat/chat_list.rs diff --git a/game/client-ui/src/chat/input.rs b/game/ingame-ui/src/chat/input.rs similarity index 99% rename from game/client-ui/src/chat/input.rs rename to game/ingame-ui/src/chat/input.rs index 0057f53a..719fe383 100644 --- a/game/client-ui/src/chat/input.rs +++ b/game/ingame-ui/src/chat/input.rs @@ -14,7 +14,7 @@ use ui_base::{ utils::add_margins, }; -use crate::utils::render_tee_for_ui; +use client_ui_utils::render_tee_for_ui; use super::user_data::{ChatEvent, ChatMode, UserData}; diff --git a/game/client-ui/src/chat/main_frame.rs b/game/ingame-ui/src/chat/main_frame.rs similarity index 100% rename from game/client-ui/src/chat/main_frame.rs rename to game/ingame-ui/src/chat/main_frame.rs diff --git a/game/client-ui/src/chat/mod.rs b/game/ingame-ui/src/chat/mod.rs similarity index 100% rename from game/client-ui/src/chat/mod.rs rename to game/ingame-ui/src/chat/mod.rs diff --git a/game/client-ui/src/chat/page.rs b/game/ingame-ui/src/chat/page.rs similarity index 100% rename from game/client-ui/src/chat/page.rs rename to game/ingame-ui/src/chat/page.rs diff --git a/game/client-ui/src/chat/shared.rs b/game/ingame-ui/src/chat/shared.rs similarity index 100% rename from game/client-ui/src/chat/shared.rs rename to game/ingame-ui/src/chat/shared.rs diff --git a/game/client-ui/src/chat/system_entry.rs b/game/ingame-ui/src/chat/system_entry.rs similarity index 98% rename from game/client-ui/src/chat/system_entry.rs rename to game/ingame-ui/src/chat/system_entry.rs index 784f04c7..9c0fefe1 100644 --- a/game/client-ui/src/chat/system_entry.rs +++ b/game/ingame-ui/src/chat/system_entry.rs @@ -5,7 +5,7 @@ use math::math::vector::vec2; use tracing::instrument; use ui_base::types::{UiRenderPipe, UiState}; -use crate::utils::render_tee_for_ui; +use client_ui_utils::render_tee_for_ui; use super::{ shared::{MARGIN, MARGIN_FROM_TEE, TEE_SIZE, entry_frame}, diff --git a/game/client-ui/src/chat/user_data.rs b/game/ingame-ui/src/chat/user_data.rs similarity index 100% rename from game/client-ui/src/chat/user_data.rs rename to game/ingame-ui/src/chat/user_data.rs diff --git a/game/client-ui/src/emote_wheel/main_frame.rs b/game/ingame-ui/src/emote_wheel/main_frame.rs similarity index 66% rename from game/client-ui/src/emote_wheel/main_frame.rs rename to game/ingame-ui/src/emote_wheel/main_frame.rs index e7e85aa2..567220ab 100644 --- a/game/client-ui/src/emote_wheel/main_frame.rs +++ b/game/ingame-ui/src/emote_wheel/main_frame.rs @@ -1,9 +1,8 @@ -use egui::{Color32, Id, Stroke}; +use egui::{Color32, Id, Stroke, pos2}; use game_interface::types::{ emoticons::{EmoticonType, EnumCount}, render::character::{IntoEnumIterator, TeeEye}, }; -use geo::Contains; use math::math::{ PI, length, normalize_pre_length, vector::{dvec2, vec2}, @@ -11,10 +10,74 @@ use math::math::{ use tracing::instrument; use ui_base::types::{UiRenderPipe, UiState}; -use crate::utils::{render_emoticon_for_ui, render_tee_for_ui, rotate}; +use client_ui_utils::{render_emoticon_for_ui, render_tee_for_ui, rotate}; use super::user_data::{EmoteWheelEvent, UserData}; +fn normalized_angle_diff(angle: f32, center: f32) -> f32 { + let diff = angle - center; + diff.sin().atan2(diff.cos()) +} + +fn is_mouse_in_wheel_segment( + mouse: dvec2, + center: vec2, + segment_center: vec2, + inner_radius: f32, + outer_radius: f32, + entry_count: usize, +) -> bool { + let mouse_dir = mouse - dvec2::new(center.x as f64, center.y as f64); + let mouse_len = length(&mouse_dir) as f32; + + if mouse_len < inner_radius || mouse_len > outer_radius { + return false; + } + + let mouse_angle = (mouse_dir.y as f32).atan2(mouse_dir.x as f32); + let segment_angle = segment_center.y.atan2(segment_center.x); + let segment_half_angle = PI / entry_count as f32; + + normalized_angle_diff(mouse_angle, segment_angle).abs() <= segment_half_angle +} + +fn paint_wheel_segment( + ui: &egui::Ui, + center: vec2, + segment_center: vec2, + inner_radius: f32, + outer_radius: f32, + entry_count: usize, + color: Color32, +) { + let segment_angle = segment_center.y.atan2(segment_center.x); + let half_angle = PI / entry_count as f32; + let steps = 16; + + for i in 0..steps { + let angle0 = segment_angle - half_angle + 2.0 * half_angle * i as f32 / steps as f32; + let angle1 = segment_angle - half_angle + 2.0 * half_angle * (i + 1) as f32 / steps as f32; + + let point_at = |angle: f32, radius: f32| { + pos2( + center.x + angle.cos() * radius, + center.y + angle.sin() * radius, + ) + }; + + ui.painter().add(egui::Shape::convex_polygon( + vec![ + point_at(angle0, inner_radius), + point_at(angle0, outer_radius), + point_at(angle1, outer_radius), + point_at(angle1, inner_radius), + ], + color, + Stroke::NONE, + )); + } +} + /// not required #[instrument(level = "trace", skip_all)] pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &mut UiState) { @@ -27,6 +90,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m }; let color = Color32::from_black_alpha(100); + let hover_color = Color32::from_rgba_unmultiplied(180, 205, 255, 15); let inner_stroke_size = radius(15.0); let inner_start = radius(5.0); @@ -54,9 +118,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m let mouse = &mut *pipe.user_data.mouse; // render emoticons in a radius around the outer circle - let mut start_pos = vec2::new(0.0, outer_start); let mut pos = vec2::new(0.0, outer_center); - let mut end_pos = vec2::new(0.0, outer_end); let center = rect.center(); let center = vec2::new(center.x, center.y); @@ -77,9 +139,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m std::slice::from_mut(pos), ) }; - start_rot(&mut start_pos); start_rot(&mut pos); - start_rot(&mut end_pos); for emote in EmoticonType::iter() { let rot = |pos: &mut vec2, scale: f32| { rotate( @@ -91,40 +151,26 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m rot(&mut pos, 1.0); - rot(&mut start_pos, 1.0); - let mut start_p0 = start_pos; - let mut start_p1 = start_pos; - rot(&mut start_p0, 0.5); - rot(&mut start_p1, -0.5); - start_p0 += center; - start_p1 += center; - - rot(&mut end_pos, 1.0); - let mut end_p0 = end_pos; - let mut end_p1 = end_pos; - rot(&mut end_p0, -0.5); - rot(&mut end_p1, 0.5); - end_p0 += center; - end_p1 += center; - let center = center + pos; let size = radius(10.0); - let selected = { - let trapez = geo::Polygon::new( - vec![ - (start_p0.x, start_p0.y), - (start_p1.x, start_p1.y), - (end_p0.x, end_p0.y), - (end_p1.x, end_p1.y), - ] - .into_iter() - .map(geo::Point::from) - .collect(), - vec![], - ); - trapez.contains(&geo::Point::new(mouse.x as f32, mouse.y as f32)) - }; + let selected = is_mouse_in_wheel_segment( + dvec2::new(mouse.x, mouse.y), + center - pos, + pos, + outer_start, + outer_end, + EmoticonType::COUNT, + ); if selected { + paint_wheel_segment( + ui, + center - pos, + pos, + outer_start, + outer_end, + EmoticonType::COUNT, + hover_color, + ); pipe.user_data .events .push(EmoteWheelEvent::EmoticonSelected(emote)); @@ -158,9 +204,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m } // render tees in a radius around the inner circle - let mut start_pos = vec2::new(0.0, inner_start); let mut pos = vec2::new(0.0, inner_center); - let mut end_pos = vec2::new(0.0, inner_end); let center = rect.center(); let center = vec2::new(center.x, center.y); @@ -172,9 +216,7 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m std::slice::from_mut(pos), ) }; - start_rot(&mut start_pos); start_rot(&mut pos); - start_rot(&mut end_pos); for eye in TeeEye::iter().rev() { let rot = |pos: &mut vec2, scale: f32| { rotate( @@ -185,40 +227,26 @@ pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &m }; rot(&mut pos, 1.0); - rot(&mut start_pos, 1.0); - let mut start_p0 = start_pos; - let mut start_p1 = start_pos; - rot(&mut start_p0, 0.5); - rot(&mut start_p1, -0.5); - start_p0 += center; - start_p1 += center; - - rot(&mut end_pos, 1.0); - let mut end_p0 = end_pos; - let mut end_p1 = end_pos; - rot(&mut end_p0, -0.5); - rot(&mut end_p1, 0.5); - end_p0 += center; - end_p1 += center; - let center = center + pos; let size = radius(10.0); - let selected = { - let trapez = geo::Polygon::new( - vec![ - (start_p0.x, start_p0.y), - (start_p1.x, start_p1.y), - (end_p0.x, end_p0.y), - (end_p1.x, end_p1.y), - ] - .into_iter() - .map(geo::Point::from) - .collect(), - vec![], - ); - trapez.contains(&geo::Point::new(mouse.x as f32, mouse.y as f32)) - }; + let selected = is_mouse_in_wheel_segment( + dvec2::new(mouse.x, mouse.y), + center - pos, + pos, + inner_start, + inner_end, + TeeEye::COUNT, + ); if selected { + paint_wheel_segment( + ui, + center - pos, + pos, + inner_start, + inner_end, + TeeEye::COUNT, + hover_color, + ); pipe.user_data .events .push(EmoteWheelEvent::EyeSelected(eye)); diff --git a/game/client-ui/src/emote_wheel/mod.rs b/game/ingame-ui/src/emote_wheel/mod.rs similarity index 100% rename from game/client-ui/src/emote_wheel/mod.rs rename to game/ingame-ui/src/emote_wheel/mod.rs diff --git a/game/client-ui/src/emote_wheel/page.rs b/game/ingame-ui/src/emote_wheel/page.rs similarity index 100% rename from game/client-ui/src/emote_wheel/page.rs rename to game/ingame-ui/src/emote_wheel/page.rs diff --git a/game/client-ui/src/emote_wheel/user_data.rs b/game/ingame-ui/src/emote_wheel/user_data.rs similarity index 100% rename from game/client-ui/src/emote_wheel/user_data.rs rename to game/ingame-ui/src/emote_wheel/user_data.rs diff --git a/game/client-ui/src/hud/main_frame.rs b/game/ingame-ui/src/hud/main_frame.rs similarity index 99% rename from game/client-ui/src/hud/main_frame.rs rename to game/ingame-ui/src/hud/main_frame.rs index 0e310b32..28ff179b 100644 --- a/game/client-ui/src/hud/main_frame.rs +++ b/game/ingame-ui/src/hud/main_frame.rs @@ -25,7 +25,7 @@ use ui_base::{ types::{UiRenderPipe, UiState}, }; -use crate::utils::{render_tee_for_ui, render_texture_for_ui}; +use client_ui_utils::{render_tee_for_ui, render_texture_for_ui}; use super::user_data::UserData; diff --git a/game/client-ui/src/hud/mod.rs b/game/ingame-ui/src/hud/mod.rs similarity index 100% rename from game/client-ui/src/hud/mod.rs rename to game/ingame-ui/src/hud/mod.rs diff --git a/game/client-ui/src/hud/page.rs b/game/ingame-ui/src/hud/page.rs similarity index 100% rename from game/client-ui/src/hud/page.rs rename to game/ingame-ui/src/hud/page.rs diff --git a/game/client-ui/src/hud/user_data.rs b/game/ingame-ui/src/hud/user_data.rs similarity index 100% rename from game/client-ui/src/hud/user_data.rs rename to game/ingame-ui/src/hud/user_data.rs diff --git a/game/ingame-ui/src/lib.rs b/game/ingame-ui/src/lib.rs new file mode 100644 index 00000000..3eb61d04 --- /dev/null +++ b/game/ingame-ui/src/lib.rs @@ -0,0 +1,11 @@ +#![allow(clippy::too_many_arguments)] +#![allow(clippy::module_inception)] + +pub mod actionfeed; +pub mod chat; +pub mod emote_wheel; +pub mod hud; +pub mod motd; +pub mod scoreboard; +pub mod spectator_selection; +pub mod vote; diff --git a/game/client-ui/src/motd/main_frame.rs b/game/ingame-ui/src/motd/main_frame.rs similarity index 100% rename from game/client-ui/src/motd/main_frame.rs rename to game/ingame-ui/src/motd/main_frame.rs diff --git a/game/client-ui/src/motd/mod.rs b/game/ingame-ui/src/motd/mod.rs similarity index 100% rename from game/client-ui/src/motd/mod.rs rename to game/ingame-ui/src/motd/mod.rs diff --git a/game/client-ui/src/motd/page.rs b/game/ingame-ui/src/motd/page.rs similarity index 100% rename from game/client-ui/src/motd/page.rs rename to game/ingame-ui/src/motd/page.rs diff --git a/game/client-ui/src/motd/user_data.rs b/game/ingame-ui/src/motd/user_data.rs similarity index 100% rename from game/client-ui/src/motd/user_data.rs rename to game/ingame-ui/src/motd/user_data.rs diff --git a/game/client-ui/src/scoreboard/content/footer.rs b/game/ingame-ui/src/scoreboard/content/footer.rs similarity index 100% rename from game/client-ui/src/scoreboard/content/footer.rs rename to game/ingame-ui/src/scoreboard/content/footer.rs diff --git a/game/client-ui/src/scoreboard/content/list/definitions.rs b/game/ingame-ui/src/scoreboard/content/list/definitions.rs similarity index 100% rename from game/client-ui/src/scoreboard/content/list/definitions.rs rename to game/ingame-ui/src/scoreboard/content/list/definitions.rs diff --git a/game/client-ui/src/scoreboard/content/list/header.rs b/game/ingame-ui/src/scoreboard/content/list/header.rs similarity index 100% rename from game/client-ui/src/scoreboard/content/list/header.rs rename to game/ingame-ui/src/scoreboard/content/list/header.rs diff --git a/game/client-ui/src/scoreboard/content/list/list.rs b/game/ingame-ui/src/scoreboard/content/list/list.rs similarity index 100% rename from game/client-ui/src/scoreboard/content/list/list.rs rename to game/ingame-ui/src/scoreboard/content/list/list.rs diff --git a/game/client-ui/src/scoreboard/content/list/mod.rs b/game/ingame-ui/src/scoreboard/content/list/mod.rs similarity index 100% rename from game/client-ui/src/scoreboard/content/list/mod.rs rename to game/ingame-ui/src/scoreboard/content/list/mod.rs diff --git a/game/client-ui/src/scoreboard/content/list/player_list/entry.rs b/game/ingame-ui/src/scoreboard/content/list/player_list/entry.rs similarity index 96% rename from game/client-ui/src/scoreboard/content/list/player_list/entry.rs rename to game/ingame-ui/src/scoreboard/content/list/player_list/entry.rs index 63e82a2e..2b0cfc3c 100644 --- a/game/client-ui/src/scoreboard/content/list/player_list/entry.rs +++ b/game/ingame-ui/src/scoreboard/content/list/player_list/entry.rs @@ -15,15 +15,14 @@ use math::math::vector::vec2; use tracing::instrument; use ui_base::types::{UiRenderPipe, UiState}; -use crate::{ - scoreboard::{ - content::list::definitions::{ - TABLE_CONTENT_COLUMN_SPACING, TABLE_CONTENT_FONT_SIZES, TABLE_CONTENT_TEE_SIZES, - TABLE_CONTENT_WIDTH, TABLE_NAME_COLUMN_INDEX, - }, - user_data::UserData, +use client_ui_utils::{render_flag_for_ui, render_tee_for_ui}; + +use crate::scoreboard::{ + content::list::definitions::{ + TABLE_CONTENT_COLUMN_SPACING, TABLE_CONTENT_FONT_SIZES, TABLE_CONTENT_TEE_SIZES, + TABLE_CONTENT_WIDTH, TABLE_NAME_COLUMN_INDEX, }, - utils::{render_flag_for_ui, render_tee_for_ui}, + user_data::UserData, }; pub type RenderPlayer<'a> = (Option<&'a StageId>, &'a ScoreboardCharacterInfo); diff --git a/game/client-ui/src/scoreboard/content/list/player_list/frame.rs b/game/ingame-ui/src/scoreboard/content/list/player_list/frame.rs similarity index 100% rename from game/client-ui/src/scoreboard/content/list/player_list/frame.rs rename to game/ingame-ui/src/scoreboard/content/list/player_list/frame.rs diff --git a/game/client-ui/src/scoreboard/content/list/player_list/mod.rs b/game/ingame-ui/src/scoreboard/content/list/player_list/mod.rs similarity index 100% rename from game/client-ui/src/scoreboard/content/list/player_list/mod.rs rename to game/ingame-ui/src/scoreboard/content/list/player_list/mod.rs diff --git a/game/client-ui/src/scoreboard/content/main_frame.rs b/game/ingame-ui/src/scoreboard/content/main_frame.rs similarity index 100% rename from game/client-ui/src/scoreboard/content/main_frame.rs rename to game/ingame-ui/src/scoreboard/content/main_frame.rs diff --git a/game/client-ui/src/scoreboard/content/mod.rs b/game/ingame-ui/src/scoreboard/content/mod.rs similarity index 100% rename from game/client-ui/src/scoreboard/content/mod.rs rename to game/ingame-ui/src/scoreboard/content/mod.rs diff --git a/game/client-ui/src/scoreboard/content/topbar.rs b/game/ingame-ui/src/scoreboard/content/topbar.rs similarity index 100% rename from game/client-ui/src/scoreboard/content/topbar.rs rename to game/ingame-ui/src/scoreboard/content/topbar.rs diff --git a/game/client-ui/src/scoreboard/main_frame.rs b/game/ingame-ui/src/scoreboard/main_frame.rs similarity index 100% rename from game/client-ui/src/scoreboard/main_frame.rs rename to game/ingame-ui/src/scoreboard/main_frame.rs diff --git a/game/client-ui/src/scoreboard/mod.rs b/game/ingame-ui/src/scoreboard/mod.rs similarity index 100% rename from game/client-ui/src/scoreboard/mod.rs rename to game/ingame-ui/src/scoreboard/mod.rs diff --git a/game/client-ui/src/scoreboard/page.rs b/game/ingame-ui/src/scoreboard/page.rs similarity index 100% rename from game/client-ui/src/scoreboard/page.rs rename to game/ingame-ui/src/scoreboard/page.rs diff --git a/game/client-ui/src/scoreboard/user_data.rs b/game/ingame-ui/src/scoreboard/user_data.rs similarity index 100% rename from game/client-ui/src/scoreboard/user_data.rs rename to game/ingame-ui/src/scoreboard/user_data.rs diff --git a/game/client-ui/src/spectator_selection/main_frame.rs b/game/ingame-ui/src/spectator_selection/main_frame.rs similarity index 99% rename from game/client-ui/src/spectator_selection/main_frame.rs rename to game/ingame-ui/src/spectator_selection/main_frame.rs index 3be00614..a391a330 100644 --- a/game/client-ui/src/spectator_selection/main_frame.rs +++ b/game/ingame-ui/src/spectator_selection/main_frame.rs @@ -11,7 +11,7 @@ use ui_base::{ utils::add_margins, }; -use crate::utils::render_tee_for_ui; +use client_ui_utils::render_tee_for_ui; use super::user_data::{SpectatorSelectionEvent, UserData}; diff --git a/game/client-ui/src/spectator_selection/mod.rs b/game/ingame-ui/src/spectator_selection/mod.rs similarity index 100% rename from game/client-ui/src/spectator_selection/mod.rs rename to game/ingame-ui/src/spectator_selection/mod.rs diff --git a/game/client-ui/src/spectator_selection/page.rs b/game/ingame-ui/src/spectator_selection/page.rs similarity index 100% rename from game/client-ui/src/spectator_selection/page.rs rename to game/ingame-ui/src/spectator_selection/page.rs diff --git a/game/client-ui/src/spectator_selection/user_data.rs b/game/ingame-ui/src/spectator_selection/user_data.rs similarity index 100% rename from game/client-ui/src/spectator_selection/user_data.rs rename to game/ingame-ui/src/spectator_selection/user_data.rs diff --git a/game/client-ui/src/vote/main_frame.rs b/game/ingame-ui/src/vote/main_frame.rs similarity index 96% rename from game/client-ui/src/vote/main_frame.rs rename to game/ingame-ui/src/vote/main_frame.rs index 6ef13202..2eaf930d 100644 --- a/game/client-ui/src/vote/main_frame.rs +++ b/game/ingame-ui/src/vote/main_frame.rs @@ -5,7 +5,10 @@ use egui::{ Align2, Color32, CornerRadius, FontId, Frame, Grid, Rect, RichText, Shadow, Stroke, UiBuilder, pos2, vec2, }; -use game_interface::{types::render::character::TeeEye, votes::Voted}; +use game_interface::{ + types::render::character::TeeEye, + votes::{MapDifficulty, Voted}, +}; use math::math::vector::vec2; use tracing::instrument; use ui_base::{ @@ -13,14 +16,29 @@ use ui_base::{ utils::get_margin, }; -use crate::{ - ingame_menu::call_vote::map::stars_text, - utils::{render_tee_for_ui, render_texture_for_ui}, - vote::user_data::VoteRenderData, -}; +use client_ui_utils::{render_tee_for_ui, render_texture_for_ui}; + +use crate::vote::user_data::VoteRenderData; use super::user_data::{UserData, VoteRenderType}; +fn stars_text(diff: MapDifficulty) -> String { + let mut stars = String::new(); + let mut added_stars = 0; + for _ in 0..diff.get() / 2 { + stars.push('\u{f005}'); + added_stars += 1; + } + if !diff.get().is_multiple_of(2) { + stars.push('\u{f5c0}'); + added_stars += 1; + } + for _ in 0..5u32.saturating_sub(added_stars) { + stars.push('☆'); + } + stars +} + /// not required #[instrument(level = "trace", skip_all)] pub fn render(ui: &mut egui::Ui, pipe: &mut UiRenderPipe, ui_state: &mut UiState) { diff --git a/game/client-ui/src/vote/mod.rs b/game/ingame-ui/src/vote/mod.rs similarity index 100% rename from game/client-ui/src/vote/mod.rs rename to game/ingame-ui/src/vote/mod.rs diff --git a/game/client-ui/src/vote/page.rs b/game/ingame-ui/src/vote/page.rs similarity index 100% rename from game/client-ui/src/vote/page.rs rename to game/ingame-ui/src/vote/page.rs diff --git a/game/client-ui/src/vote/user_data.rs b/game/ingame-ui/src/vote/user_data.rs similarity index 96% rename from game/client-ui/src/vote/user_data.rs rename to game/ingame-ui/src/vote/user_data.rs index ba36231c..d8ba1064 100644 --- a/game/client-ui/src/vote/user_data.rs +++ b/game/ingame-ui/src/vote/user_data.rs @@ -14,7 +14,7 @@ use graphics::handles::{ canvas::canvas::GraphicsCanvasHandle, stream::stream::GraphicsStreamHandle, }; -use crate::thumbnail_container::ThumbnailContainer; +use client_ui_utils::thumbnail_container::ThumbnailContainer; #[derive(Debug, Clone, Copy)] pub struct VoteRenderPlayer<'a> { diff --git a/game/legacy-map/Cargo.toml b/game/legacy-map/Cargo.toml index 472b720c..5a4e100c 100644 --- a/game/legacy-map/Cargo.toml +++ b/game/legacy-map/Cargo.toml @@ -16,15 +16,15 @@ math = { path = "../../lib/math" } map = { path = "../map" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -flate2 = "1.1.5" +anyhow = { version = "1", features = ["backtrace"] } +flate2 = "1" hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", ] } -itertools = "0.14.0" -num-derive = "0.4.2" -num-traits = "0.2.19" -rayon = "1.11.0" -serde = { version = "1.0.228", features = ["derive"] } -time = { version = "0.3.44", features = ["serde"] } +itertools = "0.14" +num-derive = "0.4" +num-traits = "0.2" +rayon = "1" +serde = { version = "1", features = ["derive"] } +time = { version = "0.3", features = ["serde"] } diff --git a/game/legacy-proxy/Cargo.toml b/game/legacy-proxy/Cargo.toml index da901bd4..df273d33 100644 --- a/game/legacy-proxy/Cargo.toml +++ b/game/legacy-proxy/Cargo.toml @@ -19,6 +19,7 @@ game-server = { path = "../game-server" } legacy-map = { path = "../legacy-map" } map = { path = "../map" } master-server-types = { path = "../master-server-types" } +tile-map-collision = { path = "../tile-map-collision" } vanilla = { path = "../vanilla" } libtw2-gamenet-ddnet = { git = "https://github.com/Jupeyy/libtw2.git", rev = "0b6b1b7533dc00c48483dca51eedf04656efb66d" } @@ -26,25 +27,25 @@ libtw2-net = { git = "https://github.com/Jupeyy/libtw2.git", rev = "0b6b1b7533dc libtw2-packer = { git = "https://github.com/Jupeyy/libtw2.git", rev = "0b6b1b7533dc00c48483dca51eedf04656efb66d" } libtw2-snapshot = { git = "https://github.com/Jupeyy/libtw2.git", rev = "0b6b1b7533dc00c48483dca51eedf04656efb66d" } -anyhow = { version = "1.0.100", features = ["backtrace"] } +anyhow = { version = "1", features = ["backtrace"] } # stuck for compat with libtw2 arrayvec = "=0.5.2" # stuck for compat with libtw2 uuid = "=0.8.2" -bincode = { version = "2.0.1", features = ["serde"] } -hexdump = "0.1.2" -rand = { version = "0.9.2", features = ["thread_rng"] } -sha2 = "0.10.9" -serde_json = "1.0.145" +bincode = { version = "2", features = ["serde"] } +hexdump = "0.1" +rand = { version = "0.10", features = ["thread_rng"] } +sha2 = "0.11" +serde_json = "1" -futures = "0.3.31" -log = "0.4.28" -rayon = "1.11.0" -tokio = { version = "1.48.0", features = [ +futures = "0.3" +log = "0.4" +rayon = "1" +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "fs", "time", "macros", ] } -warn = "0.2.2" +warn = "0.2" diff --git a/game/legacy-proxy/src/lib.rs b/game/legacy-proxy/src/lib.rs index 196c8dcb..ae2c06ef 100644 --- a/game/legacy-proxy/src/lib.rs +++ b/game/legacy-proxy/src/lib.rs @@ -132,8 +132,8 @@ use pool::{ rc::PoolRc, traits::Recyclable, }; -use projectile::get_pos; -use rand::RngCore; +use projectile::{get_pos, get_vel}; +use rand::Rng as _; use sha2::Digest; use socket::Socket; use std::{ @@ -147,9 +147,10 @@ use std::{ sync::{Arc, atomic::AtomicBool}, time::Duration, }; +use tile_map_collision::collision::{Collision, Tunings}; use tokio::sync::Notify; use vanilla::{ - collision::collision::{Collision, Tunings}, + collision::DEFAULT_TICKS_PER_SECOND, config::config::{ConfigGameType, ConfigVanilla}, entities::{ character::{ @@ -1140,7 +1141,7 @@ impl Client { SnapshotProjectile { core: ProjectileCore { pos: cur_pos, - vel, + vel: get_vel(now, start_tick, vel, speed, curvature), life_span: 100, damage: 0, force: 0.0, @@ -1488,7 +1489,7 @@ impl Client { }, } }; - let hooked_char = if matches!( + let mut hooked_char = if matches!( hook, Hook::Active { hook_state: HookState::HookGrabbed, @@ -1659,9 +1660,18 @@ impl Client { ); let mut fake_pos = field.get_character_pos(pos, char_id); let hooks = HookedCharacters::default(); + let _fake_hooked_char = + hooked_char.map(|hooked_char| hooks.get_new_hook(hooked_char)); let mut fake_hook = hooks.get_new_hook(char_id); fake_hook.set(hook, hooked_char); - struct FakeCharacters; + struct FakeCharacters { + hooked_char: Option<( + CharacterId, + Core, + CoreReusable, + vanilla::entities::character::pos::character_pos::CharacterPos, + )>, + } impl SimulationPipeCharactersGetter for FakeCharacters { fn for_other_characters_in_range_mut( &mut self, @@ -1675,22 +1685,33 @@ impl Client { fn get_other_character_id_and_cores_iter_by_ids_mut( &mut self, - _ids: &[CharacterId], - _for_each_func: &mut dyn FnMut( + ids: &[CharacterId], + for_each_func: &mut dyn FnMut( &CharacterId, &mut Core, &mut CoreReusable, &mut vanilla::entities::character::pos::character_pos::CharacterPos, ) -> std::ops::ControlFlow<()>, ) -> std::ops::ControlFlow<()> { + if let Some((hooked_char, core, reusable_core, pos)) = + &mut self.hooked_char + && ids.contains(hooked_char) + { + return for_each_func(hooked_char, core, reusable_core, pos); + } std::ops::ControlFlow::Continue(()) } fn get_other_character_pos_by_id( &self, - _other_char_id: &CharacterId, + other_char_id: &CharacterId, ) -> &vec2 { - unreachable!() + self.hooked_char + .as_ref() + .and_then(|(hooked_char, _, _, pos)| { + (hooked_char == other_char_id).then_some(pos.pos()) + }) + .unwrap() } fn get_other_character_by_id_mut( @@ -1701,6 +1722,21 @@ impl Client { unreachable!() } } + let fake_hook_pos = if let Hook::Active { hook_pos, .. } = hook { + hook_pos + } else { + pos + }; + let mut fake_characters = FakeCharacters { + hooked_char: hooked_char.map(|hooked_char| { + ( + hooked_char, + Core::default(), + CoreReusable::new(), + field.get_character_pos(fake_hook_pos, hooked_char), + ) + }), + }; let mut inp = None; if char_tick <= 0 { @@ -1732,7 +1768,7 @@ impl Client { use_inp, true, &mut CorePipe { - characters: &mut FakeCharacters, + characters: &mut fake_characters, input: &inp, }, collision, @@ -1744,7 +1780,7 @@ impl Client { core.physics_move( &mut fake_pos, &mut CorePipe { - characters: &mut FakeCharacters, + characters: &mut fake_characters, input: &inp, }, collision, @@ -1754,7 +1790,7 @@ impl Client { } pos = *fake_pos.pos(); - hook = fake_hook.get().0; + (hook, hooked_char) = fake_hook.get(); } let attack_recoil = if character.attack_tick > 0 { let recoil_ticks_passed = tick.saturating_sub(character.attack_tick); @@ -4985,7 +5021,8 @@ impl Client { ) .unwrap(); - let new_collision = Collision::new(phy_group, true).unwrap(); + let new_collision = + Collision::new(phy_group, true, DEFAULT_TICKS_PER_SECOND).unwrap(); self.log.log("Client proxy prepares map collision"); self.collisions = Some(new_collision); diff --git a/game/legacy-proxy/src/socket.rs b/game/legacy-proxy/src/socket.rs index 406a16c5..c1961377 100644 --- a/game/legacy-proxy/src/socket.rs +++ b/game/legacy-proxy/src/socket.rs @@ -2,7 +2,7 @@ use anyhow::anyhow; use base_io::{io::Io, runtime::IoRuntimeTask}; use futures::FutureExt; use libtw2_net::{Timestamp, net::Callback}; -use rand::RngCore as _; +use rand::Rng; use std::{error, fmt, future, io, net::SocketAddr, sync::Arc, time::Instant}; use tokio::{ net::UdpSocket, diff --git a/game/map-convert-lib/Cargo.toml b/game/map-convert-lib/Cargo.toml index 5cc65487..ed53ad34 100644 --- a/game/map-convert-lib/Cargo.toml +++ b/game/map-convert-lib/Cargo.toml @@ -12,16 +12,16 @@ base-io = { path = "../../lib/base-io" } legacy-map = { path = "../../game/legacy-map" } map = { path = "../../game/map" } -anyhow = { version = "1.0.100", features = ["backtrace"] } +anyhow = { version = "1", features = ["backtrace"] } ogg-opus = { git = "https://github.com/Jupeyy/ogg-opus.git", branch = "ddnet-rs" } -oxipng = { version = "9.1", features = ["parallel"], default-features = false } -rayon = "1.11.0" -vorbis_rs = { version = "0.5.5", default-features = false } +oxipng = { version = "10.1", features = ["parallel"], default-features = false } +rayon = "1" +vorbis_rs = { version = "0.5", default-features = false } [dev-dependencies] base-fs = { path = "../../lib/base-fs" } base-io = { path = "../../lib/base-io" } difference = "2.0" -rustc-hash = "2.1.1" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" +rustc-hash = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" diff --git a/game/map/Cargo.toml b/game/map/Cargo.toml index 9c69d57c..b051a08a 100644 --- a/game/map/Cargo.toml +++ b/game/map/Cargo.toml @@ -20,32 +20,39 @@ hiarc = { path = "../../lib/hiarc", features = [ image-utils = { path = "../../lib/image-utils" } math = { path = "../../lib/math" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -bincode = { features = ["serde"], version = "2.0.1" } -bitflags = { version = "2.10.0", features = ["serde"] } -fixed = "1.29.0" +anyhow = { version = "1", features = ["backtrace"] } +bincode = { version = "2", features = ["serde"] } +bitflags = { version = "2", features = ["serde"] } +fixed = "1" hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", ] } -is_sorted = "0.1.1" -rayon = "1.11.0" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -serde_with = "3.15.1" -time = { version = "0.3.44", features = ["serde"] } +is_sorted = "0.1" +rayon = "1" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +serde_with = "3" +time = { version = "0.3", features = ["serde"] } +tracing = { version = "0.1", default-features = false, features = [ + "attributes", +] } zstd = { version = "0.13", default-features = false, features = [ "experimental", "zdict_builder", ] } -ruzstd = { version = "0.8.2", optional = true } +ruzstd = { version = "0.8", optional = true } [dev-dependencies] base-fs = { path = "../../lib/base-fs" } base-io = { path = "../../lib/base-io" } -brotli = "8.0.2" +bitcode = { version = "0.6", default-features = false, features = [ + "serde", + "std", +] } +brotli = "8" difference = "2.0" #rust-lzma = "0.6.0" -flate2 = "1.1.5" -lz4_flex = { version = "0.11" } +flate2 = "1" +lz4_flex = { version = "0.13" } diff --git a/game/map/src/lib.rs b/game/map/src/lib.rs index 6141cf77..1388eb17 100644 --- a/game/map/src/lib.rs +++ b/game/map/src/lib.rs @@ -11,11 +11,12 @@ pub mod utils; #[cfg(test)] mod test { use std::{ + hint::black_box, io::{Read, Write}, sync::Arc, }; - use base::benchmark::Benchmark; + use base::benchmark::{Benchmark, global_init}; use base_fs::filesys::FileSystem; use base_io::io::IoFileSys; use flate2::Compression; @@ -55,17 +56,23 @@ mod test { let map = map_legacy.get().unwrap(); let benchmark = Benchmark::new(true); - let groups_encoded = - bincode::serde::encode_to_vec(map.groups.foreground, bincode::config::standard()) - .unwrap(); + let groups_encoded = black_box( + bincode::serde::encode_to_vec(&map.groups.foreground, bincode::config::standard()) + .unwrap(), + ); benchmark.bench("encoding (bincode)"); - let _ = bincode::serde::decode_from_slice::, _>( + let _ = black_box(bincode::serde::decode_from_slice::, _>( &groups_encoded, bincode::config::standard(), - ); + )); benchmark.bench("decode (bincode)"); - fn compression_of_group(groups_encoded: Vec, benchmark: &Benchmark) { + let groups_encoded_bitcode = black_box(bitcode::serialize(&map.groups.foreground).unwrap()); + benchmark.bench("encoding (bitcode serde)"); + let _: Vec = black_box(bitcode::deserialize(&groups_encoded_bitcode).unwrap()); + benchmark.bench("decode (bitcode serde)"); + + fn compression_of_group(name: &str, groups_encoded: Vec, benchmark: &Benchmark) { let mut writer: Vec = Default::default(); flate2::write::DeflateEncoder::new(&mut writer, Compression::default()) .write_all(&groups_encoded) @@ -185,7 +192,7 @@ mod test { benchmark.bench("zstd decompress"); println!( - "uncompressed: {}, deflate: {} - {}, gz: {} - {}, zlib: {} - {}, lz4: {}, brotli: {} - {} - {} - {}, zstd: {} - {}", + "{name}: uncompressed: {}, deflate: {} - {}, gz: {} - {}, zlib: {} - {}, lz4: {}, brotli: {} - {} - {} - {}, zstd: {} - {}", groups_encoded.len(), len_deflate_default, len_deflate_best, @@ -202,13 +209,15 @@ mod test { len_zstd_best, ); } - compression_of_group(groups_encoded, &benchmark); + compression_of_group("bincode", groups_encoded, &benchmark); + compression_of_group("bitcode serde", groups_encoded_bitcode, &benchmark); } /// some tests to evaluate best compression #[test] fn compression_tests() { - //compression_tests_for_map("ctf1"); - compression_tests_for_map("arctic"); + global_init(None); + compression_tests_for_map("ctf1"); + //compression_tests_for_map("arctic"); } } diff --git a/game/map/src/map.rs b/game/map/src/map.rs index 833c28c1..2a0286ee 100644 --- a/game/map/src/map.rs +++ b/game/map/src/map.rs @@ -21,6 +21,7 @@ use hiarc::Hiarc; pub use image_utils::png::PngValidatorOptions; use image_utils::png::is_png_image_valid; use serde::{Deserialize, Serialize}; +use tracing::instrument; use crate::{ file::MapFileReader, @@ -225,6 +226,7 @@ impl Map { } /// All maps that the client knows MUST be of type "twmap", even if the version changes etc. + #[instrument(level = "trace", skip_all)] pub fn read_twmap_header(reader: &MapFileReader) -> anyhow::Result
{ let file = tar_entry_to_file( reader @@ -318,6 +320,7 @@ impl Map { /// Read only the physics group and the config (skips all other stuff). /// /// This is usually nice to use on the server. + #[instrument(level = "trace", skip_all)] pub fn read_physics_group_and_config( reader: &MapFileReader, ) -> anyhow::Result<(MapGroupPhysics, Config)> { @@ -337,6 +340,7 @@ impl Map { /// Read a map file, whos resources were already loaded (the file header was read/checked too). /// See [`Map::read_resources_and_header`] + #[instrument(level = "trace", skip_all)] pub fn read_with_resources( resources: Resources, reader: &MapFileReader, diff --git a/game/map/src/map/groups.rs b/game/map/src/map/groups.rs index 07cf458c..ece3a17c 100644 --- a/game/map/src/map/groups.rs +++ b/game/map/src/map/groups.rs @@ -8,6 +8,7 @@ use base::join_all; use hiarc::Hiarc; use math::math::vector::{ffixed, fvec2, ufvec2}; use serde::{Deserialize, Serialize}; +use tracing::instrument; use crate::{ file::MapFileReader, @@ -207,6 +208,7 @@ pub struct MapGroups { impl MapGroups { /// Deserializes the physics group + #[instrument(level = "trace", skip_all)] pub fn deserialize_physics_group(uncompressed_file: &[u8]) -> anyhow::Result { deserialize_twmap_bincode::(uncompressed_file) } @@ -220,6 +222,7 @@ impl MapGroups { } /// Decompresses the physics group + #[instrument(level = "trace", skip_all)] pub fn decompress_physics_group(file: &[u8]) -> anyhow::Result> { crate::utils::decompress(file) } @@ -229,6 +232,7 @@ impl MapGroups { crate::utils::compress(uncompressed_file) } + #[instrument(level = "trace", skip_all)] fn deserialize_design_groups(uncompressed_file: &[u8]) -> anyhow::Result> { deserialize_twmap_bincode::>(uncompressed_file) } @@ -241,6 +245,7 @@ impl MapGroups { } /// Deserializes the foreground groups + #[instrument(level = "trace", skip_all)] pub(crate) fn deserialize_foreground_groups( uncompressed_file: &[u8], ) -> anyhow::Result> { @@ -256,6 +261,7 @@ impl MapGroups { } /// Deserializes the background groups + #[instrument(level = "trace", skip_all)] pub(crate) fn deserialize_background_groups( uncompressed_file: &[u8], ) -> anyhow::Result> { @@ -271,6 +277,7 @@ impl MapGroups { } /// Decompresses the background & foreground groups + #[instrument(level = "trace", skip_all)] pub fn decompress_design_group(file: &[u8]) -> anyhow::Result> { crate::utils::decompress(file) } @@ -330,6 +337,7 @@ impl MapGroups { } /// Returns the physics group + #[instrument(level = "trace", skip_all)] pub fn read_physics_group(reader: &MapFileReader) -> anyhow::Result { let physics_file = tar_entry_to_file( reader diff --git a/game/master-server-types/Cargo.toml b/game/master-server-types/Cargo.toml index fbe2bedf..2449a746 100644 --- a/game/master-server-types/Cargo.toml +++ b/game/master-server-types/Cargo.toml @@ -8,15 +8,15 @@ license = "Zlib" [dependencies] arrayvec = { version = "=0.5.2", features = ["serde"] } -csv = "1.4.0" +csv = "1" http = "=0.2.12" -ipnet = { version = "2.11.0", features = ["serde"] } -serde = { version = "1.0.228", features = ["derive"] } -serde_json = { version = "1.0.145", features = [ +ipnet = { version = "2", features = ["serde"] } +serde = { version = "1", features = ["derive"] } +serde_json = { version = "1", features = [ "float_roundtrip", "preserve_order", "raw_value", ] } -url = { version = "2.5.7", features = ["serde"] } +url = { version = "2", features = ["serde"] } -serde_with = "3.15.1" +serde_with = "3" diff --git a/game/prediction-timer/Cargo.toml b/game/prediction-timer/Cargo.toml index c6874c4c..21adeb9a 100644 --- a/game/prediction-timer/Cargo.toml +++ b/game/prediction-timer/Cargo.toml @@ -6,10 +6,10 @@ edition = "2024" [dependencies] math = { path = "../../lib/math" } -tracing = { version = "0.1.41", default-features = false, features = [ +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } [dev-dependencies] -rgb = "0.8.52" -textplots = "0.8.7" +rgb = "0.8" +textplots = "0.8" diff --git a/game/render-game-wasm/Cargo.toml b/game/render-game-wasm/Cargo.toml index 3d27957a..6806750c 100644 --- a/game/render-game-wasm/Cargo.toml +++ b/game/render-game-wasm/Cargo.toml @@ -24,12 +24,12 @@ client-render-game = { path = "../client-render-game" } game-config = { path = "../game-config" } game-interface = { path = "../game-interface" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -rayon = "1.11.0" -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +rayon = "1" +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -wasmer = { version = "6.1.0", default-features = false, features = [ +wasmer = { version = "7", default-features = false, features = [ "sys", "cranelift", ] } diff --git a/game/tile-map-collision/Cargo.toml b/game/tile-map-collision/Cargo.toml new file mode 100644 index 00000000..babbfd9a --- /dev/null +++ b/game/tile-map-collision/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "tile-map-collision" +version = "0.1.0" +edition = "2024" + +[dependencies] +game-interface = { path = "../game-interface" } +legacy-map = { path = "../legacy-map" } +map = { path = "../map" } + +config = { path = "../../lib/config" } +hiarc = { path = "../../lib/hiarc", features = ["derive"] } +math = { path = "../../lib/math" } + +anyhow = { version = "1", features = ["backtrace"] } +bitflags = { version = "2", features = ["serde"] } +log = "0.4" +rustc-hash = "2" +serde = { version = "1", features = ["derive"] } diff --git a/game/vanilla/src/collision.rs b/game/tile-map-collision/src/lib.rs similarity index 96% rename from game/vanilla/src/collision.rs rename to game/tile-map-collision/src/lib.rs index 9af6e3f0..fcf681c6 100644 --- a/game/vanilla/src/collision.rs +++ b/game/tile-map-collision/src/lib.rs @@ -2,6 +2,7 @@ pub mod collision { use anyhow::anyhow; use bitflags::bitflags; use config::{ConfigInterface, traits::ConfigInterface}; + use game_interface::types::game::GameTickType; use hiarc::Hiarc; use legacy_map::mapdef_06::DdraceTileNum; use map::map::groups::{ @@ -22,7 +23,7 @@ pub mod collision { vector::{ivec2, vec2}, }; - use crate::state::state::TICKS_PER_SECOND; + pub const DEFAULT_TICKS_PER_SECOND: GameTickType = 50; #[derive(Debug, Hiarc, Copy, Clone, Serialize, Deserialize, ConfigInterface)] pub struct Tunings { @@ -77,11 +78,11 @@ pub mod collision { fn default() -> Self { Self { ground_control_speed: 10.0, - ground_control_accel: 100.0 / TICKS_PER_SECOND as f32, + ground_control_accel: 100.0 / DEFAULT_TICKS_PER_SECOND as f32, ground_friction: 0.5, ground_jump_impulse: 13.2, air_jump_impulse: 12.0, - air_control_speed: 250.0 / TICKS_PER_SECOND as f32, + air_control_speed: 250.0 / DEFAULT_TICKS_PER_SECOND as f32, air_control_accel: 1.5, air_friction: 0.95, hook_length: 380.0, @@ -113,7 +114,7 @@ pub mod collision { shotgun_strength: 10.0, explosion_strength: 6.0, hammer_strength: 1.0, - hook_duration: 1.25, + hook_duration: 1.2, hammer_fire_delay: 125.0, gun_fire_delay: 125.0, shotgun_fire_delay: 500.0, @@ -126,7 +127,15 @@ pub mod collision { } impl Tunings { - pub fn race_default() -> Self { + pub fn vanilla_default(ticks_per_second: GameTickType) -> Self { + Self { + ground_control_accel: 100.0 / ticks_per_second as f32, + air_control_speed: 250.0 / ticks_per_second as f32, + ..Default::default() + } + } + + pub fn race_default(ticks_per_second: GameTickType) -> Self { Self { gun_curvature: 0.0, gun_speed: 1400.0, @@ -134,7 +143,7 @@ pub mod collision { shotgun_speed: 500.0, shotgun_speeddiff: 0.0, laser_bounce_num: 1000.0, - ..Default::default() + ..Self::vanilla_default(ticks_per_second) } } } @@ -193,7 +202,7 @@ pub mod collision { width: u32, height: u32, - pub(crate) tune_zones: [Tunings; u8::MAX as usize + 1], + tune_zones: [Tunings; u8::MAX as usize + 1], } // TODO: use u8 or an enum for tile indices, instead of i32 @@ -201,8 +210,13 @@ pub mod collision { pub fn new( physics_group: MapGroupPhysics, load_all_layers: bool, + ticks_per_second: GameTickType, ) -> anyhow::Result> { - Self::with_default_tune(physics_group, load_all_layers, Tunings::default()) + Self::with_default_tune( + physics_group, + load_all_layers, + Tunings::vanilla_default(ticks_per_second), + ) } pub fn with_default_tune( @@ -995,5 +1009,17 @@ pub mod collision { let tune_tile = &self.tune_tiles[self.tile_indexf(pos.x, pos.y)]; &self.tune_zones[tune_tile.number as usize] } + + pub fn tune_0_mut_for_cheats(&mut self) -> &mut Tunings { + &mut self.tune_zones[0] + } + + pub fn tune_0_for_snapshots(&self) -> Tunings { + self.tune_zones[0] + } + + pub fn tune_0_mut_for_snapshots(&mut self) -> &mut Tunings { + &mut self.tune_zones[0] + } } } diff --git a/game/vanilla/Cargo.toml b/game/vanilla/Cargo.toml index c9f3ed66..f97f8f39 100644 --- a/game/vanilla/Cargo.toml +++ b/game/vanilla/Cargo.toml @@ -8,6 +8,7 @@ game-base = { path = "../game-base" } game-interface = { path = "../game-interface" } legacy-map = { path = "../legacy-map" } map = { path = "../map" } +tile-map-collision = { path = "../tile-map-collision" } base = { path = "../../lib/base" } base-io = { path = "../../lib/base-io" } @@ -22,24 +23,26 @@ hiarc = { path = "../../lib/hiarc", features = [ math = { path = "../../lib/math" } pool = { path = "../../lib/pool", features = ["enable_hiarc"] } -ddnet-accounts-types = { version = "0.1.0" } +ddnet-accounts-types = { version = "0.2" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -bincode = { features = ["serde"], version = "2.0.1" } -bitflags = { version = "2.10.0", features = ["serde"] } -chrono = { version = "0.4.42", default-features = false, features = ["serde"] } +anyhow = { version = "1", features = ["backtrace"] } +bincode = { version = "2", features = ["serde"] } +chrono = { version = "0.4", default-features = false, features = ["serde"] } hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", ] } -log = "0.4.28" -num = "0.4.3" -num-derive = "0.4.2" -num-traits = "0.2.19" -rustc-hash = "2.1.1" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -thiserror = "2.0.17" +log = "0.4" +num = "0.4" +num-derive = "0.4" +num-traits = "0.2" +rustc-hash = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +thiserror = "2" +tracing = { version = "0.1", default-features = false, features = [ + "attributes", +] } [dev-dependencies] map = { path = "../map", features = ["rust_zstd"] } diff --git a/game/vanilla/src/entities/character.rs b/game/vanilla/src/entities/character.rs index 4393edf1..9a8c80c4 100644 --- a/game/vanilla/src/entities/character.rs +++ b/game/vanilla/src/entities/character.rs @@ -11,6 +11,7 @@ pub mod character { num::{NonZeroI64, NonZeroU64}, }; + use crate::collision::{Collision, CollisionTile, CollisionTypes, HitTile}; use crate::{ reusable::{CloneWithCopyableElements, ReusableCore}, weapons::definitions::weapon_def::{WeaponUpgrade, WeaponUpgradePool}, @@ -60,7 +61,6 @@ pub mod character { score::character_score::{CharacterScore, CharacterScores}, }; use crate::{ - collision::collision::{Collision, CollisionTile, CollisionTypes, HitTile}, config::config::ConfigGameType, entities::entity::entity::{DropMode, Entity, EntityInterface, EntityTickResult}, events::events::{CharacterDespawnType, CharacterEvent, CharacterTickEvent}, @@ -1386,6 +1386,34 @@ pub mod character { .contains_key(&CharacterDebuff::LiveFrozen) } + fn active_weapon_has_upgrade(&self, upgrade: WeaponUpgrade) -> bool { + self.reusable_core + .weapons + .get(&self.core.active_weapon) + .is_some_and(|weapon| weapon.upgrades.contains(&upgrade)) + } + + fn handle_jetpack(&mut self, pipe: &SimulationPipeCharacter) { + if self.core.active_weapon != WeaponType::Gun + || !self.active_weapon_has_upgrade(WeaponUpgrade::Jetpack) + || !*self.core.input.state.fire + { + return; + } + + let Some(weapon) = self.reusable_core.weapons.get(&self.core.active_weapon) else { + return; + }; + if weapon.cur_ammo.is_some_and(|ammo| ammo == 0) { + return; + } + + let cursor = self.core.input.cursor.to_vec2(); + let direction = normalize(&vec2::new(cursor.x as f32, cursor.y as f32)); + let tuning = pipe.collision.get_tune_at(self.pos.pos()); + self.core.core.vel += direction * (-tuning.jetpack_strength / 100.0 / 6.11); + } + fn fire_weapon( &mut self, pipe: &mut SimulationPipeCharacter, @@ -1401,7 +1429,11 @@ pub mod character { return; } - let full_auto = self.core.active_weapon == WeaponType::Grenade + let has_jetpack = self.core.active_weapon == WeaponType::Gun + && self.active_weapon_has_upgrade(WeaponUpgrade::Jetpack); + + let full_auto = has_jetpack + || self.core.active_weapon == WeaponType::Grenade || self.core.active_weapon == WeaponType::Shotgun || self.core.active_weapon == WeaponType::Puller || self.core.active_weapon == WeaponType::Laser; @@ -1845,6 +1877,8 @@ pub mod character { return; } + self.handle_jetpack(pipe); + // check reload timer if self.core.attack_recoil.is_some() { return; @@ -2009,6 +2043,10 @@ pub mod character { core.vel = Core::clamp_vel(core.move_restrictions, &core.vel); } + + fn refresh_move_restrictions(&mut self, collision: &Collision) { + self.core.core.move_restrictions = collision.get_move_restrictions(self.pos.pos()); + } } impl EntityInterface> @@ -2074,9 +2112,11 @@ pub mod character { return EntityTickResult::RemoveEntity; } + self.refresh_move_restrictions(pipe.collision); self.apply_move_restrictions(); self.handle_buffs_and_debuffs(pipe); self.handle_weapons(pipe); + self.apply_move_restrictions(); self.post_ddrace_tick(); diff --git a/game/vanilla/src/entities/character/core.rs b/game/vanilla/src/entities/character/core.rs index 8a8b5c1d..fd89c83b 100644 --- a/game/vanilla/src/entities/character/core.rs +++ b/game/vanilla/src/entities/character/core.rs @@ -1,6 +1,7 @@ pub mod character_core { use std::ops::{AddAssign, ControlFlow}; + use crate::collision::{Collision, CollisionTile, CollisionTypes}; use crate::reusable::{CloneWithCopyableElements, ReusableCore}; use game_interface::{ events::{ @@ -19,7 +20,6 @@ pub mod character_core { use num::FromPrimitive; use crate::{ - collision::collision::{Collision, CollisionTile, CollisionTypes}, entities::character::{ character::{Characters, CharactersView}, hook::character_hook::{CharacterHook, Hook, HookState}, @@ -572,7 +572,7 @@ pub mod character_core { } } - // release hook (max default hook time is 1.25 s) + // release hook (max default hook time is 1.2s + 1 tick for default tunings) *hook_tick += 1; if hooked_char.is_some() { let hook_duration = diff --git a/game/vanilla/src/entities/ddrace_entity.rs b/game/vanilla/src/entities/ddrace_entity.rs index 52e94c25..0f7fa27c 100644 --- a/game/vanilla/src/entities/ddrace_entity.rs +++ b/game/vanilla/src/entities/ddrace_entity.rs @@ -1,4 +1,5 @@ pub mod ddrace_entity { + use crate::collision::{Collision, CollisionTile, CollisionTypes}; use base::linked_hash_map_view::FxLinkedHashMap; use game_interface::types::{ game::{GameEntityId, GameTickCooldownAndLastActionCounter, GameTickType}, @@ -13,7 +14,6 @@ pub mod ddrace_entity { use serde::{Deserialize, Serialize}; use crate::{ - collision::collision::{Collision, CollisionTile, CollisionTypes}, entities::{ character::{ character::{BuffProps, Character}, diff --git a/game/vanilla/src/entities/ddrace_projectile.rs b/game/vanilla/src/entities/ddrace_projectile.rs index 1aa4da3f..6ab80df7 100644 --- a/game/vanilla/src/entities/ddrace_projectile.rs +++ b/game/vanilla/src/entities/ddrace_projectile.rs @@ -16,7 +16,7 @@ pub mod ddrace_projectile { use pool::{recycle::Recycle, traits::Recyclable}; use serde::{Deserialize, Serialize}; - use crate::collision::collision::{Collision, CollisionTile, CollisionTypes}; + use crate::collision::{Collision, CollisionTile, CollisionTypes}; use crate::entities::character::character::BuffProps; use crate::entities::entity::entity::{ DropMode, Entity, EntityInterface, EntityTickResult, calc_pos_and_vel, diff --git a/game/vanilla/src/entities/entity.rs b/game/vanilla/src/entities/entity.rs index bca50d70..70b272db 100644 --- a/game/vanilla/src/entities/entity.rs +++ b/game/vanilla/src/entities/entity.rs @@ -18,7 +18,7 @@ pub mod entity { NoEvents, } - use super::super::super::collision::collision::Collision; + use crate::collision::Collision; pub trait EntityInterface< C: Copy + Clone + Serialize + DeserializeOwned + 'static, R: ReusableCore + Serialize + DeserializeOwned + 'static, diff --git a/game/vanilla/src/entities/laser.rs b/game/vanilla/src/entities/laser.rs index 53b5772d..b3956c74 100644 --- a/game/vanilla/src/entities/laser.rs +++ b/game/vanilla/src/entities/laser.rs @@ -18,7 +18,7 @@ pub mod laser { use crate::reusable::{CloneWithCopyableElements, ReusableCore}; use game_interface::types::laser::LaserType; - use crate::collision::collision::{CollisionTile, CollisionTypes}; + use crate::collision::{CollisionTile, CollisionTypes}; use crate::entities::character::character::{Character, DamageBy, DamageTypes}; use crate::entities::entity::entity::{DropMode, Entity, EntityInterface, EntityTickResult}; use crate::events::events::LaserEvent; diff --git a/game/vanilla/src/entities/projectile.rs b/game/vanilla/src/entities/projectile.rs index 4dd7229c..55743451 100644 --- a/game/vanilla/src/entities/projectile.rs +++ b/game/vanilla/src/entities/projectile.rs @@ -17,7 +17,7 @@ pub mod projectile { use crate::reusable::{CloneWithCopyableElements, ReusableCore}; - use crate::collision::collision::{Collision, CollisionTile, CollisionTypes}; + use crate::collision::{Collision, CollisionTile, CollisionTypes}; use crate::entities::character::character::{Character, DamageBy, DamageTypes}; use crate::entities::entity::entity::{ DropMode, Entity, EntityInterface, EntityTickResult, calc_pos_and_vel, diff --git a/game/vanilla/src/lib.rs b/game/vanilla/src/lib.rs index bb0c3cca..8210a3b9 100644 --- a/game/vanilla/src/lib.rs +++ b/game/vanilla/src/lib.rs @@ -2,7 +2,6 @@ #![allow(clippy::module_inception)] #![allow(clippy::multiple_bound_locations)] -pub mod collision; pub mod command_chain; pub mod config; pub mod entities; @@ -22,6 +21,8 @@ pub mod types; pub mod weapons; pub mod world; +pub use tile_map_collision::collision; + #[cfg(test)] mod test { use std::{ diff --git a/game/vanilla/src/simulation_pipe.rs b/game/vanilla/src/simulation_pipe.rs index a58563c8..8807ee55 100644 --- a/game/vanilla/src/simulation_pipe.rs +++ b/game/vanilla/src/simulation_pipe.rs @@ -16,6 +16,7 @@ pub mod simulation_pipe { use math::math::vector::vec2; use serde::{Deserialize, Serialize}; + use crate::collision::Collision; use crate::entities::character::character::{CharacterPool, CharactersView, CharactersViewMut}; use crate::entities::character::core::character_core::{Core, CoreReusable}; use crate::entities::character::pos::character_pos::{ @@ -34,9 +35,7 @@ pub mod simulation_pipe { world::world::{GameWorld, WorldPool}, }; - use super::super::{ - collision::collision::Collision, entities::character::character::Character, - }; + use super::super::entities::character::character::Character; #[hiarc_safer_rc_refcell] #[derive(Debug, Default, Hiarc)] diff --git a/game/vanilla/src/snapshot.rs b/game/vanilla/src/snapshot.rs index a858cbf7..fed66b00 100644 --- a/game/vanilla/src/snapshot.rs +++ b/game/vanilla/src/snapshot.rs @@ -1,6 +1,7 @@ pub mod snapshot { use std::{num::NonZeroU16, rc::Rc}; + use crate::collision::Tunings; use crate::{ entities::character::character::CharacterSpectateMode, reusable::CloneWithCopyableElements, }; @@ -29,7 +30,6 @@ pub mod snapshot { use rustc_hash::FxHashSet; use crate::{ - collision::collision::Tunings, entities::{ character::{ character::{ @@ -652,7 +652,7 @@ pub mod snapshot { &self.snapshot_pool, game.id_generator.peek_next_id(), game.game.voted_player, - game.collision.tune_zones[0], + game.collision.tune_0_for_snapshots(), ); if let SnapshotFor::Client(client) = snap_for { match client { @@ -1277,7 +1277,7 @@ pub mod snapshot { write_game_state.game.voted_player = snapshot.voted_player; - write_game_state.collision.tune_zones[0] = snapshot.global_tune_zone; + *write_game_state.collision.tune_0_mut_for_snapshots() = snapshot.global_tune_zone; snapshot.local_players } diff --git a/game/vanilla/src/state.rs b/game/vanilla/src/state.rs index 600b4868..81984faa 100644 --- a/game/vanilla/src/state.rs +++ b/game/vanilla/src/state.rs @@ -89,8 +89,10 @@ pub mod state { use legacy_map::mapdef_06::EntityTiles; use pool::rc::PoolRc; use rustc_hash::FxHashMap; + use tracing::instrument; - use crate::collision::collision::Tunings; + use crate::collision::Collision; + use crate::collision::Tunings; use crate::command_chain::{Command, CommandChain}; use crate::config::config::{ConfigGameType, ConfigVanilla, ConfigVanillaWrapper}; use crate::entities::character::character::{self, CharacterPlayerTy, CharacterSpectateMode}; @@ -116,7 +118,7 @@ pub mod state { use crate::weapons::definitions::weapon_def::{Weapon, WeaponUpgrade}; use super::super::{ - collision::collision::Collision, entities::character::character::Character, + entities::character::character::Character, simulation_pipe::simulation_pipe::SimulationPipeStage, spawns::GameSpawns, stage::stage::GameStage, world::world::WorldPool, }; @@ -516,8 +518,10 @@ pub mod state { let game_objects = GameObjectDefinitions::new(&physics_group); let default_tune = match config.game_type { - ConfigGameType::Race => Tunings::race_default(), - ConfigGameType::Dm | ConfigGameType::Ctf => Tunings::default(), + ConfigGameType::Race => Tunings::race_default(TICKS_PER_SECOND), + ConfigGameType::Dm | ConfigGameType::Ctf => { + Tunings::vanilla_default(TICKS_PER_SECOND) + } }; let mut collision = Collision::with_default_tune(physics_group, true, default_tune)?; @@ -533,7 +537,7 @@ pub mod state { .flatten() }) { - if let Err(err) = collision.tune_zones[0].try_set_from_str( + if let Err(err) = collision.tune_0_mut_for_cheats().try_set_from_str( cmd.to_string(), None, Some(val.to_string()), @@ -685,6 +689,7 @@ pub mod state { } impl GameStateCreate for GameState { + #[instrument(level = "trace", skip_all)] fn new( map: Vec, map_name: NetworkReducedAsciiString, @@ -1163,7 +1168,7 @@ pub mod state { panic!("Expected a text, this is an implementation bug"); }; - match self.collision.tune_zones[0].try_set_from_str( + match self.collision.tune_0_mut_for_cheats().try_set_from_str( path, None, Some(val), diff --git a/game/vanilla/src/weapons/definitions.rs b/game/vanilla/src/weapons/definitions.rs index 4af308f4..138a1ec4 100644 --- a/game/vanilla/src/weapons/definitions.rs +++ b/game/vanilla/src/weapons/definitions.rs @@ -1,9 +1,6 @@ pub mod weapon_def { - use game_interface::types::{ - emoticons::EnumCount, game::GameTickCooldown, weapons::WeaponType, - }; + use game_interface::types::game::GameTickCooldown; use hiarc::Hiarc; - use math::math::{length, vector::vec2}; use pool::{datatypes::PoolFxHashSet, pool::Pool}; use rustc_hash::FxHashSet; use serde::{Deserialize, Serialize}; @@ -23,33 +20,4 @@ pub mod weapon_def { pub cur_ammo: Option, pub upgrades: PoolFxHashSet, } - - pub const WEAPON_VISUAL_SIZES: [f32; WeaponType::COUNT] = - [3.0, 2.0, 3.0, 3.0, 3.0, 92.0 / 32.0]; - pub const NINJA_PICKUP_VISUAL_SIZE: f32 = 4.0; - pub const NINJA_WEAPON_VISUAL_SIZE: f32 = 3.0; - - pub const WEAPON_SCALES: [(usize, usize); WeaponType::COUNT] = - [(4, 3), (4, 2), (8, 2), (8, 2), (7, 2), (7, 3)]; - pub const NINJA_PICKUP_VISUAL_SCALE: (usize, usize) = (8, 2); - - pub fn get_weapon_visual_scale(weapon: &WeaponType) -> f32 { - WEAPON_VISUAL_SIZES[*weapon as usize] - } - - pub fn get_scale(x: f32, y: f32) -> (f32, f32) { - let f = length(&vec2::new(x, y)); - (x / f, y / f) - } - - pub fn get_weapon_sprite_scale(weapon: &WeaponType) -> (f32, f32) { - let scale = WEAPON_SCALES[*weapon as usize]; - get_scale(scale.0 as f32, scale.1 as f32) - } - - pub fn get_ninja_sprite_scale() -> (f32, f32) { - let scale = NINJA_PICKUP_VISUAL_SCALE; - let f = length(&vec2::new(scale.0 as f32, scale.1 as f32)); - (scale.0 as f32 / f, scale.1 as f32 / f) - } } diff --git a/game/vanilla/src/world.rs b/game/vanilla/src/world.rs index c98125b3..541e1cc0 100644 --- a/game/vanilla/src/world.rs +++ b/game/vanilla/src/world.rs @@ -29,8 +29,8 @@ pub mod world { use rustc_hash::FxHashMap; use serde::{Deserialize, Serialize}; + use crate::collision::Collision; use crate::{ - collision::collision::Collision, config::config::ConfigGameType, entities::{ character::{ diff --git a/lib/api-macros/Cargo.toml b/lib/api-macros/Cargo.toml index 8250fea0..c8af7443 100644 --- a/lib/api-macros/Cargo.toml +++ b/lib/api-macros/Cargo.toml @@ -7,6 +7,6 @@ edition = "2024" proc-macro = true [dependencies] -proc-macro2 = "1.0.103" -quote = "1.0.41" -syn = { version = "2.0.109", features = ["full", "extra-traits"] } +proc-macro2 = "1" +quote = "1" +syn = { version = "2", features = ["full", "extra-traits"] } diff --git a/lib/api-macros/src/lib.rs b/lib/api-macros/src/lib.rs index c85b4733..37b03c3c 100644 --- a/lib/api-macros/src/lib.rs +++ b/lib/api-macros/src/lib.rs @@ -341,7 +341,7 @@ pub fn collision_mod(attr: TokenStream, tokens: TokenStream) -> TokenStream { impl_mod( get_tokens_from_file( attr.into_iter().next().unwrap(), - "game/vanilla/src/collision.rs", + "game/tile-map-collision/src/lib.rs", ), tokens, ) diff --git a/lib/api-ui/Cargo.toml b/lib/api-ui/Cargo.toml index 407899eb..803911fe 100644 --- a/lib/api-ui/Cargo.toml +++ b/lib/api-ui/Cargo.toml @@ -9,5 +9,5 @@ graphics-types = { path = "../../lib/graphics-types" } ui-base = { path = "../../lib/ui-base" } ui-generic = { path = "../../lib/ui-generic" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -once_cell = "1.21.3" +egui = { version = "0.34", default-features = false, features = ["serde"] } +once_cell = "1" diff --git a/lib/api-wasm-macros/Cargo.toml b/lib/api-wasm-macros/Cargo.toml index cba3e80f..6dd1f92c 100644 --- a/lib/api-wasm-macros/Cargo.toml +++ b/lib/api-wasm-macros/Cargo.toml @@ -7,6 +7,6 @@ edition = "2024" proc-macro = true [dependencies] -proc-macro2 = "1.0.103" -quote = "1.0.41" -syn = { version = "2.0.109", features = ["full"] } +proc-macro2 = "1" +quote = "1" +syn = { version = "2", features = ["full"] } diff --git a/lib/api/Cargo.toml b/lib/api/Cargo.toml index 21c3a1b3..5170d2f7 100644 --- a/lib/api/Cargo.toml +++ b/lib/api/Cargo.toml @@ -15,12 +15,12 @@ graphics-types = { path = "../graphics-types" } pool = { path = "../pool" } sound = { path = "../sound" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -bincode = "2.0.1" -bytes = { version = "1.10.1", features = ["serde"] } -log = { version = "0.4.28", features = ["std"] } -once_cell = "1.21.3" -rayon = "1.11.0" -serde = "1.0.228" -url = { version = "2.5.7", features = ["serde"] } +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +bincode = "2" +bytes = { version = "1", features = ["serde"] } +log = { version = "0.4", features = ["std"] } +once_cell = "1" +rayon = "1" +serde = "1" +url = { version = "2", features = ["serde"] } diff --git a/lib/auto-updater/Cargo.toml b/lib/auto-updater/Cargo.toml index d32aea98..219a549c 100644 --- a/lib/auto-updater/Cargo.toml +++ b/lib/auto-updater/Cargo.toml @@ -9,15 +9,15 @@ base = { path = "../base" } base-io = { path = "../base-io" } base-io-traits = { path = "../base-io-traits" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -chrono = { version = "0.4.42", features = ["serde"] } -either = "1.15.0" -git-version = "0.3.9" -log = "0.4.28" -self-replace = "1.5.0" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -tempfile = "3.23.0" -tokio = { version = "1.48.0", default-features = false, features = ["time"] } -url = "2.5.7" -zip = { version = "6.0.0", default-features = false, features = ["deflate"] } +anyhow = { version = "1", features = ["backtrace"] } +chrono = { version = "0.4", features = ["serde"] } +either = "1" +git-version = "0.3" +log = "0.4" +self-replace = "1" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +tempfile = "3" +tokio = { version = "1", default-features = false, features = ["time"] } +url = "2" +zip = { version = "8", default-features = false, features = ["deflate"] } diff --git a/lib/av-encoder/Cargo.toml b/lib/av-encoder/Cargo.toml index 8b360556..ee5c49e8 100644 --- a/lib/av-encoder/Cargo.toml +++ b/lib/av-encoder/Cargo.toml @@ -19,11 +19,11 @@ sound-backend = { path = "../sound-backend" } #av-data = "0.4.2" #av-format = "0.7" -anyhow = { version = "1.0.100", features = ["backtrace"] } -log = "0.4.28" -rayon = "1.11.0" -sendable = "0.6.1" -tokio = { version = "1.48.0", features = [ +anyhow = { version = "1", features = ["backtrace"] } +log = "0.4" +rayon = "1" +sendable = "0.6" +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "fs", @@ -31,7 +31,7 @@ tokio = { version = "1.48.0", features = [ "macros", ] } -ffmpeg-next = { version = "8.0.0", features = [ +ffmpeg-next = { version = "8", features = [ "build", "build-license-gpl", "build-lib-x264", diff --git a/lib/base-fs/Cargo.toml b/lib/base-fs/Cargo.toml index d8d06e7b..eb224d63 100644 --- a/lib/base-fs/Cargo.toml +++ b/lib/base-fs/Cargo.toml @@ -11,33 +11,33 @@ base-io-traits = { path = "../base-io-traits" } hiarc = { path = "../hiarc", features = ["derive"] } # v5.0.1+ brings a MPL 2.0 dependency, i don't really like this lib anyway -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -chrono = { version = "0.4.42", features = ["serde"] } +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +chrono = { version = "0.4", features = ["serde"] } directories = { version = "=5.0.0" } hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", ] } -log = "0.4.28" -notify = { version = "8.2.0", default-features = false, features = [ +log = "0.4" +notify = { version = "8", default-features = false, features = [ "macos_kqueue", ] } -path-clean = "1.0.1" -path-slash = "0.2.1" -tempfile = { version = "3.23.0" } -tokio = { version = "1.48.0", features = [ +path-clean = "1" +path-slash = "0.2" +tempfile = { version = "3" } +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "fs", "time", "macros", ] } -virtual-fs = { version = "0.601.0", default-features = false, features = [ +virtual-fs = { version = "0.701", default-features = false, features = [ "host-fs", ] } -include_dir = { version = "0.7.4", optional = true } +include_dir = { version = "0.7", optional = true } [dev-dependencies] base-io = { path = "../base-io" } diff --git a/lib/base-http/Cargo.toml b/lib/base-http/Cargo.toml index af61a793..9ad86d87 100644 --- a/lib/base-http/Cargo.toml +++ b/lib/base-http/Cargo.toml @@ -10,20 +10,18 @@ base = { path = "../base" } base-io = { path = "../base-io" } base-io-traits = { path = "../base-io-traits" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -axum = "0.8.6" -bytes = "1.10.1" +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +axum = "0.8" +bytes = "1" http = "1" -http-body-util = "0.1.3" -log = "0.4.28" -reqwest = { version = "0.12.24", default-features = false, features = [ - "rustls-tls", -] } -tokio = { version = "1.48.0", features = ["rt-multi-thread", "sync"] } -url = "2.5.7" +http-body-util = "0.1" +log = "0.4" +reqwest = { version = "0.13", default-features = false, features = ["rustls"] } +tokio = { version = "1", features = ["rt-multi-thread", "sync"] } +url = "2" -tower-http = { version = "0.6.6", features = ["fs", "trace"] } +tower-http = { version = "0.6", features = ["fs", "trace"] } [dev-dependencies] base = { path = "../base" } diff --git a/lib/base-io-traits/Cargo.toml b/lib/base-io-traits/Cargo.toml index 09a72f7d..d52624fe 100644 --- a/lib/base-io-traits/Cargo.toml +++ b/lib/base-io-traits/Cargo.toml @@ -6,10 +6,10 @@ edition = "2024" [dependencies] base = { path = "../base" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -bytes = "1.10.1" -rustc-hash = "2.1.1" -serde = { version = "1.0.228", features = ["derive"] } -thiserror = "2.0.17" -url = "2.5.7" +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +bytes = "1" +rustc-hash = "2" +serde = { version = "1", features = ["derive"] } +thiserror = "2" +url = "2" diff --git a/lib/base-io/Cargo.toml b/lib/base-io/Cargo.toml index 5671de90..3f9b8523 100644 --- a/lib/base-io/Cargo.toml +++ b/lib/base-io/Cargo.toml @@ -7,11 +7,11 @@ edition = "2024" base-io-traits = { path = "../base-io-traits" } hiarc = { path = "../hiarc", features = ["enable_anyhow", "enable_tokio"] } -anyhow = { version = "1.0.100", features = ["backtrace"] } -urlencoding = "2.1.3" +anyhow = { version = "1", features = ["backtrace"] } +urlencoding = "2" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -tokio = { version = "1.48.0", features = [ +tokio = { version = "1", features = [ "rt-multi-thread", "net", "sync", @@ -21,7 +21,7 @@ tokio = { version = "1.48.0", features = [ ] } [target.'cfg(target_arch = "wasm32")'.dependencies] -async-executor = "1.13.3" -async-task = "4.7.1" -futures-lite = "2.6.1" -tokio = { version = "1.48.0", features = ["sync", "macros"] } +async-executor = "1" +async-task = "4" +futures-lite = "2" +tokio = { version = "1", features = ["sync", "macros"] } diff --git a/lib/base/Cargo.toml b/lib/base/Cargo.toml index 95f9d28a..5fb76786 100644 --- a/lib/base/Cargo.toml +++ b/lib/base/Cargo.toml @@ -12,21 +12,21 @@ hiarc = { path = "../hiarc", features = [ ] } pool = { path = "../pool", features = ["hiarc"] } -anyhow = { version = "1.0.100", features = ["backtrace"] } -ascii = { version = "1.1.0", features = ["serde"] } -blake3 = "1.8.2" +anyhow = { version = "1", features = ["backtrace"] } +ascii = { version = "1", features = ["serde"] } +blake3 = "1" hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", ] } -hex = "0.4.3" -parking_lot = "0.12.5" -rayon = "1.11.0" -rustc-hash = "2.1.1" -serde = { version = "1.0.228", features = ["derive"] } -thiserror = "2.0.17" -tracing = { version = "0.1.41", default-features = false, features = [ +hex = "0.4" +parking_lot = "0.12" +rayon = "1" +rustc-hash = "2" +serde = { version = "1", features = ["derive"] } +thiserror = "2" +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -tracing-subscriber = { version = "0.3.20", features = ["std", "env-filter"] } -owo-colors = "4.2.3" +tracing-subscriber = { version = "0.3", features = ["std", "env-filter"] } +owo-colors = "4" diff --git a/lib/bin-patch/Cargo.toml b/lib/bin-patch/Cargo.toml index bbb30018..b98f51d2 100644 --- a/lib/bin-patch/Cargo.toml +++ b/lib/bin-patch/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] -anyhow = { version = "1.0.100", features = ["backtrace"] } +anyhow = { version = "1", features = ["backtrace"] } zstd = { version = "0.13", default-features = false, features = [ "experimental", "zdict_builder", @@ -12,7 +12,7 @@ zstd = { version = "0.13", default-features = false, features = [ [dev-dependencies] base = { path = "../base" } -bidiff = "1.0.0" -brotli = "8.0.2" -bsdiff = "0.2.1" -qbsdiff = "1.4.4" +bidiff = "1" +brotli = "8" +bsdiff = "0.2" +qbsdiff = "1" diff --git a/lib/cache/Cargo.toml b/lib/cache/Cargo.toml index 318882cb..020baa1d 100644 --- a/lib/cache/Cargo.toml +++ b/lib/cache/Cargo.toml @@ -10,4 +10,4 @@ base-io = { path = "../base-io" } base-io-traits = { path = "../base-io-traits" } hiarc = { path = "../hiarc", features = ["enable_tokio"] } -anyhow = { version = "1.0.100", features = ["backtrace"] } +anyhow = { version = "1", features = ["backtrace"] } diff --git a/lib/command-parser/Cargo.toml b/lib/command-parser/Cargo.toml index 99ed57fa..866750ef 100644 --- a/lib/command-parser/Cargo.toml +++ b/lib/command-parser/Cargo.toml @@ -7,9 +7,9 @@ edition = "2024" base = { path = "../base" } hiarc = { path = "../hiarc", features = ["derive"] } -anyhow = { version = "1.0.100", features = ["backtrace"] } -logos = { version = "0.15.1" } -regex = "1.12.2" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -thiserror = "2.0.17" +anyhow = { version = "1", features = ["backtrace"] } +logos = { version = "0.15" } +regex = "1" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +thiserror = "2" diff --git a/lib/config-fs/Cargo.toml b/lib/config-fs/Cargo.toml index ebf916c6..3665013d 100644 --- a/lib/config-fs/Cargo.toml +++ b/lib/config-fs/Cargo.toml @@ -7,4 +7,4 @@ edition = "2024" base-io = { path = "../base-io" } config = { path = "../config" } -anyhow = { version = "1.0.100", features = ["backtrace"] } +anyhow = { version = "1", features = ["backtrace"] } diff --git a/lib/config-macro/Cargo.toml b/lib/config-macro/Cargo.toml index 218f6937..aa95124a 100644 --- a/lib/config-macro/Cargo.toml +++ b/lib/config-macro/Cargo.toml @@ -7,6 +7,6 @@ edition = "2024" proc-macro = true [dependencies] -proc-macro2 = "1.0.103" -quote = "1.0.41" -syn = { version = "2.0.109", features = ["full"] } +proc-macro2 = "1" +quote = "1" +syn = { version = "2", features = ["full"] } diff --git a/lib/config/Cargo.toml b/lib/config/Cargo.toml index 1decead3..6371c61c 100644 --- a/lib/config/Cargo.toml +++ b/lib/config/Cargo.toml @@ -12,10 +12,10 @@ config-macro = { path = "../config-macro" } hiarc = { path = "../hiarc", features = ["derive"] } math = { path = "../math" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -atomic_enum = "0.3.0" -num-derive = "0.4.2" -num-traits = "0.2.19" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -thiserror = "2.0.17" +anyhow = { version = "1", features = ["backtrace"] } +atomic_enum = "0.3" +num-derive = "0.4" +num-traits = "0.2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +thiserror = "2" diff --git a/lib/game-database-backend/Cargo.toml b/lib/game-database-backend/Cargo.toml index db8ef98e..9ac7ce61 100644 --- a/lib/game-database-backend/Cargo.toml +++ b/lib/game-database-backend/Cargo.toml @@ -23,21 +23,21 @@ default = ["mysql", "sqlite"] game-database = { path = "../../lib/game-database", default-features = false } sql = { path = "../../lib/sql", default-features = false } -ddnet-account-sql = { version = "0.3.0", default-features = false } +ddnet-account-sql = { version = "0.4", default-features = false } # when updating to the next major version check if # https://github.com/launchbadge/sqlx/issues/3387 is fixed # and remove the workaround in the code -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -parking_lot = "0.12.5" -sqlx = { version = "0.8.6", features = ["runtime-tokio-rustls", "chrono"] } +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +parking_lot = "0.12" +sqlx = { version = "0.9", features = ["runtime-tokio", "tls-rustls", "chrono"] } [dev-dependencies] base = { path = "../../lib/base" } base-io = { path = "../../lib/base-io" } -tokio = { version = "1.48.0", features = [ +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "fs", diff --git a/lib/game-database-backend/src/lib.rs b/lib/game-database-backend/src/lib.rs index dc6190d5..78985b3f 100644 --- a/lib/game-database-backend/src/lib.rs +++ b/lib/game-database-backend/src/lib.rs @@ -22,7 +22,7 @@ use sqlx::Statement; #[derive(Clone)] pub struct CachedStatement { kind: DbKind, - stmt: Arc>, + stmt: Arc, qry_props: QueryProperties, } @@ -217,9 +217,17 @@ impl DbInterface for GameDbBackend { for s in stmts { let qry = match kind { #[cfg(feature = "mysql")] - DbKind::MySql(_) => AnyQuery::MySql(sqlx::query(&s)), + DbKind::MySql(_) => { + use sqlx::AssertSqlSafe; + + AnyQuery::MySql(sqlx::query(AssertSqlSafe(s))) + } #[cfg(feature = "sqlite")] - DbKind::Sqlite(_) => AnyQuery::Sqlite(sqlx::query(&s)), + DbKind::Sqlite(_) => { + use sqlx::AssertSqlSafe; + + AnyQuery::Sqlite(sqlx::query(AssertSqlSafe(s))) + } }; qry.execute(&mut con.con()).await?; } @@ -255,13 +263,23 @@ impl DbInterface for GameDbBackend { let stm = match connection { #[cfg(feature = "mysql")] - AnyConnection::MySql(con) => AnyStatement::MySql(sqlx::Statement::to_owned( - &con.prepare(&driver_props.sql).await?, - )), + AnyConnection::MySql(con) => { + use sqlx::{AssertSqlSafe, SqlSafeStr}; + + AnyStatement::MySql(sqlx::mysql::MySqlStatement::to_owned( + &con.prepare(AssertSqlSafe(driver_props.sql.as_str()).into_sql_str()) + .await?, + )) + } #[cfg(feature = "sqlite")] - AnyConnection::Sqlite(con) => AnyStatement::Sqlite(sqlx::Statement::to_owned( - &con.prepare(&driver_props.sql).await?, - )), + AnyConnection::Sqlite(con) => { + use sqlx::{AssertSqlSafe, SqlSafeStr}; + + AnyStatement::Sqlite(sqlx::sqlite::SqliteStatement::to_owned( + &con.prepare(AssertSqlSafe(driver_props.sql.as_str()).into_sql_str()) + .await?, + )) + } }; let unique_id = self diff --git a/lib/game-database-macros/Cargo.toml b/lib/game-database-macros/Cargo.toml index 963150dd..9631e451 100644 --- a/lib/game-database-macros/Cargo.toml +++ b/lib/game-database-macros/Cargo.toml @@ -7,6 +7,6 @@ edition = "2024" proc-macro = true [dependencies] -proc-macro2 = "1.0.103" -quote = "1.0.41" -syn = { version = "2.0.109", features = ["full"] } +proc-macro2 = "1" +quote = "1" +syn = { version = "2", features = ["full"] } diff --git a/lib/game-database/Cargo.toml b/lib/game-database/Cargo.toml index b2226d6f..a6b96af4 100644 --- a/lib/game-database/Cargo.toml +++ b/lib/game-database/Cargo.toml @@ -14,8 +14,8 @@ game-database-macros = { path = "../game-database-macros" } hiarc = { path = "../../lib/hiarc", features = ["derive"] } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -chrono = { version = "0.4.42", default-features = false, features = ["serde"] } -futures = "0.3.31" -serde = { version = "1.0.228", features = ["derive"] } +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +chrono = { version = "0.4", default-features = false, features = ["serde"] } +futures = "0.3" +serde = { version = "1", features = ["derive"] } diff --git a/lib/graphics-backend-traits/Cargo.toml b/lib/graphics-backend-traits/Cargo.toml index d32064db..47d81d56 100644 --- a/lib/graphics-backend-traits/Cargo.toml +++ b/lib/graphics-backend-traits/Cargo.toml @@ -9,6 +9,6 @@ graphics-types = { path = "../graphics-types" } hiarc = { path = "../hiarc", features = ["derive"] } pool = { path = "../pool" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -bitflags = { version = "2.10.0", features = ["serde"] } -thiserror = "2.0.17" +anyhow = { version = "1", features = ["backtrace"] } +bitflags = { version = "2", features = ["serde"] } +thiserror = "2" diff --git a/lib/graphics-backend/Cargo.toml b/lib/graphics-backend/Cargo.toml index 5b65b08d..f072c633 100644 --- a/lib/graphics-backend/Cargo.toml +++ b/lib/graphics-backend/Cargo.toml @@ -29,33 +29,33 @@ math = { path = "../math" } native = { path = "../native" } pool = { path = "../pool" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -arc-swap = "1.7.1" -ash = "0.38.0" -ash-window = "0.13.0" -atomic_enum = "0.3.0" -bincode = { features = ["serde"], version = "2.0.1" } -crossbeam = "0.8.4" -either = "1.15.0" -futures = "0.3.31" -libc = "0.2.177" -log = "0.4.28" -naga = { version = "27.0.3", features = ["wgsl-in", "spv-out", "glsl-out"] } -naga_oil = "0.20.0" -num-derive = "0.4.2" -num-traits = "0.2.19" -parking_lot = "0.12.5" -raw-window-handle = "0.6.2" -rayon = "1.11.0" -replace_with = "0.1.8" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -strum = { version = "0.27.2", features = ["derive"] } -thiserror = "2.0.17" -thread-priority = "3.0.0" +anyhow = { version = "1", features = ["backtrace"] } +arc-swap = "1" +ash = "0.38" +ash-window = "0.13" +atomic_enum = "0.3" +bincode = { version = "2", features = ["serde"] } +crossbeam = "0.8" +either = "1" +futures = "0.3" +libc = "0.2" +log = "0.4" +naga = { version = "29", features = ["wgsl-in", "spv-out", "glsl-out"] } +naga_oil = "0.22" +num-derive = "0.4" +num-traits = "0.2" +parking_lot = "0.12" +raw-window-handle = "0.6" +rayon = "1" +replace_with = "0.1" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +strum = { version = "0.28", features = ["derive"] } +thiserror = "2" +thread-priority = "3" [target.'cfg(target_os = "macos")'.dependencies] -ash-molten = { version = "0.20.0" } +ash-molten = { version = "0.20" } [dev-dependencies] base-http = { path = "../base-http" } diff --git a/lib/graphics-backend/src/backends/vulkan/compiler/compiler.rs b/lib/graphics-backend/src/backends/vulkan/compiler/compiler.rs index 042a2214..0418467f 100644 --- a/lib/graphics-backend/src/backends/vulkan/compiler/compiler.rs +++ b/lib/graphics-backend/src/backends/vulkan/compiler/compiler.rs @@ -63,7 +63,7 @@ impl ShaderCompiler { defines: HashMap, ) -> anyhow::Result { let mut composer = naga_oil::compose::Composer::default() - .with_capabilities(naga::valid::Capabilities::PUSH_CONSTANT); + .with_capabilities(naga::valid::Capabilities::IMMEDIATES); Ok( composer.make_naga_module(naga_oil::compose::NagaModuleDescriptor { source, @@ -84,7 +84,7 @@ impl ShaderCompiler { &module, &naga::valid::Validator::new( naga::valid::ValidationFlags::empty(), - naga::valid::Capabilities::PUSH_CONSTANT, + naga::valid::Capabilities::IMMEDIATES, ) .validate(&module)?, &spv::Options { diff --git a/lib/graphics-base-traits/Cargo.toml b/lib/graphics-base-traits/Cargo.toml index f1302d52..999c0dc3 100644 --- a/lib/graphics-base-traits/Cargo.toml +++ b/lib/graphics-base-traits/Cargo.toml @@ -8,6 +8,6 @@ graphics-types = { path = "../graphics-types" } hiarc = { path = "../hiarc", features = ["derive"] } pool = { path = "../pool" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -bincode = { features = ["serde"], version = "2.0.1" } -serde = { version = "1.0.228", features = ["derive"] } +anyhow = { version = "1", features = ["backtrace"] } +bincode = { version = "2", features = ["serde"] } +serde = { version = "1", features = ["derive"] } diff --git a/lib/graphics-types/Cargo.toml b/lib/graphics-types/Cargo.toml index a1297786..9e12c3c9 100644 --- a/lib/graphics-types/Cargo.toml +++ b/lib/graphics-types/Cargo.toml @@ -11,7 +11,7 @@ hiarc = { path = "../hiarc", features = ["enable_hashlink"] } math = { path = "../math" } pool = { path = "../pool", features = ["enable_hiarc"] } -bitflags = { version = "2.10.0", features = ["serde"] } -num-traits = "0.2.19" -serde = "1.0.228" -strum = { version = "0.27.2", features = ["derive"] } +bitflags = { version = "2", features = ["serde"] } +num-traits = "0.2" +serde = "1" +strum = { version = "0.28", features = ["derive"] } diff --git a/lib/graphics/Cargo.toml b/lib/graphics/Cargo.toml index 13c04664..6eec5ead 100644 --- a/lib/graphics/Cargo.toml +++ b/lib/graphics/Cargo.toml @@ -12,7 +12,7 @@ image-utils = { path = "../image-utils" } math = { path = "../math" } pool = { path = "../pool", features = ["enable_hiarc"] } -anyhow = { version = "1.0.100", features = ["backtrace"] } -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } diff --git a/lib/hiarc-macro/Cargo.toml b/lib/hiarc-macro/Cargo.toml index 7a5014bc..6bfc8a9a 100644 --- a/lib/hiarc-macro/Cargo.toml +++ b/lib/hiarc-macro/Cargo.toml @@ -7,9 +7,9 @@ edition = "2024" proc-macro = true [dependencies] -proc-macro2 = "1.0.103" -quote = "1.0.41" -syn = { version = "2.0.109", features = ["full", "extra-traits"] } +proc-macro2 = "1" +quote = "1" +syn = { version = "2", features = ["full", "extra-traits"] } [dev-dependencies] hiarc = { path = "../hiarc" } diff --git a/lib/hiarc/Cargo.toml b/lib/hiarc/Cargo.toml index 743fdd10..197d6758 100644 --- a/lib/hiarc/Cargo.toml +++ b/lib/hiarc/Cargo.toml @@ -30,37 +30,37 @@ enable_winit = ["winit"] enable_serde_json = ["serde_json"] [dependencies] -thiserror = "2.0.17" +thiserror = "2" hiarc-macro = { path = "../hiarc-macro", optional = true } -anyhow = { version = "1.0.100", default-features = false, optional = true } -arc-swap = { version = "1.7.1", default-features = false, optional = true } -ascii = { version = "1.1.0", default-features = false, optional = true } -ash = { version = "0.38.0", default-features = false, optional = true } -chrono = { version = "0.4.42", default-features = false, optional = true } -crossbeam = { version = "0.8.4", default-features = false, optional = true } -egui = { version = "0.33.0", default-features = false, optional = true } -either = { version = "1.15.0", default-features = false, optional = true } -fixed = { version = "1.29.0", default-features = false, optional = true } +anyhow = { version = "1", default-features = false, optional = true } +arc-swap = { version = "1", default-features = false, optional = true } +ascii = { version = "1", default-features = false, optional = true } +ash = { version = "0.38", default-features = false, optional = true } +chrono = { version = "0.4", default-features = false, optional = true } +crossbeam = { version = "0.8", default-features = false, optional = true } +egui = { version = "0.34", default-features = false, optional = true } +either = { version = "1", default-features = false, optional = true } +fixed = { version = "1", default-features = false, optional = true } hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", default-features = false, features = [ "serde", "serde_impl", ], optional = true } -kira = { version = "0.9.6", default-features = false, optional = true } -mint = { version = "0.5.9", default-features = false, optional = true } -parking_lot = { version = "0.12.5", default-features = false, optional = true } -rayon = { version = "1.11.0", default-features = false, optional = true } -rustc-hash = { version = "2.1.1", default-features = false, optional = true } -serde_json = { version = "1.0.145", default-features = false, optional = true } -spin = { version = "0.10.0", default-features = false, features = [ +kira = { version = "0.9", default-features = false, optional = true } +mint = { version = "0.5", default-features = false, optional = true } +parking_lot = { version = "0.12", default-features = false, optional = true } +rayon = { version = "1", default-features = false, optional = true } +rustc-hash = { version = "2", default-features = false, optional = true } +serde_json = { version = "1", default-features = false, optional = true } +spin = { version = "0.12", default-features = false, features = [ "spin_mutex", "rwlock", ], optional = true } -time = { version = "0.3.44", default-features = false, optional = true } -tinyset = { version = "0.5.2", default-features = false, optional = true } -tokio = { version = "1.48.0", default-features = false, features = [ +time = { version = "0.3", default-features = false, optional = true } +tinyset = { version = "0.5", default-features = false, optional = true } +tokio = { version = "1", default-features = false, features = [ "sync", ], optional = true } -url = { version = "2.5.7", default-features = false, optional = true } -winit = { version = "0.30.12", default-features = false, optional = true } +url = { version = "2", default-features = false, optional = true } +winit = { version = "0.30", default-features = false, optional = true } diff --git a/lib/image-utils/Cargo.toml b/lib/image-utils/Cargo.toml index c8cf8a4d..9bdd15af 100644 --- a/lib/image-utils/Cargo.toml +++ b/lib/image-utils/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] -anyhow = { version = "1.0.100", features = ["backtrace"] } -image = { version = "0.25.8", default-features = false } -png = "0.18.0" -rayon = "1.11.0" +anyhow = { version = "1", features = ["backtrace"] } +image = { version = "0.25", default-features = false } +png = "0.18" +rayon = "1" diff --git a/lib/input-binds/Cargo.toml b/lib/input-binds/Cargo.toml index 4e3bbb82..1d09a2d9 100644 --- a/lib/input-binds/Cargo.toml +++ b/lib/input-binds/Cargo.toml @@ -8,8 +8,8 @@ base = { path = "../base" } hiarc = { path = "../hiarc", features = ["enable_winit"] } pool = { path = "../pool" } -serde = { version = "1.0.228", features = ["derive"] } -winit = { version = "0.30.12", features = ["serde", "android-native-activity"] } +serde = { version = "1", features = ["derive"] } +winit = { version = "0.30", features = ["serde", "android-native-activity"] } [dev-dependencies] -serde_json = "1.0.145" +serde_json = "1" diff --git a/lib/math/Cargo.toml b/lib/math/Cargo.toml index a062fde9..0f41eb0a 100644 --- a/lib/math/Cargo.toml +++ b/lib/math/Cargo.toml @@ -5,9 +5,9 @@ edition = "2024" [dependencies] hiarc = { path = "../hiarc", features = ["derive", "enable_fixed"] } -serde = { version = "1.0.228", features = ["derive"] } -rand = { version = "0.9.2", default-features = false } -rand_xoshiro = "0.7.0" -num-traits = { version = "0.2.19", features = ["libm"] } -palette = "0.7.6" -fixed = { version = "1.29.0", features = ["serde", "serde-str"] } +serde = { version = "1", features = ["derive"] } +rand = { version = "0.10", default-features = false } +rand_xoshiro = "0.8" +num-traits = { version = "0.2", features = ["libm"] } +palette = "0.7" +fixed = { version = "1", features = ["serde", "serde-str"] } diff --git a/lib/math/src/math/mod.rs b/lib/math/src/math/mod.rs index 04701efa..5964d7a1 100644 --- a/lib/math/src/math/mod.rs +++ b/lib/math/src/math/mod.rs @@ -163,7 +163,7 @@ impl Rng { } pub fn random_int_in(&mut self, range: RangeInclusive) -> u64 { - rand::Rng::random_range(&mut self.rng, range) + rand::RngExt::random_range(&mut self.rng, range) } pub fn random_int(&mut self) -> u64 { @@ -171,7 +171,7 @@ impl Rng { } pub fn random_float_in(&mut self, range: RangeInclusive) -> f32 { - rand::Rng::random_range(&mut self.rng, range) + rand::RngExt::random_range(&mut self.rng, range) } /// random float in `[0..1]` diff --git a/lib/microphone/Cargo.toml b/lib/microphone/Cargo.toml index 0f9a541c..efb01800 100644 --- a/lib/microphone/Cargo.toml +++ b/lib/microphone/Cargo.toml @@ -23,20 +23,20 @@ base = { path = "../base" } hiarc = { path = "../hiarc", features = ["enable_crossbeam"] } sound = { path = "../sound" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -atomic_enum = { version = "0.3.0", optional = true } +anyhow = { version = "1", features = ["backtrace"] } +atomic_enum = { version = "0.3", optional = true } audiopus_sys = { git = "https://github.com/Jupeyy/audiopus_sys.git", branch = "ddnet-rs", features = [ "static", ], optional = true } -cpal = { version = "0.16.0", optional = true } -crossbeam = { version = "0.8.4" } +cpal = { version = "0.17", optional = true } +crossbeam = { version = "0.8" } deep_filter = { git = "https://github.com/Rikorose/DeepFilterNet", rev = "978576aa8400552a4ce9730838c635aa30db5e61", default-features = false, features = [ "tract", "default-model-ll", ], optional = true } -log = { version = "0.4.28" } +log = { version = "0.4" } # pinned for deep_filter dep ndarray = { version = "=0.15", optional = true } -opus = { version = "0.3.0", optional = true } -rubato = { version = "0.16.2", optional = true } -serde = { version = "1.0.228", features = ["derive"] } +opus = { version = "0.3", optional = true } +rubato = { version = "0.16", optional = true } +serde = { version = "1", features = ["derive"] } diff --git a/lib/microphone/src/cpal_opus/manager.rs b/lib/microphone/src/cpal_opus/manager.rs index d4babfd6..ada00b4d 100644 --- a/lib/microphone/src/cpal_opus/manager.rs +++ b/lib/microphone/src/cpal_opus/manager.rs @@ -39,9 +39,13 @@ impl crate::traits::Microphone for MicrophoneManager { Ok(MicrophoneDevices { devices: host .devices()? - .map(|device| anyhow::Ok(device.name()?)) + .map(|device| anyhow::Ok(device.id()?.to_string())) .collect::>>()?, - default: host.default_input_device().map(|d| d.name()).transpose()?, + default: host + .default_input_device() + .map(|d| d.id()) + .transpose()? + .map(|d| d.to_string()), }) } @@ -54,7 +58,7 @@ impl crate::traits::Microphone for MicrophoneManager { let host = Self::host_from_str(host)?; let device = Self::device_from_str(&host, device)?; - log::info!("Loaded microphone device: {}", device.name()?); + log::info!("Loaded microphone device: {}", device.id()?); let config = device.default_input_config()?; log::info!("Default input config: {:?}", config); @@ -87,7 +91,7 @@ impl crate::traits::Microphone for MicrophoneManager { const CHUNK_SIZE_RESAMPLER: usize = 480; const NF_CHUNK_SIZE: usize = OPUS_10_MS; - let input_sample_rate = config.sample_rate().0; + let input_sample_rate = config.sample_rate(); let mut resampler = rubato::SincFixedIn::::new( OPUS_SAMPLE_RATE as f64 / input_sample_rate as f64, 2.0, @@ -313,7 +317,7 @@ impl MicrophoneManager { fn device_from_str(host: &cpal::Host, device: &str) -> anyhow::Result { let Some(device) = host .devices()? - .find(|d| d.name().is_ok_and(|name| name == device)) + .find(|d| d.id().is_ok_and(|name| name.to_string() == device)) else { return Err(anyhow!("Selected host not found")); }; diff --git a/lib/native-display/Cargo.toml b/lib/native-display/Cargo.toml index 63df70d4..bf684ecf 100644 --- a/lib/native-display/Cargo.toml +++ b/lib/native-display/Cargo.toml @@ -4,5 +4,5 @@ version = "0.1.0" edition = "2024" [dependencies] -anyhow = { version = "1.0.100", features = ["backtrace"] } -raw-window-handle = "0.6.2" +anyhow = { version = "1", features = ["backtrace"] } +raw-window-handle = "0.6" diff --git a/lib/native/Cargo.toml b/lib/native/Cargo.toml index b214a920..2ca41175 100644 --- a/lib/native/Cargo.toml +++ b/lib/native/Cargo.toml @@ -7,10 +7,10 @@ edition = "2024" base = { path = "../base" } native-display = { path = "../native-display" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -log = "0.4.28" -raw-window-handle = "0.6.2" -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +log = "0.4" +raw-window-handle = "0.6" +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -winit = { version = "0.30.12", features = ["serde", "android-native-activity"] } +winit = { version = "0.30", features = ["serde", "android-native-activity"] } diff --git a/lib/network/Cargo.toml b/lib/network/Cargo.toml index 7163be0e..dd0cf267 100644 --- a/lib/network/Cargo.toml +++ b/lib/network/Cargo.toml @@ -10,54 +10,54 @@ enable_brotli = ["brotli"] base = { path = "../base" } pool = { path = "../pool" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -bincode = { features = ["serde"], version = "2.0.1" } -bytes = "1.10.1" -chrono = { version = "0.4.42", features = ["serde"] } -ed25519-dalek = { version = "2.2.0", features = [ +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +bincode = { version = "2", features = ["serde"] } +bytes = "1" +chrono = { version = "0.4", features = ["serde"] } +ed25519-dalek = { version = "2", features = [ "serde", "rand_core", "pkcs8", "pem", ] } -futures-util = "0.3.31" -ipnet = "2.11.0" -log = "0.4.28" -pollster = "0.4.0" -prefix-trie = "0.8.1" +futures-util = "0.3" +ipnet = "2" +log = "0.4" +pollster = "0.4" +prefix-trie = "0.9" quinn = { git = "https://github.com/Jupeyy/quinn", rev = "8a5fc90badd30f35025a8beac08037605665ee21", default-features = false, features = [ "runtime-tokio", "rustls", "ring", ] } -rand = { version = "0.8.5", features = ["getrandom"], default-features = false } -rcgen = { version = "0.14.5" } +rand = { version = "0.8", features = ["getrandom"], default-features = false } +rcgen = { version = "0.14" } rustls = { version = "0.23", default-features = false, features = ["ring"] } -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -spki = { version = "0.7.3", features = ["fingerprint"] } -thiserror = "2.0.17" -tokio = { version = "1.48.0", features = [ +serde = { version = "1", features = ["derive"] } +serde_json = "1" +spki = { version = "0.7", features = ["fingerprint"] } +thiserror = "2" +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "time", "macros", ] } -tokio-tungstenite = { version = "0.28.0", features = [ +tokio-tungstenite = { version = "0.29", features = [ "tokio-rustls", "rustls-tls-webpki-roots", ] } -tracing = { version = "0.1.41", default-features = false, features = [ +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -x509-cert = { version = "0.2.5" } +x509-cert = { version = "0.2" } zstd = { version = "0.13", default-features = false, features = [ "experimental", "zdict_builder", ] } -num-derive = "0.4.2" -num-traits = "0.2.19" +num-derive = "0.4" +num-traits = "0.2" -brotli = { version = "8.0.2", optional = true } +brotli = { version = "8", optional = true } diff --git a/lib/network/src/network/connection_ban.rs b/lib/network/src/network/connection_ban.rs index ce282996..83d16770 100644 --- a/lib/network/src/network/connection_ban.rs +++ b/lib/network/src/network/connection_ban.rs @@ -33,11 +33,11 @@ impl BanState { IpAddr::V4(ip) => self .ipv4_bans .get_spm(&ipnet::Ipv4Net::from(ip)) - .map(|(&ip, v)| (ipnet::IpNet::V4(ip), v.clone())), + .map(|(ip, v)| (ipnet::IpNet::V4(ip), v.clone())), IpAddr::V6(ip) => self .ipv6_bans .get_spm(&ipnet::Ipv6Net::from(ip)) - .map(|(&ip, v)| (ipnet::IpNet::V6(ip), v.clone())), + .map(|(ip, v)| (ipnet::IpNet::V6(ip), v.clone())), } { if ban.until.is_none_or(|until| now < until) { return Some(ban); diff --git a/lib/pool/Cargo.toml b/lib/pool/Cargo.toml index 44af7e26..2253e280 100644 --- a/lib/pool/Cargo.toml +++ b/lib/pool/Cargo.toml @@ -9,7 +9,7 @@ enable_hiarc = ["hiarc"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -bincode = { version = "2.0.1", features = ["serde"] } +bincode = { version = "2", features = ["serde"] } hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [ "serde", "serde_impl", @@ -18,6 +18,6 @@ hiarc = { path = "../hiarc", features = [ "enable_parking_lot", "derive", ], optional = true } -parking_lot = "0.12.5" -rustc-hash = "2.1.1" -serde = { version = "1.0.228", features = ["derive", "rc"] } +parking_lot = "0.12" +rustc-hash = "2" +serde = { version = "1", features = ["derive", "rc"] } diff --git a/lib/sound-backend/Cargo.toml b/lib/sound-backend/Cargo.toml index 16bf30bf..bb8e5f0d 100644 --- a/lib/sound-backend/Cargo.toml +++ b/lib/sound-backend/Cargo.toml @@ -16,7 +16,7 @@ hiarc = { path = "../hiarc", features = [ math = { path = "../math" } sound = { path = "../sound" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -kira = "0.9.6" -log = "0.4.28" -mint = "0.5.9" +anyhow = { version = "1", features = ["backtrace"] } +kira = "0.9" +log = "0.4" +mint = "0.5" diff --git a/lib/sound/Cargo.toml b/lib/sound/Cargo.toml index 00c88569..ef841a0d 100644 --- a/lib/sound/Cargo.toml +++ b/lib/sound/Cargo.toml @@ -8,9 +8,9 @@ base = { path = "../base" } hiarc = { path = "../hiarc", features = ["derive"] } math = { path = "../math" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -serde = { version = "1.0.228", features = ["derive"] } -thiserror = "2.0.17" -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +serde = { version = "1", features = ["derive"] } +thiserror = "2" +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } diff --git a/lib/sql/Cargo.toml b/lib/sql/Cargo.toml index 1c808332..a2c30647 100644 --- a/lib/sql/Cargo.toml +++ b/lib/sql/Cargo.toml @@ -12,6 +12,6 @@ default = ["mysql", "sqlite"] [dependencies] game-database = { path = "../game-database", default-features = false } -anyhow = { version = "1.0.100", features = ["backtrace"] } -ddnet-account-sql = { version = "0.3.0", default-features = false } -sqlx = { version = "0.8.6", features = ["runtime-tokio-rustls", "chrono"] } +anyhow = { version = "1", features = ["backtrace"] } +ddnet-account-sql = { version = "0.4", default-features = false } +sqlx = { version = "0.9", features = ["runtime-tokio", "tls-rustls", "chrono"] } diff --git a/lib/sql/src/database.rs b/lib/sql/src/database.rs index ed524644..a75e7d6e 100644 --- a/lib/sql/src/database.rs +++ b/lib/sql/src/database.rs @@ -3,7 +3,7 @@ use std::collections::HashMap; use ddnet_account_sql::any::AnyPool; use game_database::traits::DbKind; use sqlx::{ - Any, FromRow, + Any, AssertSqlSafe, FromRow, any::{AnyArguments, AnyRow}, query::QueryAs, }; @@ -71,10 +71,10 @@ impl Database { Ok(Self { pools }) } - pub fn get_query<'a, F>(str: &'a str) -> QueryAs<'a, Any, F, AnyArguments<'a>> + pub fn get_query<'a, F>(str: &'a str) -> QueryAs<'a, Any, F, AnyArguments> where F: for<'r> FromRow<'r, AnyRow>, { - sqlx::query_as::<_, F>(str) + sqlx::query_as::<_, F>(AssertSqlSafe(str)) } } diff --git a/lib/steam/Cargo.toml b/lib/steam/Cargo.toml index 0884b79b..86110d37 100644 --- a/lib/steam/Cargo.toml +++ b/lib/steam/Cargo.toml @@ -9,12 +9,12 @@ runtime = ["steamworks"] [dependencies] base = { path = "../base" } -steamworks = { version = "0.12.2", optional = true } +steamworks = { version = "0.13", optional = true } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -log = "0.4.28" -tokio = { version = "1.48.0", features = [ +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +log = "0.4" +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "fs", diff --git a/lib/ui-base/Cargo.toml b/lib/ui-base/Cargo.toml index 1766e274..a11a77f0 100644 --- a/lib/ui-base/Cargo.toml +++ b/lib/ui-base/Cargo.toml @@ -10,10 +10,10 @@ graphics-types = { path = "../graphics-types" } hiarc = { path = "../hiarc", features = ["enable_egui"] } math = { path = "../math" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -egui_extras = { version = "0.33.0" } -serde = { version = "1.0.228", features = ["derive"] } -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } +egui_extras = { version = "0.34" } +serde = { version = "1", features = ["derive"] } +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } diff --git a/lib/ui-base/src/components/clearable_edit_field.rs b/lib/ui-base/src/components/clearable_edit_field.rs index 83126422..5e313ebe 100644 --- a/lib/ui-base/src/components/clearable_edit_field.rs +++ b/lib/ui-base/src/components/clearable_edit_field.rs @@ -72,27 +72,42 @@ pub fn clearable_edit_field( strip.cell(|ui| { ui.style_mut().wrap_mode = None; let style = ui.style_mut(); + style.spacing.button_padding = vec2(0.0, 0.0); let widgets = &mut style.visuals.widgets; widgets.inactive.corner_radius = CornerRadius { ne: rounding, se: rounding, ..Default::default() }; + widgets.inactive.expansion = 0.0; + widgets.inactive.bg_stroke = Stroke::NONE; widgets.active.corner_radius = widgets.inactive.corner_radius; widgets.active.expansion = widgets.inactive.expansion; + widgets.active.bg_stroke = widgets.inactive.bg_stroke; + widgets.active.weak_bg_fill = widgets.inactive.weak_bg_fill; widgets.hovered.corner_radius = widgets.inactive.corner_radius; widgets.hovered.expansion = widgets.inactive.expansion; + widgets.hovered.bg_stroke = widgets.inactive.bg_stroke; + widgets.hovered.weak_bg_fill = widgets.inactive.weak_bg_fill; widgets.noninteractive.corner_radius = widgets.inactive.corner_radius; widgets.noninteractive.expansion = widgets.inactive.expansion; + widgets.noninteractive.bg_stroke = widgets.inactive.bg_stroke; + widgets.noninteractive.weak_bg_fill = widgets.inactive.weak_bg_fill; widgets.open.corner_radius = widgets.inactive.corner_radius; - widgets.noninteractive.expansion = widgets.inactive.expansion; + widgets.open.expansion = widgets.inactive.expansion; + widgets.open.bg_stroke = widgets.inactive.bg_stroke; + widgets.open.weak_bg_fill = widgets.inactive.weak_bg_fill; if ui - .add(Button::new("\u{f00d}").stroke(Stroke::NONE)) + .add_sized( + ui.available_size(), + Button::new("\u{f00d}").stroke(Stroke::NONE), + ) .clicked() { text.clear(); if let Some(res) = &mut res { res.mark_changed(); + res.request_focus(); } } }); diff --git a/lib/ui-base/src/ui.rs b/lib/ui-base/src/ui.rs index 6cb84412..2b4e4a17 100644 --- a/lib/ui-base/src/ui.rs +++ b/lib/ui-base/src/ui.rs @@ -363,6 +363,7 @@ impl UiContainer { maximized: Default::default(), fullscreen: Default::default(), focused: Default::default(), + occluded: Default::default(), }, ); if zoom_level == pixels_per_point { @@ -399,9 +400,9 @@ impl UiContainer { pipe: &mut UiRenderPipe, ui_state: &mut UiState, ) -> FullOutput { - egui_ctx.run(input, |egui_ctx| { + egui_ctx.run_ui(input, |egui_ctx| { egui_ctx.set_style(default_style()); - gui_main_panel(main_panel_color).show(egui_ctx, |ui| { + gui_main_panel(main_panel_color).show_inside(egui_ctx, |ui| { #[instrument(level = "trace", skip_all)] fn render_wrapped( ui: &mut egui::Ui, diff --git a/lib/ui-generic/Cargo.toml b/lib/ui-generic/Cargo.toml index bb352d0a..8fa2ddf1 100644 --- a/lib/ui-generic/Cargo.toml +++ b/lib/ui-generic/Cargo.toml @@ -8,7 +8,7 @@ graphics = { path = "../graphics" } math = { path = "../math" } ui-base = { path = "../ui-base" } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -tracing = { version = "0.1.41", default-features = false, features = [ +egui = { version = "0.34", default-features = false, features = ["serde"] } +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } diff --git a/lib/ui-wasm-manager/Cargo.toml b/lib/ui-wasm-manager/Cargo.toml index 0b3b86a1..a247800b 100644 --- a/lib/ui-wasm-manager/Cargo.toml +++ b/lib/ui-wasm-manager/Cargo.toml @@ -20,13 +20,13 @@ wasm-logic-http = { path = "../wasm-logic-http" } wasm-logic-sound = { path = "../wasm-logic-sound" } wasm-runtime = { path = "../wasm-runtime" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -egui = { version = "0.33.0", default-features = false, features = ["serde"] } -serde = "1.0.228" -tracing = { version = "0.1.41", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +egui = { version = "0.34", default-features = false, features = ["serde"] } +serde = "1" +tracing = { version = "0.1", default-features = false, features = [ "attributes", ] } -wasmer = { version = "6.1.0", default-features = false, features = [ +wasmer = { version = "7", default-features = false, features = [ "sys", "cranelift", ] } diff --git a/lib/wasm-logic-db/Cargo.toml b/lib/wasm-logic-db/Cargo.toml index ecdf16a2..2d9876cc 100644 --- a/lib/wasm-logic-db/Cargo.toml +++ b/lib/wasm-logic-db/Cargo.toml @@ -8,8 +8,8 @@ base-io = { path = "../base-io" } game-database = { path = "../game-database" } wasm-runtime-types = { path = "../wasm-runtime-types" } -sendable = "0.6.1" -wasmer = { version = "6.1.0", default-features = false, features = [ +sendable = "0.6" +wasmer = { version = "7", default-features = false, features = [ "sys", "cranelift", ] } diff --git a/lib/wasm-logic-fs/Cargo.toml b/lib/wasm-logic-fs/Cargo.toml index 4136d5fa..80b18e00 100644 --- a/lib/wasm-logic-fs/Cargo.toml +++ b/lib/wasm-logic-fs/Cargo.toml @@ -8,8 +8,8 @@ base-io = { path = "../base-io" } base-io-traits = { path = "../base-io-traits" } wasm-runtime-types = { path = "../wasm-runtime-types" } -sendable = "0.6.1" -wasmer = { version = "6.1.0", default-features = false, features = [ +sendable = "0.6" +wasmer = { version = "7", default-features = false, features = [ "sys", "cranelift", ] } diff --git a/lib/wasm-logic-graphics/Cargo.toml b/lib/wasm-logic-graphics/Cargo.toml index 0770e2a2..76feea49 100644 --- a/lib/wasm-logic-graphics/Cargo.toml +++ b/lib/wasm-logic-graphics/Cargo.toml @@ -11,8 +11,8 @@ graphics-types = { path = "../graphics-types" } hiarc = { path = "../hiarc", features = ["derive"] } wasm-runtime-types = { path = "../wasm-runtime-types" } -sendable = "0.6.1" -wasmer = { version = "6.1.0", default-features = false, features = [ +sendable = "0.6" +wasmer = { version = "7", default-features = false, features = [ "sys", "cranelift", ] } diff --git a/lib/wasm-logic-http/Cargo.toml b/lib/wasm-logic-http/Cargo.toml index d87d4f67..3770225d 100644 --- a/lib/wasm-logic-http/Cargo.toml +++ b/lib/wasm-logic-http/Cargo.toml @@ -9,10 +9,10 @@ base-io = { path = "../base-io" } base-io-traits = { path = "../base-io-traits" } wasm-runtime-types = { path = "../wasm-runtime-types" } -bytes = { version = "1.10.1", features = ["serde"] } -sendable = "0.6.1" -url = { version = "2.5.7", features = ["serde"] } -wasmer = { version = "6.1.0", default-features = false, features = [ +bytes = { version = "1", features = ["serde"] } +sendable = "0.6" +url = { version = "2", features = ["serde"] } +wasmer = { version = "7", default-features = false, features = [ "sys", "cranelift", ] } diff --git a/lib/wasm-logic-sound/Cargo.toml b/lib/wasm-logic-sound/Cargo.toml index 0a89416b..53048cf8 100644 --- a/lib/wasm-logic-sound/Cargo.toml +++ b/lib/wasm-logic-sound/Cargo.toml @@ -13,9 +13,9 @@ hiarc = { path = "../hiarc", features = [ sound = { path = "../sound" } wasm-runtime-types = { path = "../wasm-runtime-types" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -sendable = "0.6.1" -wasmer = { version = "6.1.0", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +sendable = "0.6" +wasmer = { version = "7", default-features = false, features = [ "sys", "cranelift", ] } diff --git a/lib/wasm-runtime-types/Cargo.toml b/lib/wasm-runtime-types/Cargo.toml index 7012fa21..405a175d 100644 --- a/lib/wasm-runtime-types/Cargo.toml +++ b/lib/wasm-runtime-types/Cargo.toml @@ -6,10 +6,10 @@ edition = "2024" [dependencies] pool = { path = "../pool" } -bincode = "2.0.1" -sendable = "0.6.1" -serde = "1.0.228" -wasmer = { version = "6.1.0", default-features = false, features = [ +bincode = "2" +sendable = "0.6" +serde = "1" +wasmer = { version = "7", default-features = false, features = [ "sys", "cranelift", ] } diff --git a/lib/wasm-runtime/Cargo.toml b/lib/wasm-runtime/Cargo.toml index 400647db..1ece5ace 100644 --- a/lib/wasm-runtime/Cargo.toml +++ b/lib/wasm-runtime/Cargo.toml @@ -6,11 +6,11 @@ edition = "2024" [dependencies] wasm-runtime-types = { path = "../wasm-runtime-types" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -arrayvec = "0.7.6" -bincode = { version = "2.0.1", features = ["serde"] } -serde = "1.0.228" -wasmer = { version = "6.1.0", default-features = false, features = [ +anyhow = { version = "1", features = ["backtrace"] } +arrayvec = "0.7" +bincode = { version = "2", features = ["serde"] } +serde = "1" +wasmer = { version = "7", default-features = false, features = [ "sys", "cranelift", ] } diff --git a/src/assets-server/Cargo.toml b/src/assets-server/Cargo.toml index 2f87683e..bc5af39c 100644 --- a/src/assets-server/Cargo.toml +++ b/src/assets-server/Cargo.toml @@ -9,9 +9,9 @@ image-utils = { path = "../../lib/image-utils" } assets-base = { path = "../../game/assets-base" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -axum = { version = "0.8.6" } -tokio = { version = "1.48.0", features = [ +anyhow = { version = "1", features = ["backtrace"] } +axum = { version = "0.8" } +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "fs", @@ -20,12 +20,12 @@ tokio = { version = "1.48.0", features = [ "macros", ] } -clap = { version = "4.5.51", features = ["derive"] } -dotenvy = "0.15.7" -env_logger = "0.11.8" -log = "0.4.28" -parking_lot = "0.12.5" -serde_json = "1.0.145" -tower-http = { version = "0.6.6", features = ["fs", "trace"] } -tower-service = { version = "0.3.3" } -urlencoding = "2.1.3" +clap = { version = "4", features = ["derive"] } +dotenvy = "0.15" +env_logger = "0.11" +log = "0.4" +parking_lot = "0.12" +serde_json = "1" +tower-http = { version = "0.6", features = ["fs", "trace"] } +tower-service = { version = "0.3" } +urlencoding = "2" diff --git a/src/client/client.rs b/src/client/client.rs index 4fae7b9e..f5e9f62f 100644 --- a/src/client/client.rs +++ b/src/client/client.rs @@ -45,11 +45,9 @@ use client_types::{ console::{ConsoleEntry, entries_to_parser}, }; use client_ui::{ - chat::user_data::{ChatEvent, ChatMode}, connect::page::ConnectingUi, console::utils::run_commands, events::{UiEvent, UiEvents}, - hud::user_data::RenderDateTime, ingame_menu::{ account_info::AccountInfo, client_info::{ActiveClientInfo, ClientInfo}, @@ -66,9 +64,8 @@ use client_ui::{ player_settings_ntfy::PlayerSettingsSync, spatial_chat::SpatialChat, }, - spectator_selection::user_data::SpectatorSelectionEvent, - utils::render_tee_for_ui, }; +use client_ui_utils::render_tee_for_ui; use command_parser::parser::ParserCache; use config::config::ConfigEngine; use ddnet_info_proxy::DdnetInfoProxy; @@ -87,6 +84,11 @@ use graphics_backend::{ }, window::BackendWindow, }; +use ingame_ui::{ + chat::user_data::{ChatEvent, ChatMode}, + hud::user_data::RenderDateTime, + spectator_selection::user_data::SpectatorSelectionEvent, +}; use editor_wasm::editor::editor_wasm_manager::{EditorState, EditorWasmManager}; use game_interface::{ @@ -1365,7 +1367,7 @@ impl ClientNativeImpl { EditorResult::PlatformOutput(output) => { self.inp_manager.handle_platform_output( native, - output, + *output, self.local_console.ui.ui_state.is_ui_open || self.game.remote_console_open(), ); diff --git a/src/client/input/input_handling.rs b/src/client/input/input_handling.rs index 06c27bd8..57a59a1a 100644 --- a/src/client/input/input_handling.rs +++ b/src/client/input/input_handling.rs @@ -7,9 +7,7 @@ use binds::binds::{ }; use camera::{Camera, CameraInterface}; use client_types::console::ConsoleEntry; -use client_ui::chat::user_data::ChatMode; use client_ui::console::utils::run_command; -use client_ui::emote_wheel::user_data::EmoteWheelEvent; use command_parser::parser::CommandTypeRef; use config::config::ConfigEngine; use egui::{Context, CursorIcon}; @@ -26,6 +24,8 @@ use game_interface::types::render::character::{PlayerCameraMode, TeeEye}; use game_interface::types::weapons::WeaponType; use graphics::graphics::graphics::{Graphics, ScreenshotCb}; use graphics_types::rendering::State; +use ingame_ui::chat::user_data::ChatMode; +use ingame_ui::emote_wheel::user_data::EmoteWheelEvent; use math::math::{length, normalize_pre_length, vector::dvec2}; use input_binds::binds::{BindKey, Binds, MouseExtra}; diff --git a/src/client/localplayer/mod.rs b/src/client/localplayer/mod.rs index b4b7752b..56470bed 100644 --- a/src/client/localplayer/mod.rs +++ b/src/client/localplayer/mod.rs @@ -2,11 +2,11 @@ use std::{collections::BTreeMap, time::Duration}; use base::linked_hash_map_view::FxLinkedHashMap; use binds::binds::BindAction; -use client_ui::{chat::user_data::ChatMode, emote_wheel::user_data::EmoteWheelEvent}; use game_base::{network::messages::PlayerInputChainable, player_input::PlayerInput}; use game_interface::types::{ game::GameTickType, id_types::PlayerId, render::character::PlayerCameraMode, }; +use ingame_ui::{chat::user_data::ChatMode, emote_wheel::user_data::EmoteWheelEvent}; use input_binds::binds::Binds; use math::math::vector::dvec2; use pool::datatypes::PoolFxLinkedHashMap; diff --git a/src/client/ui/pages/editor/tee.rs b/src/client/ui/pages/editor/tee.rs index c93aa88a..ce20bb5f 100644 --- a/src/client/ui/pages/editor/tee.rs +++ b/src/client/ui/pages/editor/tee.rs @@ -454,7 +454,7 @@ impl TeeEditor { // add an overlay to show the current frames interpolated data(pos, scale, rotation) egui::Window::new("Vector data") .anchor(egui::Align2::RIGHT_TOP, egui::vec2(0.0, 0.0)) - .default_width(32.0) + .default_size(egui::vec2(32.0, 32.0)) .show(ui.ctx(), |ui| { // position, scale & rotation let anim_pos = item.atoms.anim_frame_data.get().pos; @@ -932,10 +932,10 @@ impl UiPageInterface for TeeEditor { }); strip.cell(|ui| { ui.style_mut().wrap_mode = None; - egui::SidePanel::left("left_panel") + egui::Panel::left("left_panel") .resizable(true) - .default_width(150.0) - .width_range(80.0..=200.0) + .default_size(150.0) + .size_range(80.0..=200.0) .show_inside(ui, |ui| { ui.vertical_centered(|ui| { ui.heading("Left Panel"); @@ -943,10 +943,10 @@ impl UiPageInterface for TeeEditor { }); }); - egui::TopBottomPanel::bottom("bottom_panel") + egui::Panel::bottom("bottom_panel") .resizable(true) - .default_height(50.0) - .height_range(20.0..=100.0) + .default_size(50.0) + .size_range(20.0..=100.0) .show_inside(ui, |ui| { ui.vertical_centered(|ui| { ui.heading("Bottom Panel"); diff --git a/src/community-register-server/Cargo.toml b/src/community-register-server/Cargo.toml index 80a80918..4c7f84f2 100644 --- a/src/community-register-server/Cargo.toml +++ b/src/community-register-server/Cargo.toml @@ -6,10 +6,10 @@ edition = "2024" [dependencies] community = { path = "../../game/community" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -axum = "0.8.6" -clap = { version = "4.5.51", features = ["derive"] } -tokio = { version = "1.48.0", features = [ +anyhow = { version = "1", features = ["backtrace"] } +axum = "0.8" +clap = { version = "4", features = ["derive"] } +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "fs", @@ -18,4 +18,4 @@ tokio = { version = "1.48.0", features = [ "macros", ] } -tower-http = { version = "0.6.6", features = ["fs", "trace"] } +tower-http = { version = "0.6", features = ["fs", "trace"] } diff --git a/src/community-server/Cargo.toml b/src/community-server/Cargo.toml index 3aa0f6cb..60d26981 100644 --- a/src/community-server/Cargo.toml +++ b/src/community-server/Cargo.toml @@ -16,15 +16,13 @@ game-database-backend = { path = "../../lib/game-database-backend", default-feat network = { path = "../../lib/network" } sql = { path = "../../lib/sql", default-features = false, features = ["mysql"] } -anyhow = { version = "1.0.100", features = ["backtrace"] } -async-trait = "0.1.89" -clap = { version = "4.5.51", features = ["derive"] } -log = "0.4.28" -reqwest = { version = "0.12.24", default-features = false, features = [ - "rustls-tls", -] } -serde_json = "1.0.145" -tokio = { version = "1.48.0", features = [ +anyhow = { version = "1", features = ["backtrace"] } +async-trait = "0.1" +clap = { version = "4", features = ["derive"] } +log = "0.4" +reqwest = { version = "0.13", default-features = false, features = ["rustls"] } +serde_json = "1" +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "fs", @@ -32,11 +30,11 @@ tokio = { version = "1.48.0", features = [ "time", "macros", ] } -url = { version = "2.5.7", features = ["serde"] } -x509-cert = { version = "0.2.5" } +url = { version = "2", features = ["serde"] } +x509-cert = { version = "0.2" } -ddnet-account-client-http-fs = { version = "0.3.0" } -ddnet-account-client-reqwest = "0.3.0" -ddnet-account-game-server = { version = "0.3.0" } -ddnet-accounts-shared = { version = "0.2.0" } -ddnet-accounts-types = { version = "0.1.0" } +ddnet-account-client-http-fs = { version = "0.4" } +ddnet-account-client-reqwest = "0.4" +ddnet-account-game-server = { version = "0.4" } +ddnet-accounts-shared = { version = "0.3" } +ddnet-accounts-types = { version = "0.2" } diff --git a/src/dilate/Cargo.toml b/src/dilate/Cargo.toml index 0e670946..8e9adc7b 100644 --- a/src/dilate/Cargo.toml +++ b/src/dilate/Cargo.toml @@ -6,10 +6,10 @@ edition = "2024" [dependencies] image-utils = { path = "../../lib/image-utils" } -clap = { version = "4.5.51", features = ["derive"] } -oxipng = { version = "9.1", features = ["parallel"], default-features = false } -rayon = "1.11.0" -tokio = { version = "1.48.0", features = [ +clap = { version = "4", features = ["derive"] } +oxipng = { version = "10.1", features = ["parallel"], default-features = false } +rayon = "1" +tokio = { version = "1", features = [ "rt-multi-thread", "sync", "fs", diff --git a/src/editor-server/Cargo.toml b/src/editor-server/Cargo.toml index 8e80346c..b8199047 100644 --- a/src/editor-server/Cargo.toml +++ b/src/editor-server/Cargo.toml @@ -19,13 +19,13 @@ sound-backend = { path = "../../lib/sound-backend" } editor = { path = "../../game/editor" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -chrono = { version = "0.4.42" } -clap = { version = "4.5.51", features = ["derive"] } -ed25519-dalek = { version = "2.2.0", features = ["serde"] } -env_logger = "0.11.8" -log = "0.4.28" -rayon = "1.11.0" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.145" -x509-cert = { version = "0.2.5" } +anyhow = { version = "1", features = ["backtrace"] } +chrono = { version = "0.4" } +clap = { version = "4", features = ["derive"] } +ed25519-dalek = { version = "2", features = ["serde"] } +env_logger = "0.11" +log = "0.4" +rayon = "1" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +x509-cert = { version = "0.2" } diff --git a/src/emoticon-convert/Cargo.toml b/src/emoticon-convert/Cargo.toml index a6efefee..3193a730 100644 --- a/src/emoticon-convert/Cargo.toml +++ b/src/emoticon-convert/Cargo.toml @@ -9,4 +9,4 @@ assets-splitting = { path = "../../game/assets-splitting" } image-utils = { path = "../../lib/image-utils" } -clap = { version = "4.5.51", features = ["derive"] } +clap = { version = "4", features = ["derive"] } diff --git a/src/extra-convert/Cargo.toml b/src/extra-convert/Cargo.toml index 0257058f..fbe0479c 100644 --- a/src/extra-convert/Cargo.toml +++ b/src/extra-convert/Cargo.toml @@ -9,4 +9,4 @@ assets-splitting = { path = "../../game/assets-splitting" } image-utils = { path = "../../lib/image-utils" } -clap = { version = "4.5.51", features = ["derive"] } +clap = { version = "4", features = ["derive"] } diff --git a/src/game-convert/Cargo.toml b/src/game-convert/Cargo.toml index ca19b53f..da753266 100644 --- a/src/game-convert/Cargo.toml +++ b/src/game-convert/Cargo.toml @@ -9,4 +9,4 @@ assets-splitting = { path = "../../game/assets-splitting" } image-utils = { path = "../../lib/image-utils" } -clap = { version = "4.5.51", features = ["derive"] } +clap = { version = "4", features = ["derive"] } diff --git a/src/hud-convert/Cargo.toml b/src/hud-convert/Cargo.toml index f8facaaf..ff495d24 100644 --- a/src/hud-convert/Cargo.toml +++ b/src/hud-convert/Cargo.toml @@ -9,4 +9,4 @@ assets-splitting = { path = "../../game/assets-splitting" } image-utils = { path = "../../lib/image-utils" } -clap = { version = "4.5.51", features = ["derive"] } +clap = { version = "4", features = ["derive"] } diff --git a/src/map-convert/Cargo.toml b/src/map-convert/Cargo.toml index 288f492c..6205b670 100644 --- a/src/map-convert/Cargo.toml +++ b/src/map-convert/Cargo.toml @@ -11,8 +11,8 @@ base-io = { path = "../../lib/base-io" } map = { path = "../../game/map" } map-convert-lib = { path = "../../game/map-convert-lib" } -anyhow = { version = "1.0.100", features = ["backtrace"] } -clap = { version = "4.5.51", features = ["derive"] } -env_logger = "0.11.8" -log = "0.4.28" -rayon = "1.11.0" +anyhow = { version = "1", features = ["backtrace"] } +clap = { version = "4", features = ["derive"] } +env_logger = "0.11" +log = "0.4" +rayon = "1" diff --git a/src/master-server/Cargo.toml b/src/master-server/Cargo.toml index 92704d6a..ab035cc7 100644 --- a/src/master-server/Cargo.toml +++ b/src/master-server/Cargo.toml @@ -11,23 +11,23 @@ master-server-types = { path = "../../game/master-server-types" } arrayvec = { version = "=0.5.2", features = ["serde"] } base64 = "=0.13.1" -bytes = "1.10.1" +bytes = "1" clap = { version = "=2.34.0", default-features = false, features = [ "suggestions", "wrap_help", ] } -env_logger = "0.11.8" +env_logger = "0.11" headers = "=0.3.9" -hex = "0.4.3" -log = "0.4.28" -rand = "0.9.2" -serde = { version = "1.0.228", features = ["derive"] } -serde_json = { version = "1.0.145", features = [ +hex = "0.4" +log = "0.4" +rand = "0.10" +serde = { version = "1", features = ["derive"] } +serde_json = { version = "1", features = [ "float_roundtrip", "preserve_order", "raw_value", ] } -sha2 = "0.10.9" -tokio = { version = "1.48.0", features = ["macros", "rt", "rt-multi-thread"] } -tokio-stream = { version = "0.1.17", features = ["net"] } -warp = { version = "0.3.7", default-features = false } +sha2 = "0.11" +tokio = { version = "1", features = ["macros", "rt", "rt-multi-thread"] } +tokio-stream = { version = "0.1", features = ["net"] } +warp = { version = "0.3", default-features = false } diff --git a/src/part-convert/Cargo.toml b/src/part-convert/Cargo.toml index 55c987d7..67f9b03f 100644 --- a/src/part-convert/Cargo.toml +++ b/src/part-convert/Cargo.toml @@ -9,4 +9,4 @@ assets-splitting = { path = "../../game/assets-splitting" } image-utils = { path = "../../lib/image-utils" } -clap = { version = "4.5.51", features = ["derive"] } +clap = { version = "4", features = ["derive"] } diff --git a/src/server/Cargo.toml b/src/server/Cargo.toml index 5883da1e..0abde98b 100644 --- a/src/server/Cargo.toml +++ b/src/server/Cargo.toml @@ -15,6 +15,6 @@ base = { path = "../../lib/base" } base-fs = { path = "../../lib/base-fs", default-features = false } network = { path = "../../lib/network" } -env_logger = "0.11.8" +env_logger = "0.11" game-base = { path = "../../game/game-base" } game-server = { path = "../../game/game-server", default-features = false } diff --git a/src/skin-convert/Cargo.toml b/src/skin-convert/Cargo.toml index f2234780..fca09628 100644 --- a/src/skin-convert/Cargo.toml +++ b/src/skin-convert/Cargo.toml @@ -8,5 +8,5 @@ assets-splitting = { path = "../../game/assets-splitting" } image-utils = { path = "../../lib/image-utils" } -clap = { version = "4.5.51", features = ["derive"] } -rayon = "1.11.0" +clap = { version = "4", features = ["derive"] } +rayon = "1" diff --git a/src/tests/chat.rs b/src/tests/chat.rs index 864b9c8f..6efa170a 100644 --- a/src/tests/chat.rs +++ b/src/tests/chat.rs @@ -4,10 +4,10 @@ use client_containers::utils::RenderGameContainers; use client_render::chat::render::{ChatRender, ChatRenderOptions, ChatRenderPipe}; use client_render_base::render::tee::RenderTee; use client_types::chat::{ChatMsg, ServerMsg}; -use client_ui::chat::user_data::{ChatMode, MsgInChat}; use game_base::network::types::chat::NetChatMsgPlayerChannel; use game_interface::types::character_info::NetworkSkinInfo; use graphics::graphics::graphics::Graphics; +use ingame_ui::chat::user_data::{ChatMode, MsgInChat}; use math::math::vector::ubvec4; use ui_base::{remember_mut::RememberMut, ui::UiCreator}; diff --git a/src/tests/hud.rs b/src/tests/hud.rs index ad1844d9..12d1de35 100644 --- a/src/tests/hud.rs +++ b/src/tests/hud.rs @@ -4,7 +4,6 @@ use base::{linked_hash_map_view::FxLinkedHashMap, network_string::PoolNetworkStr use client_containers::utils::RenderGameContainers; use client_render_base::render::tee::RenderTee; use client_render_game::components::hud::{RenderHud, RenderHudPipe}; -use client_ui::hud::user_data::RenderDateTime; use game_interface::types::{ character_info::{NetworkCharacterInfo, NetworkSkinInfo}, emoticons::IntoEnumIterator, @@ -23,6 +22,7 @@ use game_interface::types::{ weapons::{EnumCount, WeaponType}, }; use graphics::graphics::graphics::Graphics; +use ingame_ui::hud::user_data::RenderDateTime; use pool::{ datatypes::{PoolFxLinkedHashSet, PoolString}, rc::PoolRc, diff --git a/src/tests/ingame.rs b/src/tests/ingame.rs index b3b5cd48..d78b57f6 100644 --- a/src/tests/ingame.rs +++ b/src/tests/ingame.rs @@ -28,8 +28,9 @@ use map::map::groups::{ }; use math::math::{Rng, vector::vec2}; use pool::{datatypes::PoolFxLinkedHashMap, rc::PoolRc}; +use tile_map_collision::collision::Collision; use ui_base::ui::UiCreator; -use vanilla::collision::collision::Collision; +use vanilla::collision::DEFAULT_TICKS_PER_SECOND; use super::utils::render_helper; @@ -152,6 +153,7 @@ pub fn test_ingame( })], }, false, + DEFAULT_TICKS_PER_SECOND, ) .unwrap(), camera: &camera, @@ -290,6 +292,7 @@ pub fn test_ingame_skins( })], }, false, + DEFAULT_TICKS_PER_SECOND, ) .unwrap(), camera: &camera, diff --git a/src/tests/screenshots.rs b/src/tests/screenshots.rs index 2f79f624..7b4f5db5 100644 --- a/src/tests/screenshots.rs +++ b/src/tests/screenshots.rs @@ -6,7 +6,7 @@ use client_containers::{ utils::{RenderGameContainers, load_containers}, }; use client_render_base::render::{tee::RenderTee, toolkit::ToolkitRender}; -use client_ui::thumbnail_container::{ +use client_ui_utils::thumbnail_container::{ DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer, load_thumbnail_container, }; use game_interface::types::character_info::NetworkSkinInfo; diff --git a/src/tests/vote.rs b/src/tests/vote.rs index ee83b9ba..0f6f2bb4 100644 --- a/src/tests/vote.rs +++ b/src/tests/vote.rs @@ -3,14 +3,12 @@ use std::time::Duration; use client_containers::utils::RenderGameContainers; use client_render::vote::render::{VoteRender, VoteRenderPipe}; use client_render_base::render::tee::RenderTee; -use client_ui::{ - thumbnail_container::ThumbnailContainer, - vote::user_data::{VoteRenderData, VoteRenderPlayer, VoteRenderType}, -}; +use client_ui_utils::thumbnail_container::ThumbnailContainer; use game_interface::votes::{ MapCategoryVoteKey, MapVote, MapVoteDetails, MapVoteKey, VoteState, VoteType, Voted, }; use graphics::graphics::graphics::Graphics; +use ingame_ui::vote::user_data::{VoteRenderData, VoteRenderPlayer, VoteRenderType}; use ui_base::ui::UiCreator; use super::utils::render_helper;