summaryrefslogtreecommitdiff
path: root/src/goal_gui.cpp
diff options
context:
space:
mode:
authorzuu <zuu@openttd.org>2013-11-16 17:41:57 +0000
committerzuu <zuu@openttd.org>2013-11-16 17:41:57 +0000
commit6fc653d2d729d8a5c0efeba9f588e6523c3ea13d (patch)
tree76a9ebd0678eee9121a811696a8de6e1f6cb5681 /src/goal_gui.cpp
parentf10d2417d8922f7243bcd7e4582bb1a329f6b86c (diff)
downloadopenttd-6fc653d2d729d8a5c0efeba9f588e6523c3ea13d.tar.xz
(svn r26012) -Add: new goal type that show a story page when clicked
Diffstat (limited to 'src/goal_gui.cpp')
-rw-r--r--src/goal_gui.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/goal_gui.cpp b/src/goal_gui.cpp
index e7112ba20..caa04e544 100644
--- a/src/goal_gui.cpp
+++ b/src/goal_gui.cpp
@@ -21,6 +21,7 @@
#include "core/geometry_func.hpp"
#include "company_func.h"
#include "company_base.h"
+#include "story_base.h"
#include "command_func.h"
#include "widgets/goal_widget.h"
@@ -122,6 +123,21 @@ struct GoalListWindow : public Window {
xy = Town::Get(s->dst)->xy;
break;
+ case GT_STORY_PAGE: {
+ if (!StoryPage::IsValidID(s->dst)) return;
+
+ /* Verify that:
+ * - if global goal: story page must be global.
+ * - if company goal: story page must be global or of the same company.
+ */
+ CompanyID goal_company = s->company;
+ CompanyID story_company = StoryPage::Get(s->dst)->company;
+ if (goal_company == INVALID_COMPANY ? story_company != INVALID_COMPANY : story_company != INVALID_COMPANY && story_company != goal_company) return;
+
+ ShowStoryBook((CompanyID)this->window_number, s->dst);
+ return;
+ }
+
default: NOT_REACHED();
}