mirror of
https://github.com/Mercantec-GHC/h5-projekt-mst.git
synced 2026-08-27 05:37:39 +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"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
|
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]]
|
[[package]]
|
||||||
name = "lazy_static"
|
name = "lazy_static"
|
||||||
version = "1.5.0"
|
version = "1.5.0"
|
||||||
@ -20,6 +37,63 @@ version = "0.2.183"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
|
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]]
|
[[package]]
|
||||||
name = "sdl3"
|
name = "sdl3"
|
||||||
version = "0.17.3"
|
version = "0.17.3"
|
||||||
@ -42,5 +116,49 @@ checksum = "1d73fc820b0b6b9bd0557de7b799ec9da1ca4f35fcd1cb42f7ceb85e640d1477"
|
|||||||
name = "skate-slope"
|
name = "skate-slope"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"rand",
|
||||||
"sdl3",
|
"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]
|
[dependencies]
|
||||||
sdl3 = "0.17.3"
|
sdl3 = "0.17.3"
|
||||||
|
rand = "0.8"
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
mod engine;
|
mod engine;
|
||||||
mod server;
|
mod server;
|
||||||
|
use rand::Rng;
|
||||||
|
|
||||||
use core::panic;
|
use core::panic;
|
||||||
use std::{
|
use std::{
|
||||||
@ -154,7 +155,6 @@ struct Game {
|
|||||||
skateboard: Skateboard,
|
skateboard: Skateboard,
|
||||||
segments: Vec<Segment>,
|
segments: Vec<Segment>,
|
||||||
camera_pos: V3,
|
camera_pos: V3,
|
||||||
next_object_id: u32,
|
|
||||||
keys_pressed: HashSet<Key>,
|
keys_pressed: HashSet<Key>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,7 +173,6 @@ impl Game {
|
|||||||
},
|
},
|
||||||
camera_pos: V3(0.0, 0.0, -1.0),
|
camera_pos: V3(0.0, 0.0, -1.0),
|
||||||
segments: Vec::new(),
|
segments: Vec::new(),
|
||||||
next_object_id: 0,
|
|
||||||
keys_pressed: HashSet::new(),
|
keys_pressed: HashSet::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -186,7 +185,7 @@ impl Game {
|
|||||||
let index = self
|
let index = self
|
||||||
.segments
|
.segments
|
||||||
.iter()
|
.iter()
|
||||||
.position(|o| o.id == id)
|
.position(|s| s.id == id)
|
||||||
.expect("doesn't exist");
|
.expect("doesn't exist");
|
||||||
self.segments.remove(index);
|
self.segments.remove(index);
|
||||||
}
|
}
|
||||||
@ -222,7 +221,22 @@ impl<R: Renderer> engine::Game<R> for Game {
|
|||||||
.segments
|
.segments
|
||||||
.iter()
|
.iter()
|
||||||
.enumerate()
|
.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<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
let mut cx = UpdateCx {
|
let mut cx = UpdateCx {
|
||||||
@ -230,9 +244,8 @@ impl<R: Renderer> engine::Game<R> for Game {
|
|||||||
};
|
};
|
||||||
|
|
||||||
for (i, id) in ids {
|
for (i, id) in ids {
|
||||||
let object = &mut self.segments[i];
|
let segment = &mut self.segments[i];
|
||||||
|
segment.update(&mut cx, delta_time);
|
||||||
object.update(&mut cx, delta_time);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,19 +265,21 @@ impl<R: Renderer> engine::Game<R> for Game {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#[derive(Clone, Copy)]
|
||||||
|
|
||||||
struct Obstacle {
|
struct Obstacle {
|
||||||
pos: V3,
|
pos: V3,
|
||||||
vel: V3,
|
vel: V3,
|
||||||
size: V3,
|
size: V3,
|
||||||
}
|
}
|
||||||
|
#[derive(Clone, Copy)]
|
||||||
|
|
||||||
struct Ground {
|
struct Ground {
|
||||||
pos: V3,
|
pos: V3,
|
||||||
rot: V3,
|
rot: V3,
|
||||||
grid_item_size: f64,
|
grid_item_size: f64,
|
||||||
grid_width: i32,
|
grid_width: i32,
|
||||||
grid_depth: i32,
|
grid_depth: i32,
|
||||||
render_depth: i32,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Segment {
|
struct Segment {
|
||||||
@ -306,11 +321,9 @@ impl Segment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if cx.skateboard.pos.2
|
if cx.skateboard.pos.2
|
||||||
>= cx.skateboard.start_pos.2
|
>= self.ground.pos.2 + self.ground.grid_depth as f64 * self.ground.grid_item_size as f64
|
||||||
+ self.ground.grid_depth as f64 * self.ground.grid_item_size as f64
|
|
||||||
{
|
{
|
||||||
cx.skateboard.pos.2 -=
|
self.should_despawn = true
|
||||||
self.ground.grid_depth as f64 * self.ground.grid_item_size as f64;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -395,11 +408,11 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
})
|
})
|
||||||
.unwrap();
|
.unwrap();
|
||||||
});
|
});
|
||||||
t.join().unwrap();
|
|
||||||
|
|
||||||
let mut sdl_io = engine::SdlIo::new()?;
|
let mut sdl_io = engine::SdlIo::new()?;
|
||||||
let mut game = Game::new();
|
let mut game = Game::new();
|
||||||
let segments: Vec<Segment> = vec![Segment::new(
|
|
||||||
|
let first_segment: Segment = Segment::new(
|
||||||
0,
|
0,
|
||||||
vec![Obstacle {
|
vec![Obstacle {
|
||||||
pos: V3(0.0, -0.248, 1.0),
|
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_item_size: 0.1,
|
||||||
grid_width: 10,
|
grid_width: 10,
|
||||||
grid_depth: 20,
|
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 {
|
for segment in segments {
|
||||||
game.spawn(segment);
|
game.spawn(segment);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user