parent
b8da4fbbbe
commit
934019e84e
@ -0,0 +1,99 @@ |
|||||||
|
#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 © 2023 The FreeType |
||||||
|
Project (www.freetype.org). Please see LICENSE_FT.txt for more information. |
||||||
|
All rights reserved. |
||||||
|
*/ |
||||||
|
#pragma endregion |
||||||
|
|
||||||
|
#include "DynamicCounter.h" |
||||||
|
#include "AdventuresInLestoria.h" |
||||||
|
#include "DEFINES.h" |
||||||
|
|
||||||
|
INCLUDE_game |
||||||
|
|
||||||
|
DynamicCounter::DynamicCounter(){} |
||||||
|
|
||||||
|
void DynamicCounter::Initialize(const int*number,float tickRate,Pixel originalCol,Pixel increaseCol,Pixel decreaseCol,float colorChangeTime){ |
||||||
|
this->targetNumber=number; |
||||||
|
this->tickRate=tickRate; |
||||||
|
this->originalCol=originalCol; |
||||||
|
this->increaseCol=increaseCol; |
||||||
|
this->decreaseCol=decreaseCol; |
||||||
|
this->colorChangeTime=colorChangeTime; |
||||||
|
} |
||||||
|
|
||||||
|
void DynamicCounter::Update(){ |
||||||
|
if(targetNumber==nullptr)ERR("WARNING! This dynamic counter has not been properly initialized! Call Initialize() first!"); |
||||||
|
targetChangedTimer=std::max(0.f,targetChangedTimer-game->GetElapsedTime()); |
||||||
|
|
||||||
|
bool targetNumberChanged=*targetNumber!=lastTargetNumber; |
||||||
|
|
||||||
|
tickTimer+=game->GetElapsedTime(); |
||||||
|
while(tickTimer>tickRate){ |
||||||
|
tickTimer-=tickRate; |
||||||
|
if(displayNumber!=int(*targetNumber)){ |
||||||
|
if(displayNumber>int(*targetNumber)){ |
||||||
|
displayNumber--; |
||||||
|
|
||||||
|
if(targetNumberChanged){ |
||||||
|
adjustedCol=decreaseCol; |
||||||
|
targetChangedTimer=colorChangeTime; |
||||||
|
} |
||||||
|
}else{ |
||||||
|
displayNumber++; |
||||||
|
|
||||||
|
if(targetNumberChanged){ |
||||||
|
adjustedCol=increaseCol; |
||||||
|
targetChangedTimer=colorChangeTime; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
lastTargetNumber=int(*targetNumber); |
||||||
|
|
||||||
|
displayCol=PixelLerp(adjustedCol,originalCol,1-(targetChangedTimer/colorChangeTime)); |
||||||
|
} |
||||||
|
|
||||||
|
const int&DynamicCounter::GetDisplayValue()const{ |
||||||
|
return displayNumber; |
||||||
|
} |
||||||
|
|
||||||
|
const Pixel&DynamicCounter::GetDisplayColor()const{ |
||||||
|
return displayCol; |
||||||
|
} |
||||||
|
|
||||||
|
void DynamicCounter::UpdateNumberPointer(const int*newPtr){ |
||||||
|
targetNumber=newPtr; |
||||||
|
} |
@ -0,0 +1,63 @@ |
|||||||
|
#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 © 2023 The FreeType |
||||||
|
Project (www.freetype.org). Please see LICENSE_FT.txt for more information. |
||||||
|
All rights reserved. |
||||||
|
*/ |
||||||
|
#pragma endregion |
||||||
|
#pragma once |
||||||
|
|
||||||
|
#include "olcPixelGameEngine.h" |
||||||
|
|
||||||
|
class DynamicCounter{ |
||||||
|
public: |
||||||
|
DynamicCounter(); |
||||||
|
void Initialize(const int*number,float tickRate=0.01f,Pixel originalCol=WHITE,Pixel increaseCol=WHITE,Pixel decreaseCol=WHITE,float colorChangeTime=0.4f); |
||||||
|
void Update(); |
||||||
|
const int&GetDisplayValue()const; |
||||||
|
const Pixel&GetDisplayColor()const; |
||||||
|
void UpdateNumberPointer(const int*newPtr); |
||||||
|
private: |
||||||
|
int displayNumber; |
||||||
|
const int*targetNumber=nullptr; |
||||||
|
int lastTargetNumber; |
||||||
|
float targetChangedTimer; |
||||||
|
float colorChangeTime; |
||||||
|
float tickRate; |
||||||
|
float tickTimer; |
||||||
|
Pixel originalCol; |
||||||
|
Pixel displayCol; |
||||||
|
Pixel adjustedCol; |
||||||
|
Pixel increaseCol; |
||||||
|
Pixel decreaseCol; |
||||||
|
}; |
Binary file not shown.
Loading…
Reference in new issue