amethyst / amethyst/bracket-lib
Multiple SpriteConsoles
- Vorherrschende Sprache
- Rust
- Sterne
- 1.7k
- Forks
- 126
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
I tried your example at `bracket-lib/bracket-terminal/examples/sprites.rs` and changed it to use the same sprite a second time but with grayscale. Unfortunately trying to use the second SpriteConsole does not work as it will use the SpriteSheet of the first console and not the second. Now I'm wondering whether I'm doing something wrong:
Code:
```rs
bracket_terminal::add_wasm_support!();
use bracket_random::prelude::*;
use bracket_terminal::prelude::*;
struct Dood {
x: i32,
y: i32,
}
struct State {
frame: usize,
timer: f32,
doods: Vec,
rng: RandomNumberGenerator,
}
impl GameState for State {
fn tick(&mut self, ctx: &mut BTerm) {
ctx.set_active_console(1);
ctx.cls();
ctx.print(1, 1, "Watch them go!");
ctx.printer(
1,
2,
&format!("#[pink]FPS: #[]{}", ctx.fps),
TextAlign::Left,
None,
);
ctx.set_active_console(0);
ctx.cls();
for dood in self.doods.iter() {
ctx.add_sprite(
Rect::with_size(dood.x, dood.y, 32, 32),
400 - dood.y,
RGBA::from_f32(1.0, 1.0, 1.0, 1.0),
self.frame % 4,
)
}
self.timer += ctx.frame_time_ms;
if self.timer > 66.0 {
self.timer = 0.0;
self.frame += 1;
for dood in self.doods.iter_mut() {
dood.x += self.rng.range(0, 3) - 1;
dood.y += self.rng.range(0, 3) - 1;
}
}
// Changed
ctx.set_active_console(2);
ctx.cls();
ctx.add_sprite(
Rect::with_size(200, 200, 50, 50),
400,
RGBA::from_f32(1.0, 1.0, 1.0, 1.0),
0,
)
}
}
bracket_terminal::embedded_resource!(NYAN_CAT, "../res/sprite_dood.png");
// Changed
bracket_terminal::embedded_resource!(NYAN_CAT2, "../res/sprite_dood2.png");
fn main() -> BError {
bracket_terminal::link_resource!(NYAN_CAT, "res/sprite_dood.png");
// Changed
bracket_terminal::link_resource!(NYAN_CAT2, "res/sprite_dood2.png");
let context = BTermBuilder::new()
.with_sprite_console(640, 400, 0)
.with_font("terminal8x8.png", 8, 8)
.with_simple_console_no_bg(80, 50, "terminal8x8.png")
// Changed
.with_sprite_console(640, 400, 1)
.with_title("Bracket Terminal - Sprite Console")
.with_sprite_sheet(
SpriteSheet::new("res/sprite_dood.png")
.add_sprite(Rect::with_size(0, 0, 85, 132))
.add_sprite(Rect::with_size(85, 0, 85, 132))
.add_sprite(Rect::with_size(170, 0, 85, 132))
.add_sprite(Rect::with_size(255, 0, 85, 132)),
)
// Changed
.with_sprite_sheet(
SpriteSheet::new("res/sprite_dood2.png")
.add_sprite(Rect::with_size(0, 0, 85, 132))
.add_sprite(Rect::with_size(85, 0, 85, 132))
.add_sprite(Rect::with_size(170, 0, 85, 132))
.add_sprite(Rect::with_size(255, 0, 85, 132)),
)
.with_vsync(false)
.build()?;
let mut rng = RandomNumberGenerator::new();
let mut doods = Vec::new();
for _ in 0..100 {
doods.push(Dood {
x: rng.range(0, 640),
y: rng.range(0, 400),
});
}
let gs = State {
frame: 0,
timer: 0.0,
doods,
rng,
};
main_loop(context, gs)
}
```
This is my second sprite file:

and this is the result:

Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Bewertung
Dieses Issue wurde noch nicht bewertet.