mirror of
https://github.com/Noratrieb/game-wip-dontplay.git
synced 2026-01-15 12:15:01 +01:00
Fix mouse position
This commit is contained in:
parent
c54af3ee67
commit
4fb622989b
1 changed files with 18 additions and 6 deletions
24
src/app.rs
24
src/app.rs
|
|
@ -8,13 +8,14 @@ use sfml::{
|
|||
graphics::{
|
||||
Color, Rect, RenderTarget, RenderTexture, RenderWindow, Sprite, Transformable, View,
|
||||
},
|
||||
system::Vector2u,
|
||||
window::{Event, Key},
|
||||
};
|
||||
|
||||
use crate::{
|
||||
debug::DebugState,
|
||||
game::{for_each_tile_on_screen, Biome, GameState},
|
||||
graphics::{self, ScreenPosScalar, NATIVE_RESOLUTION},
|
||||
graphics::{self, ScreenPos, ScreenPosScalar, NATIVE_RESOLUTION},
|
||||
input::Input,
|
||||
math::{center_offset, px_per_frame_to_km_h, WorldPos, M_PER_PX, TILE_SIZE},
|
||||
res::Res,
|
||||
|
|
@ -163,6 +164,9 @@ impl App {
|
|||
(y - NATIVE_RESOLUTION.h as i32 / 2).try_into().unwrap_or(0);
|
||||
}
|
||||
let mut loc = self.input.mouse_down_loc;
|
||||
let vco = viewport_center_offset(self.rw.size(), self.rt.size(), self.scale);
|
||||
loc.x -= vco.x;
|
||||
loc.y -= vco.y;
|
||||
loc.x /= self.scale as ScreenPosScalar;
|
||||
loc.y /= self.scale as ScreenPosScalar;
|
||||
let mut wpos = self.game.camera_offset;
|
||||
|
|
@ -243,11 +247,8 @@ impl App {
|
|||
self.rt.display();
|
||||
let mut spr = Sprite::with_texture(self.rt.texture());
|
||||
spr.set_scale((self.scale as f32, self.scale as f32));
|
||||
let rw_size = self.rw.size();
|
||||
let rt_size = self.rt.size() * self.scale as u32;
|
||||
let x = center_offset(rt_size.x as i32, rw_size.x as i32);
|
||||
let y = center_offset(rt_size.y as i32, rw_size.y as i32);
|
||||
spr.set_position((x as f32, y as f32));
|
||||
let vco = viewport_center_offset(self.rw.size(), self.rt.size(), self.scale);
|
||||
spr.set_position((vco.x as f32, vco.y as f32));
|
||||
self.rw.clear(Color::rgb(40, 10, 70));
|
||||
self.rw.draw(&spr);
|
||||
self.sf_egui
|
||||
|
|
@ -268,6 +269,17 @@ impl App {
|
|||
}
|
||||
}
|
||||
|
||||
fn viewport_center_offset(rw_size: Vector2u, rt_size: Vector2u, scale: u8) -> ScreenPos {
|
||||
let rw_size = rw_size;
|
||||
let rt_size = rt_size * scale as u32;
|
||||
let x = center_offset(rt_size.x as i32, rw_size.x as i32);
|
||||
let y = center_offset(rt_size.y as i32, rw_size.y as i32);
|
||||
ScreenPos {
|
||||
x: x as ScreenPosScalar,
|
||||
y: y as ScreenPosScalar,
|
||||
}
|
||||
}
|
||||
|
||||
fn debug_panel_ui(
|
||||
debug: &mut DebugState,
|
||||
game: &mut GameState,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue