diff --git a/projects/openttd_vs140.vcxproj b/projects/openttd_vs140.vcxproj
index 5bc6254ff7..835d1e8ebd 100644
--- a/projects/openttd_vs140.vcxproj
+++ b/projects/openttd_vs140.vcxproj
@@ -1348,6 +1348,13 @@
+
+
+
+
+
+
+
diff --git a/projects/openttd_vs140.vcxproj.filters b/projects/openttd_vs140.vcxproj.filters
index 0405740d4c..f7f90603a6 100644
--- a/projects/openttd_vs140.vcxproj.filters
+++ b/projects/openttd_vs140.vcxproj.filters
@@ -100,6 +100,9 @@
{c76ff9f1-1e62-46d8-8d55-000000000032}
+
+ {c76ff9f1-1e62-46d8-8d55-000000000033}
+
@@ -3132,6 +3135,27 @@
Threading
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
diff --git a/projects/openttd_vs141.vcxproj b/projects/openttd_vs141.vcxproj
index 8df3d47daf..d290f90500 100644
--- a/projects/openttd_vs141.vcxproj
+++ b/projects/openttd_vs141.vcxproj
@@ -1348,6 +1348,13 @@
+
+
+
+
+
+
+
diff --git a/projects/openttd_vs141.vcxproj.filters b/projects/openttd_vs141.vcxproj.filters
index 0405740d4c..f7f90603a6 100644
--- a/projects/openttd_vs141.vcxproj.filters
+++ b/projects/openttd_vs141.vcxproj.filters
@@ -100,6 +100,9 @@
{c76ff9f1-1e62-46d8-8d55-000000000032}
+
+ {c76ff9f1-1e62-46d8-8d55-000000000033}
+
@@ -3132,6 +3135,27 @@
Threading
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
diff --git a/projects/openttd_vs142.vcxproj b/projects/openttd_vs142.vcxproj
index 487bb95fd3..3b8e8e34fe 100644
--- a/projects/openttd_vs142.vcxproj
+++ b/projects/openttd_vs142.vcxproj
@@ -1348,6 +1348,13 @@
+
+
+
+
+
+
+
diff --git a/projects/openttd_vs142.vcxproj.filters b/projects/openttd_vs142.vcxproj.filters
index 0405740d4c..f7f90603a6 100644
--- a/projects/openttd_vs142.vcxproj.filters
+++ b/projects/openttd_vs142.vcxproj.filters
@@ -100,6 +100,9 @@
{c76ff9f1-1e62-46d8-8d55-000000000032}
+
+ {c76ff9f1-1e62-46d8-8d55-000000000033}
+
@@ -3132,6 +3135,27 @@
Threading
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
+
+ CityMania
+
diff --git a/source.list b/source.list
index fd68c010e8..3d1d04c4b1 100644
--- a/source.list
+++ b/source.list
@@ -1191,3 +1191,12 @@ sound/null_s.cpp
# Threading
thread.h
+
+# CityMania
+citymania/cm_event.hpp
+citymania/cm_game.hpp
+citymania/cm_game.cpp
+citymania/cm_main.hpp
+citymania/cm_main.cpp
+citymania/cm_type.hpp
+citymania/extensions/cmext_town.hpp
diff --git a/src/citymania/cm_event.hpp b/src/citymania/cm_event.hpp
new file mode 100644
index 0000000000..9fd7c122ac
--- /dev/null
+++ b/src/citymania/cm_event.hpp
@@ -0,0 +1,123 @@
+#ifndef CM_EVENT_HPP
+#define CM_EVENT_HPP
+
+#include "cm_type.hpp"
+#include "../cargo_type.h"
+#include "../company_type.h"
+#include "../economy_type.h"
+#include "../station_type.h"
+#include "../town_type.h"
+
+#include
+#include