From 6a4cc7e1f71ae042b58a84f4befa79e42072dd81 Mon Sep 17 00:00:00 2001 From: jacob1 Date: Thu, 18 Jul 2013 17:57:04 -0400 Subject: [PATCH] stickmen element defaults to right selected element if possible, or else still DUST --- src/gui/game/GameController.cpp | 22 +++++++++++++++++++++- src/simulation/Simulation.cpp | 11 +++++++---- src/simulation/elements/SPAWN.cpp | 15 ++------------- src/simulation/elements/SPAWN2.cpp | 15 ++------------- 4 files changed, 32 insertions(+), 31 deletions(-) diff --git a/src/gui/game/GameController.cpp b/src/gui/game/GameController.cpp index 311cc0cbf..f4ad0b2de 100644 --- a/src/gui/game/GameController.cpp +++ b/src/gui/game/GameController.cpp @@ -839,7 +839,27 @@ void GameController::Update() else gameView->SetSample(gameModel->GetSimulation()->GetSample(pos.X, pos.Y)); - gameModel->GetSimulation()->update_particles(); + Simulation * sim = gameModel->GetSimulation(); + sim->update_particles(); + + //if either STKM or STK2 isn't out, reset it's selected element. Defaults to PT_DUST unless right selected is something else + //This won't run if the stickmen dies in a frame, since it respawns instantly + if (!sim->player.spwn || !sim->player2.spwn) + { + int rightSelected = PT_DUST; + Tool * activeTool = gameModel->GetActiveTool(1); + if (activeTool->GetIdentifier().find("DEFAULT_PT_") != activeTool->GetIdentifier().npos) + { + int sr = activeTool->GetToolID(); + if ((sr>0 && srelements[sr].Enabled && sim->elements[sr].Falldown>0) || sr==SPC_AIR || sr == PT_NEUT || sr == PT_PHOT || sr == PT_LIGH) + rightSelected = sr; + } + + if (!sim->player.spwn) + sim->player.elem = rightSelected; + if (!sim->player2.spwn) + sim->player2.elem = rightSelected; + } if(renderOptions && renderOptions->HasExited) { delete renderOptions; diff --git a/src/simulation/Simulation.cpp b/src/simulation/Simulation.cpp index de92fff9e..f7d90ed6d 100644 --- a/src/simulation/Simulation.cpp +++ b/src/simulation/Simulation.cpp @@ -2915,7 +2915,6 @@ int Simulation::create_part(int p, int x, int y, int tv) parts[i].life = 100; Element_STKM::STKM_init_legs(this, &player, i); player.spwn = 1; - player.elem = PT_DUST; player.rocketBoots = false; } else @@ -2931,7 +2930,6 @@ int Simulation::create_part(int p, int x, int y, int tv) parts[i].life = 100; Element_STKM::STKM_init_legs(this, &player2, i); player2.spwn = 1; - player2.elem = PT_DUST; player2.rocketBoots = false; } else @@ -3521,9 +3519,14 @@ void Simulation::update_particles_i(int start, int inc) kill_part(i); continue; } - } - //the main particle loop function, goes over all particles. + if (parts[i].type == PT_SPAWN && !player.spwn) + create_part(-1, parts[i].x, parts[i].y, PT_STKM); + else if (parts[i].type == PT_SPAWN2 && !player2.spwn) + create_part(-1, parts[i].x, parts[i].y, PT_STKM2); + } + + //the main particle loop function, goes over all particles. for (i=0; i<=parts_lastActiveIndex; i++) if (parts[i].type) { diff --git a/src/simulation/elements/SPAWN.cpp b/src/simulation/elements/SPAWN.cpp index db12b2f36..9598b4dac 100644 --- a/src/simulation/elements/SPAWN.cpp +++ b/src/simulation/elements/SPAWN.cpp @@ -26,7 +26,7 @@ Element_SPAWN::Element_SPAWN() Weight = 100; - Temperature = R_TEMP+0.0f +273.15f; + Temperature = R_TEMP+273.15f; HeatConduct = 0; Description = "STKM spawn point."; @@ -42,19 +42,8 @@ Element_SPAWN::Element_SPAWN() HighTemperature = ITH; HighTemperatureTransition = NT; - Update = &Element_SPAWN::update; + Update = NULL; } -//#TPT-Directive ElementHeader Element_SPAWN static int update(UPDATE_FUNC_ARGS) -int Element_SPAWN::update(UPDATE_FUNC_ARGS) - { - if (!sim->player.spwn) - sim->create_part(-1, x, y, PT_STKM); - - return 0; -} - - - Element_SPAWN::~Element_SPAWN() {} diff --git a/src/simulation/elements/SPAWN2.cpp b/src/simulation/elements/SPAWN2.cpp index 96a50da24..eece19f5c 100644 --- a/src/simulation/elements/SPAWN2.cpp +++ b/src/simulation/elements/SPAWN2.cpp @@ -26,7 +26,7 @@ Element_SPAWN2::Element_SPAWN2() Weight = 100; - Temperature = R_TEMP+0.0f +273.15f; + Temperature = R_TEMP+273.15f; HeatConduct = 0; Description = "STK2 spawn point."; @@ -42,19 +42,8 @@ Element_SPAWN2::Element_SPAWN2() HighTemperature = ITH; HighTemperatureTransition = NT; - Update = &Element_SPAWN2::update; + Update = NULL; } -//#TPT-Directive ElementHeader Element_SPAWN2 static int update(UPDATE_FUNC_ARGS) -int Element_SPAWN2::update(UPDATE_FUNC_ARGS) - { - if (!sim->player2.spwn) - sim->create_part(-1, x, y, PT_STKM2); - - return 0; -} - - - Element_SPAWN2::~Element_SPAWN2() {}