BuildWeb.cpp 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  2. // Please see LICENSE.md in repository root for license information
  3. // https://github.com/AtomicGameEngine/AtomicGameEngine
  4. #include <Atomic/IO/FileSystem.h>
  5. #include <Atomic/IO/File.h>
  6. #include "../ToolSystem.h"
  7. #include "../Project/Project.h"
  8. #include "BuildSystem.h"
  9. #include "BuildWeb.h"
  10. namespace ToolCore
  11. {
  12. BuildWeb::BuildWeb(Context * context) : BuildBase(context)
  13. {
  14. }
  15. BuildWeb::~BuildWeb()
  16. {
  17. }
  18. void BuildWeb::Initialize()
  19. {
  20. ToolSystem* tools = GetSubsystem<ToolSystem>();
  21. Project* project = tools->GetProject();
  22. FileSystem* fileSystem = GetSubsystem<FileSystem>();
  23. String bundleResources = fileSystem->GetAppBundleResourceFolder();
  24. String projectResources = project->GetResourcePath();
  25. String coreDataFolder = bundleResources + "CoreData/";
  26. AddResourceDir(coreDataFolder);
  27. AddResourceDir(projectResources);
  28. BuildResourceEntries();
  29. }
  30. void BuildWeb::Build(const String& buildPath)
  31. {
  32. buildPath_ = buildPath + "/Web-Build";
  33. Initialize();
  34. FileSystem* fileSystem = GetSubsystem<FileSystem>();
  35. if (fileSystem->DirExists(buildPath_))
  36. fileSystem->RemoveDir(buildPath_, true);
  37. String buildSourceDir = fileSystem->GetAppBundleResourceFolder();
  38. buildSourceDir += "Deployment/Web";
  39. fileSystem->CreateDir(buildPath_);
  40. String resourcePackagePath = buildPath_ + "/AtomicResources.data";
  41. GenerateResourcePackage(resourcePackagePath);
  42. fileSystem->Copy(buildSourceDir + "/AtomicPlayer.html", buildPath_ + "/AtomicPlayer.html");
  43. fileSystem->Copy(buildSourceDir + "/AtomicPlayer.js", buildPath_ + "/AtomicPlayer.js");
  44. File file(context_, buildSourceDir + "/AtomicResources_js.template", FILE_READ);
  45. unsigned size = file.GetSize();
  46. SharedArrayPtr<char> buffer(new char[size + 1]);
  47. file.Read(buffer.Get(), size);
  48. buffer[size] = '\0';
  49. String resourcejs = (const char*) buffer.Get();
  50. file.Close();
  51. file.Open(buildPath_ + "/AtomicResources.data", FILE_READ);
  52. int rsize = (int) file.GetSize();
  53. file.Close();
  54. String request;
  55. request.AppendWithFormat("new DataRequest(0, %i, 0, 0).open('GET', '/AtomicResources.pak');", rsize);
  56. resourcejs.Replace("$$ATOMIC_RESOURCES_DATA_REQUEST$$", request);
  57. file.Open(buildPath_ + "/AtomicResources.js", FILE_WRITE);
  58. file.Write(resourcejs.CString(), resourcejs.Length());
  59. file.Close();
  60. BuildSystem* buildSystem = GetSubsystem<BuildSystem>();
  61. buildSystem->BuildComplete(PLATFORMID_WEB, buildPath_);
  62. //fileSystem->SystemCommandAsync("/Applications/Firefox.app/Contents/MacOS/firefox");
  63. }
  64. }