From a4439afc3f5e7bc9943d0386c27f3568051fcfe8 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Sun, 3 Sep 2023 14:16:01 -0500 Subject: [PATCH] Virus Attack finalizing --- .gitignore | 5 + olcCodeJam2023Entry/Scenario.cpp | 64 ++++++- olcCodeJam2023Entry/Scenario.h | 1 + olcCodeJam2023Entry/VirusAttack.cpp | 251 ++++++++++++++++++++++------ olcCodeJam2023Entry/VirusAttack.h | 4 +- olcCodeJam2023Entry/pge.data | Bin 24783488 -> 25144975 bytes olcCodeJam2023Entry/pge.js | 2 +- olcCodeJam2023Entry/pge.wasm | Bin 1077820 -> 1134759 bytes 8 files changed, 270 insertions(+), 57 deletions(-) diff --git a/.gitignore b/.gitignore index 386b082..4b462ae 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,9 @@ *.sln.docstates *.wav +Windows +Emscripten + # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs @@ -363,3 +366,5 @@ MigrationBackup/ # Fody - auto-generated XML schema FodyWeavers.xsd *.mp3 +*.zip +/olcCodeJam2023Entry/VirusAttack.exe diff --git a/olcCodeJam2023Entry/Scenario.cpp b/olcCodeJam2023Entry/Scenario.cpp index 293a015..41a10c5 100644 --- a/olcCodeJam2023Entry/Scenario.cpp +++ b/olcCodeJam2023Entry/Scenario.cpp @@ -44,14 +44,22 @@ void Scenario::RunAI(Resources&enemy_resources,std::vectorGetElapsedTime()); unitBuildTimer=std::max(0.f,unitBuildTimer-game.GetPGE()->GetElapsedTime()); std::weak_ptrbaseOfOperations; + std::weak_ptrenemyBaseOfOperations; for(auto&u:units){ if(!u->IsFriendly()&&u->IsRAMBank()){ baseOfOperations=u; break; } } + for(auto&u:units){ + if(u->IsFriendly()&&u->IsRAMBank()){ + enemyBaseOfOperations=u; + break; + } + } if(baseOfOperations.expired()){ for(auto&u:units){ if(!u->IsFriendly()){ @@ -93,7 +101,7 @@ void Scenario::RunAI(Resources&enemy_resources,std::vectorIsRAMBank()){ + if(!u->IsFriendly()&&u->IsRAMBank()){ AttemptBuild(UnitType::MemoryAllocator,u->GetPos(),MemoryAllocator::resourceCost,enemy_resources,availableMemory,queuedUnits); } } @@ -148,6 +156,35 @@ void Scenario::RunAI(Resources&enemy_resources,std::vectorIsFriendly()&&rand()%3==0){ + if(u->CanInteractWithEnemies()&&!u->IsAllocator()&&u->CanMove()){ + u->SetTargetUnit(enemyBaseOfOperations); + } + } + } + for(auto&u:units){ + if(!u->IsFriendly()&&u->GetCurrentTarget().expired()&&u->CanInteractWithAllies()){ + if(rand()%5==0){ + u->SetTargetLocation(enemyBaseOfOperations.lock()->GetPos()); + } + } + } + } + switch(flags.difficulty){ + case 0:{ + attackTimer=999; + }break; + case 1:{ + attackTimer=300; + }break; + case 2:{ + attackTimer=120; + }break; + } + } } /* std::shared_ptrbuildUnit=std::make_shared(this,u->GetPos(),IMAGES,u->IsFriendly()); \ @@ -673,9 +710,14 @@ void Stage6::Start(){ }; void Stage6::Update(){ switch(state){ - case 0:{ - - }break; + case 0:{ + flags.playerInControl=false; + DisplayBox("..."); + if(box.bPressed){ + flags.playerInControl=true; + box.SetVisible(false); + } + }break; } }; bool Stage6::MissionCompleted(){ @@ -697,8 +739,20 @@ void Stage7::Start(){ void Stage7::Update(){ switch(state){ case 0:{ - + flags.playerInControl=false; + DisplayBox("I see you have a few new tricks up your sleeve, Hacker."); + if(box.bPressed){ + state=1; + } }break; + case 1:{ + DisplayBox("Don't think it'll be that easy to get through this one..."); + if(box.bPressed){ + state=2; + flags.playerInControl=true; + box.SetVisible(false); + } + }break; } }; bool Stage7::MissionCompleted(){ diff --git a/olcCodeJam2023Entry/Scenario.h b/olcCodeJam2023Entry/Scenario.h index 5758787..989646e 100644 --- a/olcCodeJam2023Entry/Scenario.h +++ b/olcCodeJam2023Entry/Scenario.h @@ -19,6 +19,7 @@ public: LevelName nextLevel=LevelName::STAGE1; void RunAI(Resources&enemy_resources,std::vector>&collectionPoints,int availableMemory,std::vector>&queuedUnits,std::vector>&SOUNDS); bool setupEasyMode=false; + float attackTimer=120; std::mapcpCheckTimer; bool AttemptBuild(UnitType unit,vf2d pos,std::vector&resourceCost,Resources&enemy_resources,int availableMemory,std::vector>&queuedUnits); protected: diff --git a/olcCodeJam2023Entry/VirusAttack.cpp b/olcCodeJam2023Entry/VirusAttack.cpp index 741a5cb..34e3a70 100644 --- a/olcCodeJam2023Entry/VirusAttack.cpp +++ b/olcCodeJam2023Entry/VirusAttack.cpp @@ -338,49 +338,184 @@ void VirusAttack::InitializeLevelData(){ positions.erase(positions.begin()+randomIndex); types.erase(types.begin()+randomIndex2); } - collectionPoints.push_back(CPData{{8*24,1*24},0,MemoryType::HEALTH}); - collectionPoints.push_back(CPData{{10*24,1*24},0,MemoryType::HEALTH}); - collectionPoints.push_back(CPData{{32*24,12*24},0,MemoryType::HEALTH}); - collectionPoints.push_back(CPData{{20*24,32*24},0,MemoryType::HEALTH}); - collectionPoints.push_back(CPData{{9*24,1*24},0,MemoryType::PROCEDURE}); - collectionPoints.push_back(CPData{{1*24,7*24},-PI/2,MemoryType::PROCEDURE}); - collectionPoints.push_back(CPData{{16*24,16*24},0,MemoryType::PROCEDURE}); - collectionPoints.push_back(CPData{{36*24,1*24},-PI/2,MemoryType::PROCEDURE}); - collectionPoints.push_back(CPData{{1*24,3*24},-PI/2,MemoryType::RANGE}); - collectionPoints.push_back(CPData{{1*24,6*24},-PI/2,MemoryType::ATKSPD}); - collectionPoints.push_back(CPData{{1*24,11*24},-PI/2,MemoryType::MOVESPD}); - collectionPoints.push_back(CPData{{1*24,22*24},-PI/2,MemoryType::RANGE}); - collectionPoints.push_back(CPData{{6*24,16*24},-PI/2,MemoryType::ATKSPD}); - collectionPoints.push_back(CPData{{1*24,32*24},-PI/2,MemoryType::MOVESPD}); - collectionPoints.push_back(CPData{{(48-1)*24,(48-4)*24},PI/2,MemoryType::RANGE}); - collectionPoints.push_back(CPData{{(48-1)*24,(48-7)*24},PI/2,MemoryType::ATKSPD}); - collectionPoints.push_back(CPData{{(48-1)*24,(48-12)*24},PI/2,MemoryType::MOVESPD}); - collectionPoints.push_back(CPData{{(48-1)*24,(48-23)*24},PI/2,MemoryType::RANGE}); - collectionPoints.push_back(CPData{{(48-6)*24,(48-17)*24},PI/2,MemoryType::ATKSPD}); - collectionPoints.push_back(CPData{{(48-1)*24,(48-33)*24},PI/2,MemoryType::MOVESPD}); - - collectionPoints.push_back(CPData{{(48-8)*24,(48-2)*24},PI,MemoryType::HEALTH}); - collectionPoints.push_back(CPData{{(48-10)*24,(48-2)*24},PI,MemoryType::HEALTH}); - collectionPoints.push_back(CPData{{(48-32)*24,(48-13)*24},PI,MemoryType::HEALTH}); - collectionPoints.push_back(CPData{{(48-20)*24,(48-33)*24},PI,MemoryType::HEALTH}); - collectionPoints.push_back(CPData{{(48-9)*24,(48-2)*24},PI,MemoryType::PROCEDURE}); - collectionPoints.push_back(CPData{{(48-1)*24,(48-8)*24},PI/2,MemoryType::PROCEDURE}); - collectionPoints.push_back(CPData{{(48-16)*24,(48-17)*24},PI,MemoryType::PROCEDURE}); - collectionPoints.push_back(CPData{{(48-36)*24,(48-2)*24},PI/2,MemoryType::PROCEDURE}); for(int i=0;i<5;i++){ units.push_back({UnitType::MemoryAllocator,vf2d{44*24,44*24},false}); } - units.push_back({UnitType::Turret,vf2d{42*24,42*24},false}); - units.push_back({UnitType::LeftShifter,vf2d{42*24,44*24},false}); - units.push_back({UnitType::LeftShifter,vf2d{42*24,44*24},false}); - units.push_back({UnitType::Corrupter,vf2d{42*24,44*24},false}); - units.push_back({UnitType::RightShifter,vf2d{42*24,44*24},false}); - units.push_back({UnitType::RightShifter,vf2d{45*24,41*24},false}); - units.push_back({UnitType::RAMBank,vf2d{44*24,44*24},false}); + units.push_back({UnitType::Refresher,vf2d{2*24,42*24},false}); + units.push_back({UnitType::MemoryGuard,vf2d{7*24,44*24},false}); + units.push_back({UnitType::LeftShifter,vf2d{2*24,44*24},false}); + units.push_back({UnitType::LeftShifter,vf2d{2*24,44*24},false}); + units.push_back({UnitType::Corrupter,vf2d{2*24,44*24},false}); + units.push_back({UnitType::RightShifter,vf2d{2*24,44*24},false}); + units.push_back({UnitType::RightShifter,vf2d{5*24,41*24},false}); + units.push_back({UnitType::RAMBank,vf2d{4*24,44*24},false}); + } + } +#pragma endregion + +#pragma region Stage 7 +{ + //Stage 7 data. + LevelName stage=STAGE7; + levelData[stage].name=stage; + levelData[stage].cameraStart={96,96}; + levelData[stage].worldZoom={1,1}; + levelData[stage].size={64,64}; + levelData[stage].levelColor=DARK_RED; + levelData[stage].bgm=Sound::BOSS2; + levelData[stage].scenarioIndex=int(stage); + levelData[stage].availableMemory=960; + levelData[stage].player_starting_resources={5,5,5,5,5}; + levelData[stage].enemy_starting_resources={5,5,5,5,5}; + { + std::vector&units=levelData[stage].unitPlacement; + std::vector&collectionPoints=levelData[stage].cpPlacement; + + units.push_back({UnitType::RAMBank,vf2d{4*24,4*24},true}); + for(int i=0;i<5;i++){ + units.push_back({UnitType::MemoryAllocator,vf2d{4*24,6*24},true}); + } + + std::vectorpositions={ + {{8,1},{10,1},{32,12},{20,32},{9,1},{1,7},{16,16} + ,{36,1},{1,3},{1,6},{1,11},{1,22},{6,16},{1,32} + ,{14,16},{27,29},{14,12},{7,36},{16,30},{22,19},{39,40}} + }; + std::vectortypes={ + {MemoryType::HEALTH,MemoryType::HEALTH,MemoryType::HEALTH,MemoryType::HEALTH,MemoryType::PROCEDURE, + MemoryType::PROCEDURE,MemoryType::PROCEDURE,MemoryType::PROCEDURE,MemoryType::RANGE, + MemoryType::ATKSPD,MemoryType::MOVESPD,MemoryType::RANGE,MemoryType::ATKSPD,MemoryType::MOVESPD, + MemoryType::HEALTH,MemoryType::HEALTH,MemoryType::PROCEDURE, + MemoryType::PROCEDURE,MemoryType::ATKSPD,MemoryType::MOVESPD,MemoryType::RANGE,} + }; + if(positions.size()!=types.size()){ + throw; + } + while(positions.size()>0){ + int randomIndex=rand()%positions.size(); + int randomIndex2=rand()%types.size(); + float finalDir=0; + if(positions[randomIndex].xpositions[randomIndex].x){ + finalDir=PI; + }else{ + finalDir=PI/2; + } } + collectionPoints.push_back(CPData{positions[randomIndex]*24,finalDir,types[randomIndex2]}); + collectionPoints.push_back(CPData{(levelData[stage].size-positions[randomIndex]-vf2d{1,1})*24,float(finalDir+PI),types[randomIndex2]}); + positions.erase(positions.begin()+randomIndex); + types.erase(types.begin()+randomIndex2); + } + + units.push_back({UnitType::Turret,vf2d{52*24,52*24},false}); + units.push_back({UnitType::LeftShifter,vf2d{52*24,54*24},false}); + units.push_back({UnitType::LeftShifter,vf2d{52*24,54*24},false}); + units.push_back({UnitType::Corrupter,vf2d{52*24,54*24},false}); + units.push_back({UnitType::RightShifter,vf2d{52*24,54*24},false}); + units.push_back({UnitType::RightShifter,vf2d{55*24,51*24},false}); + units.push_back({UnitType::RAMBank,vf2d{54*24,54*24},false}); + units.push_back({UnitType::RAMBank,vf2d{54*24,54*24},false}); + + for(int i=0;i<5;i++){ + units.push_back({UnitType::MemoryAllocator,vf2d{54*24,54*24},false}); + } + + units.push_back({UnitType::Turret,vf2d{53*24,22*24},false}); + units.push_back({UnitType::RAMBank,vf2d{54*24,24*24},false}); + for(int i=0;i<2;i++){ + units.push_back({UnitType::MemoryAllocator,vf2d{54*24,25*24},false}); + } + units.push_back({UnitType::RightShifter,vf2d{53*24,24*24},false}); + units.push_back({UnitType::BitRestorer,vf2d{54*24,25*24},false}); + units.push_back({UnitType::RightShifter,vf2d{54*24,26*24},false}); + } } #pragma endregion + + +#pragma region Stage 8 +{ + //Stage 8 data. + LevelName stage=STAGE8; + levelData[stage].name=stage; + levelData[stage].cameraStart={96,96}; + levelData[stage].worldZoom={1,1}; + levelData[stage].size={64,64}; + levelData[stage].levelColor=DARK_RED; + levelData[stage].bgm=Sound::BOSS2; + levelData[stage].scenarioIndex=int(stage); + levelData[stage].availableMemory=1280; + levelData[stage].player_starting_resources={5,5,5,5,5}; + levelData[stage].enemy_starting_resources={5,5,5,5,5}; + { + std::vector&units=levelData[stage].unitPlacement; + std::vector&collectionPoints=levelData[stage].cpPlacement; + + units.push_back({UnitType::RAMBank,vf2d{4*24,4*24},true}); + for(int i=0;i<5;i++){ + units.push_back({UnitType::MemoryAllocator,vf2d{4*24,6*24},true}); + } + + std::vectorpositions={ + {{8,1},{10,1},{32,12},{20,32},{9,1},{1,7},{16,16} + ,{36,1},{1,3},{1,6},{1,11},{1,22},{6,16},{1,32} + ,{14,16},{27,29},{14,12},{7,36},{16,30},{22,19},{39,40}} + }; + std::vectortypes={ + {MemoryType::HEALTH,MemoryType::HEALTH,MemoryType::HEALTH,MemoryType::HEALTH,MemoryType::PROCEDURE, + MemoryType::PROCEDURE,MemoryType::PROCEDURE,MemoryType::PROCEDURE,MemoryType::RANGE, + MemoryType::ATKSPD,MemoryType::MOVESPD,MemoryType::RANGE,MemoryType::ATKSPD,MemoryType::MOVESPD, + MemoryType::HEALTH,MemoryType::HEALTH,MemoryType::PROCEDURE, + MemoryType::PROCEDURE,MemoryType::ATKSPD,MemoryType::MOVESPD,MemoryType::RANGE,} + }; + if(positions.size()!=types.size()){ + throw; + } + while(positions.size()>0){ + int randomIndex=rand()%positions.size(); + int randomIndex2=rand()%types.size(); + float finalDir=0; + if(positions[randomIndex].xpositions[randomIndex].x){ + finalDir=PI; + }else{ + finalDir=PI/2; + } + } + collectionPoints.push_back(CPData{positions[randomIndex]*24,finalDir,types[randomIndex2]}); + collectionPoints.push_back(CPData{(levelData[stage].size-positions[randomIndex]-vf2d{1,1})*24,float(finalDir+PI),types[randomIndex2]}); + positions.erase(positions.begin()+randomIndex); + types.erase(types.begin()+randomIndex2); + } + + units.push_back({UnitType::Refresher,vf2d{52*24,52*24},false}); + units.push_back({UnitType::RAMBank,vf2d{54*24,54*24},false}); + + + for(int i=0;i<5;i++){ + units.push_back({UnitType::MemoryAllocator,vf2d{54*24,54*24},false}); + } + + units.push_back({UnitType::RAMBank,vf2d{40*24,36*24},false}); + + units.push_back({UnitType::RAMBank,vf2d{10*24,54*24},false}); + } +} +#pragma endregion } bool VirusAttack::OnUserCreate(){ @@ -401,6 +536,8 @@ bool VirusAttack::OnUserCreate(){ memoryAllocatorBox.SetVisible(false); platformCreationBox.SetVisible(false); restartBox.SetVisible(false); + completedBox.SetVisible(false); + creditsBox.SetVisible(false); attackingLineModified.Create(IMAGES[ATTACKING_LINE]->Sprite()->width,IMAGES[ATTACKING_LINE]->Sprite()->height,false,false); @@ -411,8 +548,8 @@ bool VirusAttack::OnUserCreate(){ InitializeScenarios(); InitializeLevelData(); - LoadLevel(STAGE5); - levelToLoad=STAGE5; + LoadLevel(STAGE1); + levelToLoad=STAGE1; return true; } @@ -505,10 +642,10 @@ void VirusAttack::InitializeGUIs(){ unitCreationList.DisplayAllControls(false); platformCreationList.DisplayAllControls(false); - campaignStartButton=new QuickGUI::TransparentButton(mainMenu,"Start Campaign",{float(ScreenWidth()/2)-120.f,80+47.5f*0+10},{240,24},CONSTANT::INCREASE_VALUE_COLOR); - audioToggleButton=new QuickGUI::TransparentButton(mainMenu,"Audio: On",{float(ScreenWidth()/2)-120.f,80+47.5f*1+10},{240,24},CONSTANT::INCREASE_VALUE_COLOR); - difficultyToggleButton=new QuickGUI::TransparentButton(mainMenu,"Difficulty: Normal",{float(ScreenWidth()/2)-120.f,80+47.5f*2+10},{240,24},CONSTANT::INCREASE_VALUE_COLOR); - creditsButton=new QuickGUI::TransparentButton(mainMenu,"Credits",{float(ScreenWidth()/2)-120.f,80+47.5f*3+10},{240,24},CONSTANT::INCREASE_VALUE_COLOR); + campaignStartButton=new QuickGUI::TransparentButton(mainMenu,"Start Campaign",{float(ScreenWidth()/2)-120.f,80+47.5f*1+10},{240,24},CONSTANT::INCREASE_VALUE_COLOR); + audioToggleButton=new QuickGUI::TransparentButton(mainMenu,"Audio: On",{float(ScreenWidth()/2)-120.f,80+47.5f*2+10},{240,24},CONSTANT::INCREASE_VALUE_COLOR); + difficultyToggleButton=new QuickGUI::TransparentButton(mainMenu,"Difficulty: Normal",{float(ScreenWidth()/2)-120.f,80+47.5f*3+10},{240,24},CONSTANT::INCREASE_VALUE_COLOR); + //creditsButton=new QuickGUI::TransparentButton(mainMenu,"Credits",{float(ScreenWidth()/2)-120.f,80+47.5f*3+10},{240,24},CONSTANT::INCREASE_VALUE_COLOR); exitGameButton=new QuickGUI::TransparentButton(mainMenu,"Exit Game",{float(ScreenWidth()/2)-120.f,80+47.5f*4+10},{240,24},CONSTANT::INCREASE_VALUE_COLOR); } @@ -946,9 +1083,11 @@ void VirusAttack::RenderCollectionPoints(CollectionPoint*cp){ bool VirusAttack::OnUserUpdate(float fElapsedTime){ UpdateMatrixTexture(fElapsedTime); gameplayTime+=fElapsedTime; - if(gameplayTime>=1){ - gameplayTime--; - gameSeconds++; + if(state!=GameState::COMPLETED){ + if(gameplayTime>=1){ + gameplayTime--; + gameSeconds++; + } } switch(state){ #pragma region MAIN_MENU @@ -960,6 +1099,7 @@ bool VirusAttack::OnUserUpdate(float fElapsedTime){ state=GameState::GAMEPLAY; RestartLevel(); gameplayTime=0; + gameSeconds=0; } if(audioToggleButton->bPressed){ audioMode=(audioMode+1)%3; @@ -981,6 +1121,20 @@ bool VirusAttack::OnUserUpdate(float fElapsedTime){ }break; } } + if(difficultyToggleButton->bPressed){ + flags.difficulty=(flags.difficulty+1)%3; + switch(flags.difficulty){ + case 0:{ + difficultyToggleButton->sText="Difficulty: Easy"; + }break; + case 1:{ + difficultyToggleButton->sText="Difficulty: Normal"; + }break; + case 2:{ + difficultyToggleButton->sText="Difficulty: Hard"; + }break; + } + } if(exitGameButton->bPressed){ SOUNDS[Sound::BUTTONSELECT]->PlayCentered(); } @@ -1229,12 +1383,9 @@ bool VirusAttack::OnUserUpdate(float fElapsedTime){ #pragma endregion #pragma region COMPLETED case GameState::COMPLETED:{ + DrawPartialDecal({0,0},GetScreenSize(),IMAGES[MATRIX]->Decal(),randomBackgroundOffset+gametv.GetWorldOffset()*(vf2d{32,32}/vf2d(GetScreenSize()))*gametv.GetWorldScale(),{32,32},Pixel{currentLevel->levelColor.r,currentLevel->levelColor.g,currentLevel->levelColor.b,164}/2); - }break; - #pragma endregion - #pragma region CREDITS - case GameState::CREDITS:{ - DrawPartialDecal({0,0},GetScreenSize(),IMAGES[MATRIX]->Decal(),randomBackgroundOffset+gametv.GetWorldOffset()*(vf2d{32,32}/vf2d(GetScreenSize()))*gametv.GetWorldScale(),{32,32},Pixel{currentLevel->levelColor.r,currentLevel->levelColor.g,currentLevel->levelColor.b,164}/2); + completedBox.Initialize("Thank you for playing Virus Attack!\n\nCompletion Time:"+std::to_string(gameSeconds)+" seconds\n\nHuge shoutout to the OLC community, javidx9 for the PGE, and all supporters!"); }break; #pragma endregion } diff --git a/olcCodeJam2023Entry/VirusAttack.h b/olcCodeJam2023Entry/VirusAttack.h index 0f6a2c3..9fac479 100644 --- a/olcCodeJam2023Entry/VirusAttack.h +++ b/olcCodeJam2023Entry/VirusAttack.h @@ -60,7 +60,6 @@ public: QuickGUI::TransparentButton*campaignStartButton; QuickGUI::TransparentButton*audioToggleButton; QuickGUI::TransparentButton*difficultyToggleButton; - QuickGUI::TransparentButton*creditsButton; QuickGUI::TransparentButton*exitGameButton; QuickGUI::Manager restartManager; QuickGUI::TransparentImageButton*restartButton; @@ -114,6 +113,9 @@ public: GameFlags flags; float flashTimer=0; + Textbox completedBox; + Textbox creditsBox; + std::string objective=""; vf2d randomBackgroundOffset; diff --git a/olcCodeJam2023Entry/pge.data b/olcCodeJam2023Entry/pge.data index c09d239c97010a3287a63770e336bfe8748eaa40..032202bb2b38b71b885cad83ce8cbdf477b86f1d 100644 GIT binary patch delta 357650 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