From 9dd38565e39d850becc38811538818ed51fb73ce Mon Sep 17 00:00:00 2001 From: Parth Pant Date: Wed, 29 Mar 2023 18:51:38 +0530 Subject: [PATCH] Separate ui and core --- Cargo.lock | 63 ++++++++++++---------- Cargo.toml | 2 +- README.md | 5 +- chrs-core/Cargo.toml | 7 --- chrs-core/src/lib.rs | 4 -- chrs-ui/Cargo.toml | 17 ++++++ {chrs-core => chrs-ui}/src/app.rs | 6 +-- {chrs-core => chrs-ui}/src/board/events.rs | 0 {chrs-core => chrs-ui}/src/board/mod.rs | 4 +- {chrs-core => chrs-ui}/src/cache.rs | 0 {chrs-core => chrs-ui}/src/main.rs | 6 ++- {chrs-core => chrs-ui}/src/ui/gui.rs | 4 +- {chrs-core => chrs-ui}/src/ui/mod.rs | 2 +- 13 files changed, 68 insertions(+), 52 deletions(-) create mode 100644 chrs-ui/Cargo.toml rename {chrs-core => chrs-ui}/src/app.rs (98%) rename {chrs-core => chrs-ui}/src/board/events.rs (100%) rename {chrs-core => chrs-ui}/src/board/mod.rs (99%) rename {chrs-core => chrs-ui}/src/cache.rs (100%) rename {chrs-core => chrs-ui}/src/main.rs (79%) rename {chrs-core => chrs-ui}/src/ui/gui.rs (97%) rename {chrs-core => chrs-ui}/src/ui/mod.rs (99%) diff --git a/Cargo.lock b/Cargo.lock index 2f1b86a..6178208 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -182,13 +182,13 @@ dependencies = [ [[package]] name = "bytemuck_derive" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aca418a974d83d40a0c1f0c5cba6ff4bc28d8df099109ca459a2118d40b6322" +checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.11", ] [[package]] @@ -244,20 +244,13 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" name = "chrs-core" version = "0.1.0" dependencies = [ - "egui", - "egui-wgpu", - "egui-winit", - "fontdue", "lazy_static", "log", - "pixels", "pretty_env_logger", "rand", "rand_chacha", - "resvg", "strum", "strum_macros", - "winit", ] [[package]] @@ -267,6 +260,22 @@ dependencies = [ "chrs-core", ] +[[package]] +name = "chrs-ui" +version = "0.1.0" +dependencies = [ + "chrs-core", + "egui", + "egui-wgpu", + "egui-winit", + "fontdue", + "log", + "pixels", + "pretty_env_logger", + "resvg", + "winit", +] + [[package]] name = "clipboard-win" version = "4.5.0" @@ -280,9 +289,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.49" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" dependencies = [ "cc", ] @@ -723,13 +732,13 @@ dependencies = [ [[package]] name = "foreign-types-macros" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8469d0d40519bc608ec6863f1cc88f3f1deee15913f2f3b3e573d81ed38cccc" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.11", ] [[package]] @@ -938,9 +947,9 @@ checksum = "b72ad49b554c1728b1e83254a1b1565aea4161e28dabbfa171fc15fe62299caf" [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", @@ -1708,19 +1717,19 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.158" +version = "1.0.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" +checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" [[package]] name = "serde_derive" -version = "1.0.158" +version = "1.0.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" +checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" dependencies = [ "proc-macro2", "quote", - "syn 2.0.8", + "syn 2.0.11", ] [[package]] @@ -1902,9 +1911,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.8" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9" +checksum = "21e3787bb71465627110e7d87ed4faaa36c1f61042ee67badb9e2ef173accc40" dependencies = [ "proc-macro2", "quote", @@ -1937,7 +1946,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.8", + "syn 2.0.11", ] [[package]] @@ -2667,9 +2676,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1" +checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index 573d7da..63d3700 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["chrs-core", "chrs-perft"] +members = ["chrs-core", "chrs-perft", "chrs-ui"] resolver = "2" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/README.md b/README.md index 9a313ce..fa477de 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,6 @@ chess-rs is a Chess Engine written from scratch in Rust. ### Features -This section should list any major features of chess-rs - - [x] Move Generation using BitBoards (~17s perft results at depth 6 for starting position) - [x] Supports all moves including en-passant, pawn promotion and castling - [x] GUI gameplay @@ -20,7 +18,6 @@ This section should list any major features of chess-rs - [x] Transposition Tables - [x] Incremental Search Deepening - [ ] Opening Book -- [ ] Separate UI from Core ## Getting Started @@ -43,7 +40,7 @@ cargo build ``` # You can either start the Chess Engine with -cargo run -p chrs-core +cargo run -p chrs-ui # Or you can run perft analysis cargo run -p chrs-perft -- 5 "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1" diff --git a/chrs-core/Cargo.toml b/chrs-core/Cargo.toml index 8558361..c22a7a9 100644 --- a/chrs-core/Cargo.toml +++ b/chrs-core/Cargo.toml @@ -8,13 +8,6 @@ log = "0.4.17" pretty_env_logger = "0.4.0" # TODO: Is lazy_static really needed? lazy_static = "1.4.0" -winit = "0.27.5" -pixels = "0.11.0" -resvg = "0.29.0" -egui = "0.20.0" -egui-winit = "0.20.1" -egui-wgpu = "0.20.0" -fontdue = "0.7.2" rand = "0.8.5" strum = "0.24" strum_macros = "0.24" diff --git a/chrs-core/src/lib.rs b/chrs-core/src/lib.rs index 7783875..d19a9b9 100644 --- a/chrs-core/src/lib.rs +++ b/chrs-core/src/lib.rs @@ -1,10 +1,6 @@ pub mod ai; -pub mod app; -pub mod board; pub mod data; pub mod generator; pub mod zobrist; -mod cache; mod prng; -mod ui; diff --git a/chrs-ui/Cargo.toml b/chrs-ui/Cargo.toml new file mode 100644 index 0000000..e18679c --- /dev/null +++ b/chrs-ui/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "chrs-ui" +version = "0.1.0" +edition = "2021" + +[dependencies] +chrs-core = {path = "../chrs-core"} + +log = "0.4.17" +pretty_env_logger = "0.4.0" +winit = "0.27.5" +pixels = "0.11.0" +resvg = "0.29.0" +egui = "0.20.0" +egui-winit = "0.20.1" +egui-wgpu = "0.20.0" +fontdue = "0.7.2" diff --git a/chrs-core/src/app.rs b/chrs-ui/src/app.rs similarity index 98% rename from chrs-core/src/app.rs rename to chrs-ui/src/app.rs index 41dbe7f..4aa3f96 100644 --- a/chrs-core/src/app.rs +++ b/chrs-ui/src/app.rs @@ -1,8 +1,8 @@ -use crate::ai::{NegaMaxAI, AI}; use crate::board::{events::BoardEvent, Board}; -use crate::data::{BoardConfig, Color, MoveList, Square}; -use crate::generator::MoveGenerator; use crate::ui::GuiFramework; +use chrs_core::ai::{NegaMaxAI, AI}; +use chrs_core::data::{BoardConfig, Color, MoveList, Square}; +use chrs_core::generator::MoveGenerator; use log; use pixels::{Error, Pixels, SurfaceTexture}; diff --git a/chrs-core/src/board/events.rs b/chrs-ui/src/board/events.rs similarity index 100% rename from chrs-core/src/board/events.rs rename to chrs-ui/src/board/events.rs diff --git a/chrs-core/src/board/mod.rs b/chrs-ui/src/board/mod.rs similarity index 99% rename from chrs-core/src/board/mod.rs rename to chrs-ui/src/board/mod.rs index feb410f..953d191 100644 --- a/chrs-core/src/board/mod.rs +++ b/chrs-ui/src/board/mod.rs @@ -1,8 +1,8 @@ pub mod events; use crate::cache::Cache; -use crate::data::{BoardConfig, BoardPiece, Color, Move, MoveList, Square}; -use crate::generator::MoveGenerator; +use chrs_core::data::{BoardConfig, BoardPiece, Color, Move, MoveList, Square}; +use chrs_core::generator::MoveGenerator; use events::{BoardEvent, ElementState, MouseButton, MouseState}; use fontdue::{ layout::{CoordinateSystem, HorizontalAlign, Layout, LayoutSettings, TextStyle}, diff --git a/chrs-core/src/cache.rs b/chrs-ui/src/cache.rs similarity index 100% rename from chrs-core/src/cache.rs rename to chrs-ui/src/cache.rs diff --git a/chrs-core/src/main.rs b/chrs-ui/src/main.rs similarity index 79% rename from chrs-core/src/main.rs rename to chrs-ui/src/main.rs index 0f9c4a5..3c71586 100644 --- a/chrs-core/src/main.rs +++ b/chrs-ui/src/main.rs @@ -1,9 +1,13 @@ #![allow(warnings, unused)] +mod app; +mod board; +mod cache; +mod ui; use pixels::Error; use pretty_env_logger; -use chrs_core::app::App; +use app::App; fn main() -> Result<(), Error> { std::env::set_var("RUST_BACKTRACE", "1"); diff --git a/chrs-core/src/ui/gui.rs b/chrs-ui/src/ui/gui.rs similarity index 97% rename from chrs-core/src/ui/gui.rs rename to chrs-ui/src/ui/gui.rs index 3cb2344..838e1e3 100644 --- a/chrs-core/src/ui/gui.rs +++ b/chrs-ui/src/ui/gui.rs @@ -1,8 +1,8 @@ use std::cell::RefCell; use std::rc::Rc; -use crate::data::BoardConfig; -use crate::data::Color; +use chrs_core::data::BoardConfig; +use chrs_core::data::Color; use egui::{Color32, Context}; pub(super) struct Gui { diff --git a/chrs-core/src/ui/mod.rs b/chrs-ui/src/ui/mod.rs similarity index 99% rename from chrs-core/src/ui/mod.rs rename to chrs-ui/src/ui/mod.rs index 763fee4..b854c31 100644 --- a/chrs-core/src/ui/mod.rs +++ b/chrs-ui/src/ui/mod.rs @@ -12,7 +12,7 @@ use std::rc::Rc; use winit::event_loop::EventLoopWindowTarget; use winit::window::Window; -use crate::data::BoardConfig; +use chrs_core::data::BoardConfig; /// Manages all state required for rendering egui over `Pixels`. pub struct GuiFramework {