In particular, the intro movie now exits immediately again rather than staying indefinitely.
The important difference is to send the completion callback in plBinkPlayer::NextFrame(), i.e. act as if we had reached the end of the movie.
Storing the filename is to keep plClient::IHandleMovieMsg() from deleting and recreating the plBinkPlayer on every message.
The changed return values are just to better match the previous behavior and probably don’t matter.
As it turns out, my old OnServerInitComplete fix didn't check to see if
the script had an OnServerInitComplete method. So, when we called that
method-of-doom from C++, we'd see a SystemError. Aside from removing an
error message, this probably has no effect.
Replace a weird error string stack with direct calls to the
LocalizationMgr log and its associated formatting helper. In cases where
indirection was needed, plString was introduced. This makes the code
cleaner and faster.
Fixes#180 (if combined with the moul-scripts commit). These two Python/Plasma functions are used in the moul-scripts fix for the scrolling KI Chat issue.
This also includes some header debloat and const/reference fixes
(particularly in pyMatrix44). This will result in the generation of
slightly more efficient code.
Also did some work on decreasing header bloat. No promises on a complete
job--this was just enough to allow PCH to actually help us out (and boy
does it!)
With an Intel Core 2 Duo (4GB DDR2 800)
With PCH: 50.51 seconds
Without: 4 minutes, 17.14 seconds
:D
Manual state management in python was kind of fiddly, so let's track all
avatar clones in the NetApp and unload them as needed. This also seems to
fix a potential bug in plNPCSpawnMod (is that even used?).
Win32 HACK: We wait on both the pfCrashCli handle and the crashed semaphore.
This way, we can proceed to exit pfCrashSrv when the client process exits
insanely.
pfGameScore will call you back on actions that require server ops. Also, we
ref count the score instead of using some weird hashtable manager class
because the server never actually tells us if someone else changes the
score.
pfCrashHandler includes a client that watches plClient for crashes. When
it detects a crash, it lets the plCrashSrv (plCrashHandler.exe) know about
it. We then produce a mninidump, then signal the client that it's OK to
show a crash dialog. See http://www.nynaeve.net/?p=128 for a good
explanation of why I split the crash logic into another process.