mirror of
https://github.com/Mercantec-GHC/h5-projekt-mst.git
synced 2026-08-26 21:27:38 +02:00
render 5 segments and despawn
This commit is contained in:
parent
651138a249
commit
bf3b8275ac
118
game/Cargo.lock
generated
118
game/Cargo.lock
generated
@ -8,6 +8,23 @@ version = "2.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"wasi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lazy_static"
|
||||
version = "1.5.0"
|
||||
@ -20,6 +37,63 @@ version = "0.2.183"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
|
||||
|
||||
[[package]]
|
||||
name = "ppv-lite86"
|
||||
version = "0.2.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
|
||||
dependencies = [
|
||||
"zerocopy",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.106"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_chacha"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
|
||||
dependencies = [
|
||||
"ppv-lite86",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.6.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sdl3"
|
||||
version = "0.17.3"
|
||||
@ -42,5 +116,49 @@ checksum = "1d73fc820b0b6b9bd0557de7b799ec9da1ca4f35fcd1cb42f7ceb85e640d1477"
|
||||
name = "skate-slope"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"rand",
|
||||
"sdl3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.117"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.11.1+wasi-snapshot-preview1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.8.48"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
|
||||
dependencies = [
|
||||
"zerocopy-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy-derive"
|
||||
version = "0.8.48"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
@ -5,3 +5,4 @@ edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
sdl3 = "0.17.3"
|
||||
rand = "0.8"
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
mod engine;
|
||||
mod server;
|
||||
use rand::Rng;
|
||||
|
||||
use core::panic;
|
||||
use std::{
|
||||
@ -154,7 +155,6 @@ struct Game {
|
||||
skateboard: Skateboard,
|
||||
segments: Vec<Segment>,
|
||||
camera_pos: V3,
|
||||
next_object_id: u32,
|
||||
keys_pressed: HashSet<Key>,
|
||||
}
|
||||
|
||||
@ -173,7 +173,6 @@ impl Game {
|
||||
},
|
||||
camera_pos: V3(0.0, 0.0, -1.0),
|
||||
segments: Vec::new(),
|
||||
next_object_id: 0,
|
||||
keys_pressed: HashSet::new(),
|
||||
}
|
||||
}
|
||||
@ -186,7 +185,7 @@ impl Game {
|
||||
let index = self
|
||||
.segments
|
||||
.iter()
|
||||
.position(|o| o.id == id)
|
||||
.position(|s| s.id == id)
|
||||
.expect("doesn't exist");
|
||||
self.segments.remove(index);
|
||||
}
|
||||
@ -222,7 +221,22 @@ impl<R: Renderer> engine::Game<R> for Game {
|
||||
.segments
|
||||
.iter()
|
||||
.enumerate()
|
||||
.map(|(i, object)| (i, object.id))
|
||||
.map(|(i, segment)| (i, segment.id))
|
||||
.rev()
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
for (i, id) in ids {
|
||||
let segment = &self.segments[i];
|
||||
if segment.should_despawn {
|
||||
self.despawn(segment.id);
|
||||
}
|
||||
}
|
||||
|
||||
let ids = self
|
||||
.segments
|
||||
.iter()
|
||||
.enumerate()
|
||||
.map(|(i, segment)| (i, segment.id))
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let mut cx = UpdateCx {
|
||||
@ -230,9 +244,8 @@ impl<R: Renderer> engine::Game<R> for Game {
|
||||
};
|
||||
|
||||
for (i, id) in ids {
|
||||
let object = &mut self.segments[i];
|
||||
|
||||
object.update(&mut cx, delta_time);
|
||||
let segment = &mut self.segments[i];
|
||||
segment.update(&mut cx, delta_time);
|
||||
}
|
||||
}
|
||||
|
||||
@ -252,19 +265,21 @@ impl<R: Renderer> engine::Game<R> for Game {
|
||||
};
|
||||
}
|
||||
}
|
||||
#[derive(Clone, Copy)]
|
||||
|
||||
struct Obstacle {
|
||||
pos: V3,
|
||||
vel: V3,
|
||||
size: V3,
|
||||
}
|
||||
#[derive(Clone, Copy)]
|
||||
|
||||
struct Ground {
|
||||
pos: V3,
|
||||
rot: V3,
|
||||
grid_item_size: f64,
|
||||
grid_width: i32,
|
||||
grid_depth: i32,
|
||||
render_depth: i32,
|
||||
}
|
||||
|
||||
struct Segment {
|
||||
@ -306,11 +321,9 @@ impl Segment {
|
||||
}
|
||||
}
|
||||
if cx.skateboard.pos.2
|
||||
>= cx.skateboard.start_pos.2
|
||||
+ self.ground.grid_depth as f64 * self.ground.grid_item_size as f64
|
||||
>= self.ground.pos.2 + self.ground.grid_depth as f64 * self.ground.grid_item_size as f64
|
||||
{
|
||||
cx.skateboard.pos.2 -=
|
||||
self.ground.grid_depth as f64 * self.ground.grid_item_size as f64;
|
||||
self.should_despawn = true
|
||||
}
|
||||
}
|
||||
|
||||
@ -395,11 +408,11 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
})
|
||||
.unwrap();
|
||||
});
|
||||
t.join().unwrap();
|
||||
|
||||
let mut sdl_io = engine::SdlIo::new()?;
|
||||
let mut game = Game::new();
|
||||
let segments: Vec<Segment> = vec![Segment::new(
|
||||
|
||||
let first_segment: Segment = Segment::new(
|
||||
0,
|
||||
vec![Obstacle {
|
||||
pos: V3(0.0, -0.248, 1.0),
|
||||
@ -412,9 +425,42 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
grid_item_size: 0.1,
|
||||
grid_width: 10,
|
||||
grid_depth: 20,
|
||||
render_depth: 5,
|
||||
},
|
||||
)];
|
||||
);
|
||||
let mut rng = rand::thread_rng();
|
||||
|
||||
let mut segments: Vec<Segment> = Vec::new();
|
||||
for i in 0..5 {
|
||||
let ground = first_segment.ground;
|
||||
let obstacle = first_segment.obstacles[0];
|
||||
segments.push(Segment::new(
|
||||
first_segment.id + i,
|
||||
vec![Obstacle {
|
||||
pos: V3(
|
||||
obstacle.pos.0 + rng.gen_range(-0.5..0.5),
|
||||
obstacle.pos.1,
|
||||
obstacle.pos.2 + obstacle.pos.2 * i as f64,
|
||||
),
|
||||
vel: obstacle.vel,
|
||||
size: obstacle.size,
|
||||
}],
|
||||
Ground {
|
||||
pos: V3(
|
||||
ground.pos.0,
|
||||
ground.pos.1,
|
||||
ground.pos.2
|
||||
+ ground.grid_depth as f64
|
||||
* ground.grid_item_size
|
||||
* ground.pos.2.abs()
|
||||
* i as f64,
|
||||
),
|
||||
rot: ground.rot,
|
||||
grid_item_size: ground.grid_item_size,
|
||||
grid_width: ground.grid_width,
|
||||
grid_depth: ground.grid_depth,
|
||||
},
|
||||
))
|
||||
}
|
||||
|
||||
for segment in segments {
|
||||
game.spawn(segment);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user