mirror of
https://github.com/doukutsu-rs/doukutsu-rs
synced 2024-09-28 21:19:24 +00:00
camera improvements
This commit is contained in:
parent
23c5196fde
commit
e540dfb297
|
@ -49,6 +49,10 @@ impl BMFontRenderer {
|
|||
})
|
||||
}
|
||||
|
||||
pub fn line_height(&self, constants: &EngineConstants) -> f32 {
|
||||
self.font.line_height as f32 * constants.font_scale
|
||||
}
|
||||
|
||||
pub fn text_width<I: Iterator<Item=char>>(&self, iter: I, constants: &EngineConstants) -> f32 {
|
||||
let mut offset_x = 0.0;
|
||||
|
||||
|
|
|
@ -477,12 +477,12 @@ impl Player {
|
|||
// camera
|
||||
self.index_x = clamp(self.index_x + self.direction.vector_x() * 0x200, -0x8000, 0x8000);
|
||||
|
||||
if state.control_flags.control_enabled() && self.controller.move_up() {
|
||||
if state.control_flags.control_enabled() && self.controller.look_up() {
|
||||
self.index_y -= 0x200; // 1.0fix9
|
||||
if self.index_y < -0x8000 { // -64.0fix9
|
||||
self.index_y = -0x8000;
|
||||
}
|
||||
} else if state.control_flags.control_enabled() && self.controller.move_down() {
|
||||
} else if state.control_flags.control_enabled() && self.controller.look_down() {
|
||||
self.index_y += 0x200; // 1.0fix9
|
||||
if self.index_y > 0x8000 { // -64.0fix9
|
||||
self.index_y = 0x8000;
|
||||
|
|
|
@ -5,6 +5,7 @@ use ggez::graphics::{BlendMode, Color, Drawable, DrawParam, FilterMode, mint};
|
|||
use ggez::graphics::spritebatch::SpriteBatch;
|
||||
use ggez::nalgebra::{clamp, Vector2};
|
||||
use log::info;
|
||||
use num_traits::abs;
|
||||
|
||||
use crate::bullet::BulletManager;
|
||||
use crate::caret::CaretType;
|
||||
|
@ -1050,15 +1051,14 @@ impl GameScene {
|
|||
|
||||
match self.frame.update_target {
|
||||
UpdateTarget::Player => {
|
||||
if !self.player2.cond.hidden() {
|
||||
if !self.player2.cond.hidden()
|
||||
&& abs(self.player1.target_x - self.player2.x) < 200 * 0x200
|
||||
&& abs(self.player1.target_y - self.player2.y) < 160 * 0x200 {
|
||||
self.frame.target_x = (self.player1.target_x + self.player2.target_x) / 2;
|
||||
self.frame.target_y = (self.player1.target_y + self.player2.target_y) / 2;
|
||||
|
||||
let up = if self.player1.up { 0x10000 } else { 0x8000 };
|
||||
let down = if self.player1.down { 0x10000 } else { 0x8000 };
|
||||
|
||||
self.frame.target_x = clamp(self.frame.target_x, self.player1.x - 0x8000, self.player1.x + 0x8000);
|
||||
self.frame.target_y = clamp(self.frame.target_y, self.player1.y - down, self.player1.y + up);
|
||||
self.frame.target_y = clamp(self.frame.target_y, self.player1.y, self.player1.y);
|
||||
} else {
|
||||
self.frame.target_x = self.player1.target_x;
|
||||
self.frame.target_y = self.player1.target_y;
|
||||
|
@ -1377,25 +1377,26 @@ impl Scene for GameScene {
|
|||
|
||||
if !self.player2.cond.hidden() {
|
||||
let y = interpolate_fix9_scale(self.player2.prev_y - self.frame.prev_y, self.player2.y - self.frame.y, state.frame_time);
|
||||
let y = clamp(y, 8.0, state.canvas_size.1 - 8.0 - state.font.line_height(&state.constants));
|
||||
|
||||
if self.player2.x + 8 * 0x200 < self.frame.x {
|
||||
state.font.draw_colored_text(P2_LEFT_TEXT.chars(),
|
||||
9.0, y + 1.0,
|
||||
(0, 0, 100), &state.constants, &mut state.texture_set, ctx)?;
|
||||
(0, 0, 130), &state.constants, &mut state.texture_set, ctx)?;
|
||||
|
||||
state.font.draw_colored_text(P2_LEFT_TEXT.chars(),
|
||||
8.0, y,
|
||||
(64, 64, 255), &state.constants, &mut state.texture_set, ctx)?;
|
||||
(96, 96, 255), &state.constants, &mut state.texture_set, ctx)?;
|
||||
} else if self.player2.x - 8 * 0x200 > self.frame.x + state.canvas_size.0 as isize * 0x200 {
|
||||
let width = state.font.text_width(P2_RIGHT_TEXT.chars(), &state.constants);
|
||||
|
||||
state.font.draw_colored_text(P2_RIGHT_TEXT.chars(),
|
||||
state.canvas_size.0 - width - 8.0 + 1.0, y + 1.0,
|
||||
(0, 0, 100), &state.constants, &mut state.texture_set, ctx)?;
|
||||
(0, 0, 130), &state.constants, &mut state.texture_set, ctx)?;
|
||||
|
||||
state.font.draw_colored_text(P2_RIGHT_TEXT.chars(),
|
||||
state.canvas_size.0 - width - 8.0, y,
|
||||
(64, 64, 255), &state.constants, &mut state.texture_set, ctx)?;
|
||||
(96, 96, 255), &state.constants, &mut state.texture_set, ctx)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue