added touch
This commit is contained in:
parent
cda20eb105
commit
b693022068
@ -89,14 +89,11 @@ impl Machine {
|
|||||||
// SETUP BANCO 2 (Tiles 16x16 para Sprites)
|
// SETUP BANCO 2 (Tiles 16x16 para Sprites)
|
||||||
if self.gfx.banks[2].is_none() {
|
if self.gfx.banks[2].is_none() {
|
||||||
let mut bank = crate::model::TileBank::new(crate::model::TileSize::Size16, 128, 128);
|
let mut bank = crate::model::TileBank::new(crate::model::TileSize::Size16, 128, 128);
|
||||||
// Define Cor na Paleta 0, Índice 1 = INDIGO (Roxo)
|
|
||||||
bank.palettes[0][1] = Color::INDIGO;
|
bank.palettes[0][1] = Color::INDIGO;
|
||||||
// Define Cor na Paleta 1, Índice 1 = AMARELO (para Palette Swap)
|
|
||||||
bank.palettes[1][1] = Color::YELLOW;
|
bank.palettes[1][1] = Color::YELLOW;
|
||||||
// Define Cor na Paleta 1, Índice 1 = AMARELO (para Palette Swap)
|
|
||||||
bank.palettes[2][1] = Color::RED;
|
bank.palettes[2][1] = Color::RED;
|
||||||
// Define Cor na Paleta 1, Índice 1 = AMARELO (para Palette Swap)
|
|
||||||
bank.palettes[3][1] = Color::GREEN;
|
bank.palettes[3][1] = Color::GREEN;
|
||||||
|
bank.palettes[4][1] = Color::ORANGE;
|
||||||
|
|
||||||
let tile_size = 16;
|
let tile_size = 16;
|
||||||
let start_x = 16;
|
let start_x = 16;
|
||||||
@ -121,7 +118,7 @@ impl Machine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 512 Sprites (usando Banco 2 - Indigo e Amarelo)
|
// 512 Sprites (usando Banco 2 - Indigo e Amarelo)
|
||||||
for i in 0..511 {
|
for i in 0..510 {
|
||||||
let s = &mut self.gfx.sprites[i];
|
let s = &mut self.gfx.sprites[i];
|
||||||
s.active = true;
|
s.active = true;
|
||||||
s.bank_id = 2;
|
s.bank_id = 2;
|
||||||
@ -156,10 +153,30 @@ impl Machine {
|
|||||||
cursor.tile.palette_id = 3; // GREEN
|
cursor.tile.palette_id = 3; // GREEN
|
||||||
}
|
}
|
||||||
|
|
||||||
// // Teste de Pressed: se clicou JUSTO AGORA, reseta o frame_index
|
// --- INTERATIVIDADE COM INPUT (Gamepad) ---
|
||||||
// if self.touch.f.pressed {
|
let player = &mut self.gfx.sprites[510]; // Usaremos outro sprite para o Pad
|
||||||
// self.frame_index = 0;
|
player.active = true;
|
||||||
// }
|
player.bank_id = 2;
|
||||||
|
player.tile.id = 1;
|
||||||
|
player.priority = 4;
|
||||||
|
player.tile.palette_id = 1; // YELLOW
|
||||||
|
|
||||||
|
// Movimento contínuo (enquanto segura)
|
||||||
|
let move_speed = 2;
|
||||||
|
if self.pad.up.down { player.y -= move_speed; }
|
||||||
|
if self.pad.down.down { player.y += move_speed; }
|
||||||
|
if self.pad.left.down { player.x -= move_speed; }
|
||||||
|
if self.pad.right.down { player.x += move_speed; }
|
||||||
|
|
||||||
|
// Trigger (apenas no frame que apertou)
|
||||||
|
if self.pad.a.pressed {
|
||||||
|
player.tile.palette_id = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Exemplo de uso do released
|
||||||
|
if self.pad.start.released {
|
||||||
|
// Se soltar o Start, podemos pausar algo futuramente
|
||||||
|
}
|
||||||
|
|
||||||
// // Post-FX Fade Pulsante
|
// // Post-FX Fade Pulsante
|
||||||
// let pulse = (self.frame_index / 4) % 64;
|
// let pulse = (self.frame_index / 4) % 64;
|
||||||
|
|||||||
@ -9,17 +9,19 @@
|
|||||||
pub struct Color(pub u16);
|
pub struct Color(pub u16);
|
||||||
|
|
||||||
impl Color {
|
impl Color {
|
||||||
pub const INDIGO: Self = Self::rgb(32, 32, 64);
|
|
||||||
pub const GRAY: Self = Self::rgb(64, 64, 64);
|
|
||||||
pub const BLACK: Self = Self::rgb(0, 0, 0); // 0x0000
|
pub const BLACK: Self = Self::rgb(0, 0, 0); // 0x0000
|
||||||
pub const WHITE: Self = Self::rgb(255, 255, 255); // 0xFFFF
|
pub const WHITE: Self = Self::rgb(255, 255, 255); // 0xFFFF
|
||||||
pub const RED: Self = Self::rgb(255, 0, 0); // 0xF800
|
pub const RED: Self = Self::rgb(255, 0, 0); // 0xF800
|
||||||
pub const GREEN: Self = Self::rgb(0, 255, 0); // 0x07E0
|
pub const GREEN: Self = Self::rgb(0, 255, 0); // 0x07E0
|
||||||
pub const BLUE: Self = Self::rgb(0, 0, 255); // 0x001F
|
pub const BLUE: Self = Self::rgb(0, 0, 255); // 0x001F
|
||||||
pub const YELLOW: Self = Self::rgb(255, 255, 0); // 0xFFE0
|
pub const YELLOW: Self = Self::rgb(255, 255, 0); // 0xFFE0
|
||||||
pub const CYAN: Self = Self::rgb(0, 255, 255); // 0x07FF
|
pub const ORANGE: Self = Self::rgb(255, 128, 0);
|
||||||
|
pub const INDIGO: Self = Self::rgb(75, 0, 130);
|
||||||
|
pub const GRAY: Self = Self::rgb(128, 128, 128);
|
||||||
|
pub const CYAN: Self = Self::rgb(0, 255, 255); // 0x07FF
|
||||||
pub const MAGENTA: Self = Self::rgb(255, 0, 255); // 0xF81F
|
pub const MAGENTA: Self = Self::rgb(255, 0, 255); // 0xF81F
|
||||||
pub const COLOR_KEY: Self = Self::MAGENTA;
|
pub const COLOR_KEY: Self = Self::MAGENTA;
|
||||||
|
pub const TRANSPARENT: Self = Self::MAGENTA;
|
||||||
|
|
||||||
/// Extrai canais já na faixa nativa do RGB565:
|
/// Extrai canais já na faixa nativa do RGB565:
|
||||||
/// R: 0..31, G: 0..63, B: 0..31
|
/// R: 0..31, G: 0..63, B: 0..31
|
||||||
|
|||||||
@ -7,11 +7,11 @@ pub struct InputSignals {
|
|||||||
pub right_signal: bool,
|
pub right_signal: bool,
|
||||||
|
|
||||||
pub a_signal: bool,
|
pub a_signal: bool,
|
||||||
pub d_signal: bool,
|
pub b_signal: bool,
|
||||||
pub w_signal: bool,
|
pub x_signal: bool,
|
||||||
pub s_signal: bool,
|
pub y_signal: bool,
|
||||||
pub q_signal: bool,
|
pub l_signal: bool,
|
||||||
pub e_signal: bool,
|
pub r_signal: bool,
|
||||||
|
|
||||||
pub start_signal: bool,
|
pub start_signal: bool,
|
||||||
pub select_signal: bool,
|
pub select_signal: bool,
|
||||||
|
|||||||
@ -9,11 +9,11 @@ pub struct Pad {
|
|||||||
pub right: Button,
|
pub right: Button,
|
||||||
|
|
||||||
pub a: Button, // ps: square
|
pub a: Button, // ps: square
|
||||||
pub d: Button, // ps: circle
|
pub b: Button, // ps: circle
|
||||||
pub w: Button, // ps: triangle
|
pub x: Button, // ps: triangle
|
||||||
pub s: Button, // ps: cross
|
pub y: Button, // ps: cross
|
||||||
pub q: Button, // ps: R
|
pub l: Button, // ps: R
|
||||||
pub e: Button, // ps: L
|
pub r: Button, // ps: L
|
||||||
|
|
||||||
pub start: Button,
|
pub start: Button,
|
||||||
pub select: Button,
|
pub select: Button,
|
||||||
@ -27,11 +27,11 @@ impl Pad {
|
|||||||
self.right.begin_frame(signals.right_signal);
|
self.right.begin_frame(signals.right_signal);
|
||||||
|
|
||||||
self.a.begin_frame(signals.a_signal);
|
self.a.begin_frame(signals.a_signal);
|
||||||
self.d.begin_frame(signals.d_signal);
|
self.b.begin_frame(signals.b_signal);
|
||||||
self.w.begin_frame(signals.w_signal);
|
self.x.begin_frame(signals.x_signal);
|
||||||
self.s.begin_frame(signals.s_signal);
|
self.y.begin_frame(signals.y_signal);
|
||||||
self.q.begin_frame(signals.q_signal);
|
self.l.begin_frame(signals.l_signal);
|
||||||
self.e.begin_frame(signals.e_signal);
|
self.r.begin_frame(signals.r_signal);
|
||||||
|
|
||||||
self.start.begin_frame(signals.start_signal);
|
self.start.begin_frame(signals.start_signal);
|
||||||
self.select.begin_frame(signals.select_signal);
|
self.select.begin_frame(signals.select_signal);
|
||||||
|
|||||||
@ -150,11 +150,11 @@ impl ApplicationHandler for PrometeuApp {
|
|||||||
|
|
||||||
// A/B (troque depois como quiser)
|
// A/B (troque depois como quiser)
|
||||||
KeyCode::KeyA => self.input_signals.a_signal = is_down,
|
KeyCode::KeyA => self.input_signals.a_signal = is_down,
|
||||||
KeyCode::KeyD => self.input_signals.d_signal = is_down,
|
KeyCode::KeyD => self.input_signals.b_signal = is_down,
|
||||||
KeyCode::KeyW => self.input_signals.w_signal = is_down,
|
KeyCode::KeyW => self.input_signals.x_signal = is_down,
|
||||||
KeyCode::KeyS => self.input_signals.s_signal = is_down,
|
KeyCode::KeyS => self.input_signals.y_signal = is_down,
|
||||||
KeyCode::KeyQ => self.input_signals.q_signal = is_down,
|
KeyCode::KeyQ => self.input_signals.l_signal = is_down,
|
||||||
KeyCode::KeyE => self.input_signals.e_signal = is_down,
|
KeyCode::KeyE => self.input_signals.r_signal = is_down,
|
||||||
|
|
||||||
KeyCode::KeyZ => self.input_signals.start_signal = is_down,
|
KeyCode::KeyZ => self.input_signals.start_signal = is_down,
|
||||||
KeyCode::ShiftLeft | KeyCode::ShiftRight => self.input_signals.select_signal = is_down,
|
KeyCode::ShiftLeft | KeyCode::ShiftRight => self.input_signals.select_signal = is_down,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user