Allow TUNG melting point to be changed from Lua

Also set lava LowTemperature threshold to MAX_TEMP, to simplify changing melting points from Lua.
This commit is contained in:
jacksonmj 2015-02-23 13:24:27 +00:00
parent b06af530a5
commit d71a0d98eb
3 changed files with 9 additions and 8 deletions

View File

@ -3618,7 +3618,9 @@ void Simulation::UpdateParticles(int start, int end)
s = 0;
else if (parts[i].ctype==PT_TUNG)
{
if (pt>=3695.0)
// TUNG does its own melting in its update function, so HighTemperatureTransition is not LAVA so it won't be handled by the code for HighTemperatureTransition==PT_LAVA below
// However, the threshold is stored in HighTemperature to allow it to be changed from Lua
if (pt>=elements[parts[i].ctype].HighTemperature)
s = 0;
}
else if (elements[parts[i].ctype].HighTemperatureTransition == PT_LAVA)

View File

@ -37,7 +37,7 @@ Element_LAVA::Element_LAVA()
LowPressureTransition = NT;
HighPressure = IPH;
HighPressureTransition = NT;
LowTemperature = 3695.0f;// Highest temperature at which any type of lava can solidify
LowTemperature = MAX_TEMP;// check for lava solidification at all temperatures
LowTemperatureTransition = ST;
HighTemperature = ITH;
HighTemperatureTransition = NT;

View File

@ -40,22 +40,20 @@ Element_TUNG::Element_TUNG()
HighPressureTransition = NT;
LowTemperature = ITL;
LowTemperatureTransition = NT;
HighTemperature = ITH;
HighTemperature = 3695.0f;// TUNG melts in its update function instead of in the normal way, but store the threshold here so that it can be changed from Lua
HighTemperatureTransition = NT;
/*HighTemperature = 3895.0f;
HighTemperatureTransition = PT_LAVA;*/
Update = &Element_TUNG::update;
Graphics = &Element_TUNG::graphics;
}
#define MELTING_POINT 3695.0
//#TPT-Directive ElementHeader Element_TUNG static int update(UPDATE_FUNC_ARGS)
int Element_TUNG::update(UPDATE_FUNC_ARGS)
{
bool splode = false;
const float MELTING_POINT = sim->elements[PT_TUNG].HighTemperature;
if(parts[i].temp > 2400.0)
{
int r, rx, ry;
@ -90,7 +88,7 @@ int Element_TUNG::update(UPDATE_FUNC_ARGS)
}
if(splode)
{
parts[i].temp = MELTING_POINT + (rand()%600) + 200;
parts[i].temp = restrict_flt(MELTING_POINT + (rand()%600) + 200, MIN_TEMP, MAX_TEMP);
}
parts[i].vx += (rand()%100)-50;
parts[i].vy += (rand()%100)-50;
@ -111,6 +109,7 @@ int Element_TUNG::update(UPDATE_FUNC_ARGS)
//#TPT-Directive ElementHeader Element_TUNG static int graphics(GRAPHICS_FUNC_ARGS)
int Element_TUNG::graphics(GRAPHICS_FUNC_ARGS)
{
const float MELTING_POINT = ren->sim->elements[PT_TUNG].HighTemperature;
double startTemp = (MELTING_POINT - 1500.0);
double tempOver = (((cpart->temp - startTemp)/1500.0)*M_PI) - (M_PI/2.0);
if(tempOver > -(M_PI/2.0))