Skip to content

Commit

Permalink
resolve some todos in az-core
Browse files Browse the repository at this point in the history
  • Loading branch information
mat-1 committed Dec 27, 2024
1 parent 33e1a13 commit 3c3952b
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 28 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions azalea-block/src/range.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,19 @@ impl Add for BlockStates {
}
}
}

impl From<HashSet<azalea_registry::Block>> for BlockStates {
fn from(set: HashSet<azalea_registry::Block>) -> Self {
Self {
set: set.into_iter().map(|b| b.into()).collect(),
}
}
}

impl From<&HashSet<azalea_registry::Block>> for BlockStates {
fn from(set: &HashSet<azalea_registry::Block>) -> Self {
Self {
set: set.iter().map(|&b| b.into()).collect(),
}
}
}
3 changes: 1 addition & 2 deletions azalea-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,9 @@ bevy_ecs = { workspace = true, optional = true }
nohash-hasher = { workspace = true }
num-traits = { workspace = true }
serde = { workspace = true, optional = true }
#serde_json = { workspace = true }
simdnbt = { workspace = true }
tracing = { workspace = true }
#uuid = { workspace = true }
azalea-chat = { path = "../azalea-chat", version = "0.11.0" }

[features]
bevy_ecs = ["dep:bevy_ecs"]
Expand Down
5 changes: 4 additions & 1 deletion azalea-core/src/direction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,10 @@ impl Direction {
}
}

// TODO: make azalea_block use this instead of FacingCardinal
/// The four cardinal directions.
///
/// Note that azalea_block has a similar enum named `FacingCardinal` that is
/// used for block states.
#[derive(Clone, Copy, Debug, AzBuf, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum CardinalDirection {
Expand Down
36 changes: 18 additions & 18 deletions azalea-core/src/game_type.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use std::io::{Cursor, Write};

use azalea_buf::{AzaleaRead, AzaleaReadVar, AzaleaWrite, BufReadError};
use azalea_chat::translatable_component::TranslatableComponent;
use tracing::debug;

/// A Minecraft gamemode, like survival or creative.
Expand Down Expand Up @@ -51,26 +52,15 @@ impl GameMode {
)
}

pub fn short_name(&self) -> &'static str {
// TODO: these should be translated
// TranslatableComponent("selectWorld.gameMode." + string2)
match self {
GameMode::Survival => "Survival",
GameMode::Creative => "Creative",
GameMode::Adventure => "Adventure",
GameMode::Spectator => "Spectator",
}
/// The short translatable display name for the gamemode, like "Survival".
pub fn short_name(&self) -> TranslatableComponent {
TranslatableComponent::new(format!("selectWorld.gameMode.{}", self.name()), vec![])
}

pub fn long_name(&self) -> &'static str {
// TODO: These should be translated TranslatableComponent("gameMode." +
// string2);
match self {
GameMode::Survival => "Survival Mode",
GameMode::Creative => "Creative Mode",
GameMode::Adventure => "Adventure Mode",
GameMode::Spectator => "Spectator Mode",
}
/// The long translatable display name for the gamemode, like "Survival
/// Mode".
pub fn long_name(&self) -> TranslatableComponent {
TranslatableComponent::new(format!("gameMode.{}", self.name()), vec![])
}

pub fn from_name(name: &str) -> GameMode {
Expand All @@ -82,6 +72,16 @@ impl GameMode {
_ => panic!("Unknown game type name: {name}"),
}
}

/// The internal name for the game mode, like "survival".
pub fn name(&self) -> &'static str {
match self {
GameMode::Survival => "survival",
GameMode::Creative => "creative",
GameMode::Adventure => "adventure",
GameMode::Spectator => "spectator",
}
}
}

impl GameMode {
Expand Down
23 changes: 16 additions & 7 deletions azalea-core/src/math.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
use std::{f64::consts::PI, sync::LazyLock};
use std::{
f64::consts::PI,
ops::{Add, Div, Sub},
sync::LazyLock,
};

pub const EPSILON: f64 = 1.0E-7;

Expand All @@ -24,17 +28,22 @@ pub fn cos(x: f32) -> f32 {
SIN[x]
}

// TODO: make this generic
pub fn binary_search(mut min: i32, max: i32, predicate: &dyn Fn(i32) -> bool) -> i32 {
pub fn binary_search<
T: Ord + PartialOrd + Add<Output = T> + Sub<Output = T> + Div<Output = T> + From<u8> + Copy,
>(
mut min: T,
max: T,
predicate: impl Fn(T) -> bool,
) -> T {
let mut diff = max - min;
while diff > 0 {
let diff_mid = diff / 2;
while diff > T::from(0) {
let diff_mid = diff / T::from(2);
let mid = min + diff_mid;
if predicate(mid) {
diff = diff_mid;
} else {
min = mid + 1;
diff -= diff_mid + 1;
min = mid + T::from(1);
diff = diff - (diff_mid + T::from(1));
}
}

Expand Down

0 comments on commit 3c3952b

Please sign in to comment.