bevy client board
This commit is contained in:
parent
9e48c3be1d
commit
1cb6ec94c2
6
Makefile
6
Makefile
|
|
@ -2,8 +2,8 @@ shell:
|
||||||
devenv shell
|
devenv shell
|
||||||
# nix develop
|
# nix develop
|
||||||
startserver:
|
startserver:
|
||||||
cargo run --bin=trictrac-server
|
RUST_LOG=trictrac_server cargo run --bin trictrac-server
|
||||||
startclient1:
|
startclient1:
|
||||||
cargo run --bin=trictrac-client Titi
|
RUST_LOG=trictrac_client cargo run --bin=trictrac-client Titi
|
||||||
startclient2:
|
startclient2:
|
||||||
cargo run --bin=trictrac-client Tutu
|
RUST_LOG=trictrac_client cargo run --bin=trictrac-client Tutu
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
[target.x86_64-unknown-linux-gnu]
|
[target.x86_64-unknown-linux-gnu]
|
||||||
linker = "clang"
|
linker = "clang"
|
||||||
rustflags = ["-Clink-arg=-fuse-ld=lld", "-Zshare-generics=y"]
|
rustflags = ["-Clink-arg=-fuse-ld=lld", "-Zshare-generics=y"]
|
||||||
|
|
||||||
|
# Optional: Uncommenting the following improves compile times, but reduces the amount of debug info to 'line number tables only'
|
||||||
|
# In most cases the gains are negligible, but if you are on macos and have slow compile times you should see significant gains.
|
||||||
|
#[profile.dev]
|
||||||
|
#debug = 1
|
||||||
|
|
|
||||||
BIN
client/assets/Inconsolata.ttf
Normal file
BIN
client/assets/Inconsolata.ttf
Normal file
Binary file not shown.
BIN
client/assets/board.png
Normal file
BIN
client/assets/board.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.9 MiB |
|
|
@ -24,7 +24,7 @@ fn main() {
|
||||||
primary_window: Some(Window {
|
primary_window: Some(Window {
|
||||||
// Adding the username to the window title makes debugging a whole lot easier.
|
// Adding the username to the window title makes debugging a whole lot easier.
|
||||||
title: format!("TricTrac <{}>", username),
|
title: format!("TricTrac <{}>", username),
|
||||||
resolution: (480.0, 540.0).into(),
|
resolution: (1080.0, 1080.0).into(),
|
||||||
..default()
|
..default()
|
||||||
}),
|
}),
|
||||||
..default()
|
..default()
|
||||||
|
|
@ -34,10 +34,80 @@ fn main() {
|
||||||
.add_plugins(NetcodeClientPlugin)
|
.add_plugins(NetcodeClientPlugin)
|
||||||
.insert_resource(client)
|
.insert_resource(client)
|
||||||
.insert_resource(transport)
|
.insert_resource(transport)
|
||||||
|
.add_systems(Startup, setup)
|
||||||
|
.add_systems(Update, update_waiting_text)
|
||||||
.add_systems(Update, panic_on_error_system)
|
.add_systems(Update, panic_on_error_system)
|
||||||
.run();
|
.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////// COMPONENTS //////////
|
||||||
|
#[derive(Component)]
|
||||||
|
struct UIRoot;
|
||||||
|
|
||||||
|
#[derive(Component)]
|
||||||
|
struct WaitingText;
|
||||||
|
|
||||||
|
////////// UPDATE SYSTEMS //////////
|
||||||
|
fn update_waiting_text(mut text_query: Query<&mut Text, With<WaitingText>>, time: Res<Time>) {
|
||||||
|
if let Ok(mut text) = text_query.get_single_mut() {
|
||||||
|
let num_dots = (time.elapsed_seconds() as usize % 3) + 1;
|
||||||
|
text.sections[0].value = format!(
|
||||||
|
"Waiting for an opponent{}{}",
|
||||||
|
".".repeat(num_dots as usize),
|
||||||
|
// Pad with spaces to avoid text changing width and dancing all around the screen 🕺
|
||||||
|
" ".repeat(3 - num_dots as usize)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////// SETUP //////////
|
||||||
|
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||||
|
// Tric Trac is a 2D game
|
||||||
|
// To show 2D sprites we need a 2D camera
|
||||||
|
commands.spawn(Camera2dBundle::default());
|
||||||
|
|
||||||
|
// Spawn board background
|
||||||
|
commands.spawn(SpriteBundle {
|
||||||
|
transform: Transform::from_xyz(0.0, -30.0, 0.0),
|
||||||
|
sprite: Sprite {
|
||||||
|
custom_size: Some(Vec2::new(1025.0, 880.0)),
|
||||||
|
..default()
|
||||||
|
},
|
||||||
|
texture: asset_server.load("board.png").into(),
|
||||||
|
..default()
|
||||||
|
});
|
||||||
|
|
||||||
|
// Spawn pregame ui
|
||||||
|
commands
|
||||||
|
// A container that centers its children on the screen
|
||||||
|
.spawn(NodeBundle {
|
||||||
|
style: Style {
|
||||||
|
position_type: PositionType::Absolute,
|
||||||
|
left: Val::Px(0.0),
|
||||||
|
top: Val::Px(0.0),
|
||||||
|
width: Val::Percent(100.0),
|
||||||
|
height: Val::Percent(100.0),
|
||||||
|
align_items: AlignItems::Center,
|
||||||
|
justify_content: JustifyContent::Center,
|
||||||
|
..default()
|
||||||
|
},
|
||||||
|
..default()
|
||||||
|
})
|
||||||
|
.insert(UIRoot)
|
||||||
|
.with_children(|parent| {
|
||||||
|
parent
|
||||||
|
.spawn(TextBundle::from_section(
|
||||||
|
"Waiting for an opponent...",
|
||||||
|
TextStyle {
|
||||||
|
font: asset_server.load("Inconsolata.ttf"),
|
||||||
|
font_size: 24.0,
|
||||||
|
color: Color::hex("ebdbb2").unwrap(),
|
||||||
|
},
|
||||||
|
))
|
||||||
|
.insert(WaitingText);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
////////// RENET NETWORKING //////////
|
////////// RENET NETWORKING //////////
|
||||||
// Creates a RenetClient thats already connected to a server.
|
// Creates a RenetClient thats already connected to a server.
|
||||||
// Returns an Err if connection fails
|
// Returns an Err if connection fails
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue