parent
7cf2bb7c3a
commit
cb16ce831a
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 56 KiB |
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
@ -0,0 +1,96 @@ |
||||
#pragma region License |
||||
/*
|
||||
License (OLC-3) |
||||
~~~~~~~~~~~~~~~ |
||||
|
||||
Copyright 2024 Joshua Sigona <sigonasr2@gmail.com> |
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, |
||||
are permitted provided that the following conditions are met: |
||||
|
||||
1. Redistributions or derivations of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
|
||||
2. Redistributions or derivative works in binary form must reproduce the above |
||||
copyright notice. This list of conditions and the following disclaimer must be |
||||
reproduced in the documentation and/or other materials provided with the distribution. |
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors may |
||||
be used to endorse or promote products derived from this software without specific |
||||
prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY |
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT |
||||
SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED |
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
||||
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
||||
SUCH DAMAGE. |
||||
|
||||
Portions of this software are copyright © 2024 The FreeType |
||||
Project (www.freetype.org). Please see LICENSE_FT.txt for more information. |
||||
All rights reserved. |
||||
*/ |
||||
#pragma endregion |
||||
|
||||
#include "HamsterGame.h" |
||||
#include "Powerup.h" |
||||
|
||||
std::vector<Powerup>Powerup::powerupList; |
||||
std::unordered_map<int,std::pair<Powerup::PowerupType,Powerup::TileType>>Powerup::powerupIds; |
||||
const vf2d Powerup::POWERUP_TILESET_STARTING_POS{144.f,816.f}; |
||||
|
||||
Powerup::Powerup(const vf2d pos,const PowerupType type) |
||||
:pos(pos),type(type){} |
||||
void Powerup::Initialize(const std::vector<Powerup>&powerupList){ |
||||
Powerup::powerupList.clear(); |
||||
Powerup::powerupList=powerupList; |
||||
} |
||||
const vf2d&Powerup::GetPos()const{ |
||||
return pos;
|
||||
} |
||||
const Powerup::PowerupType&Powerup::GetType()const{ |
||||
return type; |
||||
} |
||||
const std::vector<Powerup>&Powerup::GetPowerups(){ |
||||
return powerupList; |
||||
} |
||||
|
||||
void Powerup::AddOrUpdatePowerupIdList(const int powerupId,const PowerupType powerupType){ |
||||
if(powerupIds.count(powerupId)){ |
||||
powerupIds[powerupId].first=powerupType; |
||||
}else{ |
||||
powerupIds[powerupId]={powerupType,TileType::DEFAULT}; |
||||
} |
||||
} |
||||
|
||||
void Powerup::AddOrUpdatePowerupIdList(const int powerupId,const TileType powerupTileType){ |
||||
if(powerupIds.count(powerupId)){ |
||||
powerupIds[powerupId].second=powerupTileType; |
||||
}else{ |
||||
powerupIds[powerupId]={PowerupType::WHEEL,powerupTileType}; |
||||
} |
||||
} |
||||
|
||||
const bool Powerup::TileIDIsPowerupTile(const int tileId){ |
||||
return powerupIds.count(tileId); |
||||
} |
||||
|
||||
|
||||
const bool Powerup::TileIDIsUpperLeftPowerupTile(const int tileId){ |
||||
return powerupIds.count(tileId)&&powerupIds[tileId].second==TileType::IS_UPPERLEFT_TILE; |
||||
} |
||||
|
||||
const Powerup::PowerupType Powerup::TileIDPowerupType(const int tileId){ |
||||
return powerupIds.at(tileId).first; |
||||
} |
||||
|
||||
void Powerup::DrawPowerups(TransformedView&tv){ |
||||
for(const Powerup&powerup:powerupList){ |
||||
geom2d::rect<float>spriteRect{POWERUP_TILESET_STARTING_POS+vf2d{int(powerup.GetType())*32.f,0.f},{32,32}}; |
||||
tv.DrawPartialRotatedDecal(powerup.GetPos(),HamsterGame::GetGFX("gametiles.png").Decal(),0.f,{16,16},spriteRect.pos,spriteRect.size); |
||||
} |
||||
} |
@ -0,0 +1,78 @@ |
||||
#pragma region License |
||||
/*
|
||||
License (OLC-3) |
||||
~~~~~~~~~~~~~~~ |
||||
|
||||
Copyright 2024 Joshua Sigona <sigonasr2@gmail.com> |
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, |
||||
are permitted provided that the following conditions are met: |
||||
|
||||
1. Redistributions or derivations of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
|
||||
2. Redistributions or derivative works in binary form must reproduce the above |
||||
copyright notice. This list of conditions and the following disclaimer must be |
||||
reproduced in the documentation and/or other materials provided with the distribution. |
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors may |
||||
be used to endorse or promote products derived from this software without specific |
||||
prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY |
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT |
||||
SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED |
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
||||
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
||||
SUCH DAMAGE. |
||||
|
||||
Portions of this software are copyright © 2024 The FreeType |
||||
Project (www.freetype.org). Please see LICENSE_FT.txt for more information. |
||||
All rights reserved. |
||||
*/ |
||||
#pragma endregion |
||||
#pragma once |
||||
#include <vector> |
||||
#include <unordered_map> |
||||
#include "olcUTIL_Geometry2D.h" |
||||
#include "olcPGEX_TransformedView.h" |
||||
|
||||
class Powerup{ |
||||
public: |
||||
enum PowerupType{ |
||||
WHEEL, |
||||
GRASS, |
||||
SAND, |
||||
SWAMP, |
||||
LAVA, |
||||
FOREST, |
||||
ICE, |
||||
JET, |
||||
}; |
||||
enum TileType{ |
||||
IS_UPPERLEFT_TILE=true, |
||||
DEFAULT=false, |
||||
}; |
||||
private: |
||||
static std::vector<Powerup>powerupList; |
||||
static std::unordered_map<int,std::pair<PowerupType,TileType>>powerupIds; |
||||
static const vf2d POWERUP_TILESET_STARTING_POS; |
||||
vf2d pos; |
||||
PowerupType type; |
||||
public: |
||||
Powerup(const vf2d pos,const PowerupType type); |
||||
static void Initialize(const std::vector<Powerup>&powerupList); |
||||
const vf2d&GetPos()const; |
||||
const PowerupType&GetType()const; |
||||
static const std::vector<Powerup>&GetPowerups(); |
||||
static void AddOrUpdatePowerupIdList(const int powerupId,const PowerupType powerupType); |
||||
static void AddOrUpdatePowerupIdList(const int powerupId,const TileType powerupTileType); |
||||
static const bool TileIDIsPowerupTile(const int tileId); |
||||
static const bool TileIDIsUpperLeftPowerupTile(const int tileId); |
||||
static const PowerupType TileIDPowerupType(const int tileId); |
||||
static void DrawPowerups(TransformedView&tv); |
||||
}; |
Loading…
Reference in new issue