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:
parent
b06af530a5
commit
d71a0d98eb
@ -3618,7 +3618,9 @@ void Simulation::UpdateParticles(int start, int end)
|
|||||||
s = 0;
|
s = 0;
|
||||||
else if (parts[i].ctype==PT_TUNG)
|
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;
|
s = 0;
|
||||||
}
|
}
|
||||||
else if (elements[parts[i].ctype].HighTemperatureTransition == PT_LAVA)
|
else if (elements[parts[i].ctype].HighTemperatureTransition == PT_LAVA)
|
||||||
|
@ -37,7 +37,7 @@ Element_LAVA::Element_LAVA()
|
|||||||
LowPressureTransition = NT;
|
LowPressureTransition = NT;
|
||||||
HighPressure = IPH;
|
HighPressure = IPH;
|
||||||
HighPressureTransition = NT;
|
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;
|
LowTemperatureTransition = ST;
|
||||||
HighTemperature = ITH;
|
HighTemperature = ITH;
|
||||||
HighTemperatureTransition = NT;
|
HighTemperatureTransition = NT;
|
||||||
|
@ -40,22 +40,20 @@ Element_TUNG::Element_TUNG()
|
|||||||
HighPressureTransition = NT;
|
HighPressureTransition = NT;
|
||||||
LowTemperature = ITL;
|
LowTemperature = ITL;
|
||||||
LowTemperatureTransition = NT;
|
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;
|
HighTemperatureTransition = NT;
|
||||||
/*HighTemperature = 3895.0f;
|
|
||||||
HighTemperatureTransition = PT_LAVA;*/
|
|
||||||
|
|
||||||
Update = &Element_TUNG::update;
|
Update = &Element_TUNG::update;
|
||||||
Graphics = &Element_TUNG::graphics;
|
Graphics = &Element_TUNG::graphics;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MELTING_POINT 3695.0
|
|
||||||
|
|
||||||
//#TPT-Directive ElementHeader Element_TUNG static int update(UPDATE_FUNC_ARGS)
|
//#TPT-Directive ElementHeader Element_TUNG static int update(UPDATE_FUNC_ARGS)
|
||||||
int Element_TUNG::update(UPDATE_FUNC_ARGS)
|
int Element_TUNG::update(UPDATE_FUNC_ARGS)
|
||||||
{
|
{
|
||||||
bool splode = false;
|
bool splode = false;
|
||||||
|
const float MELTING_POINT = sim->elements[PT_TUNG].HighTemperature;
|
||||||
|
|
||||||
if(parts[i].temp > 2400.0)
|
if(parts[i].temp > 2400.0)
|
||||||
{
|
{
|
||||||
int r, rx, ry;
|
int r, rx, ry;
|
||||||
@ -90,7 +88,7 @@ int Element_TUNG::update(UPDATE_FUNC_ARGS)
|
|||||||
}
|
}
|
||||||
if(splode)
|
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].vx += (rand()%100)-50;
|
||||||
parts[i].vy += (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)
|
//#TPT-Directive ElementHeader Element_TUNG static int graphics(GRAPHICS_FUNC_ARGS)
|
||||||
int Element_TUNG::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 startTemp = (MELTING_POINT - 1500.0);
|
||||||
double tempOver = (((cpart->temp - startTemp)/1500.0)*M_PI) - (M_PI/2.0);
|
double tempOver = (((cpart->temp - startTemp)/1500.0)*M_PI) - (M_PI/2.0);
|
||||||
if(tempOver > -(M_PI/2.0))
|
if(tempOver > -(M_PI/2.0))
|
||||||
|
Reference in New Issue
Block a user