diff options
| author | cracker64 <cracker642@gmail.com> | 2013-03-01 05:41:53 (GMT) |
|---|---|---|
| committer | cracker64 <cracker642@gmail.com> | 2013-03-01 05:41:53 (GMT) |
| commit | 0d70547cf059b5bd0a7a4a0acd9251fb94c6115e (patch) | |
| tree | 99a0b212eeecee83662d963da052b439375acbf3 /src/simulation/elements/LIGH.cpp | |
| parent | 5873d6958641af21b92fcb039d26c336331f19e7 (diff) | |
| download | powder-0d70547cf059b5bd0a7a4a0acd9251fb94c6115e.zip powder-0d70547cf059b5bd0a7a4a0acd9251fb94c6115e.tar.gz | |
More fixes to fix fixes and new fixes to fix stuff.
Diffstat (limited to 'src/simulation/elements/LIGH.cpp')
| -rw-r--r-- | src/simulation/elements/LIGH.cpp | 75 |
1 files changed, 41 insertions, 34 deletions
diff --git a/src/simulation/elements/LIGH.cpp b/src/simulation/elements/LIGH.cpp index 23f815a..2e64bb2 100644 --- a/src/simulation/elements/LIGH.cpp +++ b/src/simulation/elements/LIGH.cpp @@ -99,43 +99,49 @@ int Element_LIGH::update(UPDATE_FUNC_ARGS) if (sim->elements[rt].Explosive) sim->pv[y/CELL][x/CELL] += 0.25f * CFDS; } - if (rt!=PT_LIGH && rt!=PT_TESC) + switch (rt) { - if (rt!=PT_CLNE&&rt!=PT_THDR&&rt!=PT_DMND&&rt!=PT_FIRE) + case PT_LIGH: + case PT_TESC: + continue; + case PT_CLNE: + case PT_THDR: + case PT_DMND: + case PT_FIRE: + parts[r>>8].temp = restrict_flt(parts[r>>8].temp+powderful/10, MIN_TEMP, MAX_TEMP); + continue; + case PT_DEUT: + case PT_PLUT: + parts[r>>8].temp = restrict_flt(parts[r>>8].temp+powderful, MIN_TEMP, MAX_TEMP); + sim->pv[y/CELL][x/CELL] +=powderful/35; + if (!(rand()%3)) { - if ((sim->elements[r&0xFF].Properties&PROP_CONDUCTS) && parts[r>>8].life==0) - { - sim->create_part(r>>8,x+rx,y+ry,PT_SPRK); - } - if (rt==PT_DEUT || rt==PT_PLUT) // start nuclear reactions - { - parts[r>>8].temp = restrict_flt(parts[r>>8].temp+powderful, MIN_TEMP, MAX_TEMP); - sim->pv[y/CELL][x/CELL] +=powderful/35; - if (!(rand()%3)) - { - sim->part_change_type(r>>8,x+rx,y+ry,PT_NEUT); - parts[r>>8].life = rand()%480+480; - parts[r>>8].vx=rand()%10-5; - parts[r>>8].vy=rand()%10-5; - } - } - else if (rt==PT_COAL || rt==PT_BCOL) // ignite coal - { - if (parts[r>>8].life>100) { - parts[r>>8].life = 99; - } - } - else if ((rt==PT_STKM && sim->player.elem!=PT_LIGH) || (rt==PT_STKM2 && sim->player2.elem!=PT_LIGH)) - { - parts[r>>8].life-=powderful/100; - } - sim->pv[y/CELL][x/CELL] += powderful/400; - if (sim->elements[r&0xFF].HeatConduct) parts[r>>8].temp = restrict_flt(parts[r>>8].temp+powderful/1.3, MIN_TEMP, MAX_TEMP); + sim->part_change_type(r>>8,x+rx,y+ry,PT_NEUT); + parts[r>>8].life = rand()%480+480; + parts[r>>8].vx=rand()%10-5; + parts[r>>8].vy=rand()%10-5; } - else - parts[r>>8].temp = restrict_flt(parts[r>>8].temp+powderful/10, MIN_TEMP, MAX_TEMP); - + break; + case PT_COAL: + case PT_BCOL: + if (parts[r>>8].life>100) + parts[r>>8].life = 99; + break; + case PT_STKM: + if (sim->player.elem!=PT_LIGH) + parts[r>>8].life-=powderful/100; + break; + case PT_STKM2: + if (sim->player2.elem!=PT_LIGH) + parts[r>>8].life-=powderful/100; + break; + default: + break; } + if ((sim->elements[r&0xFF].Properties&PROP_CONDUCTS) && parts[r>>8].life==0) + sim->create_part(r>>8,x+rx,y+ry,PT_SPRK); + sim->pv[y/CELL][x/CELL] += powderful/400; + if (sim->elements[r&0xFF].HeatConduct) parts[r>>8].temp = restrict_flt(parts[r>>8].temp+powderful/1.3, MIN_TEMP, MAX_TEMP); } if (parts[i].tmp2==3) { @@ -155,7 +161,7 @@ int Element_LIGH::update(UPDATE_FUNC_ARGS) return 1; } - //Completely broken and laggy function, possible can be fixed later + //Completely broken and laggy function, possibly can be fixed later /*pNear = LIGH_nearest_part(sim, i, parts[i].life*2.5); if (pNear!=-1) { @@ -278,6 +284,7 @@ bool Element_LIGH::create_LIGH(Simulation * sim, int x, int y, int c, int temp, if ((((r&0xFF)==PT_VOID || ((r&0xFF)==PT_PVOD && sim->parts[r>>8].life >= 10)) && (!sim->parts[r>>8].ctype || (sim->parts[r>>8].ctype==c)!=(sim->parts[r>>8].tmp&1))) || (r&0xFF)==PT_BHOL || (r&0xFF)==PT_NBHL) // VOID, PVOD, VACU, and BHOL eat LIGH here return true; } + else return true; return false; } |
