Compare commits

..

10 Commits

Author SHA1 Message Date
artem b3fe69a4f4 update engine
Gitea Actions Demo / build_and_push (push) Failing after 13s Details
2024-04-07 19:09:16 +03:00
artem acb27779ac add font 2024-04-06 16:35:05 +03:00
artem 1d8ccf4035 correct widnow size 2024-04-06 16:26:01 +03:00
artem 16bbeb5d16 vk init 2024-04-06 15:46:40 +03:00
artem f5da175d7b vk init 2024-04-06 15:36:40 +03:00
artem 016406f7f0 vk init 2024-04-06 15:30:05 +03:00
artem 4e2c157358 new version + metric 2024-04-02 19:34:50 +03:00
artem f6b7e465d1 end screen after end 2024-04-01 22:23:40 +03:00
artem a3b18313a7 add new screens 2024-03-29 21:47:57 +03:00
artem 3460fc16e3 preload sounds 2024-03-23 22:18:12 +03:00
22 changed files with 1886 additions and 1256 deletions

185
Cargo.lock generated
View File

@ -23,9 +23,9 @@ dependencies = [
[[package]] [[package]]
name = "ab_glyph" name = "ab_glyph"
version = "0.2.23" version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225" checksum = "8e08104bebc65a46f8bc7aa733d39ea6874bfa7156f41a46b805785e3af1587d"
dependencies = [ dependencies = [
"ab_glyph_rasterizer", "ab_glyph_rasterizer",
"owned_ttf_parser", "owned_ttf_parser",
@ -197,9 +197,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]] [[package]]
name = "autocfg" name = "autocfg"
version = "1.1.0" version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
[[package]] [[package]]
name = "base64" name = "base64"
@ -233,7 +233,7 @@ dependencies = [
"regex", "regex",
"rustc-hash", "rustc-hash",
"shlex", "shlex",
"syn 2.0.53", "syn 2.0.58",
] ]
[[package]] [[package]]
@ -302,9 +302,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]] [[package]]
name = "bytes" name = "bytes"
version = "1.5.0" version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
[[package]] [[package]]
name = "calloop" name = "calloop"
@ -343,9 +343,9 @@ dependencies = [
[[package]] [[package]]
name = "cargo-platform" name = "cargo-platform"
version = "0.1.7" version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "694c8807f2ae16faecc43dc17d74b3eb042482789fd0eb64b39a2e04e087053f" checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc"
dependencies = [ dependencies = [
"serde", "serde",
] ]
@ -366,9 +366,9 @@ dependencies = [
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.0.90" version = "1.0.91"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" checksum = "1fd97381a8cc6493395a5afc4c691c1084b3768db713b73aa215217aa245d153"
dependencies = [ dependencies = [
"jobserver", "jobserver",
"libc", "libc",
@ -423,9 +423,9 @@ dependencies = [
[[package]] [[package]]
name = "clap" name = "clap"
version = "4.5.3" version = "4.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
dependencies = [ dependencies = [
"clap_builder", "clap_builder",
"clap_derive", "clap_derive",
@ -440,19 +440,19 @@ dependencies = [
"anstream", "anstream",
"anstyle", "anstyle",
"clap_lex", "clap_lex",
"strsim 0.11.0", "strsim 0.11.1",
] ]
[[package]] [[package]]
name = "clap_derive" name = "clap_derive"
version = "4.5.3" version = "4.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f" checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
dependencies = [ dependencies = [
"heck 0.5.0", "heck 0.5.0",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.58",
] ]
[[package]] [[package]]
@ -543,9 +543,9 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
[[package]] [[package]]
name = "core-graphics" name = "core-graphics"
version = "0.23.1" version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212" checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags 1.3.2",
"core-foundation", "core-foundation",
@ -718,9 +718,9 @@ dependencies = [
[[package]] [[package]]
name = "downcast-rs" name = "downcast-rs"
version = "1.2.0" version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
[[package]] [[package]]
name = "editor" name = "editor"
@ -864,7 +864,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.58",
] ]
[[package]] [[package]]
@ -939,7 +939,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.58",
] ]
[[package]] [[package]]
@ -984,7 +984,7 @@ dependencies = [
[[package]] [[package]]
name = "fyrox" name = "fyrox"
version = "0.33.1" version = "0.33.1"
source = "git+https://github.com/FyroxEngine/Fyrox?rev=a133cfab0615dae9b18470f4860e81363df2bd1c#a133cfab0615dae9b18470f4860e81363df2bd1c" source = "git+https://github.com/FyroxEngine/Fyrox?rev=7de5a3107da2dfab180fd23f4c79b2542b466d70#7de5a3107da2dfab180fd23f4c79b2542b466d70"
dependencies = [ dependencies = [
"fyrox-impl", "fyrox-impl",
] ]
@ -992,7 +992,7 @@ dependencies = [
[[package]] [[package]]
name = "fyrox-animation" name = "fyrox-animation"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/FyroxEngine/Fyrox?rev=a133cfab0615dae9b18470f4860e81363df2bd1c#a133cfab0615dae9b18470f4860e81363df2bd1c" source = "git+https://github.com/FyroxEngine/Fyrox?rev=7de5a3107da2dfab180fd23f4c79b2542b466d70#7de5a3107da2dfab180fd23f4c79b2542b466d70"
dependencies = [ dependencies = [
"fxhash", "fxhash",
"fyrox-core", "fyrox-core",
@ -1004,7 +1004,7 @@ dependencies = [
[[package]] [[package]]
name = "fyrox-core" name = "fyrox-core"
version = "0.27.0" version = "0.27.0"
source = "git+https://github.com/FyroxEngine/Fyrox?rev=a133cfab0615dae9b18470f4860e81363df2bd1c#a133cfab0615dae9b18470f4860e81363df2bd1c" source = "git+https://github.com/FyroxEngine/Fyrox?rev=7de5a3107da2dfab180fd23f4c79b2542b466d70#7de5a3107da2dfab180fd23f4c79b2542b466d70"
dependencies = [ dependencies = [
"android-activity", "android-activity",
"arrayvec", "arrayvec",
@ -1015,7 +1015,7 @@ dependencies = [
"futures", "futures",
"fxhash", "fxhash",
"fyrox-core-derive", "fyrox-core-derive",
"fyrox-math 0.1.0 (git+https://github.com/FyroxEngine/Fyrox?rev=a133cfab0615dae9b18470f4860e81363df2bd1c)", "fyrox-math 0.1.0 (git+https://github.com/FyroxEngine/Fyrox?rev=7de5a3107da2dfab180fd23f4c79b2542b466d70)",
"instant", "instant",
"js-sys", "js-sys",
"lazy_static", "lazy_static",
@ -1036,7 +1036,7 @@ dependencies = [
[[package]] [[package]]
name = "fyrox-core-derive" name = "fyrox-core-derive"
version = "0.22.0" version = "0.22.0"
source = "git+https://github.com/FyroxEngine/Fyrox?rev=a133cfab0615dae9b18470f4860e81363df2bd1c#a133cfab0615dae9b18470f4860e81363df2bd1c" source = "git+https://github.com/FyroxEngine/Fyrox?rev=7de5a3107da2dfab180fd23f4c79b2542b466d70#7de5a3107da2dfab180fd23f4c79b2542b466d70"
dependencies = [ dependencies = [
"convert_case", "convert_case",
"darling", "darling",
@ -1049,7 +1049,7 @@ dependencies = [
[[package]] [[package]]
name = "fyrox-graph" name = "fyrox-graph"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/FyroxEngine/Fyrox?rev=a133cfab0615dae9b18470f4860e81363df2bd1c#a133cfab0615dae9b18470f4860e81363df2bd1c" source = "git+https://github.com/FyroxEngine/Fyrox?rev=7de5a3107da2dfab180fd23f4c79b2542b466d70#7de5a3107da2dfab180fd23f4c79b2542b466d70"
dependencies = [ dependencies = [
"fxhash", "fxhash",
"fyrox-core", "fyrox-core",
@ -1059,7 +1059,7 @@ dependencies = [
[[package]] [[package]]
name = "fyrox-impl" name = "fyrox-impl"
version = "0.33.1" version = "0.33.1"
source = "git+https://github.com/FyroxEngine/Fyrox?rev=a133cfab0615dae9b18470f4860e81363df2bd1c#a133cfab0615dae9b18470f4860e81363df2bd1c" source = "git+https://github.com/FyroxEngine/Fyrox?rev=7de5a3107da2dfab180fd23f4c79b2542b466d70#7de5a3107da2dfab180fd23f4c79b2542b466d70"
dependencies = [ dependencies = [
"base64", "base64",
"bitflags 2.5.0", "bitflags 2.5.0",
@ -1090,6 +1090,7 @@ dependencies = [
"rayon", "rayon",
"ron", "ron",
"serde", "serde",
"serde-wasm-bindgen",
"strum", "strum",
"strum_macros", "strum_macros",
"tbc", "tbc",
@ -1114,7 +1115,7 @@ dependencies = [
[[package]] [[package]]
name = "fyrox-math" name = "fyrox-math"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/FyroxEngine/Fyrox?rev=a133cfab0615dae9b18470f4860e81363df2bd1c#a133cfab0615dae9b18470f4860e81363df2bd1c" source = "git+https://github.com/FyroxEngine/Fyrox?rev=7de5a3107da2dfab180fd23f4c79b2542b466d70#7de5a3107da2dfab180fd23f4c79b2542b466d70"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"nalgebra", "nalgebra",
@ -1126,7 +1127,7 @@ dependencies = [
[[package]] [[package]]
name = "fyrox-resource" name = "fyrox-resource"
version = "0.11.0" version = "0.11.0"
source = "git+https://github.com/FyroxEngine/Fyrox?rev=a133cfab0615dae9b18470f4860e81363df2bd1c#a133cfab0615dae9b18470f4860e81363df2bd1c" source = "git+https://github.com/FyroxEngine/Fyrox?rev=7de5a3107da2dfab180fd23f4c79b2542b466d70#7de5a3107da2dfab180fd23f4c79b2542b466d70"
dependencies = [ dependencies = [
"fxhash", "fxhash",
"fyrox-core", "fyrox-core",
@ -1139,7 +1140,7 @@ dependencies = [
[[package]] [[package]]
name = "fyrox-sound" name = "fyrox-sound"
version = "0.34.0" version = "0.34.0"
source = "git+https://github.com/FyroxEngine/Fyrox?rev=a133cfab0615dae9b18470f4860e81363df2bd1c#a133cfab0615dae9b18470f4860e81363df2bd1c" source = "git+https://github.com/FyroxEngine/Fyrox?rev=7de5a3107da2dfab180fd23f4c79b2542b466d70#7de5a3107da2dfab180fd23f4c79b2542b466d70"
dependencies = [ dependencies = [
"fyrox-core", "fyrox-core",
"fyrox-resource", "fyrox-resource",
@ -1156,7 +1157,7 @@ dependencies = [
[[package]] [[package]]
name = "fyrox-ui" name = "fyrox-ui"
version = "0.24.0" version = "0.24.0"
source = "git+https://github.com/FyroxEngine/Fyrox?rev=a133cfab0615dae9b18470f4860e81363df2bd1c#a133cfab0615dae9b18470f4860e81363df2bd1c" source = "git+https://github.com/FyroxEngine/Fyrox?rev=7de5a3107da2dfab180fd23f4c79b2542b466d70#7de5a3107da2dfab180fd23f4c79b2542b466d70"
dependencies = [ dependencies = [
"copypasta", "copypasta",
"fontdue", "fontdue",
@ -1176,7 +1177,7 @@ dependencies = [
[[package]] [[package]]
name = "fyroxed_base" name = "fyroxed_base"
version = "0.20.1" version = "0.20.1"
source = "git+https://github.com/FyroxEngine/Fyrox?rev=a133cfab0615dae9b18470f4860e81363df2bd1c#a133cfab0615dae9b18470f4860e81363df2bd1c" source = "git+https://github.com/FyroxEngine/Fyrox?rev=7de5a3107da2dfab180fd23f4c79b2542b466d70#7de5a3107da2dfab180fd23f4c79b2542b466d70"
dependencies = [ dependencies = [
"cargo_metadata", "cargo_metadata",
"fyrox", "fyrox",
@ -1203,9 +1204,9 @@ dependencies = [
[[package]] [[package]]
name = "getrandom" name = "getrandom"
version = "0.2.12" version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" checksum = "a06fddc2749e0528d2813f95e050e87e52c8cbbae56223b9babf73b3e53b0cc6"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"js-sys", "js-sys",
@ -1320,9 +1321,9 @@ dependencies = [
[[package]] [[package]]
name = "half" name = "half"
version = "2.4.0" version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e" checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"crunchy", "crunchy",
@ -1408,9 +1409,9 @@ dependencies = [
[[package]] [[package]]
name = "indexmap" name = "indexmap"
version = "2.2.5" version = "2.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
dependencies = [ dependencies = [
"equivalent", "equivalent",
"hashbrown", "hashbrown",
@ -1487,9 +1488,9 @@ dependencies = [
[[package]] [[package]]
name = "itoa" name = "itoa"
version = "1.0.10" version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
[[package]] [[package]]
name = "jni" name = "jni"
@ -1574,6 +1575,9 @@ name = "lazy_static"
version = "1.4.0" version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
dependencies = [
"spin",
]
[[package]] [[package]]
name = "lazycell" name = "lazycell"
@ -1682,9 +1686,9 @@ dependencies = [
[[package]] [[package]]
name = "memchr" name = "memchr"
version = "2.7.1" version = "2.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
[[package]] [[package]]
name = "memmap2" name = "memmap2"
@ -1697,9 +1701,9 @@ dependencies = [
[[package]] [[package]]
name = "memoffset" name = "memoffset"
version = "0.9.0" version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
dependencies = [ dependencies = [
"autocfg", "autocfg",
] ]
@ -1734,9 +1738,9 @@ dependencies = [
[[package]] [[package]]
name = "nalgebra" name = "nalgebra"
version = "0.32.4" version = "0.32.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4541eb06dce09c0241ebbaab7102f0a01a0c8994afed2e5d0d66775016e25ac2" checksum = "3ea4908d4f23254adda3daa60ffef0f1ac7b8c3e9a864cf3cc154b251908a2ef"
dependencies = [ dependencies = [
"approx", "approx",
"matrixmultiply", "matrixmultiply",
@ -1847,7 +1851,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.58",
] ]
[[package]] [[package]]
@ -1908,7 +1912,7 @@ dependencies = [
"proc-macro-crate", "proc-macro-crate",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.58",
] ]
[[package]] [[package]]
@ -2031,9 +2035,9 @@ dependencies = [
[[package]] [[package]]
name = "parry2d" name = "parry2d"
version = "0.13.6" version = "0.13.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94683d8d7e785fe84b02d0a0dbe0fcf359c031c338dd6d144de958573c570c25" checksum = "a996b83a7a12522b395c54f4ba59593b782e8004794c0212a2f487ed7ac6e419"
dependencies = [ dependencies = [
"approx", "approx",
"arrayvec", "arrayvec",
@ -2052,9 +2056,9 @@ dependencies = [
[[package]] [[package]]
name = "parry3d" name = "parry3d"
version = "0.13.6" version = "0.13.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13d0bdaf533851feec5cba9af11cefcc753ecefba05f758cf6abe886086bc3f5" checksum = "6ccba18a65dba56c08dadfa936e0c9efbc883b3a26dc77d2685f78be10f7667c"
dependencies = [ dependencies = [
"approx", "approx",
"arrayvec", "arrayvec",
@ -2091,9 +2095,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]] [[package]]
name = "pin-project-lite" name = "pin-project-lite"
version = "0.2.13" version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
[[package]] [[package]]
name = "pin-utils" name = "pin-utils"
@ -2112,6 +2116,7 @@ name = "platformer"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"fyrox", "fyrox",
"lazy_static",
] ]
[[package]] [[package]]
@ -2129,12 +2134,13 @@ dependencies = [
[[package]] [[package]]
name = "polling" name = "polling"
version = "3.5.0" version = "3.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9" checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"concurrent-queue", "concurrent-queue",
"hermit-abi",
"pin-project-lite", "pin-project-lite",
"rustix", "rustix",
"tracing", "tracing",
@ -2282,9 +2288,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
[[package]] [[package]]
name = "rayon" name = "rayon"
version = "1.9.0" version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd" checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
dependencies = [ dependencies = [
"either", "either",
"rayon-core", "rayon-core",
@ -2340,9 +2346,9 @@ dependencies = [
[[package]] [[package]]
name = "regex" name = "regex"
version = "1.10.3" version = "1.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"memchr", "memchr",
@ -2363,9 +2369,9 @@ dependencies = [
[[package]] [[package]]
name = "regex-syntax" name = "regex-syntax"
version = "0.8.2" version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
[[package]] [[package]]
name = "robust" name = "robust"
@ -2439,9 +2445,9 @@ dependencies = [
[[package]] [[package]]
name = "rustversion" name = "rustversion"
version = "1.0.14" version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47"
[[package]] [[package]]
name = "ryu" name = "ryu"
@ -2510,6 +2516,17 @@ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]]
name = "serde-wasm-bindgen"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b"
dependencies = [
"js-sys",
"serde",
"wasm-bindgen",
]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.197" version = "1.0.197"
@ -2518,14 +2535,14 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.58",
] ]
[[package]] [[package]]
name = "serde_json" name = "serde_json"
version = "1.0.114" version = "1.0.115"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
dependencies = [ dependencies = [
"itoa", "itoa",
"ryu", "ryu",
@ -2647,6 +2664,12 @@ dependencies = [
"smallvec", "smallvec",
] ]
[[package]]
name = "spin"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]] [[package]]
name = "strength_reduce" name = "strength_reduce"
version = "0.2.4" version = "0.2.4"
@ -2667,9 +2690,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
[[package]] [[package]]
name = "strsim" name = "strsim"
version = "0.11.0" version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]] [[package]]
name = "strum" name = "strum"
@ -2687,7 +2710,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"rustversion", "rustversion",
"syn 2.0.53", "syn 2.0.58",
] ]
[[package]] [[package]]
@ -2703,9 +2726,9 @@ dependencies = [
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.53" version = "2.0.58"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -2750,7 +2773,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.58",
] ]
[[package]] [[package]]
@ -2986,7 +3009,7 @@ dependencies = [
"once_cell", "once_cell",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.58",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@ -3020,7 +3043,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.58",
"wasm-bindgen-backend", "wasm-bindgen-backend",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@ -3542,9 +3565,9 @@ checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621"
[[package]] [[package]]
name = "xml-rs" name = "xml-rs"
version = "0.8.19" version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193"
[[package]] [[package]]
name = "zerocopy" name = "zerocopy"
@ -3563,5 +3586,5 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.53", "syn 2.0.58",
] ]

View File

@ -5,11 +5,11 @@ resolver = "2"
[workspace.dependencies.fyrox] [workspace.dependencies.fyrox]
git = "https://github.com/FyroxEngine/Fyrox" git = "https://github.com/FyroxEngine/Fyrox"
rev = "a133cfab0615dae9b18470f4860e81363df2bd1c" rev = "7de5a3107da2dfab180fd23f4c79b2542b466d70"
[workspace.dependencies.fyroxed_base] [workspace.dependencies.fyroxed_base]
git = "https://github.com/FyroxEngine/Fyrox" git = "https://github.com/FyroxEngine/Fyrox"
rev = "a133cfab0615dae9b18470f4860e81363df2bd1c" rev = "7de5a3107da2dfab180fd23f4c79b2542b466d70"
# Optimize the engine in debug builds, but leave project's code non-optimized. # Optimize the engine in debug builds, but leave project's code non-optimized.
# By using this technique, you can still debug you code, but engine will be fully # By using this technique, you can still debug you code, but engine will be fully

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 KiB

BIN
data/Klukva_version_01.otf Normal file

Binary file not shown.

Binary file not shown.

View File

@ -1,51 +1,89 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="user-scalable=no, height=device-height, width=device-width, initial-scale=1.0">
<title>Platformer</title>
<link rel="stylesheet" href="styles.css" /> <head>
<script type="module" defer src="main.js"></script> <meta charset="utf-8" />
</head> <meta name="viewport" content="user-scalable=no, height=device-height, width=device-width, initial-scale=1.0">
<title>Platformer</title>
<body> <link rel="stylesheet" href="styles.css" />
<noscript>This page contains WebAssembly and JavaScript content, please enable JavaScript in your browser.</noscript> <script type="module" defer src="main.js"></script>
<div class="lds-default" style="display: none;"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div> <!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function (m, e, t, r, i, k, a) {
m[i] = m[i] || function () { (m[i].a = m[i].a || []).push(arguments) };
m[i].l = 1 * new Date();
for (var j = 0; j < document.scripts.length; j++) { if (document.scripts[j].src === r) { return; } }
k = e.createElement(t), a = e.getElementsByTagName(t)[0], k.async = 1, k.src = r, a.parentNode.insertBefore(k, a)
})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
<main id="main"> ym(96918237, "init", {
<button class="button-3d" id="button-start" type="button" role="button" onclick="preloaderEnable()"> clickmap: true,
Start trackLinks: true,
</button> accurateTrackBounce: true
</main> });
</body>
<script>
function preloaderEnable() {
document.querySelector('.lds-default').style = null;
}
const intervalId = setInterval(function() {
if (document.querySelector('canvas') !== null) {
document.querySelector('canvas');
clearInterval(intervalId);
resize(document.querySelector('canvas'));
}
}, 1000);
new ResizeObserver(() => {
const canvasObj = document.querySelector('canvas')
if (canvasObj == null) {
return;
}
resize(canvasObj);
}).observe(document.body);
function resize(canvasObj) {
document.querySelector('.lds-default').style.display = "none";
canvasObj.style = null;
canvasObj.width = window.screen.width * window.devicePixelRatio;
canvasObj.height = window.screen.height * window.devicePixelRatio;
canvasObj.style.width = window.screen.width + "px";
canvasObj.style.height = window.screen.widheightth + "px";
}
</script> </script>
<noscript>
<div><img src="https://mc.yandex.ru/watch/96918237" style="position:absolute; left:-9999px;" alt="" /></div>
</noscript>
<!-- /Yandex.Metrika counter -->
<script src="https://unpkg.com/@vkontakte/vk-bridge/dist/browser.min.js"></script>
</head>
<body>
<noscript>This page contains WebAssembly and JavaScript content, please enable JavaScript in your browser.</noscript>
<div class="lds-default" style="display: none;">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<main id="main">
<button class="button-3d" id="button-start" type="button" role="button" onclick="preloaderEnable()">
Start
</button>
</main>
</body>
<script>
function preloaderEnable() {
document.querySelector('.lds-default').style = null;
}
const intervalId = setInterval(function () {
if (document.querySelector('canvas') !== null) {
document.querySelector('canvas');
clearInterval(intervalId);
resize(document.querySelector('canvas'));
}
}, 1000);
new ResizeObserver(() => {
const canvasObj = document.querySelector('canvas')
if (canvasObj == null) {
return;
}
resize(canvasObj);
}).observe(document.body);
function resize(canvasObj) {
document.querySelector('.lds-default').style.display = "none";
canvasObj.style = null;
canvasObj.width = document.body.scrollWidth * window.devicePixelRatio;
canvasObj.height = document.body.scrollHeight * window.devicePixelRatio;
canvasObj.style.width = document.body.scrollWidth + "px";
canvasObj.style.height = document.body.scrollHeight + "px";
}
vkBridge.send("VKWebAppInit", {});
</script>
</html> </html>

View File

@ -12,13 +12,13 @@ export interface InitOutput {
readonly __wbindgen_malloc: (a: number, b: number) => number; readonly __wbindgen_malloc: (a: number, b: number) => number;
readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
readonly __wbindgen_export_2: WebAssembly.Table; readonly __wbindgen_export_2: WebAssembly.Table;
readonly wasm_bindgen__convert__closures__invoke1_mut__h7977a475161f720f: (a: number, b: number, c: number) => void; readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2ac5caa64f614f2e: (a: number, b: number, c: number) => void;
readonly wasm_bindgen__convert__closures__invoke0_mut__h9cfe64ae8a53b273: (a: number, b: number) => void; readonly _dyn_core__ops__function__FnMut__A_B___Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hc170cf40329e6731: (a: number, b: number, c: number, d: number) => void;
readonly wasm_bindgen__convert__closures__invoke2_mut__hba3c5a1b4df3b13d: (a: number, b: number, c: number, d: number) => void; readonly _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hfe38bb7ac4b6df42: (a: number, b: number) => void;
readonly wasm_bindgen__convert__closures__invoke0_mut__hc321ab21773f28ba: (a: number, b: number) => void; readonly _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2cce366d7e1ef568: (a: number, b: number) => void;
readonly wasm_bindgen__convert__closures__invoke1_mut__h0f1d8e7262983e79: (a: number, b: number, c: number) => void; readonly _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hf758f2f68df3f963: (a: number, b: number) => void;
readonly wasm_bindgen__convert__closures__invoke0_mut__h79d5b69c906304b3: (a: number, b: number) => void; readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h03c62e575fdfe974: (a: number, b: number, c: number) => void;
readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h4d122b4606e1c898: (a: number, b: number, c: number) => void; readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__ha401fff11c774e91: (a: number, b: number, c: number) => void;
readonly __wbindgen_free: (a: number, b: number, c: number) => void; readonly __wbindgen_free: (a: number, b: number, c: number) => void;
readonly __wbindgen_exn_store: (a: number) => void; readonly __wbindgen_exn_store: (a: number) => void;
} }

File diff suppressed because it is too large Load Diff

View File

@ -5,12 +5,12 @@ export function main(): void;
export function __wbindgen_malloc(a: number, b: number): number; export function __wbindgen_malloc(a: number, b: number): number;
export function __wbindgen_realloc(a: number, b: number, c: number, d: number): number; export function __wbindgen_realloc(a: number, b: number, c: number, d: number): number;
export const __wbindgen_export_2: WebAssembly.Table; export const __wbindgen_export_2: WebAssembly.Table;
export function wasm_bindgen__convert__closures__invoke1_mut__h7977a475161f720f(a: number, b: number, c: number): void; export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2ac5caa64f614f2e(a: number, b: number, c: number): void;
export function wasm_bindgen__convert__closures__invoke0_mut__h9cfe64ae8a53b273(a: number, b: number): void; export function _dyn_core__ops__function__FnMut__A_B___Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hc170cf40329e6731(a: number, b: number, c: number, d: number): void;
export function wasm_bindgen__convert__closures__invoke2_mut__hba3c5a1b4df3b13d(a: number, b: number, c: number, d: number): void; export function _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hfe38bb7ac4b6df42(a: number, b: number): void;
export function wasm_bindgen__convert__closures__invoke0_mut__hc321ab21773f28ba(a: number, b: number): void; export function _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2cce366d7e1ef568(a: number, b: number): void;
export function wasm_bindgen__convert__closures__invoke1_mut__h0f1d8e7262983e79(a: number, b: number, c: number): void; export function _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hf758f2f68df3f963(a: number, b: number): void;
export function wasm_bindgen__convert__closures__invoke0_mut__h79d5b69c906304b3(a: number, b: number): void; export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h03c62e575fdfe974(a: number, b: number, c: number): void;
export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h4d122b4606e1c898(a: number, b: number, c: number): void; export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__ha401fff11c774e91(a: number, b: number, c: number): void;
export function __wbindgen_free(a: number, b: number, c: number): void; export function __wbindgen_free(a: number, b: number, c: number): void;
export function __wbindgen_exn_store(a: number): void; export function __wbindgen_exn_store(a: number): void;

View File

@ -5,3 +5,4 @@ edition = "2021"
[dependencies] [dependencies]
fyrox = {workspace = true} fyrox = {workspace = true}
lazy_static = { version = "1.4.0", features = ["spin_no_std"] }

View File

@ -48,6 +48,7 @@ const ATTACK_SPEED: f32 = 1.0;
const SUPER_DAMAGE: f32 = 30.0; const SUPER_DAMAGE: f32 = 30.0;
const SUPER_ATTACK_SPEED: f32 = 0.3; const SUPER_ATTACK_SPEED: f32 = 0.3;
const MOAN_TIME: f32 = 3.1; const MOAN_TIME: f32 = 3.1;
const PAUSE_TO_NEXT_LEVEL: f32 = 1.0;
#[derive(Visit, Reflect, Debug, Clone, Default)] #[derive(Visit, Reflect, Debug, Clone, Default)]
pub struct Archer { pub struct Archer {
@ -209,7 +210,7 @@ impl Archer {
return; return;
} }
self.fight = false; self.fight = false;
player_script.take_damage(&damage); player_script.take_damage(&damage, ctx.elapsed_time);
} }
fn get_player_position(&self, context: &mut ScriptContext) -> Vector3<f32> { fn get_player_position(&self, context: &mut ScriptContext) -> Vector3<f32> {
@ -502,7 +503,7 @@ impl ScriptTrait for Archer {
if self.intersections_box(&mut context.scene.graph) { if self.intersections_box(&mut context.scene.graph) {
self.dead = true; self.dead = true;
let game = context.plugins.get_mut::<Game>(); let game = context.plugins.get_mut::<Game>();
game.next_level(); game.next_level(context.elapsed_time + PAUSE_TO_NEXT_LEVEL);
return; return;
} }
self.set_fight(context); self.set_fight(context);

View File

@ -46,6 +46,7 @@ const SPEED: f32 = 3.1;
const DAMAGE: f32 = 100.0; const DAMAGE: f32 = 100.0;
const ATTACK_SPEED: f32 = 0.1; const ATTACK_SPEED: f32 = 0.1;
const MOAN_TIME: f32 = 3.1; const MOAN_TIME: f32 = 3.1;
const PAUSE_TO_NEXT_LEVEL: f32 = 1.0;
#[derive(Visit, Reflect, Debug, Clone, Default)] #[derive(Visit, Reflect, Debug, Clone, Default)]
pub struct Swordman { pub struct Swordman {
@ -207,7 +208,7 @@ impl Swordman {
return; return;
} }
self.block = false; self.block = false;
player_script.take_damage(&self.attack_damage); player_script.take_damage(&self.attack_damage, ctx.elapsed_time);
} }
fn get_player_position(&self, context: &mut ScriptContext) -> Vector3<f32> { fn get_player_position(&self, context: &mut ScriptContext) -> Vector3<f32> {
@ -500,7 +501,7 @@ impl ScriptTrait for Swordman {
if self.intersections_box(&mut context.scene.graph) { if self.intersections_box(&mut context.scene.graph) {
self.dead = true; self.dead = true;
let game = context.plugins.get_mut::<Game>(); let game = context.plugins.get_mut::<Game>();
game.next_level(); game.next_level(context.elapsed_time + PAUSE_TO_NEXT_LEVEL);
return; return;
} }
self.set_fight(context); self.set_fight(context);

View File

@ -1,4 +1,5 @@
//! Game project. #[macro_use]
extern crate lazy_static;
use fyrox::core::color::Color; use fyrox::core::color::Color;
use fyrox::graph::SceneGraph; use fyrox::graph::SceneGraph;
use fyrox::gui::Thickness; use fyrox::gui::Thickness;
@ -12,15 +13,15 @@ use fyrox::{
engine::GraphicsContext, engine::GraphicsContext,
event::{Event, WindowEvent}, event::{Event, WindowEvent},
gui::{ gui::{
font::Font,
brush::Brush, brush::Brush,
button::ButtonMessage, button::ButtonMessage,
font::Font,
grid::{Column, GridBuilder, Row}, grid::{Column, GridBuilder, Row},
message::{MessageDirection, UiMessage}, message::{MessageDirection, UiMessage},
text::TextBuilder, text::TextBuilder,
widget::WidgetBuilder, widget::WidgetBuilder,
widget::WidgetMessage, widget::WidgetMessage,
UiNode, UserInterface, UiNode, UserInterface, UiContainer,
}, },
keyboard::{KeyCode, PhysicalKey}, keyboard::{KeyCode, PhysicalKey},
plugin::{Plugin, PluginContext}, plugin::{Plugin, PluginContext},
@ -62,18 +63,23 @@ pub struct Game {
scene: Handle<Scene>, scene: Handle<Scene>,
new_game: Handle<UiNode>, new_game: Handle<UiNode>,
new_game_with_plot: Handle<UiNode>,
next: Handle<UiNode>,
new_game_after_plot: Handle<UiNode>,
exit: Handle<UiNode>, exit: Handle<UiNode>,
level_node: Handle<UiNode>, level_node: Handle<UiNode>,
level: u32, level: u32,
need_change_level: bool, need_change_level: bool,
need_show_menu: bool, need_show_menu: bool,
show_menu_time: f32,
change_level_time: f32,
need_show_end: bool,
} }
impl Game { impl Game {
pub fn default() -> Self { pub fn default() -> Self {
return Game { return Game {
level: 1, level: START_LEVEL,
..Default::default() ..Default::default()
}; };
} }
@ -83,15 +89,29 @@ impl Game {
UserInterface::load_from_file("data/menu.ui", ctx.resource_manager.clone()), UserInterface::load_from_file("data/menu.ui", ctx.resource_manager.clone()),
|result, game: &mut Game, ctx| match result { |result, game: &mut Game, ctx| match result {
Ok(menu) => { Ok(menu) => {
*ctx.user_interface = menu; let mut ui_container = UiContainer::new();
ui_container.add(menu);
*ctx.user_interfaces = ui_container;
(game.new_game, _) = ctx (game.new_game, _) = ctx
.user_interface .user_interfaces.first()
.find_by_name_from_root("NewGame") .find_by_name_from_root("NewGame")
.unwrap(); .unwrap();
(game.exit, _) = ctx.user_interface.find_by_name_from_root("Exit").unwrap(); (game.new_game_with_plot, _) = ctx
.user_interfaces.first()
.find_by_name_from_root("NewGameWithPlot")
.unwrap();
(game.next, _) = ctx
.user_interfaces.first()
.find_by_name_from_root("NextPlotScreen")
.unwrap();
(game.new_game_after_plot, _) = ctx
.user_interfaces.first()
.find_by_name_from_root("NewGamePlotScreen")
.unwrap();
(game.exit, _) = ctx.user_interfaces.first().find_by_name_from_root("Exit").unwrap();
} }
Err(e) => Log::err(format!("Unable to load main menu! Reason: {:?}", e)), Err(e) => Log::err(format!("Unable to load main menu! Reason: {:?}", e)),
// let ui = ctx.user_interface.clone(); // let ui = ctx.user_interfaces.clone();
// *ui = result.unwrap(); // *ui = result.unwrap();
}, },
); );
@ -100,25 +120,39 @@ impl Game {
level_node: Handle::NONE, level_node: Handle::NONE,
scene: Handle::NONE, scene: Handle::NONE,
new_game: Handle::NONE, new_game: Handle::NONE,
new_game_with_plot: Handle::NONE,
new_game_after_plot: Handle::NONE,
next: Handle::NONE,
exit: Handle::NONE, exit: Handle::NONE,
level: START_LEVEL, level: START_LEVEL,
need_change_level: false, need_change_level: false,
need_show_menu: false, need_show_menu: false,
need_show_end: false,
show_menu_time: 0.0,
change_level_time: 0.0,
} }
} }
pub fn next_level(&mut self) { pub fn next_level(&mut self, change_level_time: f32) {
self.need_change_level = true; self.need_change_level = true;
self.change_level_time = change_level_time;
} }
pub fn show_menu(&mut self) { pub fn show_menu(&mut self, show_menu_time: f32) {
self.show_menu_time = show_menu_time;
self.need_show_menu = true; self.need_show_menu = true;
} }
pub fn end_game(&mut self) {
self.need_show_end = true;
}
} }
impl Plugin for Game { impl Plugin for Game {
fn register(
fn register(&self, #[allow(unused_variables)] context: fyrox::plugin::PluginRegistrationContext) { &self,
#[allow(unused_variables)] context: fyrox::plugin::PluginRegistrationContext,
) {
let script_constructors = &context.serialization_context.script_constructors; let script_constructors = &context.serialization_context.script_constructors;
script_constructors.add::<Swordman>("Enemy"); script_constructors.add::<Swordman>("Enemy");
script_constructors.add::<Player>("Player"); script_constructors.add::<Player>("Player");
@ -134,23 +168,38 @@ impl Plugin for Game {
} }
fn update(&mut self, context: &mut PluginContext) { fn update(&mut self, context: &mut PluginContext) {
if self.need_change_level { if self.need_change_level && self.change_level_time < context.elapsed_time {
self.need_change_level = false; self.need_change_level = false;
self.level += 1; self.level += 1;
context.async_scene_loader.request("data/scene.rgs"); context.async_scene_loader.request("data/scene.rgs");
} }
if self.need_show_menu {
//println!("{} {} ", context.elapsed_time, self.show_menu_time);
if self.need_show_menu && self.show_menu_time < context.elapsed_time {
self.need_show_menu = false; self.need_show_menu = false;
self.show_menu_time = 0.0;
context context
.user_interface .user_interfaces.first()
.send_message(WidgetMessage::visibility( .send_message(WidgetMessage::visibility(
context context
.user_interface .user_interfaces.first()
.find_handle_by_name_from_root("MenuScreen"), .find_handle_by_name_from_root("MenuScreen"),
MessageDirection::ToWidget, MessageDirection::ToWidget,
true, true,
)); ));
} }
if self.need_show_end {
context
.user_interfaces.first()
.send_message(WidgetMessage::visibility(
context
.user_interfaces.first()
.find_handle_by_name_from_root("EndScreen"),
MessageDirection::ToWidget,
true,
));
}
} }
fn on_os_event(&mut self, event: &Event<()>, context: PluginContext) { fn on_os_event(&mut self, event: &Event<()>, context: PluginContext) {
@ -159,10 +208,10 @@ impl Plugin for Game {
if let PhysicalKey::Code(keycode) = event.physical_key { if let PhysicalKey::Code(keycode) = event.physical_key {
if keycode == KeyCode::Escape { if keycode == KeyCode::Escape {
context context
.user_interface .user_interfaces.first()
.send_message(WidgetMessage::visibility( .send_message(WidgetMessage::visibility(
context context
.user_interface .user_interfaces.first()
.find_handle_by_name_from_root("MenuScreen"), .find_handle_by_name_from_root("MenuScreen"),
MessageDirection::ToWidget, MessageDirection::ToWidget,
true, true,
@ -200,14 +249,46 @@ impl Plugin for Game {
fn on_ui_message(&mut self, ctx: &mut PluginContext, message: &UiMessage) { fn on_ui_message(&mut self, ctx: &mut PluginContext, message: &UiMessage) {
if let Some(ButtonMessage::Click) = message.data() { if let Some(ButtonMessage::Click) = message.data() {
if message.destination() == self.new_game { if message.destination() == self.new_game || message.destination() == self.new_game_after_plot {
ctx.user_interface.send_message(WidgetMessage::visibility( ctx.user_interfaces.first().send_message(WidgetMessage::visibility(
ctx.user_interface ctx.user_interfaces.first()
.find_handle_by_name_from_root("MenuScreen"), .find_handle_by_name_from_root("Start2Screen"),
MessageDirection::ToWidget,
false,
));
ctx.user_interfaces.first().send_message(WidgetMessage::visibility(
ctx.user_interfaces
.first().find_handle_by_name_from_root("MenuScreen"),
MessageDirection::ToWidget, MessageDirection::ToWidget,
false, false,
)); ));
ctx.async_scene_loader.request("data/scene.rgs"); ctx.async_scene_loader.request("data/scene.rgs");
} else if message.destination() == self.new_game_with_plot {
ctx.user_interfaces.first().send_message(WidgetMessage::visibility(
ctx.user_interfaces
.first().find_handle_by_name_from_root("MenuScreen"),
MessageDirection::ToWidget,
false,
));
ctx.user_interfaces.first().send_message(WidgetMessage::visibility(
ctx.user_interfaces
.first().find_handle_by_name_from_root("StartScreen"),
MessageDirection::ToWidget,
true,
));
} else if message.destination() == self.next {
ctx.user_interfaces.first().send_message(WidgetMessage::visibility(
ctx.user_interfaces
.first().find_handle_by_name_from_root("StartScreen"),
MessageDirection::ToWidget,
false,
));
ctx.user_interfaces.first().send_message(WidgetMessage::visibility(
ctx.user_interfaces
.first().find_handle_by_name_from_root("Start2Screen"),
MessageDirection::ToWidget,
true,
));
} else if message.destination() == self.exit { } else if message.destination() == self.exit {
if let Some(window_target) = ctx.window_target { if let Some(window_target) = ctx.window_target {
window_target.exit(); window_target.exit();
@ -220,7 +301,7 @@ impl Plugin for Game {
if self.scene.is_some() { if self.scene.is_some() {
ctx.scenes.remove(self.scene); ctx.scenes.remove(self.scene);
} }
ctx.user_interface.send_message(WidgetMessage::visibility( ctx.user_interfaces.first().send_message(WidgetMessage::visibility(
self.level_node, self.level_node,
MessageDirection::ToWidget, MessageDirection::ToWidget,
false, false,
@ -235,10 +316,10 @@ impl Plugin for Game {
context: &mut PluginContext, context: &mut PluginContext,
) { ) {
context context
.user_interface .user_interfaces.first()
.send_message(WidgetMessage::visibility( .send_message(WidgetMessage::visibility(
context context
.user_interface .user_interfaces.first()
.find_handle_by_name_from_root("MenuScreen"), .find_handle_by_name_from_root("MenuScreen"),
MessageDirection::ToWidget, MessageDirection::ToWidget,
false, false,
@ -256,18 +337,23 @@ impl Plugin for Game {
if self.level == 2 { if self.level == 2 {
ArcherSpawn::new().spawn_enemy(graph, resource_manager, -25.0); ArcherSpawn::new().spawn_enemy(graph, resource_manager, -25.0);
} }
let ui_ctx = &mut context.user_interface.build_ctx(); let ui_ctx = &mut context.user_interfaces.first_mut().build_ctx();
let font_to_level = resource_manager.request::<Font>("data/cd2f1-36d91_sunday.ttf".to_owned()); let font_to_level =
resource_manager.request::<Font>("data/cd2f1-36d91_sunday.ttf".to_owned());
self.level_node = GridBuilder::new( self.level_node = GridBuilder::new(
WidgetBuilder::new().with_child( WidgetBuilder::new()
TextBuilder::new(WidgetBuilder::new().with_foreground(Brush::Solid(Color::opaque(192, 34, 9)))) .with_child(
TextBuilder::new(
WidgetBuilder::new()
.with_foreground(Brush::Solid(Color::opaque(192, 34, 9))),
)
.with_text(format!("Уровень: {}", self.level)) .with_text(format!("Уровень: {}", self.level))
.with_font_size(20.0) .with_font_size(20.0)
.with_font(font_to_level) .with_font(font_to_level)
.with_shadow_brush(Brush::Solid(Color::RED)) .with_shadow_brush(Brush::Solid(Color::RED))
.build(ui_ctx), .build(ui_ctx),
) )
.with_margin(Thickness::top_left(10.0)) .with_margin(Thickness::top_left(10.0)),
) )
.add_row(Row::stretch()) .add_row(Row::stretch())
.add_column(Column::auto()) .add_column(Column::auto())

View File

@ -206,22 +206,20 @@ fn build_stone_block(resource_manager: &ResourceManager, graph: &mut Graph, x: f
) )
} }
// fn build_mushroom_block(resource_manager: &ResourceManager, graph: &mut Graph, x: f32, y: f32) { fn build_home_block(resource_manager: &ResourceManager, graph: &mut Graph, x: f32, y: f32) {
// let shape = ColliderShape::Cuboid(CuboidShape { let shape = ColliderShape::Cuboid(CuboidShape::default());
// half_extents: Vector2::new(0.25, 0.25), build_block(
// }); graph,
// build_block( x as f32,
// graph, y + 1.7,
// x as f32, 3.,
// y + 0.5, build_material(
// 0.5, resource_manager,
// build_material( "assets/data/objects/Home.png".to_owned(),
// resource_manager, ),
// "assets/data/objects/Mushroom_2.png".to_owned(), shape,
// ), )
// shape, }
// )
// }
fn build_box_block(resource_manager: &ResourceManager, graph: &mut Graph, x: f32, y: f32) { fn build_box_block(resource_manager: &ResourceManager, graph: &mut Graph, x: f32, y: f32) {
let shape = ColliderShape::Cuboid(CuboidShape::default()); let shape = ColliderShape::Cuboid(CuboidShape::default());
@ -250,8 +248,12 @@ pub fn build_map(graph: &mut Graph, resource_manager: &ResourceManager, level: u
build_ground_block(resource_manager, graph, x as f32, bottom_y); build_ground_block(resource_manager, graph, x as f32, bottom_y);
} }
build_stone_block(resource_manager, graph, 30.0, bottom_y); build_stone_block(resource_manager, graph, 30.0, bottom_y);
build_tree_block(resource_manager, graph, 35.0, bottom_y); if level == 3 {
build_stone_block(resource_manager, graph, -30.0, bottom_y); build_home_block(resource_manager, graph, -40.0, bottom_y);
} else {
build_stone_block(resource_manager, graph, -30.0, bottom_y);
}
build_tree_block(resource_manager, graph, 35.0, bottom_y);
if level != 3 { if level != 3 {
build_tree_block(resource_manager, graph, -35.0, bottom_y); build_tree_block(resource_manager, graph, -35.0, bottom_y);
} }

View File

@ -6,7 +6,7 @@ pub enum ScreenSizeMessage {
}, },
} }
#[derive(Debug, Clone)] #[derive(Debug, Clone, Hash, PartialEq, Eq)]
pub enum SoundMessage { pub enum SoundMessage {
PlayerWalk, PlayerWalk,
PlayerJump, PlayerJump,
@ -20,3 +20,4 @@ pub enum SoundMessage {
SkeletonMoan, SkeletonMoan,
Bones, Bones,
} }

View File

@ -36,6 +36,8 @@ use fyrox::{
const JUMP_HEIGHT: f32 = 6.0; const JUMP_HEIGHT: f32 = 6.0;
const SPEED: f32 = 2.9; const SPEED: f32 = 2.9;
const ONE_SEC: f32 = 1.0;
const END_MAP: f32 = -36.5;
#[derive(Visit, Reflect, Debug, Default, Clone)] #[derive(Visit, Reflect, Debug, Default, Clone)]
pub struct Player { pub struct Player {
@ -61,6 +63,9 @@ pub struct Player {
// Health Bar // Health Bar
max_health: f32, max_health: f32,
health: f32, health: f32,
#[reflect(hidden)]
#[visit(skip)]
time_dead: f32,
health_bar_background: Handle<Node>, health_bar_background: Handle<Node>,
health_bar_progress: Handle<Node>, health_bar_progress: Handle<Node>,
} }
@ -165,11 +170,14 @@ impl Player {
self.health_bar_progress = health_bar_progress; self.health_bar_progress = health_bar_progress;
} }
pub fn take_damage(&mut self, damage: &f32) { pub fn take_damage(&mut self, damage: &f32, time_damage: f32) {
if self.health == 0.0 { if self.health == 0.0 {
return; return;
} }
self.health -= damage; self.health -= damage;
if self.health <= 0.0 {
self.time_dead = time_damage;
}
} }
pub fn get_health(&self) -> f32 { pub fn get_health(&self) -> f32 {
@ -443,9 +451,9 @@ impl Player {
} }
health_bar_transform.set_position(Vector3::new(nex_x, d.y, d.z)); health_bar_transform.set_position(Vector3::new(nex_x, d.y, d.z));
} }
if self.health <= 0.0 { if self.health <= 0.0 && self.time_dead + ONE_SEC >= context.elapsed_time {
let game = context.plugins.get_mut::<Game>(); let game = context.plugins.get_mut::<Game>();
game.show_menu(); game.show_menu(context.elapsed_time + 3.0);
context.message_sender.send_global(SoundMessage::Lose); context.message_sender.send_global(SoundMessage::Lose);
} }
} }
@ -487,6 +495,16 @@ impl Player {
None => {} None => {}
} }
} }
fn check_is_home(&self, context: &mut ScriptContext) {
let rigid_body = context.scene.graph[context.handle].cast::<RigidBody>();
if let Some(rigid_data) = rigid_body {
if rigid_data.local_transform().position().x <= END_MAP {
let game = context.plugins.get_mut::<Game>();
game.end_game();
}
}
}
} }
impl_component_provider!(Player,); impl_component_provider!(Player,);
@ -519,6 +537,7 @@ impl ScriptTrait for Player {
} }
} }
// Called whenever there is an event from OS (mouse click, keypress, etc.) // Called whenever there is an event from OS (mouse click, keypress, etc.)
fn on_os_event(&mut self, event: &Event<()>, _context: &mut ScriptContext) { fn on_os_event(&mut self, event: &Event<()>, _context: &mut ScriptContext) {
if let Event::WindowEvent { event, .. } = event { if let Event::WindowEvent { event, .. } = event {
@ -576,5 +595,6 @@ impl ScriptTrait for Player {
self.update_health(context); self.update_health(context);
self.attack_enemy(context); self.attack_enemy(context);
self.loop_over(context); self.loop_over(context);
self.check_is_home(context);
} }
} }

View File

@ -14,6 +14,7 @@ use fyrox::{
}, },
script::{ScriptContext, ScriptMessageContext, ScriptMessagePayload, ScriptTrait}, script::{ScriptContext, ScriptMessageContext, ScriptMessagePayload, ScriptTrait},
}; };
use std::collections::HashMap;
#[derive(Visit, Reflect, Debug, Default, Clone)] #[derive(Visit, Reflect, Debug, Default, Clone)]
pub struct Sound { pub struct Sound {
@ -30,6 +31,27 @@ pub struct Sound {
win: Handle<Node>, win: Handle<Node>,
} }
lazy_static! {
static ref SOUNDS_NAMES: HashMap<SoundMessage, String> = {
let mut m = HashMap::new();
m.insert(SoundMessage::PlayerWalk, "player_walk.ogg".to_owned());
m.insert(SoundMessage::PlayerJump, "distance-jump-sound.ogg".to_owned());
m.insert(SoundMessage::EnemyWalk, "skeleton_walk.ogg".to_owned());
m.insert(SoundMessage::PlayerAttack, "player_sword.ogg".to_owned());
m.insert(SoundMessage::SkeletonAttack, "skeleton_sword.ogg".to_owned());
m.insert(SoundMessage::ArcherBowAttack, "bow-arrow.ogg".to_owned());
m.insert(SoundMessage::ArcherKnifeAttack, "knife.ogg".to_owned());
m.insert(SoundMessage::Lose, "lose.ogg".to_owned());
m.insert(SoundMessage::Win, "win.ogg".to_owned());
m.insert(SoundMessage::SkeletonMoan, "skeleton-woke-up.ogg".to_owned());
m.insert(SoundMessage::Bones, "the-bone-of-the-skeleton-moves.ogg".to_owned());
m
};
}
const FAST_SPEED: f64 = 2.0; const FAST_SPEED: f64 = 2.0;
const NORMAL_SPEED: f64 = 1.0; const NORMAL_SPEED: f64 = 1.0;
const LOW_GAIN: f32 = 0.1; const LOW_GAIN: f32 = 0.1;
@ -43,9 +65,16 @@ impl Sound {
RigidBodyBuilder::new(BaseBuilder::new().with_script(sound)).build(graph); RigidBodyBuilder::new(BaseBuilder::new().with_script(sound)).build(graph);
} }
fn new_sound(&self, ctx: &mut ScriptMessageContext, name: &str, pitch: f64, gain: f32) -> Handle<Node> { fn new_sound(
&self,
ctx: &mut ScriptMessageContext,
sound_type: SoundMessage,
pitch: f64,
gain: f32,
) -> Handle<Node> {
let name = SOUNDS_NAMES.get(&sound_type).unwrap().clone();
let mut path = "assets/data/sounds/".to_owned(); let mut path = "assets/data/sounds/".to_owned();
path.push_str(name); path.push_str(&name);
let walk_sound = ctx.resource_manager.request::<SoundBuffer>(path); let walk_sound = ctx.resource_manager.request::<SoundBuffer>(path);
return SoundBuilder::new(BaseBuilder::new()) return SoundBuilder::new(BaseBuilder::new())
.with_buffer(Some(walk_sound)) .with_buffer(Some(walk_sound))
@ -56,7 +85,14 @@ impl Sound {
.build(&mut ctx.scene.graph); .build(&mut ctx.scene.graph);
} }
fn play_sound(&self, ctx: &mut ScriptMessageContext, name: &str, handle: Handle<Node>, pitch: f64, gain: f32) -> Option<Handle<Node>> { fn play_sound(
&self,
ctx: &mut ScriptMessageContext,
sound_type: SoundMessage,
handle: Handle<Node>,
pitch: f64,
gain: f32,
) -> Option<Handle<Node>> {
let sound_body = ctx.scene.graph.try_get_mut(handle); let sound_body = ctx.scene.graph.try_get_mut(handle);
if let Some(sound) = sound_body { if let Some(sound) = sound_body {
if sound.as_sound().status() == Status::Stopped { if sound.as_sound().status() == Status::Stopped {
@ -64,7 +100,7 @@ impl Sound {
} }
return None; return None;
} }
return Some(self.new_sound(ctx, name, pitch, gain)); return Some(self.new_sound(ctx, sound_type, pitch, gain));
} }
} }
@ -72,10 +108,14 @@ impl_component_provider!(Sound,);
impl ScriptTrait for Sound { impl ScriptTrait for Sound {
// Called once at initialization. // Called once at initialization.
fn on_init(&mut self, _context: &mut ScriptContext) { fn on_init(&mut self, context: &mut ScriptContext) {
// context for (_, val) in SOUNDS_NAMES.iter() {
// .resource_manager let mut path = "assets/data/sounds/".to_owned();
// .request::<SoundBuffer>("/mnt/23154027-2dd3-43ea-93f1-02a8df7a3c5a/projects/fyrox/platformer/assets/data/sounds/player_walk.ogg"); path.push_str(val);
context
.resource_manager
.request::<SoundBuffer>(path);
}
} }
// Put start logic - it is called when every other script is already initialized. // Put start logic - it is called when every other script is already initialized.
@ -91,57 +131,115 @@ impl ScriptTrait for Sound {
ctx: &mut ScriptMessageContext, ctx: &mut ScriptMessageContext,
) { ) {
if let Some(SoundMessage::PlayerWalk) = message.downcast_ref::<SoundMessage>() { if let Some(SoundMessage::PlayerWalk) = message.downcast_ref::<SoundMessage>() {
if let Some(sound) = self.play_sound(ctx, "player_walk.ogg", self.player_walk, FAST_SPEED, LOW_GAIN) { if let Some(sound) = self.play_sound(
ctx,
SoundMessage::PlayerWalk,
self.player_walk,
FAST_SPEED,
LOW_GAIN,
) {
self.player_walk = sound; self.player_walk = sound;
} }
} }
if let Some(SoundMessage::EnemyWalk) = message.downcast_ref::<SoundMessage>() { if let Some(SoundMessage::EnemyWalk) = message.downcast_ref::<SoundMessage>() {
if let Some(sound) = self.play_sound(ctx, "skeleton_walk.ogg", self.skeleton_walk, FAST_SPEED, LOW_GAIN) { if let Some(sound) = self.play_sound(
ctx,
SoundMessage::EnemyWalk,
self.skeleton_walk,
FAST_SPEED,
LOW_GAIN,
) {
self.skeleton_walk = sound; self.skeleton_walk = sound;
} }
} }
if let Some(SoundMessage::PlayerAttack) = message.downcast_ref::<SoundMessage>() { if let Some(SoundMessage::PlayerAttack) = message.downcast_ref::<SoundMessage>() {
if let Some(sound) = self.play_sound(ctx, "player_sword.ogg", self.player_attack, FAST_SPEED, LOW_GAIN) { if let Some(sound) = self.play_sound(
ctx,
SoundMessage::PlayerAttack,
self.player_attack,
FAST_SPEED,
LOW_GAIN,
) {
self.player_attack = sound; self.player_attack = sound;
} }
} }
if let Some(SoundMessage::SkeletonAttack) = message.downcast_ref::<SoundMessage>() { if let Some(SoundMessage::SkeletonAttack) = message.downcast_ref::<SoundMessage>() {
if let Some(sound) = self.play_sound(ctx, "skeleton_sword.ogg", self.skeleton_attack, FAST_SPEED, LOW_GAIN) { if let Some(sound) = self.play_sound(
ctx,
SoundMessage::SkeletonAttack,
self.skeleton_attack,
FAST_SPEED,
LOW_GAIN,
) {
self.skeleton_attack = sound; self.skeleton_attack = sound;
} }
} }
if let Some(SoundMessage::ArcherBowAttack) = message.downcast_ref::<SoundMessage>() { if let Some(SoundMessage::ArcherBowAttack) = message.downcast_ref::<SoundMessage>() {
if let Some(sound) = self.play_sound(ctx, "bow-arrow.ogg", self.archer_bow_attack, FAST_SPEED, LOW_GAIN) { if let Some(sound) = self.play_sound(
ctx,
SoundMessage::ArcherBowAttack,
self.archer_bow_attack,
FAST_SPEED,
LOW_GAIN,
) {
self.archer_bow_attack = sound; self.archer_bow_attack = sound;
} }
} }
if let Some(SoundMessage::ArcherKnifeAttack) = message.downcast_ref::<SoundMessage>() { if let Some(SoundMessage::ArcherKnifeAttack) = message.downcast_ref::<SoundMessage>() {
if let Some(sound) = self.play_sound(ctx, "skeleton_sword.ogg", self.archer_knife_attack, FAST_SPEED, LOW_GAIN) { if let Some(sound) = self.play_sound(
ctx,
SoundMessage::ArcherKnifeAttack,
self.archer_knife_attack,
FAST_SPEED,
LOW_GAIN,
) {
self.archer_knife_attack = sound; self.archer_knife_attack = sound;
} }
} }
if let Some(SoundMessage::Lose) = message.downcast_ref::<SoundMessage>() { if let Some(SoundMessage::Lose) = message.downcast_ref::<SoundMessage>() {
if let Some(sound) = self.play_sound(ctx, "lose.ogg", self.lose, NORMAL_SPEED, NORMAL_GAIN) { if let Some(sound) =
self.play_sound(ctx, SoundMessage::Lose, self.lose, NORMAL_SPEED, NORMAL_GAIN)
{
self.lose = sound; self.lose = sound;
} }
} }
if let Some(SoundMessage::PlayerJump) = message.downcast_ref::<SoundMessage>() { if let Some(SoundMessage::PlayerJump) = message.downcast_ref::<SoundMessage>() {
if let Some(sound) = self.play_sound(ctx, "distance-jump-sound.ogg", self.player_jump, FAST_SPEED, LOW_GAIN) { if let Some(sound) = self.play_sound(
ctx,
SoundMessage::PlayerJump,
self.player_jump,
FAST_SPEED,
LOW_GAIN,
) {
self.player_jump = sound; self.player_jump = sound;
} }
} }
if let Some(SoundMessage::Win) = message.downcast_ref::<SoundMessage>() { if let Some(SoundMessage::Win) = message.downcast_ref::<SoundMessage>() {
if let Some(sound) = self.play_sound(ctx, "win.ogg", self.win, NORMAL_SPEED, NORMAL_GAIN) { if let Some(sound) =
self.play_sound(ctx, SoundMessage::Win, self.win, NORMAL_SPEED, NORMAL_GAIN)
{
self.win = sound; self.win = sound;
} }
} }
if let Some(SoundMessage::SkeletonMoan) = message.downcast_ref::<SoundMessage>() { if let Some(SoundMessage::SkeletonMoan) = message.downcast_ref::<SoundMessage>() {
if let Some(sound) = self.play_sound(ctx, "skeleton-woke-up.ogg", self.skeleton_moan, FAST_SPEED, LOW_GAIN) { if let Some(sound) = self.play_sound(
ctx,
SoundMessage::SkeletonMoan,
self.skeleton_moan,
FAST_SPEED,
LOW_GAIN,
) {
self.skeleton_moan = sound; self.skeleton_moan = sound;
} }
} }
if let Some(SoundMessage::Bones) = message.downcast_ref::<SoundMessage>() { if let Some(SoundMessage::Bones) = message.downcast_ref::<SoundMessage>() {
if let Some(sound) = self.play_sound(ctx, "the-bone-of-the-skeleton-moves.ogg", self.archer_moan, NORMAL_SPEED, LOW_GAIN) { if let Some(sound) = self.play_sound(
ctx,
SoundMessage::Bones,
self.archer_moan,
NORMAL_SPEED,
LOW_GAIN,
) {
self.archer_moan = sound; self.archer_moan = sound;
} }
} }

File diff suppressed because it is too large Load Diff