|
|
@@ -19,6 +19,7 @@
|
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
|
// THE SOFTWARE.
|
|
|
//
|
|
|
+#include <stdlib.h>
|
|
|
|
|
|
#include <Atomic/Core/StringUtils.h>
|
|
|
#include <Atomic/IO/FileSystem.h>
|
|
|
@@ -28,6 +29,7 @@
|
|
|
#include "../ToolSystem.h"
|
|
|
#include "../ToolEnvironment.h"
|
|
|
#include "../Project/Project.h"
|
|
|
+#include "../Project/ProjectBuildSettings.h"
|
|
|
#include "../Assets/AssetDatabase.h"
|
|
|
|
|
|
#include "BuildEvents.h"
|
|
|
@@ -75,6 +77,9 @@ void BuildWeb::Initialize()
|
|
|
void BuildWeb::Build(const String& buildPath)
|
|
|
{
|
|
|
ToolEnvironment* tenv = GetSubsystem<ToolEnvironment>();
|
|
|
+ ToolSystem* toolSystem = GetSubsystem<ToolSystem>();
|
|
|
+ Project* project = toolSystem->GetProject();
|
|
|
+ WebBuildSettings* settings = project->GetBuildSettings()->GetWebBuildSettings();
|
|
|
|
|
|
buildPath_ = AddTrailingSlash(buildPath) + GetBuildSubfolder();
|
|
|
|
|
|
@@ -105,11 +110,70 @@ void BuildWeb::Build(const String& buildPath)
|
|
|
return;
|
|
|
if (!BuildCopyFile(buildSourceDir + "/AtomicLoader.js", buildPath_ + "/AtomicLoader.js"))
|
|
|
return;
|
|
|
- if (!BuildCopyFile(buildSourceDir + "/index.html", buildPath_ + "/index.html"))
|
|
|
- return;
|
|
|
- if (!BuildCopyFile(buildSourceDir + "/Atomic_Logo_Header.png", buildPath_ + "/Atomic_Logo_Header.png"))
|
|
|
+
|
|
|
+ // look to see if they specified an ico file, otherwise they get atomic
|
|
|
+ String myIcon = settings->GetFaviconName();
|
|
|
+ if (myIcon.Empty())
|
|
|
+ myIcon = buildSourceDir + "/fav_atomic.ico";
|
|
|
+
|
|
|
+ if (!BuildCopyFile( myIcon, buildPath_ + "/favicon.ico"))
|
|
|
return;
|
|
|
|
|
|
+ // get the title
|
|
|
+ String myTitle = settings->GetAppName();
|
|
|
+ // get the (text) size
|
|
|
+ String myWidth = settings->GetGameWidth();
|
|
|
+ String myHeight = settings->GetGameHeight();
|
|
|
+
|
|
|
+ if ( settings->GetPageTheme() == 0) // editor dark theme
|
|
|
+ {
|
|
|
+ if (!ReadReplace ( buildSourceDir + "/index-dark.html", buildPath_ + "/index.html", myTitle, myWidth, myHeight))
|
|
|
+ return;
|
|
|
+ if (!BuildCopyFile(buildSourceDir + "/Atomic_Logo_Header-i.png", buildPath_ + "/Atomic_Logo_Header-i.png"))
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if ( settings->GetPageTheme() == 1) // editor light theme
|
|
|
+ {
|
|
|
+ if (!ReadReplace(buildSourceDir + "/index-light.html", buildPath_ + "/index.html", myTitle, myWidth, myHeight))
|
|
|
+ return;
|
|
|
+ if (!BuildCopyFile(buildSourceDir + "/Atomic_Logo_Header-w.png", buildPath_ + "/Atomic_Logo_Header-w.png"))
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if ( settings->GetPageTheme() == 2) // Atomic gradient theme
|
|
|
+ {
|
|
|
+ if (!ReadReplace(buildSourceDir + "/index-image.html", buildPath_ + "/index.html", myTitle, myWidth, myHeight))
|
|
|
+ return;
|
|
|
+ if (!BuildCopyFile(buildSourceDir + "/atomic-gradient.jpg", buildPath_ + "/background.jpg"))
|
|
|
+ return;
|
|
|
+ if (!BuildCopyFile(buildSourceDir + "/Atomic_Logo_Header-i.png", buildPath_ + "/Atomic_Logo_Header-i.png"))
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if ( settings->GetPageTheme() == 3) // NY Lake theme
|
|
|
+ {
|
|
|
+ if (!ReadReplace(buildSourceDir + "/index-image.html", buildPath_ + "/index.html", myTitle, myWidth, myHeight))
|
|
|
+ return;
|
|
|
+ if (!BuildCopyFile(buildSourceDir + "/ny-lake.jpg", buildPath_ + "/background.jpg"))
|
|
|
+ return;
|
|
|
+ if (!BuildCopyFile(buildSourceDir + "/Atomic_Logo_Header-i.png", buildPath_ + "/Atomic_Logo_Header-i.png"))
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if ( settings->GetPageTheme() == 4) // Fireworks theme
|
|
|
+ {
|
|
|
+ if (!ReadReplace(buildSourceDir + "/index-image.html", buildPath_ + "/index.html", myTitle, myWidth, myHeight))
|
|
|
+ return;
|
|
|
+ if (!BuildCopyFile(buildSourceDir + "/fireworks.jpg", buildPath_ + "/background.jpg"))
|
|
|
+ return;
|
|
|
+ if (!BuildCopyFile(buildSourceDir + "/Atomic_Logo_Header-i.png", buildPath_ + "/Atomic_Logo_Header-i.png"))
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else // theme 5, the retro (original/old) theme
|
|
|
+ {
|
|
|
+ if (!BuildCopyFile(buildSourceDir + "/index.html", buildPath_ + "/index.html"))
|
|
|
+ return;
|
|
|
+ if (!BuildCopyFile(buildSourceDir + "/Atomic_Logo_Header.png", buildPath_ + "/Atomic_Logo_Header.png"))
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
File file(context_, buildSourceDir + "/AtomicResources_js.template", FILE_READ);
|
|
|
unsigned size = file.GetSize();
|
|
|
|
|
|
@@ -146,4 +210,41 @@ void BuildWeb::Build(const String& buildPath)
|
|
|
|
|
|
}
|
|
|
|
|
|
+bool BuildWeb::ReadReplace ( String infile, String outfile, String title, String width, String height )
|
|
|
+{
|
|
|
+ File file(context_, infile, FILE_READ);
|
|
|
+ if (file.IsOpen())
|
|
|
+ {
|
|
|
+ unsigned size = file.GetSize();
|
|
|
+ SharedArrayPtr<char> buffer(new char[size + 1]);
|
|
|
+ file.Read(buffer.Get(), size);
|
|
|
+ buffer[size] = '\0';
|
|
|
+ String indexstr = (const char*) buffer.Get();
|
|
|
+ file.Close();
|
|
|
+
|
|
|
+ if (!title.Empty())
|
|
|
+ indexstr.Replace("Atomic Game Engine Web Player", title);
|
|
|
+ if (!width.Empty())
|
|
|
+ {
|
|
|
+ // see if the string resolves to a positive integer value
|
|
|
+ int num = atoi(width.CString());
|
|
|
+ if (num > 0 && num < 16384)
|
|
|
+ indexstr.Replace("width=\"800\"", "width=\""+ width + "\"" );
|
|
|
+ }
|
|
|
+ if (!height.Empty())
|
|
|
+ {
|
|
|
+ int num = atoi(height.CString());
|
|
|
+ if (num > 0 && num < 16384)
|
|
|
+ indexstr.Replace("height=\"512\"", "height=\""+ height + "\"" );
|
|
|
+ }
|
|
|
+
|
|
|
+ file.Open(outfile, FILE_WRITE);
|
|
|
+ file.Write(indexstr.CString(), indexstr.Length());
|
|
|
+ file.Close();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
}
|