stuff
This commit is contained in:
commit
e5a83229f1
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/target
|
3211
Cargo.lock
generated
Normal file
3211
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
3
Cargo.toml
Normal file
3
Cargo.toml
Normal file
@ -0,0 +1,3 @@
|
||||
[workspace]
|
||||
resolver = "2"
|
||||
members = ["client", "server"]
|
25
client/.cargo/config.toml
Normal file
25
client/.cargo/config.toml
Normal file
@ -0,0 +1,25 @@
|
||||
# Add the contents of this file to `config.toml` to enable "fast build" configuration. Please read the notes below.
|
||||
|
||||
# NOTE: For maximum performance, build using a nightly compiler
|
||||
# If you are using rust stable, remove the "-Zshare-generics=y" below.
|
||||
|
||||
[target.x86_64-unknown-linux-gnu]
|
||||
linker = "clang"
|
||||
rustflags = ["-Clink-arg=-fuse-ld=lld", "-Zshare-generics=y"]
|
||||
|
||||
# NOTE: you must manually install https://github.com/michaeleisel/zld on mac. you can easily do this with the "brew" package manager:
|
||||
# `brew install michaeleisel/zld/zld`
|
||||
[target.x86_64-apple-darwin]
|
||||
rustflags = ["-C", "link-arg=-fuse-ld=/usr/local/bin/zld", "-Zshare-generics=y"]
|
||||
|
||||
[target.aarch64-apple-darwin]
|
||||
rustflags = ["-C", "link-arg=-fuse-ld=/opt/homebrew/bin/zld", "-Zshare-generics=y"]
|
||||
|
||||
[target.x86_64-pc-windows-msvc]
|
||||
linker = "rust-lld.exe"
|
||||
rustflags = ["-Zshare-generics=n"]
|
||||
|
||||
# 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
|
16
client/Cargo.toml
Normal file
16
client/Cargo.toml
Normal file
@ -0,0 +1,16 @@
|
||||
[package]
|
||||
name = "daggmask"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
bevy = "0.8"
|
||||
|
||||
# Enable a small amount of optimization in debug mode
|
||||
[profile.dev]
|
||||
opt-level = 1
|
||||
|
||||
# Enable high optimizations for dependencies (incl. Bevy), but not for our code:
|
||||
[profile.dev.package."*"]
|
||||
opt-level = 3
|
||||
|
59
client/src/main.rs
Normal file
59
client/src/main.rs
Normal file
@ -0,0 +1,59 @@
|
||||
use bevy::prelude::*;
|
||||
|
||||
fn main() {
|
||||
App::new()
|
||||
.add_plugins(DefaultPlugins)
|
||||
.add_startup_system(setup)
|
||||
.add_startup_system(spawn_player)
|
||||
.add_system(move_player)
|
||||
.run();
|
||||
}
|
||||
|
||||
fn setup(mut commands: Commands) {
|
||||
info!("hehe");
|
||||
let mut camera_bundle = Camera2dBundle::default();
|
||||
camera_bundle.projection.scale = 1. / 50.;
|
||||
commands.spawn_bundle(camera_bundle);
|
||||
}
|
||||
|
||||
#[derive(Component)]
|
||||
struct Player;
|
||||
|
||||
fn spawn_player(mut commands: Commands) {
|
||||
commands
|
||||
.spawn_bundle(SpriteBundle {
|
||||
sprite: Sprite {
|
||||
color: Color::rgb(0., 0.47, 1.),
|
||||
custom_size: Some(Vec2::new(1., 1.)),
|
||||
..Default::default()
|
||||
},
|
||||
..Default::default()
|
||||
})
|
||||
.insert(Player);
|
||||
}
|
||||
|
||||
fn move_player(keys: Res<Input<KeyCode>>, mut player_query: Query<&mut Transform, With<Player>>) {
|
||||
let mut direction = Vec2::ZERO;
|
||||
if keys.any_pressed([KeyCode::Up, KeyCode::W]) {
|
||||
direction.y += 1.;
|
||||
}
|
||||
if keys.any_pressed([KeyCode::Down, KeyCode::S]) {
|
||||
direction.y -= 1.;
|
||||
}
|
||||
if keys.any_pressed([KeyCode::Right, KeyCode::D]) {
|
||||
direction.x += 1.;
|
||||
}
|
||||
if keys.any_pressed([KeyCode::Left, KeyCode::A]) {
|
||||
direction.x -= 1.;
|
||||
}
|
||||
if direction == Vec2::ZERO {
|
||||
return;
|
||||
}
|
||||
|
||||
let move_speed = 0.13;
|
||||
let move_delta = (direction * move_speed).extend(0.);
|
||||
|
||||
for mut transform in player_query.iter_mut() {
|
||||
transform.translation += move_delta;
|
||||
}
|
||||
}
|
3
rust-toolchain.toml
Normal file
3
rust-toolchain.toml
Normal file
@ -0,0 +1,3 @@
|
||||
[toolchain]
|
||||
channel = "nightly"
|
||||
|
7
server/Cargo.toml
Normal file
7
server/Cargo.toml
Normal file
@ -0,0 +1,7 @@
|
||||
[package]
|
||||
name = "daggmask-server"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
45
server/src/main.rs
Normal file
45
server/src/main.rs
Normal file
@ -0,0 +1,45 @@
|
||||
use std::net::UdpSocket;
|
||||
|
||||
fn main() -> std::io::Result<()> {
|
||||
// replace xxxx with your desired port
|
||||
// replace S.S.S.S with your server address
|
||||
let socket = UdpSocket::bind("S.S.S.S:xxxx")?;
|
||||
let mut peers: Vec<String> = vec![];
|
||||
|
||||
loop {
|
||||
let mut buf = [0; 1024];
|
||||
let (_, src) = socket.recv_from(&mut buf)?;
|
||||
let stringified_buff = String::from_utf8(buf.to_vec()).unwrap();
|
||||
let stringified_buff = stringified_buff.trim_matches(char::from(0));
|
||||
|
||||
println!("[NEW MESSAGE]{:?} => {:?}", src, stringified_buff);
|
||||
|
||||
if stringified_buff != "register" {
|
||||
continue;
|
||||
}
|
||||
|
||||
if !peers.contains(&format!("{}", src)) {
|
||||
peers.push(format!("{}", src));
|
||||
}
|
||||
|
||||
for p in &peers {
|
||||
let filtered_peers = filter_peers(&peers, p);
|
||||
|
||||
if !filtered_peers.is_empty() {
|
||||
socket.send_to(filtered_peers.join(",").as_bytes(), p)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn filter_peers(peers: &Vec<String>, filter: &String) -> Vec<String> {
|
||||
let mut new_peers: Vec<String> = vec![];
|
||||
|
||||
for p in peers {
|
||||
if p != filter {
|
||||
new_peers.push(String::from(p));
|
||||
}
|
||||
}
|
||||
|
||||
new_peers
|
||||
}
|
Loading…
Reference in New Issue
Block a user