mirror of
https://github.com/Noratrieb/game-wip-dontplay.git
synced 2026-01-17 04:45:02 +01:00
Fix screen offset calculation when drawing tiles
This commit is contained in:
parent
2a2c8f721c
commit
cc7a0d8b9b
2 changed files with 7 additions and 5 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
use sfml::graphics::{Rect, RenderTarget, RenderWindow, Sprite, Transformable};
|
use sfml::graphics::{Rect, RenderTarget, RenderWindow, Sprite, Transformable};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
graphics::{ScreenPos, NATIVE_RESOLUTION},
|
graphics::{ScreenPos, ScreenPosScalar, NATIVE_RESOLUTION},
|
||||||
math::{wp_to_tp, WorldPos, WorldPosScalar},
|
math::{wp_to_tp, WorldPos, WorldPosScalar},
|
||||||
res::Res,
|
res::Res,
|
||||||
world::{TilePos, World},
|
world::{TilePos, World},
|
||||||
|
|
@ -32,8 +32,8 @@ fn for_each_tile(camera_offset: WorldPos, mut f: impl FnMut(TilePos, ScreenPos))
|
||||||
y: wp_to_tp(camera_offset.y.saturating_add(y as WorldPosScalar)),
|
y: wp_to_tp(camera_offset.y.saturating_add(y as WorldPosScalar)),
|
||||||
},
|
},
|
||||||
ScreenPos {
|
ScreenPos {
|
||||||
x: ((x as WorldPosScalar).saturating_sub(camera_offset.x % 32)) as i16,
|
x: ((x as i64) - ((camera_offset.x as i64) % 32)) as ScreenPosScalar,
|
||||||
y: ((y as WorldPosScalar).saturating_sub(camera_offset.y % 32)) as i16,
|
y: ((y as i64) - ((camera_offset.y as i64) % 32)) as ScreenPosScalar,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,10 +22,12 @@ impl ScreenRes {
|
||||||
|
|
||||||
// We assume this game won't be played above 32767*32767 resolution
|
// We assume this game won't be played above 32767*32767 resolution
|
||||||
pub struct ScreenPos {
|
pub struct ScreenPos {
|
||||||
pub x: i16,
|
pub x: ScreenPosScalar,
|
||||||
pub y: i16,
|
pub y: ScreenPosScalar,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub type ScreenPosScalar = i16;
|
||||||
|
|
||||||
impl ScreenPos {
|
impl ScreenPos {
|
||||||
pub fn to_sf_vec(&self) -> Vector2f {
|
pub fn to_sf_vec(&self) -> Vector2f {
|
||||||
Vector2f::new(self.x.into(), self.y.into())
|
Vector2f::new(self.x.into(), self.y.into())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue