diff options
author | metamuffin <metamuffin@disroot.org> | 2024-08-14 21:40:30 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-08-14 21:40:30 +0200 |
commit | c44b86bcd86762dcdf1268ebfd3be9899ccf24ba (patch) | |
tree | 7ac984467e973f5abfa78c913e692ce06c0ca4e6 | |
parent | c4ecfadbdfa8487a390958dbd80240f58b286303 (diff) | |
download | hurrycurry-c44b86bcd86762dcdf1268ebfd3be9899ccf24ba.tar hurrycurry-c44b86bcd86762dcdf1268ebfd3be9899ccf24ba.tar.bz2 hurrycurry-c44b86bcd86762dcdf1268ebfd3be9899ccf24ba.tar.zst |
pc: add itembubble and config save/load
-rw-r--r-- | Cargo.lock | 28 | ||||
-rw-r--r-- | pixel-client/Cargo.toml | 4 | ||||
-rw-r--r-- | pixel-client/assets/misc.ini | 1 | ||||
-rw-r--r-- | pixel-client/assets/textures/itembubble.ta | 96 | ||||
-rw-r--r-- | pixel-client/src/config.rs | 43 | ||||
-rw-r--r-- | pixel-client/src/main.rs | 3 | ||||
-rw-r--r-- | pixel-client/src/render/misc.rs | 2 |
7 files changed, 172 insertions, 5 deletions
@@ -1257,8 +1257,12 @@ dependencies = [ "rand 0.9.0-alpha.2", "rustls", "sdl2", + "serde", "serde_json", + "toml", "tungstenite", + "users", + "xdg", ] [[package]] @@ -1702,18 +1706,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.205" +version = "1.0.207" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33aedb1a7135da52b7c21791455563facbbcc43d0f0f66165b42c21b3dfb150" +checksum = "5665e14a49a4ea1b91029ba7d3bca9f299e1f7cfa194388ccc20f14743e784f2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.205" +version = "1.0.207" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692d6f5ac90220161d6774db30c662202721e64aed9058d2c394f451261420c1" +checksum = "6aea2634c86b0e8ef2cfdc0c340baede54ec27b1e46febd7f80dffb2aa44a00e" dependencies = [ "proc-macro2", "quote", @@ -2061,6 +2065,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] +name = "users" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032" +dependencies = [ + "libc", + "log", +] + +[[package]] name = "utf-8" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2277,6 +2291,12 @@ dependencies = [ ] [[package]] +name = "xdg" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" + +[[package]] name = "zerocopy" version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/pixel-client/Cargo.toml b/pixel-client/Cargo.toml index 38c32db8..d319457f 100644 --- a/pixel-client/Cargo.toml +++ b/pixel-client/Cargo.toml @@ -18,6 +18,10 @@ anyhow = "1.0.86" clap = { version = "4.5.15", features = ["derive"] } rustls = { version = "0.23.12", features = ["ring"] } rand = "0.9.0-alpha.2" +xdg = "2.5.2" +toml = "0.8.19" +serde = { version = "1.0.207", featues = ["derive"] } +users = "0.11.0" [features] bundle_sdl2 = ["sdl2/bundled"] diff --git a/pixel-client/assets/misc.ini b/pixel-client/assets/misc.ini index 19a4ba2f..1647caac 100644 --- a/pixel-client/assets/misc.ini +++ b/pixel-client/assets/misc.ini @@ -15,3 +15,4 @@ conveyor-arrow=we:conveyor_arrow_left~hflip icon=pot_back,steak_in_pot~x4~y11,pot_front clouds=clouds +itembubble=itembubble diff --git a/pixel-client/assets/textures/itembubble.ta b/pixel-client/assets/textures/itembubble.ta new file mode 100644 index 00000000..6c13fb31 --- /dev/null +++ b/pixel-client/assets/textures/itembubble.ta @@ -0,0 +1,96 @@ +tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt +tttttttttttttccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccttttttttttttt +ttttttttttcccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffccctttttttttt +ttttttttccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcctttttttt +tttttttcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcttttttt +tttttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttttt +ttttttcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffctttttt +ttttttfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffftttttt +ttttttfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffftttttt +tttttcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +tttttkfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttt +ttttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffkttttt +ttttttfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffftttttt +ttttttkffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffftttttt +tttttttffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffktttttt +tttttttkfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffttttttt +ttttttttkfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffkttttttt +tttttttttkkfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffkktttttttt +tttttttttttkkkfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffkkktttttttttt +ttttttttttttttkkkkkkkkkkkkkkkkkkkkkkkffffffffffffffffffffffkkkkkkkkkkkkkkkkkkkkkkkkttttttttttttt +tttttttttttttttttttttttttttttttttttttkkkffffffffffffffffkkkttttttttttttttttttttttttttttttttttttt +ttttttttttttttttttttttttttttttttttttttttkkkffffffffffkkktttttttttttttttttttttttttttttttttttttttt +tttttttttttttttttttttttttttttttttttttttttttkkkffffkkkttttttttttttttttttttttttttttttttttttttttttt +ttttttttttttttttttttttttttttttttttttttttttttttkffktttttttttttttttttttttttttttttttttttttttttttttt diff --git a/pixel-client/src/config.rs b/pixel-client/src/config.rs new file mode 100644 index 00000000..6d74fbe7 --- /dev/null +++ b/pixel-client/src/config.rs @@ -0,0 +1,43 @@ +use anyhow::{anyhow, Result}; +use serde::{Deserialize, Serialize}; +use std::{ + fs::{read_to_string, rename, File}, + io::Write, + path::PathBuf, +}; + +#[derive(Serialize, Deserialize)] +pub struct Config { + username: String, +} + +impl Config { + pub fn path() -> Result<PathBuf> { + Ok(xdg::BaseDirectories::with_prefix("pixelcurry")?.place_config_file("config.toml")?) + } + pub fn load() -> Result<Self> { + let path = Self::path()?; + if path.exists() { + Ok(toml::from_str(&read_to_string(path)?)?) + } else { + File::create(path)?.write_all(toml::to_string(&Self::initial()?)?.as_bytes())?; + Self::load() + } + } + pub fn save(&self) -> Result<()> { + let path = Self::path()?; + let temp = path.with_added_extension("~"); + File::create(&temp)?.write_all(toml::to_string(self)?.as_bytes())?; + rename(temp, path)?; + Ok(()) + } + pub fn initial() -> Result<Self> { + Ok(Config { + username: users::get_current_username() + .ok_or(anyhow!("current user has no name"))? + .to_str() + .ok_or(anyhow!("current user's name is not valid UTF8"))? + .to_owned(), + }) + } +} diff --git a/pixel-client/src/main.rs b/pixel-client/src/main.rs index 23d99bc8..24421994 100644 --- a/pixel-client/src/main.rs +++ b/pixel-client/src/main.rs @@ -15,7 +15,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ -#![feature(map_many_mut)] +#![feature(map_many_mut, path_add_extension)] use clap::{Parser, Subcommand}; use game::Game; use hurrycurry_client_lib::network::sync::Network; @@ -26,6 +26,7 @@ use render::Renderer; use sdl2::{event::Event, keyboard::KeyboardState, mouse::MouseState, pixels::Color}; use std::time::{Duration, Instant}; +pub mod config; pub mod game; pub mod helper; pub mod menu; diff --git a/pixel-client/src/render/misc.rs b/pixel-client/src/render/misc.rs index 2197b89c..7a631154 100644 --- a/pixel-client/src/render/misc.rs +++ b/pixel-client/src/render/misc.rs @@ -25,6 +25,7 @@ pub struct MiscTextures { pub interact_target: Sprite, pub solid: Rect, pub clouds: Rect, + pub itembubble: Rect, } impl MiscTextures { @@ -39,6 +40,7 @@ impl MiscTextures { ), solid: *layout.get("solid+a").unwrap(), clouds: *layout.get("clouds+a").unwrap(), + itembubble: *layout.get("itembubble+a").unwrap(), } } } |