浏览代码

Build events

Josh Engebretson 10 年之前
父节点
当前提交
f16d24a6c6

+ 0 - 0
Source/ToolCore/Build/BuildEvents.cpp


+ 25 - 0
Source/ToolCore/Build/BuildEvents.h

@@ -0,0 +1,25 @@
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// Please see LICENSE.md in repository root for license information
+// https://github.com/AtomicGameEngine/AtomicGameEngine
+
+#pragma once
+
+#include <Atomic/Core/Object.h>
+
+using namespace Atomic;
+
+namespace ToolCore
+{
+
+EVENT(E_BUILDCOMPLETE, BuildComplete)
+{
+    PARAM(P_PLATFORMID, PlatformID); // unsigned (PLATFORMID)
+}
+
+EVENT(E_BUILDFAILED, BuildFailed)
+{
+    PARAM(P_PLATFORMID, PlatformID); // unsigned (PLATFORMID)
+    PARAM(P_MESSAGE, Message); // String
+}
+
+}

+ 12 - 4
Source/ToolCore/Build/BuildSystem.cpp

@@ -13,8 +13,7 @@
 #include "../Project/ProjectUserPrefs.h"
 
 #include "BuildSystem.h"
-#include "BuildWeb.h"
-
+#include "BuildEvents.h"
 
 namespace ToolCore
 {
@@ -35,10 +34,10 @@ bool BuildSystem::StartNextBuild()
     if (!queuedBuilds_.Size())
         return false;
 
-    SharedPtr<BuildBase> build = queuedBuilds_.Front();
+    currentBuild_ = queuedBuilds_.Front();
     queuedBuilds_.PopFront();
 
-    build->Build(buildPath_);
+    currentBuild_->Build(buildPath_);
 
     return true;
 }
@@ -50,11 +49,20 @@ void BuildSystem::QueueBuild(BuildBase* buildBase)
 
 void BuildSystem::BuildComplete(PlatformID platform, const String &buildFolder, bool success, bool fail3D)
 {
+    VariantMap eventData;
 
     if (success)
+    {
+        eventData[BuildComplete::P_PLATFORMID] = (unsigned) platform;
+        SendEvent(E_BUILDCOMPLETE, eventData);
         LOGINFOF("Build Success");
+    }
     else
+    {
+        eventData[BuildFailed::P_PLATFORMID] = (unsigned) platform;
+        SendEvent(E_BUILDFAILED, eventData);
         LOGINFOF("Build Failed");
+    }
 
     currentBuild_ = 0;
 }

+ 14 - 3
Source/ToolCore/Command/BuildCmd.cpp

@@ -5,6 +5,7 @@
 
 #include "../ToolSystem.h"
 #include "../Project/Project.h"
+#include "../Build/BuildEvents.h"
 #include "../Build/BuildSystem.h"
 
 #include "BuildCmd.h"
@@ -45,6 +46,16 @@ bool BuildCmd::Parse(const Vector<String>& arguments, unsigned startIndex, Strin
     return true;
 }
 
+void BuildCmd::HandleBuildComplete(StringHash eventType, VariantMap& eventData)
+{
+    Finished();
+}
+
+void BuildCmd::HandleBuildFailed(StringHash eventType, VariantMap& eventData)
+{
+    Error("Build Failed");
+}
+
 void BuildCmd::Run()
 {
     LOGINFOF("Building project for: %s", buildPlatform_.CString());
@@ -77,12 +88,12 @@ void BuildCmd::Run()
 
     buildSystem->QueueBuild(buildBase);
 
+    SubscribeToEvent(E_BUILDCOMPLETE, HANDLER(BuildCmd, HandleBuildComplete));
+    SubscribeToEvent(E_BUILDFAILED, HANDLER(BuildCmd, HandleBuildFailed));
+
     // TODO: parallel/serial builds
     buildSystem->StartNextBuild();
 
-    // clear the current platform
-    //tsystem->SetCurrentPlatform(PLATFORMID_UNDEFINED);
-    //Finished();
 }
 
 }

+ 3 - 0
Source/ToolCore/Command/BuildCmd.h

@@ -23,6 +23,9 @@ public:
 
 private:
 
+    void HandleBuildComplete(StringHash eventType, VariantMap& eventData);
+    void HandleBuildFailed(StringHash eventType, VariantMap& eventData);
+
     String buildPlatform_;
 
 };