changeset 11350:8a62f1cb73a3 draft

(svn r15700) -Codechange: split Cmd* from signs.cpp to signs_cmd.cpp.
author rubidium <rubidium@openttd.org>
date Fri, 13 Mar 2009 20:29:35 +0000
parents bf07f69e1221
children 11acaad65229
files projects/openttd_vs80.vcproj projects/openttd_vs90.vcproj source.list src/signs.cpp src/signs_cmd.cpp src/signs_func.h src/vehicle_cmd.cpp
diffstat 7 files changed, 143 insertions(+), 120 deletions(-) [+]
line wrap: on
line diff
--- a/projects/openttd_vs80.vcproj
+++ b/projects/openttd_vs80.vcproj
@@ -1972,6 +1972,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\signs_cmd.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\station_cmd.cpp"
 				>
 			</File>
--- a/projects/openttd_vs90.vcproj
+++ b/projects/openttd_vs90.vcproj
@@ -1969,6 +1969,10 @@
 				>
 			</File>
 			<File
+				RelativePath=".\..\src\signs_cmd.cpp"
+				>
+			</File>
+			<File
 				RelativePath=".\..\src\station_cmd.cpp"
 				>
 			</File>
--- a/source.list
+++ b/source.list
@@ -441,6 +441,7 @@
 road_cmd.cpp
 roadveh_cmd.cpp
 ship_cmd.cpp
+signs_cmd.cpp
 station_cmd.cpp
 terraform_cmd.cpp
 timetable_cmd.cpp
--- a/src/signs.cpp
+++ b/src/signs.cpp
@@ -4,24 +4,17 @@
 
 #include "stdafx.h"
 #include "landscape.h"
-#include "company_func.h"
 #include "signs_base.h"
 #include "signs_func.h"
-#include "command_func.h"
 #include "strings_func.h"
 #include "viewport_func.h"
-#include "tilehighlight_func.h"
 #include "zoom_func.h"
 #include "functions.h"
 #include "window_func.h"
-#include "map_func.h"
-#include "string_func.h"
 #include "oldpool_func.h"
 
 #include "table/strings.h"
 
-SignID _new_sign_id;
-
 /* Initialize the sign-pool */
 DEFINE_OLD_POOL_GENERIC(Sign, Sign)
 
@@ -46,7 +39,7 @@
  * @param si Pointer to the Sign
  *
  */
-static void UpdateSignVirtCoords(Sign *si)
+void UpdateSignVirtCoords(Sign *si)
 {
 	Point pt = RemapCoords(si->x, si->y, si->z);
 	SetDParam(0, si->index);
@@ -69,7 +62,7 @@
  * @param si Pointer to the Sign
  * @ingroup dirty
  */
-static void MarkSignDirty(Sign *si)
+void MarkSignDirty(Sign *si)
 {
 	/* We use ZOOM_LVL_MAX here, as every viewport can have an other zoom,
 		*  and there is no way for us to know which is the biggest. So make the
@@ -82,116 +75,6 @@
 }
 
 /**
- * Place a sign at the given coordinates. Ownership of sign has
- * no effect whatsoever except for the colour the sign gets for easy recognition,
- * but everybody is able to rename/remove it.
- * @param tile tile to place sign at
- * @param flags type of operation
- * @param p1 unused
- * @param p2 unused
- */
-CommandCost CmdPlaceSign(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
-{
-	/* Try to locate a new sign */
-	if (!Sign::CanAllocateItem()) return_cmd_error(STR_2808_TOO_MANY_SIGNS);
-
-	/* Check sign text length if any */
-	if (!StrEmpty(text) && strlen(text) >= MAX_LENGTH_SIGN_NAME_BYTES) return CMD_ERROR;
-
-	/* When we execute, really make the sign */
-	if (flags & DC_EXEC) {
-		Sign *si = new Sign(_current_company);
-		int x = TileX(tile) * TILE_SIZE;
-		int y = TileY(tile) * TILE_SIZE;
-
-		si->x = x;
-		si->y = y;
-		si->z = GetSlopeZ(x, y);
-		if (!StrEmpty(text)) {
-			si->name = strdup(text);
-		}
-		UpdateSignVirtCoords(si);
-		MarkSignDirty(si);
-		InvalidateWindowData(WC_SIGN_LIST, 0, 0);
-		_new_sign_id = si->index;
-	}
-
-	return CommandCost();
-}
-
-/** Rename a sign. If the new name of the sign is empty, we assume
- * the user wanted to delete it. So delete it. Ownership of signs
- * has no meaning/effect whatsoever except for eyecandy
- * @param tile unused
- * @param flags type of operation
- * @param p1 index of the sign to be renamed/removed
- * @param p2 unused
- * @return 0 if succesfull, otherwise CMD_ERROR
- */
-CommandCost CmdRenameSign(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
-{
-	if (!IsValidSignID(p1)) return CMD_ERROR;
-
-	/* Rename the signs when empty, otherwise remove it */
-	if (!StrEmpty(text)) {
-		if (strlen(text) >= MAX_LENGTH_SIGN_NAME_BYTES) return CMD_ERROR;
-
-		if (flags & DC_EXEC) {
-			Sign *si = GetSign(p1);
-
-			/* Delete the old name */
-			free(si->name);
-			/* Assign the new one */
-			si->name = strdup(text);
-			si->owner = _current_company;
-
-			/* Update; mark sign dirty twice, because it can either becom longer, or shorter */
-			MarkSignDirty(si);
-			UpdateSignVirtCoords(si);
-			MarkSignDirty(si);
-			InvalidateWindowData(WC_SIGN_LIST, 0, 1);
-		}
-	} else { // Delete sign
-		if (flags & DC_EXEC) {
-			Sign *si = GetSign(p1);
-
-			MarkSignDirty(si);
-			delete si;
-
-			InvalidateWindowData(WC_SIGN_LIST, 0, 0);
-		}
-	}
-
-	return CommandCost();
-}
-
-/**
- * Callback function that is called after a sign is placed
- * @param success of the operation
- * @param tile unused
- * @param p1 unused
- * @param p2 unused
- */
-void CcPlaceSign(bool success, TileIndex tile, uint32 p1, uint32 p2)
-{
-	if (success) {
-		ShowRenameSignWindow(GetSign(_new_sign_id));
-		ResetObjectToPlace();
-	}
-}
-
-/**
- *
- * PlaceProc function, called when someone pressed the button if the
- *  sign-tool is selected
- * @param tile on which to place the sign
- */
-void PlaceProc_Sign(TileIndex tile)
-{
-	DoCommandP(tile, 0, 0, CMD_PLACE_SIGN | CMD_MSG(STR_2809_CAN_T_PLACE_SIGN_HERE), CcPlaceSign);
-}
-
-/**
  *
  * Initialize the signs
  *
new file mode 100644
--- /dev/null
+++ b/src/signs_cmd.cpp
@@ -0,0 +1,129 @@
+/* $Id$ */
+
+/** @file signs_cmd.cpp Handling of sign related commands. */
+
+#include "stdafx.h"
+#include "landscape.h"
+#include "company_func.h"
+#include "signs_base.h"
+#include "signs_func.h"
+#include "command_func.h"
+#include "strings_func.h"
+#include "tilehighlight_func.h"
+#include "window_func.h"
+#include "map_func.h"
+#include "string_func.h"
+
+#include "table/strings.h"
+
+SignID _new_sign_id;
+
+/**
+ * Place a sign at the given coordinates. Ownership of sign has
+ * no effect whatsoever except for the colour the sign gets for easy recognition,
+ * but everybody is able to rename/remove it.
+ * @param tile tile to place sign at
+ * @param flags type of operation
+ * @param p1 unused
+ * @param p2 unused
+ */
+CommandCost CmdPlaceSign(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
+{
+	/* Try to locate a new sign */
+	if (!Sign::CanAllocateItem()) return_cmd_error(STR_2808_TOO_MANY_SIGNS);
+
+	/* Check sign text length if any */
+	if (!StrEmpty(text) && strlen(text) >= MAX_LENGTH_SIGN_NAME_BYTES) return CMD_ERROR;
+
+	/* When we execute, really make the sign */
+	if (flags & DC_EXEC) {
+		Sign *si = new Sign(_current_company);
+		int x = TileX(tile) * TILE_SIZE;
+		int y = TileY(tile) * TILE_SIZE;
+
+		si->x = x;
+		si->y = y;
+		si->z = GetSlopeZ(x, y);
+		if (!StrEmpty(text)) {
+			si->name = strdup(text);
+		}
+		UpdateSignVirtCoords(si);
+		MarkSignDirty(si);
+		InvalidateWindowData(WC_SIGN_LIST, 0, 0);
+		_new_sign_id = si->index;
+	}
+
+	return CommandCost();
+}
+
+/** Rename a sign. If the new name of the sign is empty, we assume
+ * the user wanted to delete it. So delete it. Ownership of signs
+ * has no meaning/effect whatsoever except for eyecandy
+ * @param tile unused
+ * @param flags type of operation
+ * @param p1 index of the sign to be renamed/removed
+ * @param p2 unused
+ * @return 0 if succesfull, otherwise CMD_ERROR
+ */
+CommandCost CmdRenameSign(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
+{
+	if (!IsValidSignID(p1)) return CMD_ERROR;
+
+	/* Rename the signs when empty, otherwise remove it */
+	if (!StrEmpty(text)) {
+		if (strlen(text) >= MAX_LENGTH_SIGN_NAME_BYTES) return CMD_ERROR;
+
+		if (flags & DC_EXEC) {
+			Sign *si = GetSign(p1);
+
+			/* Delete the old name */
+			free(si->name);
+			/* Assign the new one */
+			si->name = strdup(text);
+			si->owner = _current_company;
+
+			/* Update; mark sign dirty twice, because it can either becom longer, or shorter */
+			MarkSignDirty(si);
+			UpdateSignVirtCoords(si);
+			MarkSignDirty(si);
+			InvalidateWindowData(WC_SIGN_LIST, 0, 1);
+		}
+	} else { // Delete sign
+		if (flags & DC_EXEC) {
+			Sign *si = GetSign(p1);
+
+			MarkSignDirty(si);
+			delete si;
+
+			InvalidateWindowData(WC_SIGN_LIST, 0, 0);
+		}
+	}
+
+	return CommandCost();
+}
+
+/**
+ * Callback function that is called after a sign is placed
+ * @param success of the operation
+ * @param tile unused
+ * @param p1 unused
+ * @param p2 unused
+ */
+void CcPlaceSign(bool success, TileIndex tile, uint32 p1, uint32 p2)
+{
+	if (success) {
+		ShowRenameSignWindow(GetSign(_new_sign_id));
+		ResetObjectToPlace();
+	}
+}
+
+/**
+ *
+ * PlaceProc function, called when someone pressed the button if the
+ *  sign-tool is selected
+ * @param tile on which to place the sign
+ */
+void PlaceProc_Sign(TileIndex tile)
+{
+	DoCommandP(tile, 0, 0, CMD_PLACE_SIGN | CMD_MSG(STR_2809_CAN_T_PLACE_SIGN_HERE), CcPlaceSign);
+}
--- a/src/signs_func.h
+++ b/src/signs_func.h
@@ -11,6 +11,8 @@
 
 void UpdateAllSignVirtCoords();
 void PlaceProc_Sign(TileIndex tile);
+void MarkSignDirty(Sign *si);
+void UpdateSignVirtCoords(Sign *si);
 
 /* signs_gui.cpp */
 void ShowRenameSignWindow(const Sign *si);
--- a/src/vehicle_cmd.cpp
+++ b/src/vehicle_cmd.cpp
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/** @file vehicle.cpp Base implementations of all vehicles. */
+/** @file vehicle_cmd.cpp Commands for vehicles. */
 
 #include "stdafx.h"
 #include "openttd.h"