Better syncing for elementCount, fixes issue #21
This commit is contained in:
parent
0b3724215e
commit
1f914561b2
@ -76,6 +76,8 @@ int Simulation::Load(int fullX, int fullY, GameSave * save)
|
|||||||
//Replace existing
|
//Replace existing
|
||||||
parts[r>>8] = tempPart;
|
parts[r>>8] = tempPart;
|
||||||
pmap[y][x] = 0;
|
pmap[y][x] = 0;
|
||||||
|
elementCount[parts[r>>8].type]--;
|
||||||
|
elementCount[tempPart.type]++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -86,6 +88,8 @@ int Simulation::Load(int fullX, int fullY, GameSave * save)
|
|||||||
pfree = parts[i].life;
|
pfree = parts[i].life;
|
||||||
if (i>parts_lastActiveIndex) parts_lastActiveIndex = i;
|
if (i>parts_lastActiveIndex) parts_lastActiveIndex = i;
|
||||||
parts[i] = tempPart;
|
parts[i] = tempPart;
|
||||||
|
|
||||||
|
elementCount[tempPart.type]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
parts_lastActiveIndex = NPART-1;
|
parts_lastActiveIndex = NPART-1;
|
||||||
@ -1779,6 +1783,7 @@ void Simulation::clear_sim(void)
|
|||||||
{
|
{
|
||||||
int i, x, y;
|
int i, x, y;
|
||||||
signs.clear();
|
signs.clear();
|
||||||
|
currentTick = 0;
|
||||||
memset(bmap, 0, sizeof(bmap));
|
memset(bmap, 0, sizeof(bmap));
|
||||||
memset(emap, 0, sizeof(emap));
|
memset(emap, 0, sizeof(emap));
|
||||||
memset(parts, 0, sizeof(Particle)*NPART);
|
memset(parts, 0, sizeof(Particle)*NPART);
|
||||||
@ -1803,6 +1808,7 @@ void Simulation::clear_sim(void)
|
|||||||
memset(gol2, 0, sizeof(gol2));
|
memset(gol2, 0, sizeof(gol2));
|
||||||
memset(portalp, 0, sizeof(portalp));
|
memset(portalp, 0, sizeof(portalp));
|
||||||
memset(fighters, 0, sizeof(fighters));
|
memset(fighters, 0, sizeof(fighters));
|
||||||
|
std::fill(elementCount, elementCount+PT_NUM, 0);
|
||||||
fighcount = 0;
|
fighcount = 0;
|
||||||
player.spwn = 0;
|
player.spwn = 0;
|
||||||
player2.spwn = 0;
|
player2.spwn = 0;
|
||||||
@ -3070,6 +3076,9 @@ void Simulation::update_particles_i(int start, int inc)
|
|||||||
float pGravX, pGravY, pGravD;
|
float pGravX, pGravY, pGravD;
|
||||||
int excessive_stacking_found = 0;
|
int excessive_stacking_found = 0;
|
||||||
|
|
||||||
|
currentTick++;
|
||||||
|
currentTick %= 3600;
|
||||||
|
|
||||||
if (lighting_recreate>0)
|
if (lighting_recreate>0)
|
||||||
{
|
{
|
||||||
for (i=0; i<=parts_lastActiveIndex; i++)
|
for (i=0; i<=parts_lastActiveIndex; i++)
|
||||||
@ -3260,6 +3269,13 @@ void Simulation::update_particles_i(int start, int inc)
|
|||||||
}
|
}
|
||||||
ISWIRE--;
|
ISWIRE--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool elementRecount = !(currentTick%180);
|
||||||
|
if(elementRecount)
|
||||||
|
{
|
||||||
|
std::fill(elementCount, elementCount+PT_NUM, 0);
|
||||||
|
}
|
||||||
|
|
||||||
for (i=0; i<=parts_lastActiveIndex; i++)
|
for (i=0; i<=parts_lastActiveIndex; i++)
|
||||||
if (parts[i].type)
|
if (parts[i].type)
|
||||||
{
|
{
|
||||||
@ -3270,6 +3286,9 @@ void Simulation::update_particles_i(int start, int inc)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
elementCount[t]++;
|
||||||
|
|
||||||
elem_properties = elements[t].Properties;
|
elem_properties = elements[t].Properties;
|
||||||
if (parts[i].life>0 && (elem_properties&PROP_LIFE_DEC))
|
if (parts[i].life>0 && (elem_properties&PROP_LIFE_DEC))
|
||||||
{
|
{
|
||||||
@ -4431,6 +4450,9 @@ Simulation::Simulation():
|
|||||||
memcpy(portal_rx, tportal_rx, sizeof(tportal_rx));
|
memcpy(portal_rx, tportal_rx, sizeof(tportal_rx));
|
||||||
memcpy(portal_ry, tportal_ry, sizeof(tportal_ry));
|
memcpy(portal_ry, tportal_ry, sizeof(tportal_ry));
|
||||||
|
|
||||||
|
currentTick = 0;
|
||||||
|
std::fill(elementCount, elementCount+PT_NUM, 0);
|
||||||
|
|
||||||
//Create and attach gravity simulation
|
//Create and attach gravity simulation
|
||||||
grav = new Gravity();
|
grav = new Gravity();
|
||||||
//Give air sim references to our data
|
//Give air sim references to our data
|
||||||
|
@ -55,6 +55,8 @@ public:
|
|||||||
int grule[NGOL+1][10];
|
int grule[NGOL+1][10];
|
||||||
menu_section msections[SC_TOTAL];
|
menu_section msections[SC_TOTAL];
|
||||||
|
|
||||||
|
int currentTick;
|
||||||
|
|
||||||
playerst player;
|
playerst player;
|
||||||
playerst player2;
|
playerst player2;
|
||||||
playerst fighters[256]; //255 is the maximum number of fighters
|
playerst fighters[256]; //255 is the maximum number of fighters
|
||||||
|
Loading…
Reference in New Issue
Block a user