| 391 | } |
| 392 | |
| 393 | static bool SysState_ComponentFreezeOut(SaveStateBase& writer, SysState_Component comp) |
| 394 | { |
| 395 | freezeData fP = {}; |
| 396 | if (comp.freeze(FreezeAction::Size, &fP) != 0) |
| 397 | { |
| 398 | Console.Error(fmt::format("* {}: Failed to get freeze size", comp.name)); |
| 399 | return false; |
| 400 | } |
| 401 | |
| 402 | if (fP.size == 0) |
| 403 | return true; |
| 404 | |
| 405 | const int size = fP.size; |
| 406 | writer.PrepBlock(size); |
| 407 | |
| 408 | Console.WriteLn(" Saving %s", comp.name); |
| 409 | |
| 410 | fP.data = writer.GetBlockPtr(); |
| 411 | if (comp.freeze(FreezeAction::Save, &fP) != 0) |
| 412 | { |
| 413 | Console.Error(fmt::format("* {}: Failed to save freeze data", comp.name)); |
| 414 | return false; |
| 415 | } |
| 416 | |
| 417 | writer.CommitBlock(size); |
| 418 | return true; |
| 419 | } |
| 420 | |
| 421 | static bool SysState_ComponentFreezeInNew(zip_file_t* zf, const char* name, bool(*do_state_func)(StateWrapper&)) |
| 422 | { |
no test coverage detected