summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gfx.c24
-rw-r--r--misc_gui.c4
-rw-r--r--order_gui.c45
3 files changed, 39 insertions, 34 deletions
diff --git a/gfx.c b/gfx.c
index e54680453..8ffb5de59 100644
--- a/gfx.c
+++ b/gfx.c
@@ -33,22 +33,19 @@ static byte _string_colorremap[3];
#define DIRTY_BYTES_PER_LINE (MAX_SCREEN_WIDTH / 64)
static byte _dirty_blocks[DIRTY_BYTES_PER_LINE * MAX_SCREEN_HEIGHT / 8];
-
-
-void memcpy_pitch(void *d, void *s, int w, int h, int spitch, int dpitch)
+void memcpy_pitch(void *dst, void *src, int w, int h, int srcpitch, int dstpitch)
{
- byte *dp = (byte*)d;
- byte *sp = (byte*)s;
+ byte *dstp = (byte*)dst;
+ byte *srcp = (byte*)src;
assert(h >= 0);
for (; h != 0; --h) {
- memcpy(dp, sp, w);
- dp += dpitch;
- sp += spitch;
+ memcpy(dstp, srcp, w);
+ dstp += dstpitch;
+ srcp += srcpitch;
}
}
-
void GfxScroll(int left, int top, int width, int height, int xo, int yo)
{
const Pixel *src;
@@ -583,7 +580,14 @@ BoundingRect GetStringBoundingBox(const char *str)
return br;
}
-
+/** Draw a string at the given coordinates with the given colour
+ * @param string the string to draw
+ * @param x offset from left side of the screen, if negative offset from the right side
+ * @param x offset from top side of the screen, if negative offset from the bottom
+ * @param real_color colour of the string, see _string_colormap in
+ * table/palettes.h or docs/ottd-colourtext-palette.png
+ * @return the x-coordinates where the drawing has finished. If nothing is drawn
+ * the originally passed x-coordinate is returned */
int DoDrawString(const char *string, int x, int y, uint16 real_color)
{
DrawPixelInfo *dpi = _cur_dpi;
diff --git a/misc_gui.c b/misc_gui.c
index 854ad7bec..489ee3383 100644
--- a/misc_gui.c
+++ b/misc_gui.c
@@ -1094,12 +1094,12 @@ void ShowQueryString(StringID str, StringID caption, uint maxlen, uint maxwidth,
w = AllocateWindowDesc(&_query_string_desc);
GetString(_edit_str_buf, str, lastof(_edit_str_buf));
- _edit_str_buf[realmaxlen-1] = '\0';
+ _edit_str_buf[realmaxlen - 1] = '\0';
if (maxlen & 0x1000) {
WP(w, querystr_d).orig = NULL;
} else {
- strcpy(_orig_str_buf, _edit_str_buf);
+ strecpy(_orig_str_buf, _edit_str_buf, lastof(_orig_str_buf));
WP(w, querystr_d).orig = _orig_str_buf;
}
diff --git a/order_gui.c b/order_gui.c
index d80f70280..7df67785a 100644
--- a/order_gui.c
+++ b/order_gui.c
@@ -57,11 +57,9 @@ static void DrawOrdersWindow(Window *w)
int sel;
int y, i;
bool shared_orders;
- bool not_localplayer;
byte color;
v = GetVehicle(w->window_number);
- not_localplayer = v->owner != _local_player;
shared_orders = IsOrderListShared(v);
@@ -72,31 +70,32 @@ static void DrawOrdersWindow(Window *w)
order = GetVehicleOrder(v, sel);
- /* skip */
- SetWindowWidgetDisabledState(w, 4, not_localplayer || v->num_orders == 0);
-
- /* delete */
- SetWindowWidgetDisabledState(w, 5, not_localplayer ||
- (uint)v->num_orders + (shared_orders ? 1 : 0) <= (uint)WP(w, order_d).sel);
-
- /* non-stop only for trains */
- SetWindowWidgetDisabledState(w, 6, not_localplayer || v->type != VEH_Train
- || order == NULL);
- SetWindowWidgetDisabledState(w, 7, not_localplayer); // go-to
- SetWindowWidgetDisabledState(w, 8, not_localplayer || order == NULL); // full load
- SetWindowWidgetDisabledState(w, 9, not_localplayer || order == NULL); // unload
- SetWindowWidgetDisabledState(w, 10, not_localplayer || order == NULL); // transfer
- SetWindowWidgetDisabledState(w, 11, !shared_orders || v->orders == NULL); // Disable list of vehicles with the same shared orders if there are no list
- SetWindowWidgetDisabledState(w, 12, not_localplayer || order == NULL); // Refit
-
+ if (v->owner == _local_player) {
+ /* skip */
+ SetWindowWidgetDisabledState(w, 4, v->num_orders == 0);
+
+ /* delete */
+ SetWindowWidgetDisabledState(w, 5,
+ (uint)v->num_orders + (shared_orders ? 1 : 0) <= (uint)WP(w, order_d).sel);
+
+ /* non-stop only for trains */
+ SetWindowWidgetDisabledState(w, 6, v->type != VEH_Train || order == NULL);
+ SetWindowWidgetDisabledState(w, 8, order == NULL); // full load
+ SetWindowWidgetDisabledState(w, 9, order == NULL); // unload
+ SetWindowWidgetDisabledState(w, 10, order == NULL); // transfer
+ /* Disable list of vehicles with the same shared orders if there is no list */
+ SetWindowWidgetDisabledState(w, 11, !shared_orders || v->orders == NULL);
+ SetWindowWidgetDisabledState(w, 12, order == NULL); // Refit
+ } else {
+ DisableWindowWidget(w, 10);
+ }
ShowWindowWidget(w, 9); // Unload
HideWindowWidget(w, 12); // Refit
if (order != NULL) {
switch (order->type) {
- case OT_GOTO_STATION:
- break;
+ case OT_GOTO_STATION: break;
case OT_GOTO_DEPOT:
DisableWindowWidget(w, 10);
@@ -495,6 +494,8 @@ static void OrdersWndProc(Window *w, WindowEvent *e)
Vehicle *v = GetVehicle(w->window_number);
uint i;
+ if (v->owner != _local_player) break;
+
for (i = 0; i < lengthof(_order_keycodes); i++) {
if (e->we.keypress.keycode == _order_keycodes[i]) {
e->we.keypress.cont = false;
@@ -536,7 +537,7 @@ static void OrdersWndProc(Window *w, WindowEvent *e)
* This is because of all open order windows WE_MOUSELOOP is called
* and if you have 3 windows open, and this check is not done
* the order is copied to the last open window instead of the
- * one where GOTO is enalbed
+ * one where GOTO is enabled
*/
if (v != NULL && IsWindowWidgetLowered(w, 7)) {
_place_clicked_vehicle = NULL;