mirror of
https://github.com/sigonasr2/hamster.git
synced 2025-04-18 14:39:40 -05:00
Scale correction on right edge of camera.
This commit is contained in:
parent
f47d49417b
commit
66622c84f7
2
.gitignore
vendored
2
.gitignore
vendored
@ -16,3 +16,5 @@ vs-build
|
|||||||
/bin/hamster.pdb
|
/bin/hamster.pdb
|
||||||
/hamster.exe
|
/hamster.exe
|
||||||
/.vs/cmake.db
|
/.vs/cmake.db
|
||||||
|
/hamster.dir/Release
|
||||||
|
/x64/Release
|
||||||
|
1010
assets/TestLevel.tmx
1010
assets/TestLevel.tmx
File diff suppressed because it is too large
Load Diff
@ -4,4 +4,8 @@
|
|||||||
<LocalDebuggerWorkingDirectory>C:/Users/sigon/source/repos/hamster</LocalDebuggerWorkingDirectory>
|
<LocalDebuggerWorkingDirectory>C:/Users/sigon/source/repos/hamster</LocalDebuggerWorkingDirectory>
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LocalDebuggerWorkingDirectory>C:/Users/sigon/source/repos/hamster</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
@ -176,6 +176,12 @@ void Hamster::HandlePlayerControls(){
|
|||||||
if(HamsterGame::Game().GetKey(A).bHeld){
|
if(HamsterGame::Game().GetKey(A).bHeld){
|
||||||
aimingDir+=vf2d{-1,0};
|
aimingDir+=vf2d{-1,0};
|
||||||
}
|
}
|
||||||
|
if(HamsterGame::Game().GetKey(PGUP).bHeld){
|
||||||
|
z+=HamsterGame::Game().GetElapsedTime();
|
||||||
|
}
|
||||||
|
if(HamsterGame::Game().GetKey(PGDN).bHeld){
|
||||||
|
z=std::max(0.f,z-HamsterGame::Game().GetElapsedTime());
|
||||||
|
}
|
||||||
if(aimingDir!=vf2d{}){
|
if(aimingDir!=vf2d{}){
|
||||||
targetRot=aimingDir.norm().polar().y;
|
targetRot=aimingDir.norm().polar().y;
|
||||||
const vf2d currentVel{vel};
|
const vf2d currentVel{vel};
|
||||||
@ -322,3 +328,7 @@ const float Hamster::GetDrownRatio()const{
|
|||||||
const float Hamster::GetBurnRatio()const{
|
const float Hamster::GetBurnRatio()const{
|
||||||
return burnTimer/DEFAULT_BURN_TIME;
|
return burnTimer/DEFAULT_BURN_TIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const float&Hamster::GetZ()const{
|
||||||
|
return z;
|
||||||
|
}
|
@ -77,6 +77,7 @@ class Hamster{
|
|||||||
vf2d pos;
|
vf2d pos;
|
||||||
vf2d vel;
|
vf2d vel;
|
||||||
vf2d lastSafeLocation{};
|
vf2d lastSafeLocation{};
|
||||||
|
float z;
|
||||||
float lastSafeLocationTimer{};
|
float lastSafeLocationTimer{};
|
||||||
float rot{};
|
float rot{};
|
||||||
float targetRot{};
|
float targetRot{};
|
||||||
@ -104,6 +105,7 @@ public:
|
|||||||
static void DrawHamsters(TransformedView&tv);
|
static void DrawHamsters(TransformedView&tv);
|
||||||
const Animate2D::Frame&GetCurrentAnimation()const;
|
const Animate2D::Frame&GetCurrentAnimation()const;
|
||||||
const vf2d&GetPos()const;
|
const vf2d&GetPos()const;
|
||||||
|
const float&GetZ()const;
|
||||||
void HandlePlayerControls();
|
void HandlePlayerControls();
|
||||||
void TurnTowardsTargetDirection();
|
void TurnTowardsTargetDirection();
|
||||||
void MoveHamster();
|
void MoveHamster();
|
||||||
|
@ -19,7 +19,6 @@ bool HamsterGame::OnUserCreate(){
|
|||||||
camera=Camera2D{SCREEN_FRAME.size};
|
camera=Camera2D{SCREEN_FRAME.size};
|
||||||
camera.SetMode(Camera2D::Mode::LazyFollow);
|
camera.SetMode(Camera2D::Mode::LazyFollow);
|
||||||
tv.Initialise(SCREEN_FRAME.size,{1,1});
|
tv.Initialise(SCREEN_FRAME.size,{1,1});
|
||||||
tv.SetWorldOffset(-SCREEN_FRAME.pos);
|
|
||||||
LoadGraphics();
|
LoadGraphics();
|
||||||
LoadAnimations();
|
LoadAnimations();
|
||||||
currentTileset=TSXParser{ASSETS_DIR+std::string("Terrain.tsx")};
|
currentTileset=TSXParser{ASSETS_DIR+std::string("Terrain.tsx")};
|
||||||
@ -96,8 +95,14 @@ void HamsterGame::LoadLevel(const std::string_view mapName){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void HamsterGame::UpdateGame(const float fElapsedTime){
|
void HamsterGame::UpdateGame(const float fElapsedTime){
|
||||||
|
/*if(Hamster::GetPlayer().GetZ()>1.f){
|
||||||
|
tv.SetZoom(1.f/sqrt(Hamster::GetPlayer().GetZ()),tv.WorldToScreen(Hamster::GetPlayer().GetPos())-SCREEN_FRAME.pos);
|
||||||
|
}else{
|
||||||
|
tv.SetZoom(1.f,tv.WorldToScreen(Hamster::GetPlayer().GetPos())-SCREEN_FRAME.pos);
|
||||||
|
}*/
|
||||||
camera.Update(fElapsedTime);
|
camera.Update(fElapsedTime);
|
||||||
tv.SetWorldOffset(-SCREEN_FRAME.pos+camera.GetViewPosition());
|
tv.HandlePanAndZoom();
|
||||||
|
//std::cout<<tv.GetWorldScale().str()<<std::endl;
|
||||||
Hamster::UpdateHamsters(fElapsedTime);
|
Hamster::UpdateHamsters(fElapsedTime);
|
||||||
Powerup::UpdatePowerups(fElapsedTime);
|
Powerup::UpdatePowerups(fElapsedTime);
|
||||||
border.Update(fElapsedTime);
|
border.Update(fElapsedTime);
|
||||||
@ -156,9 +161,13 @@ const Terrain::TerrainType HamsterGame::GetTerrainTypeAtPos(const vf2d pos)const
|
|||||||
}
|
}
|
||||||
|
|
||||||
void HamsterGame::DrawLevelTiles(){
|
void HamsterGame::DrawLevelTiles(){
|
||||||
|
float extendedBounds{SCREEN_FRAME.pos.x};
|
||||||
|
extendedBounds*=1/tv.GetWorldScale().x;
|
||||||
|
std::cout<<tv.GetWorldTL().str()<<std::endl;
|
||||||
|
std::cout<<tv.GetWorldBR().str()<<std::endl;
|
||||||
for(const LayerTag&layer:currentMap.value().GetData().GetLayers()){
|
for(const LayerTag&layer:currentMap.value().GetData().GetLayers()){
|
||||||
for(float y=tv.GetWorldTL().y-16;y<=tv.GetWorldBR().y+16;y+=16){
|
for(float y=tv.GetWorldTL().y-16;y<=tv.GetWorldBR().y+16;y+=16){
|
||||||
for(float x=tv.GetWorldTL().x-1+SCREEN_FRAME.pos.x;x<=tv.GetWorldBR().x+16+SCREEN_FRAME.pos.x;x+=16){
|
for(float x=tv.GetWorldTL().x-1+extendedBounds;x<=tv.GetWorldBR().x+16+extendedBounds;x+=16){
|
||||||
if(x<=0.f||y<=0.f||x>=currentMap.value().GetData().GetMapData().width*16||y>=currentMap.value().GetData().GetMapData().height*16)continue;
|
if(x<=0.f||y<=0.f||x>=currentMap.value().GetData().GetMapData().width*16||y>=currentMap.value().GetData().GetMapData().height*16)continue;
|
||||||
const int numTilesWide{GetGFX("gametiles.png").Sprite()->width/16};
|
const int numTilesWide{GetGFX("gametiles.png").Sprite()->width/16};
|
||||||
const int numTilesTall{GetGFX("gametiles.png").Sprite()->height/16};
|
const int numTilesTall{GetGFX("gametiles.png").Sprite()->height/16};
|
||||||
|
@ -135,6 +135,10 @@ namespace olc::utils
|
|||||||
m_vWorldBoundarySize = vSize;
|
m_vWorldBoundarySize = vSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void SetViewSize(const olc::vf2d&vSize){
|
||||||
|
m_vViewSize = vSize;
|
||||||
|
}
|
||||||
|
|
||||||
// Instruct camera to respect world boundaries
|
// Instruct camera to respect world boundaries
|
||||||
inline void EnableWorldBoundary(const bool bEnable)
|
inline void EnableWorldBoundary(const bool bEnable)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user