ProjectFile.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #include <Atomic/IO/Log.h>
  2. #include <Atomic/IO/File.h>
  3. #include <Atomic/Resource/JSONFile.h>
  4. #include "../ToolSystem.h"
  5. #include "Project.h"
  6. #include "ProjectFile.h"
  7. namespace ToolCore
  8. {
  9. ProjectFile::ProjectFile(Context* context) : Object(context)
  10. {
  11. }
  12. ProjectFile::~ProjectFile()
  13. {
  14. }
  15. void ProjectFile::Save(Project* project)
  16. {
  17. project_ = project;
  18. ToolSystem* tsystem = GetSubsystem<ToolSystem>();
  19. String fullpath = project->GetProjectFilePath();
  20. SharedPtr<JSONFile> jsonFile(new JSONFile(context_));
  21. JSONValue root = jsonFile->CreateRoot();
  22. root.SetInt("version", PROJECTFILE_VERSION);
  23. // project object
  24. JSONValue jproject = root.CreateChild("project");
  25. jproject.SetString("version", project_->GetVersion());
  26. // platforms
  27. JSONValue platforms = root.CreateChild("platforms", JSON_ARRAY);
  28. for (List<PlatformID>::ConstIterator i = project_->platforms_.Begin(); i != project_->platforms_.End(); ++i)
  29. {
  30. Platform* platform = tsystem->GetPlatformByID(*i);
  31. if (platform)
  32. {
  33. platforms.AddString(platform->GetName().ToLower());
  34. }
  35. }
  36. // Save to file
  37. SharedPtr<File> file(new File(context_, fullpath, FILE_WRITE));
  38. jsonFile->Save(*file, String(" "));
  39. file->Close();
  40. }
  41. bool ProjectFile::Load(Project* project)
  42. {
  43. project_ = project;
  44. ToolSystem* tsystem = GetSubsystem<ToolSystem>();
  45. String fullpath = project->GetProjectFilePath();
  46. SharedPtr<File> file(new File(context_, fullpath, FILE_READ));
  47. SharedPtr<JSONFile> jsonFile(new JSONFile(context_));
  48. jsonFile->BeginLoad(*file);
  49. JSONValue root = jsonFile->GetRoot();
  50. int version = root.GetInt("version");
  51. if (version != PROJECTFILE_VERSION)
  52. return false;
  53. // project object
  54. JSONValue jproject = root.GetChild("project");
  55. if (jproject.IsObject())
  56. {
  57. String pversion = jproject.GetString("version");
  58. project_->SetVersion(pversion);
  59. }
  60. JSONValue platforms = root.GetChild("platforms");
  61. if (!platforms.IsArray())
  62. return false;
  63. for (unsigned i = 0; i < platforms.GetSize(); i++)
  64. {
  65. String jplatform = platforms.GetString(i);
  66. Platform* platform = tsystem->GetPlatformByName(jplatform);
  67. if (platform)
  68. project_->AddPlatform(platform->GetPlatformID());
  69. }
  70. return true;
  71. }
  72. }