Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
3da65f0
Make container loading in render game properly async for default items
Jupeyy May 30, 2026
a5fb25e
More tracing annotations to some functions
Jupeyy May 30, 2026
915d8b1
Benchmark bitcode a bit
Jupeyy May 30, 2026
f6251cb
Normalize versioning
Jupeyy May 30, 2026
821b360
Cargo update
Jupeyy May 30, 2026
88adf81
Upgrade deps
Jupeyy May 31, 2026
a379172
Add missing file explorer icons. fixes #155
Jupeyy May 31, 2026
d0d8de8
Fix settings list with new egui version
Jupeyy May 31, 2026
c9954c9
Move some utils from client-ui into own crate, since editor depends o…
Jupeyy May 31, 2026
d096d70
Move collisions out of vanilla
Jupeyy May 31, 2026
72f3e0f
Move weapon visual definitions into renering crate
Jupeyy May 31, 2026
a03a071
Switch to annular section hitbox for emoticon wheel
Jupeyy May 31, 2026
3f0f04c
Disable resolution list in borderless fullscreen. fixes #154
Jupeyy May 31, 2026
7f7f994
Move ingame ui into own crate
Jupeyy May 31, 2026
76aa6cf
Move time display to client ui utils
Jupeyy May 31, 2026
e80ec50
[Vanilla] Jetpack upgrade support (logic)
Jupeyy Jun 1, 2026
6554c64
Move restrictions for jetpack
Jupeyy Jun 3, 2026
b134e4a
Fix projectile's velocity calculation, invalidly introduced in #164
Jupeyy Jun 6, 2026
72f8831
[Legacy proxy] fix character hook in evaluated ticks
Jupeyy Jun 6, 2026
9360bf9
[Vanilla] fix hook duration to 1.2s + 1 tick, to match the real logic
Jupeyy Jun 6, 2026
904a881
Load all game containers for local character
Jupeyy Jun 6, 2026
007e571
Make clearable edit box gain focus when cleared
Jupeyy Jun 6, 2026
1365e07
Also don't expand clear box on hover
Jupeyy Jun 6, 2026
fbad297
Format cargo files
Jupeyy Jun 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2,531 changes: 1,237 additions & 1,294 deletions Cargo.lock

Large diffs are not rendered by default.

68 changes: 37 additions & 31 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ members = [
"game/client-replay",
"game/client-types",
"game/client-ui",
"game/client-ui-utils",
"game/community",
"game/demo",
"game/ddnet-info-proxy",
Expand All @@ -85,13 +86,15 @@ members = [
"game/game-state-wasm",
"game/ghost",
"game/http-accounts",
"game/ingame-ui",
"game/legacy-map",
"game/legacy-proxy",
"game/map",
"game/map-convert-lib",
"game/master-server-types",
"game/prediction-timer",
"game/render-game-wasm",
"game/tile-map-collision",
"game/vanilla",
"lib/api",
"lib/api-macros",
Expand Down Expand Up @@ -205,6 +208,7 @@ pool = { path = "lib/pool" }
sound = { path = "lib/sound" }
sound-backend = { path = "lib/sound-backend" }
steam = { path = "lib/steam" }
tile-map-collision = { path = "game/tile-map-collision" }
ui-base = { path = "lib/ui-base" }
ui-generic = { path = "lib/ui-generic" }
ui-wasm-manager = { path = "lib/ui-wasm-manager" }
Expand All @@ -225,6 +229,7 @@ client-render-game = { path = "game/client-render-game" }
client-replay = { path = "game/client-replay" }
client-types = { path = "game/client-types" }
client-ui = { path = "game/client-ui", features = ["binds"] }
client-ui-utils = { path = "game/client-ui-utils" }
demo = { path = "game/demo", features = ["recorder"] }
ddnet-info-proxy = { path = "game/ddnet-info-proxy" }
editor = { path = "game/editor", default-features = false }
Expand All @@ -237,69 +242,70 @@ game-network = { path = "game/game-network" }
game-server = { path = "game/game-server", default-features = false }
game-state-wasm = { path = "game/game-state-wasm" }
ghost = { path = "game/ghost" }
ingame-ui = { path = "game/ingame-ui" }
legacy-proxy = { path = "game/legacy-proxy" }
prediction-timer = { path = "game/prediction-timer" }

anyhow = { version = "1.0.100", features = ["backtrace"] }
arrayvec = "0.7.6"
bincode = { version = "2.0.1", features = ["serde"] }
bytes = "1.10.1"
chrono = { version = "0.4.42", features = ["serde"] }
crossbeam = "0.8.4"
egui = { version = "0.33.0", default-features = false, features = ["serde"] }
egui-winit = { version = "0.33.0", default-features = false, features = [
anyhow = { version = "1", features = ["backtrace"] }
arrayvec = "0.7"
bincode = { version = "2", features = ["serde"] }
bytes = "1"
chrono = { version = "0.4", features = ["serde"] }
crossbeam = "0.8"
egui = { version = "0.34", default-features = false, features = ["serde"] }
egui-winit = { version = "0.34", default-features = false, features = [
"x11",
"arboard",
"links",
] }
egui_extras = { version = "0.33.0" }
emath = "0.33.0"
env_logger = "0.11.8"
fixed = "1.29.0"
egui_extras = { version = "0.34" }
emath = "0.34"
env_logger = "0.11"
fixed = "1"
hashlink = { git = "https://github.com/Jupeyy/hashlink/", branch = "ddnet", features = [
"serde",
"serde_impl",
] }
hiarc = { path = "lib/hiarc", features = ["derive"] }
log = "0.4.28"
num = "0.4.3"
parking_lot = "0.12.5"
rand = { version = "0.9.2", features = ["std_rng"], default-features = false }
rayon = "1.11.0"
serde = "1.0.228"
serde-value = "0.7.0"
serde_json = "1.0.145"
thread-priority = "3.0.0"
tokio = { version = "1.48.0", features = [
log = "0.4"
num = "0.4"
parking_lot = "0.12"
rand = { version = "0.10", features = ["std_rng"], default-features = false }
rayon = "1"
serde = "1"
serde-value = "0.7"
serde_json = "1"
thread-priority = "3"
tokio = { version = "1", features = [
"rt-multi-thread",
"sync",
"fs",
"time",
"macros",
] }
tracing = { version = "0.1.41", default-features = false, features = [
tracing = { version = "0.1", default-features = false, features = [
"attributes",
] }
trybuild = "1.0"
url = "2.5.7"
x509-cert = { version = "0.2.5" }
url = "2"
x509-cert = { version = "0.2" }

audiopus_sys = { git = "https://github.com/Jupeyy/audiopus_sys.git", branch = "ddnet-rs", features = [
"static",
] }

alloc-track = { version = "0.3.1", optional = true }
stats_alloc = { version = "0.1.10", optional = true }
alloc-track = { version = "0.4", optional = true }
stats_alloc = { version = "0.1", optional = true }

[target.'cfg(not(target_os = "android"))'.dependencies]
native-dialog = "0.9.3"
native-dialog = "0.9"

[target.'cfg(target_os = "android")'.dependencies]
android_logger = "0.15.1"
ndk = { version = "0.9.0", default-features = false }
android_logger = "0.15"
ndk = { version = "0.9", default-features = false }

[target.'cfg(target_arch = "wasm32")'.dependencies]
tracing = { version = "0.1.41", default-features = false, features = [
tracing = { version = "0.1", default-features = false, features = [
"max_level_off",
"release_max_level_off",
] }
Expand Down
6 changes: 3 additions & 3 deletions examples/lib-modules/editor-lib/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ config = { path = "../../../lib/config" }
graphics = { path = "../../../lib/graphics" }
sound = { path = "../../../lib/sound" }

egui = { version = "0.33.0", default-features = false, features = ["serde"] }
once_cell = "1.21.3"
rayon = "1.11.0"
egui = { version = "0.34", default-features = false, features = ["serde"] }
once_cell = "1"
rayon = "1"
6 changes: 3 additions & 3 deletions examples/wasm-modules/actionfeed/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ api-ui-game = { path = "../../../game/api-ui-game" }
client-containers = { path = "../../../game/client-containers" }
client-render-base = { path = "../../../game/client-render-base" }
client-types = { path = "../../../game/client-types" }
client-ui = { path = "../../../game/client-ui" }
game-interface = { path = "../../../game/game-interface" }
ingame-ui = { path = "../../../game/ingame-ui" }

egui = { version = "0.33.0", default-features = false, features = ["serde"] }
num-traits = "0.2.19"
egui = { version = "0.34", default-features = false, features = ["serde"] }
num-traits = "0.2"
4 changes: 2 additions & 2 deletions examples/wasm-modules/actionfeed/src/actionfeed/page.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,11 +146,11 @@ impl ActionfeedPage {
});
}

client_ui::actionfeed::main_frame::render(
ingame_ui::actionfeed::main_frame::render(
ui,
&mut UiRenderPipe::new(
pipe.cur_time,
&mut client_ui::actionfeed::user_data::UserData {
&mut ingame_ui::actionfeed::user_data::UserData {
canvas_handle: &self.canvas_handle,
stream_handle: &self.stream_handle,
entries: &entries.into(),
Expand Down
4 changes: 2 additions & 2 deletions examples/wasm-modules/auto-mapper/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ math = { path = "../../../lib/math" }
api-auto-mapper = { path = "../../../game/api-auto-mapper" }
editor-interface = { path = "../../../game/editor-interface" }

log = "0.4.28"
rustc-hash = "2.1.1"
log = "0.4"
rustc-hash = "2"
4 changes: 2 additions & 2 deletions examples/wasm-modules/chat/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ api-ui-game = { path = "../../../game/api-ui-game" }
client-containers = { path = "../../../game/client-containers" }
client-render-base = { path = "../../../game/client-render-base" }
client-types = { path = "../../../game/client-types" }
client-ui = { path = "../../../game/client-ui" }
game-base = { path = "../../../game/game-base" }
game-interface = { path = "../../../game/game-interface" }
ingame-ui = { path = "../../../game/ingame-ui" }

egui = { version = "0.33.0", default-features = false, features = ["serde"] }
egui = { version = "0.34", default-features = false, features = ["serde"] }
6 changes: 3 additions & 3 deletions examples/wasm-modules/chat/src/chat/page.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ use api_ui_game::render::create_skin_container;
use client_containers::skins::SkinContainer;
use client_render_base::render::tee::RenderTee;
use client_types::chat::{ChatMsg, MsgSystem, ServerMsg, SystemMsgPlayerSkin};
use client_ui::chat::user_data::{ChatMode, MsgInChat};
use game_base::network::types::chat::{ChatPlayerInfo, NetChatMsgPlayerChannel};
use game_interface::types::{character_info::NetworkSkinInfo, id_gen::IdGenerator};
use graphics::{
graphics::graphics::Graphics,
handles::{canvas::canvas::GraphicsCanvasHandle, stream::stream::GraphicsStreamHandle},
};
use ingame_ui::chat::user_data::{ChatMode, MsgInChat};
use math::math::vector::ubvec4;
use ui_base::types::{UiRenderPipe, UiState};
use ui_generic::traits::UiPageInterface;
Expand Down Expand Up @@ -144,11 +144,11 @@ impl ChatPage {
}),
add_time: Duration::MAX,
});
client_ui::chat::main_frame::render(
ingame_ui::chat::main_frame::render(
ui,
&mut UiRenderPipe::new(
pipe.cur_time,
&mut client_ui::chat::user_data::UserData {
&mut ingame_ui::chat::user_data::UserData {
entries: &entries,
show_chat_history: false,
is_input_active: false,
Expand Down
2 changes: 1 addition & 1 deletion examples/wasm-modules/connecting/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ ui-generic = { path = "../../../lib/ui-generic" }
api-ui-game = { path = "../../../game/api-ui-game" }
client-ui = { path = "../../../game/client-ui" }

egui = { version = "0.33.0", default-features = false, features = ["serde"] }
egui = { version = "0.34", default-features = false, features = ["serde"] }
2 changes: 1 addition & 1 deletion examples/wasm-modules/console/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ client-render-base = { path = "../../../game/client-render-base" }
client-types = { path = "../../../game/client-types" }
client-ui = { path = "../../../game/client-ui" }

egui = { version = "0.33.0", default-features = false, features = ["serde"] }
egui = { version = "0.34", default-features = false, features = ["serde"] }
2 changes: 1 addition & 1 deletion examples/wasm-modules/demo_player/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ ui-generic = { path = "../../../lib/ui-generic" }
api-ui-game = { path = "../../../game/api-ui-game" }
client-ui = { path = "../../../game/client-ui" }

egui = { version = "0.33.0", default-features = false, features = ["serde"] }
egui = { version = "0.34", default-features = false, features = ["serde"] }
4 changes: 2 additions & 2 deletions examples/wasm-modules/emote_wheel/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ ui-generic = { path = "../../../lib/ui-generic" }
api-ui-game = { path = "../../../game/api-ui-game" }
client-containers = { path = "../../../game/client-containers" }
client-render-base = { path = "../../../game/client-render-base" }
client-ui = { path = "../../../game/client-ui" }
ingame-ui = { path = "../../../game/ingame-ui" }

egui = { version = "0.33.0", default-features = false, features = ["serde"] }
egui = { version = "0.34", default-features = false, features = ["serde"] }
6 changes: 3 additions & 3 deletions examples/wasm-modules/emote_wheel/src/emote_wheel/page.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
use api_ui_game::render::{create_emoticons_container, create_skin_container};
use client_containers::{emoticons::EmoticonsContainer, skins::SkinContainer};
use client_render_base::render::tee::RenderTee;
use client_ui::emote_wheel::user_data::EmoteWheelMousePos;
use graphics::{
graphics::graphics::Graphics,
handles::{canvas::canvas::GraphicsCanvasHandle, stream::stream::GraphicsStreamHandle},
};
use ingame_ui::emote_wheel::user_data::EmoteWheelMousePos;
use ui_base::types::{UiRenderPipe, UiState};
use ui_generic::traits::UiPageInterface;

Expand Down Expand Up @@ -34,11 +34,11 @@ impl EmoteWheelPage {
pipe: &mut UiRenderPipe<()>,
ui_state: &mut UiState,
) {
client_ui::emote_wheel::main_frame::render(
ingame_ui::emote_wheel::main_frame::render(
ui,
&mut UiRenderPipe::new(
pipe.cur_time,
&mut client_ui::emote_wheel::user_data::UserData {
&mut ingame_ui::emote_wheel::user_data::UserData {
events: &mut Default::default(),
canvas_handle: &self.canvas_handle,
stream_handle: &self.stream_handle,
Expand Down
14 changes: 7 additions & 7 deletions examples/wasm-modules/graphics-mod/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ pool = { path = "../../../lib/pool", features = ["enable_hiarc"] }

api-state = { path = "../../../game/api-state" }

anyhow = { version = "1.0.100", features = ["backtrace"] }
arrayvec = "0.7.6"
bitflags = { version = "2.10.0", features = ["serde"] }
num-derive = "0.4.2"
num-traits = "0.2.19"
rayon = "1.11.0"
tracing = { version = "0.1.41", default-features = false, features = [
anyhow = { version = "1", features = ["backtrace"] }
arrayvec = "0.7"
bitflags = { version = "2", features = ["serde"] }
num-derive = "0.4"
num-traits = "0.2"
rayon = "1"
tracing = { version = "0.1", default-features = false, features = [
"attributes",
] }
4 changes: 2 additions & 2 deletions examples/wasm-modules/hud/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ ui-generic = { path = "../../../lib/ui-generic" }
api-ui-game = { path = "../../../game/api-ui-game" }
client-containers = { path = "../../../game/client-containers" }
client-render-base = { path = "../../../game/client-render-base" }
client-ui = { path = "../../../game/client-ui" }
game-interface = { path = "../../../game/game-interface" }
ingame-ui = { path = "../../../game/ingame-ui" }

egui = { version = "0.33.0", default-features = false, features = ["serde"] }
egui = { version = "0.34", default-features = false, features = ["serde"] }
6 changes: 3 additions & 3 deletions examples/wasm-modules/hud/src/hud/page.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ use api_ui_game::render::{create_ctf_container, create_skin_container};
use base::{linked_hash_map_view::FxLinkedHashMap, network_string::PoolNetworkString};
use client_containers::{ctf::CtfContainer, skins::SkinContainer};
use client_render_base::render::tee::RenderTee;
use client_ui::hud::user_data::RenderDateTime;
use game_interface::types::{
character_info::{NetworkCharacterInfo, NetworkSkinInfo},
id_gen::IdGenerator,
Expand All @@ -19,6 +18,7 @@ use graphics::{
graphics::graphics::Graphics,
handles::{canvas::canvas::GraphicsCanvasHandle, stream::stream::GraphicsStreamHandle},
};
use ingame_ui::hud::user_data::RenderDateTime;
use pool::{datatypes::PoolString, rc::PoolRc};
use ui_base::types::{UiRenderPipe, UiState};
use ui_generic::traits::UiPageInterface;
Expand Down Expand Up @@ -68,11 +68,11 @@ impl HudPage {
pipe: &mut UiRenderPipe<()>,
ui_state: &mut UiState,
) {
client_ui::hud::main_frame::render(
ingame_ui::hud::main_frame::render(
ui,
&mut UiRenderPipe::new(
pipe.cur_time,
&mut client_ui::hud::user_data::UserData {
&mut ingame_ui::hud::user_data::UserData {
race_round_timer_counter: &456156,
ticks_per_second: &50.try_into().unwrap(),
/*game: Some(&GameRenderInfo::Match {
Expand Down
11 changes: 6 additions & 5 deletions examples/wasm-modules/ingame_menu/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@ api-ui-game = { path = "../../../game/api-ui-game" }
client-containers = { path = "../../../game/client-containers" }
client-render-base = { path = "../../../game/client-render-base" }
client-ui = { path = "../../../game/client-ui" }
client-ui-utils = { path = "../../../game/client-ui-utils" }
game-base = { path = "../../../game/game-base" }
game-config = { path = "../../../game/game-config" }
game-interface = { path = "../../../game/game-interface" }

anyhow = { version = "1.0.100", features = ["backtrace"] }
async-trait = "0.1.89"
egui = { version = "0.33.0", default-features = false, features = ["serde"] }
email_address = { version = "0.2.9", features = ["serde"] }
serde_json = "1.0.145"
anyhow = { version = "1", features = ["backtrace"] }
async-trait = "0.1"
egui = { version = "0.34", default-features = false, features = ["serde"] }
email_address = { version = "0.2", features = ["serde"] }
serde_json = "1"
6 changes: 2 additions & 4 deletions examples/wasm-modules/ingame_menu/src/ingame_menu/mod.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
use api::{GRAPHICS, IO, RUNTIME_THREAD_POOL, SOUND};
use client_containers::container::ContainerLoadOptions;
use client_ui::{
main_menu::theme_container::{THEME_CONTAINER_PATH, ThemeContainer},
thumbnail_container::ThumbnailContainer,
};
use client_ui::main_menu::theme_container::{THEME_CONTAINER_PATH, ThemeContainer};
use client_ui_utils::thumbnail_container::ThumbnailContainer;

pub mod page;
pub mod profiles;
Expand Down
2 changes: 1 addition & 1 deletion examples/wasm-modules/ingame_menu/src/ingame_menu/page.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ use client_ui::{
monitors::UiMonitors, profiles_interface::ProfilesInterface,
theme_container::ThemeContainer, user_data::MainMenuInterface,
},
thumbnail_container::{DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer},
};
use client_ui_utils::thumbnail_container::{DEFAULT_THUMBNAIL_CONTAINER_PATH, ThumbnailContainer};
use game_base::server_browser::{
ServerBrowserData, ServerBrowserInfo, ServerBrowserInfoMap, ServerBrowserServer,
};
Expand Down
11 changes: 6 additions & 5 deletions examples/wasm-modules/mainmenu/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,12 @@ api-ui-game = { path = "../../../game/api-ui-game" }
client-containers = { path = "../../../game/client-containers" }
client-render-base = { path = "../../../game/client-render-base" }
client-ui = { path = "../../../game/client-ui" }
client-ui-utils = { path = "../../../game/client-ui-utils" }
game-base = { path = "../../../game/game-base" }
game-config = { path = "../../../game/game-config" }

anyhow = { version = "1.0.100", features = ["backtrace"] }
async-trait = "0.1.89"
egui = { version = "0.33.0", default-features = false, features = ["serde"] }
email_address = { version = "0.2.9", features = ["serde"] }
serde_json = "1.0.145"
anyhow = { version = "1", features = ["backtrace"] }
async-trait = "0.1"
egui = { version = "0.34", default-features = false, features = ["serde"] }
email_address = { version = "0.2", features = ["serde"] }
serde_json = "1"
Loading
Loading