Files
@ r20758:f233b5e2cdd2
Branch filter:
Location: cpp/openttd-patchpack/source/src/signs_cmd.cpp - annotation
r20758:f233b5e2cdd2
4.0 KiB
text/x-c
(svn r25801) -Update from WebTranslator v3.0:
estonian - 4 changes by notAbot
japanese - 5 changes by guppy
slovenian - 1 changes by matej1245
estonian - 4 changes by notAbot
japanese - 5 changes by guppy
slovenian - 1 changes by matej1245
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | r11345:85f52e96797f r11345:85f52e96797f r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r17625:366001a31c88 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r13057:58af81fcdcf8 r13057:58af81fcdcf8 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11725:57bc99fdc1bc r11345:85f52e96797f r11345:85f52e96797f r16672:c10913372b81 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r18969:91e591a12593 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r18245:fb370bf5a3c0 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r12381:5e06b887e97b r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r15610:623a23fb6560 r15610:623a23fb6560 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r13057:58af81fcdcf8 r13057:58af81fcdcf8 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11944:3b8f9f948e8d r11944:3b8f9f948e8d r18969:91e591a12593 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r16672:c10913372b81 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r18969:91e591a12593 r11345:85f52e96797f r12381:5e06b887e97b r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r12334:57fa457522c9 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r14220:2b66d13ca715 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r14220:2b66d13ca715 r11345:85f52e96797f r14220:2b66d13ca715 r14220:2b66d13ca715 r14220:2b66d13ca715 r14220:2b66d13ca715 r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11345:85f52e96797f r11725:57bc99fdc1bc r11345:85f52e96797f | /* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @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 "tilehighlight_func.h"
#include "window_func.h"
#include "string_func.h"
#include "table/strings.h"
/** The last built sign. */
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
* @param text unused
* @return the cost of this operation or an error
*/
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_ERROR_TOO_MANY_SIGNS);
/* Check sign text length if any */
if (!StrEmpty(text) && Utf8StringLength(text) >= MAX_LENGTH_SIGN_NAME_CHARS) return CMD_ERROR;
/* When we execute, really make the sign */
if (flags & DC_EXEC) {
Sign *si = new Sign(_game_mode == GM_EDITOR ? OWNER_DEITY : _current_company);
int x = TileX(tile) * TILE_SIZE;
int y = TileY(tile) * TILE_SIZE;
si->x = x;
si->y = y;
si->z = GetSlopePixelZ(x, y);
if (!StrEmpty(text)) {
si->name = strdup(text);
}
si->UpdateVirtCoord();
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
* @param text the new name or an empty string when resetting to the default
* @return the cost of this operation or an error
*/
CommandCost CmdRenameSign(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
{
Sign *si = Sign::GetIfValid(p1);
if (si == NULL) return CMD_ERROR;
if (si->owner == OWNER_DEITY && _current_company != OWNER_DEITY && _game_mode != GM_EDITOR) return CMD_ERROR;
/* Rename the signs when empty, otherwise remove it */
if (!StrEmpty(text)) {
if (Utf8StringLength(text) >= MAX_LENGTH_SIGN_NAME_CHARS) return CMD_ERROR;
if (flags & DC_EXEC) {
/* Delete the old name */
free(si->name);
/* Assign the new one */
si->name = strdup(text);
if (_game_mode != GM_EDITOR) si->owner = _current_company;
si->UpdateVirtCoord();
InvalidateWindowData(WC_SIGN_LIST, 0, 1);
}
} else { // Delete sign
if (flags & DC_EXEC) {
si->sign.MarkDirty();
delete si;
InvalidateWindowData(WC_SIGN_LIST, 0, 0);
}
}
return CommandCost();
}
/**
* Callback function that is called after a sign is placed
* @param result of the operation
* @param tile unused
* @param p1 unused
* @param p2 unused
*/
void CcPlaceSign(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
{
if (result.Failed()) return;
ShowRenameSignWindow(Sign::Get(_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_ERROR_CAN_T_PLACE_SIGN_HERE), CcPlaceSign);
}
|