scientificbriefcase.c 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. class ScientificBriefcase : Container_Base
  2. {
  3. protected ref OpenableBehaviour m_Openable;
  4. override void InitItemVariables()
  5. {
  6. super.InitItemVariables();
  7. m_Openable = new OpenableBehaviour(false);
  8. RegisterNetSyncVariableBool("m_Openable.m_IsOpened");
  9. }
  10. override void OnStoreSave(ParamsWriteContext ctx)
  11. {
  12. super.OnStoreSave(ctx);
  13. ctx.Write(m_Openable.IsOpened());
  14. }
  15. override bool OnStoreLoad(ParamsReadContext ctx, int version)
  16. {
  17. if (!super.OnStoreLoad(ctx, version))
  18. return false;
  19. bool opened;
  20. if (version >= 139 && ctx.Read(opened))
  21. {
  22. if (opened)
  23. Open();
  24. else
  25. Close();
  26. }
  27. return true;
  28. }
  29. override bool CanReceiveItemIntoCargo(EntityAI item)
  30. {
  31. if (GetHealthLevel() == GameConstants.STATE_RUINED)
  32. return false;
  33. if (!IsOpen())
  34. return false;
  35. return super.CanReceiveItemIntoCargo(item);
  36. }
  37. override bool IsOpen()
  38. {
  39. return m_Openable.IsOpened();
  40. }
  41. override void Open()
  42. {
  43. m_Openable.Open();
  44. SetSynchDirty();
  45. }
  46. override void Close()
  47. {
  48. m_Openable.Close();
  49. SetSynchDirty();
  50. }
  51. }