120 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #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 "State_GameRun.h"
 | |
| #include "AdventuresInLestoria.h"
 | |
| #include "DEFINES.h"
 | |
| #include "Menu.h"
 | |
| #include "ItemDrop.h"
 | |
| #include "VisualNovel.h"
 | |
| #include "State_OverworldMap.h"
 | |
| 
 | |
| INCLUDE_MONSTER_LIST
 | |
| INCLUDE_game
 | |
| 
 | |
| void State_GameRun::OnStateChange(GameState*prevState){
 | |
| 	if(Menu::IsMenuOpen()){
 | |
| 		Menu::CloseAllMenus();
 | |
| 	}
 | |
| 	game->GetPlayer()->SetState(State::NORMAL);
 | |
| 	port=ViewPort::rectViewPort({0,0},{240,240},{24,24});
 | |
| 
 | |
| 	#pragma region Test Text Decal Creation
 | |
| 	if(r.Decal()==nullptr){
 | |
| 		r.Create(240,240);
 | |
| 		game->SetDrawTarget(r.Sprite());
 | |
| 		game->Clear(BLANK);
 | |
| 		game->DrawString({8,24*0},"#FF0000This is a #BFA6F9test of hex",WHITE,1,72);
 | |
| 		game->DrawString({8,24*1},"#00FF00This is a #E9A6F9test of hex",WHITE,1,72);
 | |
| 		game->DrawString({8,24*2},"#0000FFThis is a #F9E8A6test of hex",WHITE,1,72);
 | |
| 		game->DrawShadowString({8,24*3},"#FFFFFFThis is a #000066test of hex",WHITE,BLACK,{1,1},72);
 | |
| 		game->DrawShadowString({8,24*4},"#FF0000This is a #BFA6F9test of hex",WHITE,BLACK,{1,1},72);
 | |
| 		game->DrawShadowStringProp({8,24*5},"#00FF00This is a #E9A6F9test of hex",WHITE,BLACK,{1,1},72);
 | |
| 		game->DrawShadowStringProp({8,24*6},"#0000FFThis is a #F9E8A6test of hex",WHITE,BLACK,{1,1},72);
 | |
| 		game->SetDrawTarget(nullptr);
 | |
| 		r.Decal()->Update();
 | |
| 	}
 | |
| 	#pragma endregion
 | |
| 
 | |
| 	game->LoadLevel(State_OverworldMap::GetCurrentConnectionPoint().map);
 | |
| }
 | |
| void State_GameRun::OnUserUpdate(AiL*game){
 | |
| 	game->bossDisplayTimer=std::max(0.f,game->bossDisplayTimer-game->GetElapsedTime());
 | |
| 	if(game->encounterStarted&&game->totalBossEncounterMobs>0){
 | |
| 		game->encounterDuration+=game->GetElapsedTime();
 | |
| 	}
 | |
| 
 | |
| 	game->HandleUserInput(game->GetElapsedTime());
 | |
| 
 | |
| 	game->UpdateEffects(game->GetElapsedTime());
 | |
| 	game->GetPlayer()->Update(game->GetElapsedTime());
 | |
| 	for(Monster&m:MONSTER_LIST){
 | |
| 		m.Update(game->GetElapsedTime());
 | |
| 	}
 | |
| 	for(Monster&m:game->monstersToBeSpawned){
 | |
| 		MONSTER_LIST.push_back(m);
 | |
| 	}
 | |
| 	game->monstersToBeSpawned.clear();
 | |
| 
 | |
| 	ItemDrop::UpdateDrops(game->GetElapsedTime());
 | |
| 	game->UpdateBullets(game->GetElapsedTime());
 | |
| 	game->UpdateCamera(game->GetElapsedTime());
 | |
| }
 | |
| void State_GameRun::Draw(AiL*game){
 | |
| 	game->RenderHud();
 | |
| 	//FontTest(); //Enable to test font coloring.
 | |
| 	//FontSpriteTest(); //Enable to test font coloring.
 | |
| }
 | |
| 
 | |
| void State_GameRun::FontTest(){
 | |
| 	port.DrawStringDecal({8,24*0},"#FF0000This is a #BFA6F9test of hex",WHITE,{1,1},72);
 | |
| 	port.DrawStringDecal({8,24*1},"#00FF00This is a #E9A6F9test of hex",WHITE,{1,1},72);
 | |
| 	port.DrawStringDecal({8,24*2},"#0000FFThis is a #F9E8A6test of hex",WHITE,{1,1},72);
 | |
| 	port.DrawShadowStringDecal({8,24*3},"#FFFFFFThis is a #000066test of hex",WHITE,BLACK,{1,1},72);
 | |
| 	port.DrawShadowStringDecal({8,24*4},"#FF0000This is a #BFA6F9test of hex",WHITE,BLACK,{1,1},72);
 | |
| 	port.DrawShadowStringPropDecal({8,24*5},"#00FF00This is a #E9A6F9test of hex",WHITE,BLACK,{1,1},72);
 | |
| 	port.DrawShadowStringPropDecal({8,24*6},"#0000FFThis is a #F9E8A6test of hex",WHITE,BLACK,{1,1},72);
 | |
| 	port.DrawShadowStringDecal(VisualNovel::font,{8,24*7},U"#FFFFFFThis is a #000066test of hex",WHITE,BLACK,{1,1});
 | |
| 	port.DrawShadowStringDecal(VisualNovel::font,{8,24*8},U"#FF0000This is a #BFA6F9test of hex",WHITE,BLACK,{1,1});
 | |
| 	port.DrawShadowStringDecal(VisualNovel::font,{8,24*9},U"#00FF00This is a #E9A6F9test of hex",WHITE,BLACK,{1,1});
 | |
| 	port.DrawShadowStringDecal(VisualNovel::font,{8,24*10},U"#0000FFThis is a #F9E8A6test of hex",WHITE,BLACK,{1,1});
 | |
| 	port.drawEdges();
 | |
| }
 | |
| 
 | |
| void State_GameRun::FontSpriteTest(){
 | |
| 	game->DrawDecal({24,24},r.Decal());
 | |
| } |