#1865: divide by zero after game failure.
-----------------------------------------------------------+----------------
Reporter: freakyd <iamabigwiener...@…> | Type: bug
Status: new | Priority:
major
Milestone: unspecified | Component:
Engine: Graphics
Version: svn/trunk | Keywords:
divide by zero
Operating_system: All/Non-Specific | Blockedby:
Blocking: |
-----------------------------------------------------------+----------------
There's a divide by zero if your troops are moving and you fail the
mission. I know there was another divide by zero problem, but it wasn't
this one. It's interpolateangle, of course, but it's called from droid.h
with the previous time equal to the current time, which causes the
problem. I inserted logic so that if the current time and previous time
are equal then I add to the current time. The net effect is things go
double time when the mission fails, but the upside is no crash!
droid.h: line 463
static inline Rotation getInterpolatedWeaponRotation(DROID *psDroid, int
weaponSlot, uint32_t time)
{
if (psDroid->time == psDroid->prevSpacetime.time)
{
return
interpolateRot(psDroid->asWeaps[weaponSlot].prevRot,
psDroid->asWeaps[weaponSlot].rot, psDroid->prevSpacetime.time,
psDroid->time+1, time);
}
else
{
return
interpolateRot(psDroid->asWeaps[weaponSlot].prevRot,
psDroid->asWeaps[weaponSlot].rot, psDroid->prevSpacetime.time,
psDroid->time, time);
}
}
I'm sure someone can come up with a better idea than this, as I don't know
the code very well.
--
Ticket URL: <http://developer.wz2100.net/ticket/1865>
Warzone 2100 Trac <http://developer.wz2100.net/>
The Warzone 2100 Project
_______________________________________________
Warzone-dev mailing list
[email protected]
https://mail.gna.org/listinfo/warzone-dev