amethyst / amethyst/bracket-lib
Multiple SpriteConsoles
- Dominant language
- Rust
- Stars
- 1.7k
- Forks
- 126
- PR merge metrics
- No merged PRs in 30d
Description
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:

Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.