move to workspace mode

This commit is contained in:
cool-mist
2026-01-22 15:52:52 +05:30
parent 8cd1f86ba6
commit 86d160cab0
34 changed files with 202 additions and 195 deletions
Generated
+107 -125
View File
@@ -4,21 +4,15 @@ version = 4
[[package]] [[package]]
name = "adler2" name = "adler2"
version = "2.0.0" version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]] [[package]]
name = "ahash" name = "allocator-api2"
version = "0.8.11" version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
dependencies = [
"cfg-if",
"once_cell",
"version_check",
"zerocopy 0.7.35",
]
[[package]] [[package]]
name = "argh" name = "argh"
@@ -72,9 +66,9 @@ dependencies = [
[[package]] [[package]]
name = "autocfg" name = "autocfg"
version = "1.4.0" version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]] [[package]]
name = "bitflags" name = "bitflags"
@@ -82,17 +76,11 @@ version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
[[package]] [[package]]
name = "bytemuck" name = "bytemuck"
version = "1.21.0" version = "1.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
[[package]] [[package]]
name = "byteorder" name = "byteorder"
@@ -102,9 +90,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]] [[package]]
name = "cfg-if" name = "cfg-if"
version = "1.0.0" version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]] [[package]]
name = "color_quant" name = "color_quant"
@@ -114,9 +102,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
[[package]] [[package]]
name = "crc32fast" name = "crc32fast"
version = "1.4.2" version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
] ]
@@ -136,6 +124,12 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f"
[[package]]
name = "equivalent"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]] [[package]]
name = "fdeflate" name = "fdeflate"
version = "0.3.7" version = "0.3.7"
@@ -147,19 +141,25 @@ dependencies = [
[[package]] [[package]]
name = "flate2" name = "flate2"
version = "1.0.35" version = "1.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369"
dependencies = [ dependencies = [
"crc32fast", "crc32fast",
"miniz_oxide", "miniz_oxide",
] ]
[[package]] [[package]]
name = "fontdue" name = "foldhash"
version = "0.7.3" version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0793f5137567643cf65ea42043a538804ff0fbf288649e2141442b602d81f9bc" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
[[package]]
name = "fontdue"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e57e16b3fe8ff4364c0661fdaac543fb38b29ea9bc9c2f45612d90adf931d2b"
dependencies = [ dependencies = [
"hashbrown", "hashbrown",
"ttf-parser", "ttf-parser",
@@ -167,14 +167,14 @@ dependencies = [
[[package]] [[package]]
name = "getrandom" name = "getrandom"
version = "0.3.3" version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"libc", "libc",
"r-efi", "r-efi",
"wasi", "wasip2",
] ]
[[package]] [[package]]
@@ -185,11 +185,13 @@ checksum = "9e05e7e6723e3455f4818c7b26e855439f7546cf617ef669d1adedb8669e5cb9"
[[package]] [[package]]
name = "hashbrown" name = "hashbrown"
version = "0.13.2" version = "0.15.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
dependencies = [ dependencies = [
"ahash", "allocator-api2",
"equivalent",
"foldhash",
] ]
[[package]] [[package]]
@@ -224,15 +226,15 @@ dependencies = [
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.169" version = "0.2.180"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
[[package]] [[package]]
name = "macroquad" name = "macroquad"
version = "0.4.13" version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81fef16b2d4de22ac372b5d7d76273c0ead0a31f9de9bc649af8f816816db8a8" checksum = "d2befbae373456143ef55aa93a73594d080adfb111dc32ec96a1123a3e4ff4ae"
dependencies = [ dependencies = [
"fontdue", "fontdue",
"glam", "glam",
@@ -241,7 +243,6 @@ dependencies = [
"miniquad", "miniquad",
"quad-rand", "quad-rand",
"quad-snd", "quad-snd",
"slotmap",
] ]
[[package]] [[package]]
@@ -267,21 +268,21 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
[[package]] [[package]]
name = "miniquad" name = "miniquad"
version = "0.4.6" version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2124e5e6bab86d96f263d78dc763c29e0da4c4f7ff0e1bb33f1d3905d1121262" checksum = "2fb3e758e46dbc45716a8a49ca9edc54b15bcca826277e80b1f690708f67f9e3"
dependencies = [ dependencies = [
"libc", "libc",
"ndk-sys", "ndk-sys",
"objc", "objc-rs",
"winapi", "winapi",
] ]
[[package]] [[package]]
name = "miniz_oxide" name = "miniz_oxide"
version = "0.8.3" version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
dependencies = [ dependencies = [
"adler2", "adler2",
"simd-adler32", "simd-adler32",
@@ -303,10 +304,10 @@ dependencies = [
] ]
[[package]] [[package]]
name = "objc" name = "objc-rs"
version = "0.2.7" version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" checksum = "64a1e7069a2525126bf12a9f1f7916835fafade384fb27cabf698e745e2a1eb8"
dependencies = [ dependencies = [
"malloc_buf", "malloc_buf",
] ]
@@ -320,19 +321,13 @@ dependencies = [
"byteorder", "byteorder",
] ]
[[package]]
name = "once_cell"
version = "1.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
[[package]] [[package]]
name = "png" name = "png"
version = "0.17.16" version = "0.17.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags",
"crc32fast", "crc32fast",
"fdeflate", "fdeflate",
"flate2", "flate2",
@@ -345,7 +340,7 @@ version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
dependencies = [ dependencies = [
"zerocopy 0.8.25", "zerocopy",
] ]
[[package]] [[package]]
@@ -387,24 +382,24 @@ dependencies = [
[[package]] [[package]]
name = "quote" name = "quote"
version = "1.0.38" version = "1.0.43"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
] ]
[[package]] [[package]]
name = "r-efi" name = "r-efi"
version = "5.2.0" version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]] [[package]]
name = "rand" name = "rand"
version = "0.9.1" version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
dependencies = [ dependencies = [
"rand_chacha", "rand_chacha",
"rand_core", "rand_core",
@@ -422,9 +417,9 @@ dependencies = [
[[package]] [[package]]
name = "rand_core" name = "rand_core"
version = "0.9.3" version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
dependencies = [ dependencies = [
"getrandom", "getrandom",
] ]
@@ -437,18 +432,28 @@ checksum = "a157657054ffe556d8858504af8a672a054a6e0bd9e8ee531059100c0fa11bb2"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.217" version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
dependencies = [
"serde_core",
"serde_derive",
]
[[package]]
name = "serde_core"
version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.217" version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -457,18 +462,9 @@ dependencies = [
[[package]] [[package]]
name = "simd-adler32" name = "simd-adler32"
version = "0.3.7" version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
[[package]]
name = "slotmap"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a"
dependencies = [
"version_check",
]
[[package]] [[package]]
name = "smallvec" name = "smallvec"
@@ -481,11 +477,26 @@ dependencies = [
[[package]] [[package]]
name = "sol_chess" name = "sol_chess"
version = "0.1.1" version = "0.0.1"
dependencies = [ dependencies = [
"argh",
"macroquad", "macroquad",
"quad-snd", "quad-snd",
"sol_lib",
]
[[package]]
name = "sol_cli"
version = "0.0.1"
dependencies = [
"argh",
"rand",
"sol_lib",
]
[[package]]
name = "sol_lib"
version = "0.0.1"
dependencies = [
"rand", "rand",
] ]
@@ -502,9 +513,9 @@ dependencies = [
[[package]] [[package]]
name = "ttf-parser" name = "ttf-parser"
version = "0.15.2" version = "0.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b3e06c9b9d80ed6b745c7159c40b311ad2916abb34a49e9be2653b90db0d8dd" checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8"
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
@@ -513,18 +524,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
[[package]] [[package]]
name = "version_check" name = "wasip2"
version = "0.9.5" version = "1.0.2+wasi-0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
[[package]]
name = "wasi"
version = "0.14.2+wasi-0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
dependencies = [ dependencies = [
"wit-bindgen-rt", "wit-bindgen",
] ]
[[package]] [[package]]
@@ -550,48 +555,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]] [[package]]
name = "wit-bindgen-rt" name = "wit-bindgen"
version = "0.39.0" version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
dependencies = [
"bitflags 2.9.0",
]
[[package]] [[package]]
name = "zerocopy" name = "zerocopy"
version = "0.7.35" version = "0.8.33"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd"
dependencies = [ dependencies = [
"zerocopy-derive 0.7.35", "zerocopy-derive",
]
[[package]]
name = "zerocopy"
version = "0.8.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb"
dependencies = [
"zerocopy-derive 0.8.25",
] ]
[[package]] [[package]]
name = "zerocopy-derive" name = "zerocopy-derive"
version = "0.7.35" version = "0.8.33"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
+8 -15
View File
@@ -1,20 +1,13 @@
[package] [workspace]
name = "sol_chess" members = [
version = "0.1.1" "lib",
edition = "2021" "cli",
default-run = "sol_chess" "gui",
]
resolver = "3"
[dependencies] [workspace.dependencies]
argh = "0.1.13" argh = "0.1.13"
macroquad = { version = "0.4.13", features = ["audio"] } macroquad = { version = "0.4.13", features = ["audio"] }
quad-snd = "0.2.8" quad-snd = "0.2.8"
[dev-dependencies]
rand = "0.9.1" rand = "0.9.1"
[profile.release]
opt-level = 's'
lto = true
codegen-units = 1
panic = 'abort'
strip = true
-2
View File
@@ -4,8 +4,6 @@ Goal: Generate 'hard' puzzles.
### Play a demo of the game [here](https://games.neophyte.me/sol_chess/) ### Play a demo of the game [here](https://games.neophyte.me/sol_chess/)
![img](./img/sol_chess.png)
## Install ## Install
- Install Rust from [here](https://www.rust-lang.org/tools/install). - Install Rust from [here](https://www.rust-lang.org/tools/install).
+16
View File
@@ -0,0 +1,16 @@
[package]
name = "sol_cli"
version = "0.0.1"
edition = "2024"
[dependencies]
sol_lib = { path = "../lib" }
argh = { workspace = true }
rand = { workspace = true }
[profile.release]
opt-level = 's'
lto = true
codegen-units = 1
panic = 'abort'
strip = true
+13 -14
View File
@@ -1,16 +1,8 @@
use argh::FromArgs; use argh::FromArgs;
use sol_chess::board::cmove::CMove; use rand::Rng;
use sol_chess::board::Board; use sol_lib::board::Board;
use sol_chess::generator::{self, Puzzle, RandomRange}; use sol_lib::generator::{self, Puzzle, RandomRange};
// Learn how to specify a different dependency for this binary
struct MacroquadRngTodo;
impl RandomRange for MacroquadRngTodo {
fn gen_range(&self, min: usize, max: usize) -> usize {
macroquad::rand::gen_range(min, max)
}
}
fn main() { fn main() {
let args: Args = argh::from_env(); let args: Args = argh::from_env();
@@ -79,10 +71,10 @@ fn generate_puzzle(num_pieces: Option<u32>, num_solutions: Option<u32>) -> Optio
"Generating a puzzle with {} pieces with a maximum of {} solutions", "Generating a puzzle with {} pieces with a maximum of {} solutions",
num_pieces, num_solutions num_pieces, num_solutions
); );
let gen = generator::generate(num_pieces, num_solutions, &MacroquadRngTodo); let gen_result = generator::generate(num_pieces, num_solutions, &RandRngImpl);
gen.print_stats(); gen_result.print_stats();
let Some(puzzle) = gen.puzzle() else { let Some(puzzle) = gen_result.puzzle() else {
println!("Failed to generate a puzzle, try again"); println!("Failed to generate a puzzle, try again");
return None; return None;
}; };
@@ -118,3 +110,10 @@ struct Args {
/// the board to solve in board representation /// the board to solve in board representation
solve_board: Option<String>, solve_board: Option<String>,
} }
struct RandRngImpl;
impl RandomRange for RandRngImpl {
fn gen_range(&self, min: usize, max: usize) -> usize {
rand::rng().random_range(min..max)
}
}
+16
View File
@@ -0,0 +1,16 @@
[package]
name = "sol_chess"
version = "0.0.1"
edition = "2024"
[dependencies]
sol_lib = { path = "../lib" }
macroquad = { workspace = true }
quad-snd = { workspace = true }
[profile.release]
opt-level = 's'
lto = true
codegen-units = 1
panic = 'abort'
strip = true

Before

Width:  |  Height:  |  Size: 251 KiB

After

Width:  |  Height:  |  Size: 251 KiB

@@ -15,7 +15,7 @@ mod texture;
use button::Button; use button::Button;
use macroquad::prelude::*; use macroquad::prelude::*;
use sol_chess::{board::{Board, BoardState}, generator::Puzzle}; use sol_lib::{board::Board, generator::Puzzle};
use sound::Sounds; use sound::Sounds;
pub struct Game { pub struct Game {
@@ -1,10 +1,6 @@
use std::rc::Rc; use super::{color::UiColor, shadow::draw_shadow, sound::Sounds};
use macroquad::{audio::Sound, prelude::*}; use macroquad::{audio::Sound, prelude::*};
use std::rc::Rc;
use crate::game::sound::Sounds;
use super::{color::UiColor, shadow::draw_shadow};
pub struct Button { pub struct Button {
pub is_active: bool, pub is_active: bool,
@@ -1,5 +1,6 @@
use macroquad::prelude::*; use macroquad::prelude::*;
#[allow(unused)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)] #[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum UiColor { pub enum UiColor {
Grey, Grey,
@@ -1,9 +1,4 @@
#[cfg(not(debug_assertions))]
pub const WINDOW_TITLE: &str = "Solitaire Chess"; pub const WINDOW_TITLE: &str = "Solitaire Chess";
#[cfg(debug_assertions)]
pub const WINDOW_TITLE: &str = "MOVE TO WORKSPACE 10";
pub const HEADING_TEXT: &str = "Solitaire Chess"; pub const HEADING_TEXT: &str = "Solitaire Chess";
pub const VOLUME: f32 = 0.1; // Between 0 and 1 pub const VOLUME: f32 = 0.1; // Between 0 and 1
pub const SCREEN_HEIGHT_MIN: f32 = 200.0; pub const SCREEN_HEIGHT_MIN: f32 = 200.0;
@@ -1,11 +1,10 @@
use super::{
ButtonAction, Game, GameMode, button::Button, color::UiColor, constants, shadow,
texture::PieceTexture,
};
use macroquad::{math, prelude::*}; use macroquad::{math, prelude::*};
use std::collections::HashMap; use std::collections::HashMap;
use super::{
button::Button, color::UiColor, constants, shadow, texture::PieceTexture, ButtonAction, Game,
GameMode,
};
impl Game { impl Game {
pub fn draw(&mut self) { pub fn draw(&mut self) {
self.update_window_size(); self.update_window_size();
@@ -1,14 +1,10 @@
use std::{collections::HashMap, rc::Rc}; use super::{ButtonAction, Game, GameMode, GameSquare, GameState, constants, sound::Sounds};
use super::{
constants, sound::Sounds, BoardState, ButtonAction, Game, GameMode, GameSquare, GameState,
};
use macroquad::prelude::*; use macroquad::prelude::*;
use sol_chess::{ use sol_lib::{
board, board::BoardState,
generator::{self, Puzzle, RandomRange}, generator::{self, Puzzle, RandomRange},
}; };
use std::{collections::HashMap, rc::Rc};
impl Game { impl Game {
fn get(&mut self, i: usize, j: usize) -> &mut GameSquare { fn get(&mut self, i: usize, j: usize) -> &mut GameSquare {
@@ -278,11 +274,10 @@ impl Game {
} }
pub fn new_game(texture_res: Texture2D, sounds: Sounds, font: Font) -> Self { pub fn new_game(texture_res: Texture2D, sounds: Sounds, font: Font) -> Self {
let num_squares: usize = board::constants::BOARD_SIZE;
let game_mode = GameMode::Medium; let game_mode = GameMode::Medium;
let puzzle = Game::generate_puzzle(game_mode); let puzzle = Game::generate_puzzle(game_mode);
let current_board = puzzle.board.clone(); let current_board = puzzle.board.clone();
let num_squares: usize = current_board.size;
Self { Self {
puzzle, puzzle,
current_board, current_board,
@@ -1,5 +1,5 @@
use macroquad::prelude::*; use macroquad::prelude::*;
use sol_chess::board::piece::Piece; use sol_lib::board::piece::Piece;
pub struct PieceTexture { pub struct PieceTexture {
x: f32, x: f32,
+10 -7
View File
@@ -1,15 +1,22 @@
mod game; mod game;
use game::{sound::Sounds, Game}; use game::{Game, sound::Sounds};
use macroquad::{audio, prelude::*}; use macroquad::{audio, prelude::*};
use miniquad::date; use miniquad::date;
use sol_chess::board;
use game::constants; use game::constants;
fn window_conf() -> Conf { fn window_conf() -> Conf {
let window_title = {
if cfg!(debug_assertions) {
"Debug: Puzzle Game"
} else {
constants::WINDOW_TITLE
}
};
Conf { Conf {
window_title: constants::WINDOW_TITLE.to_string(), window_title: String::from(window_title),
fullscreen: false, fullscreen: false,
..Default::default() ..Default::default()
} }
@@ -17,10 +24,6 @@ fn window_conf() -> Conf {
#[macroquad::main(window_conf)] #[macroquad::main(window_conf)]
async fn main() { async fn main() {
if board::constants::BOARD_SIZE != 4 {
panic!("NUM_SQUARES != 4 is not yet supported");
}
rand::srand(date::now() as u64); rand::srand(date::now() as u64);
let background_color = Color::from_rgba(196, 195, 208, 255); let background_color = Color::from_rgba(196, 195, 208, 255);
let mut game = init().await; let mut game = init().await;
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 KiB

+14
View File
@@ -0,0 +1,14 @@
[package]
name = "sol_lib"
version = "0.0.1"
edition = "2024"
[dev-dependencies]
rand = { workspace = true }
[profile.release]
opt-level = 's'
lto = true
codegen-units = 1
panic = 'abort'
strip = true
+4 -4
View File
@@ -1,5 +1,5 @@
pub mod cmove; pub mod cmove;
pub mod constants; mod constants;
pub mod errors; pub mod errors;
pub mod piece; pub mod piece;
pub mod square; pub mod square;
@@ -25,6 +25,7 @@ pub struct Board {
pub legal_moves: HashSet<CMove>, pub legal_moves: HashSet<CMove>,
pub game_state: BoardState, pub game_state: BoardState,
pub id: String, pub id: String,
pub size: usize,
pieces_remaining: u8, pieces_remaining: u8,
} }
@@ -46,6 +47,7 @@ impl Board {
id, id,
pieces_remaining: 0, pieces_remaining: 0,
game_state: BoardState::NotStarted, game_state: BoardState::NotStarted,
size: BOARD_SIZE,
} }
} }
@@ -503,9 +505,7 @@ mod tests {
} }
macro_rules! mv { macro_rules! mv {
($from:literal, $to:literal) => {{ ($from:literal, $to:literal) => {{ CMove::new(sq!($from), sq!($to)) }};
CMove::new(sq!($from), sq!($to))
}};
} }
macro_rules! validate_board { macro_rules! validate_board {
View File
View File