ProjectFile.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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::WriteNewProject(const String& fullpath)
  16. {
  17. SharedPtr<JSONFile> jsonFile(new JSONFile(context_));
  18. JSONValue root = jsonFile->CreateRoot();
  19. root.SetInt("version", PROJECTFILE_VERSION);
  20. // project object
  21. JSONValue jproject = root.CreateChild("project");
  22. jproject.SetString("version", "1.0.0");
  23. // platforms
  24. root.CreateChild("platforms", JSON_ARRAY);
  25. SharedPtr<File> file(new File(context_, fullpath, FILE_WRITE));
  26. jsonFile->Save(*file, String(" "));
  27. file->Close();
  28. }
  29. void ProjectFile::Save(Project* project)
  30. {
  31. project_ = project;
  32. ToolSystem* tsystem = GetSubsystem<ToolSystem>();
  33. String fullpath = project->GetProjectFilePath();
  34. SharedPtr<JSONFile> jsonFile(new JSONFile(context_));
  35. JSONValue root = jsonFile->CreateRoot();
  36. root.SetInt("version", PROJECTFILE_VERSION);
  37. // project object
  38. JSONValue jproject = root.CreateChild("project");
  39. jproject.SetString("version", project_->GetVersion());
  40. // platforms
  41. JSONValue platforms = root.CreateChild("platforms", JSON_ARRAY);
  42. for (List<PlatformID>::ConstIterator i = project_->platforms_.Begin(); i != project_->platforms_.End(); ++i)
  43. {
  44. Platform* platform = tsystem->GetPlatformByID(*i);
  45. if (platform)
  46. {
  47. platforms.AddString(platform->GetName().ToLower());
  48. }
  49. }
  50. // Save to file
  51. SharedPtr<File> file(new File(context_, fullpath, FILE_WRITE));
  52. jsonFile->Save(*file, String(" "));
  53. file->Close();
  54. }
  55. bool ProjectFile::Load(Project* project)
  56. {
  57. project_ = project;
  58. ToolSystem* tsystem = GetSubsystem<ToolSystem>();
  59. String fullpath = project->GetProjectFilePath();
  60. SharedPtr<File> file(new File(context_, fullpath, FILE_READ));
  61. if (file->GetSize() != 0)
  62. {
  63. SharedPtr<JSONFile> jsonFile(new JSONFile(context_));
  64. if (!jsonFile->BeginLoad(*file))
  65. return false;
  66. JSONValue root = jsonFile->GetRoot();
  67. int version = root.GetInt("version");
  68. if (version != PROJECTFILE_VERSION)
  69. return false;
  70. // project object
  71. JSONValue jproject = root.GetChild("project");
  72. if (jproject.IsObject())
  73. {
  74. String pversion = jproject.GetString("version");
  75. project_->SetVersion(pversion);
  76. }
  77. JSONValue platforms = root.GetChild("platforms");
  78. if (!platforms.IsArray())
  79. return false;
  80. }
  81. // for now, every project gets all platforms
  82. project_->AddPlatform(PLATFORMID_WINDOWS);
  83. project_->AddPlatform(PLATFORMID_MAC);
  84. project_->AddPlatform(PLATFORMID_ANDROID);
  85. project_->AddPlatform(PLATFORMID_IOS);
  86. project_->AddPlatform(PLATFORMID_WEB);
  87. /*
  88. for (unsigned i = 0; i < platforms.GetSize(); i++)
  89. {
  90. String jplatform = platforms.GetString(i);
  91. Platform* platform = tsystem->GetPlatformByName(jplatform);
  92. if (platform)
  93. project_->AddPlatform(platform->GetPlatformID());
  94. }
  95. */
  96. return true;
  97. }
  98. }