Climb Home: Fix game getting stuck when player reaches home
What now happens if a player reaches home:
- sndWinning
- Show caption with finishing time
- Winning hog is teleported to roof and can be seen by everyone
- 4 second delay
- If there are still hogs left, the game continues normally
- Each victory is mentioned in stats screen at the end
+ − // StreamUtils.cpp
+ −
+ − #include "StdAfx.h"
+ −
+ − #include "../../Common/MyCom.h"
+ − #include "StreamUtils.h"
+ −
+ − HRESULT ReadStream(ISequentialInStream *stream, void *data, UInt32 size, UInt32 *processedSize)
+ − {
+ − if (processedSize != 0)
+ − *processedSize = 0;
+ − while(size != 0)
+ − {
+ − UInt32 processedSizeLoc;
+ − HRESULT res = stream->Read(data, size, &processedSizeLoc);
+ − if (processedSize != 0)
+ − *processedSize += processedSizeLoc;
+ − data = (Byte *)((Byte *)data + processedSizeLoc);
+ − size -= processedSizeLoc;
+ − RINOK(res);
+ − if (processedSizeLoc == 0)
+ − return S_OK;
+ − }
+ − return S_OK;
+ − }
+ −
+ − HRESULT WriteStream(ISequentialOutStream *stream, const void *data, UInt32 size, UInt32 *processedSize)
+ − {
+ − if (processedSize != 0)
+ − *processedSize = 0;
+ − while(size != 0)
+ − {
+ − UInt32 processedSizeLoc;
+ − HRESULT res = stream->Write(data, size, &processedSizeLoc);
+ − if (processedSize != 0)
+ − *processedSize += processedSizeLoc;
+ − data = (const void *)((const Byte *)data + processedSizeLoc);
+ − size -= processedSizeLoc;
+ − RINOK(res);
+ − if (processedSizeLoc == 0)
+ − return E_FAIL;
+ − }
+ − return S_OK;
+ − }