mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 06:15:04 +00:00
(svn r223) -Fix: Const correctness and miscellaneous fixes. Thank you Tron for your diligent fixing of warnings (and some possibly bugs) (Tron)
-CodeLayout: Remove trailing spaces and Windows linebreaks
This commit is contained in:
parent
1b498bca57
commit
e295e46e3e
20
Jamfile.next
20
Jamfile.next
@ -12,7 +12,7 @@ CFILES = ai.c aircraft_cmd.c aircraft_gui.c airport_gui.c
|
||||
strings.c subsidy_gui.c texteff.c town_cmd.c town_gui.c
|
||||
train_cmd.c train_gui.c tree_cmd.c ttd.c
|
||||
tunnelbridge_cmd.c unmovable_cmd.c vehicle.c
|
||||
viewport.c water_cmd.c widget.c window.c screenshot.c
|
||||
viewport.c water_cmd.c widget.c window.c screenshot.c
|
||||
airport.c grfspecial.c terraform_gui.c ;
|
||||
|
||||
|
||||
@ -28,10 +28,10 @@ if $(UNIX) {
|
||||
LINKFLAGS += $(SDL_CONFIG_LIBS) ;
|
||||
CC = gcc ;
|
||||
CCFLAGS += -Wall -Wno-multichar -DUNIX -DWITH_SDL ;
|
||||
|
||||
|
||||
OPTIMFLAGS = -O2 -fomit-frame-pointer ;
|
||||
DEBUGFLAGS = -g ;
|
||||
|
||||
|
||||
# also include extmidi
|
||||
CFILES += extmidi.c unix.c ;
|
||||
|
||||
@ -64,7 +64,7 @@ if $(UNIX) {
|
||||
####################
|
||||
|
||||
actions ActWin32Res {
|
||||
$(VISUALC)\\..\\common\\msdev98\\bin\\rc /r /i $(STDHDRS) /fo $(<) $(>)
|
||||
$(VISUALC)\\..\\common\\msdev98\\bin\\rc /r /i $(STDHDRS) /fo $(<) $(>)
|
||||
}
|
||||
|
||||
rule Win32Res { ActWin32Res $(<) : $(>) ; DEPENDS $(<) : $(>) ; }
|
||||
@ -73,11 +73,11 @@ if $(TOOLSET) = VISUALC {
|
||||
OPTIMFLAGS = /Oa /Os /Ow /Oy /Oi /Og /Ox /Gr /Gf /Gy /Zp4 /J /WX /W3 -DNDEBUG ;
|
||||
|
||||
CCFLAGS += -DWIN32 -DWIN32_EXCEPTION_TRACKER ;
|
||||
CFILES += win32.c ;
|
||||
CFILES += win32.c ;
|
||||
LINKFLAGS += /opt:nowin98 /LIBPATH:$(VISUALC)\\lib ;
|
||||
|
||||
|
||||
LINKLIBS = ws2_32.lib winmm.lib user32.lib gdi32.lib ;
|
||||
|
||||
|
||||
# compile resources too
|
||||
EOBJ = ttd.res ;
|
||||
Win32Res ttd.res : ttd.rc ;
|
||||
@ -93,7 +93,7 @@ if $(TOOLSET) = VISUALC {
|
||||
CCFLAGS += -DWITH_ZLIB ;
|
||||
LINKLIBS += zlibstat.lib ;
|
||||
}
|
||||
|
||||
|
||||
# build release by default
|
||||
RELEASE = 1 ;
|
||||
}
|
||||
@ -107,7 +107,7 @@ rule MyObjects {
|
||||
|
||||
_t = $(OUTDIR)/$(>:S=$(SUFOBJ)) ;
|
||||
OPTIM on $(_t) = $(3) ;
|
||||
|
||||
|
||||
MkDir $(OUTDIR) ;
|
||||
Depends $(_t) : $(OUTDIR) ;
|
||||
|
||||
@ -142,7 +142,7 @@ rule LangFile {
|
||||
} else {
|
||||
CompileLang $(<) : $(>) ;
|
||||
}
|
||||
|
||||
|
||||
Clean clean : $(<) ;
|
||||
DEPENDS $(<) : $(>) ;
|
||||
DEPENDS all : $(<) ;
|
||||
|
20
Makefile
20
Makefile
@ -59,12 +59,12 @@
|
||||
# a <TODO> mark)
|
||||
# RELEASE: this will be the released version number. It replaces all places
|
||||
# where it normally would print the revision number
|
||||
# MIDI: if set, it will use it as custom path to midi player.
|
||||
# MIDI: if set, it will use it as custom path to midi player.
|
||||
# If unset, it will use the hardcoded path in the c code
|
||||
# NOVERBOSE: supress all warnings and errors during compilation.
|
||||
# NOVERBOSE: supress all warnings and errors during compilation.
|
||||
# It looks nicer, but you will not know what went wrong. Use it on released (stable) sources only
|
||||
#
|
||||
# DATA_DIR_PREFIX: This sets the dir OpenTTD looks for the needed files.
|
||||
# DATA_DIR_PREFIX: This sets the dir OpenTTD looks for the needed files.
|
||||
# MUST END WITH / if defined
|
||||
#
|
||||
# STATIC: link statically
|
||||
@ -134,14 +134,14 @@ endif
|
||||
# Verbose filter
|
||||
|
||||
ifdef NOVERBOSE
|
||||
VERBOSE_FILTER = >/dev/null 2>&1
|
||||
VERBOSE_FILTER = >/dev/null 2>&1
|
||||
else
|
||||
VERBOSE_FILTER =
|
||||
VERBOSE_FILTER =
|
||||
endif
|
||||
|
||||
ifdef DISPLAY_WARNINGS
|
||||
WARNING_DISPLAY:=-fstrict-aliasing
|
||||
VERBOSE_FILTER =
|
||||
VERBOSE_FILTER =
|
||||
else
|
||||
WARNING_DISPLAY:=-fno-strict-aliasing
|
||||
endif
|
||||
@ -517,14 +517,14 @@ endif
|
||||
all: endian.h $(UPDATECONFIG) $(TTD) $(OSX) $(endwarnings)
|
||||
|
||||
endian.h: $(ENDIAN_CHECK)
|
||||
@# Check if system is LITTLE_ENDIAN or BIG_ENDIAN
|
||||
@# Check if system is LITTLE_ENDIAN or BIG_ENDIAN
|
||||
@echo 'Running endian_check'; \
|
||||
./$(ENDIAN_CHECK) > $@
|
||||
|
||||
$(ENDIAN_CHECK): endian_check.c
|
||||
@echo 'Compiling and Linking $@'; \
|
||||
$(CC) $(BASECFLAGS) $(CDEFS) endian_check.c -o $@
|
||||
|
||||
|
||||
|
||||
$(TTD): table/strings.h $(ttd_OBJS) $(LANGS) $(MAKE_CONFIG)
|
||||
@echo 'Compiling and Linking $@'; \
|
||||
@ -555,7 +555,7 @@ $(STRGEN): strgen/strgen.c rev.o
|
||||
lang/english.lng: lang/english.txt $(STRGEN)
|
||||
@echo 'Generating $@'; \
|
||||
$(STRGEN)
|
||||
|
||||
|
||||
table/strings.h: lang/english.lng
|
||||
|
||||
lang/%.lng: lang/%.txt $(STRGEN)
|
||||
@ -621,7 +621,7 @@ love:
|
||||
|
||||
### Automatic configuration
|
||||
-include $(CONFIG_WRITER)
|
||||
|
||||
|
||||
|
||||
# Export all variables set to subprocesses (a bit dirty)
|
||||
.EXPORT_ALL_VARIABLES:
|
||||
|
@ -88,7 +88,7 @@ static void AirportFTAClass_Constructor(AirportFTAClass *Airport,
|
||||
Airport->nofhelipadgroups = nofhelipadgroups;
|
||||
Airport->acc_planes = acc_planes;
|
||||
Airport->entry_point = entry_point;
|
||||
Airport->airport_depots = (uint16*)depots;
|
||||
Airport->airport_depots = (const uint16*)depots;
|
||||
|
||||
|
||||
// build the state machine
|
||||
|
18
airport.h
18
airport.h
@ -25,15 +25,15 @@ enum {
|
||||
|
||||
// Finite sTate mAchine --> FTA
|
||||
typedef struct AirportFTAClass {
|
||||
byte nofelements; // number of positions the airport consists of
|
||||
byte nofterminals; // number of terminals this airport has
|
||||
byte nofterminalgroups; // terminals belong to so many groups (MAX is the nofterminals)
|
||||
byte nofhelipads; // number of helipads this airport has
|
||||
byte nofhelipadgroups; // helipads belong to so many groups (MAX is the nofhelipads)
|
||||
byte entry_point; // when an airplane arrives at this airport, enter it at position entry_point
|
||||
byte acc_planes; // accept airplanes or helicopters or both
|
||||
uint16 *airport_depots; // gives the position of the depots on the airports
|
||||
struct AirportFTA *layout; // state machine for airport
|
||||
byte nofelements; // number of positions the airport consists of
|
||||
byte nofterminals; // number of terminals this airport has
|
||||
byte nofterminalgroups; // terminals belong to so many groups (MAX is the nofterminals)
|
||||
byte nofhelipads; // number of helipads this airport has
|
||||
byte nofhelipadgroups; // helipads belong to so many groups (MAX is the nofhelipads)
|
||||
byte entry_point; // when an airplane arrives at this airport, enter it at position entry_point
|
||||
byte acc_planes; // accept airplanes or helicopters or both
|
||||
const uint16 *airport_depots; // gives the position of the depots on the airports
|
||||
struct AirportFTA *layout; // state machine for airport
|
||||
} AirportFTAClass;
|
||||
|
||||
// internal structure used in openttd - Finite sTate mAchine --> FTA
|
||||
|
@ -5,7 +5,7 @@
|
||||
- Feature: improved german town name generator
|
||||
- Change: scenarios now have the file extension .scn
|
||||
- Fix: removing and upgrading tracks under a bridge when a train is on the bridge
|
||||
- Change: default network port from 12345 (known trojan) to 3979
|
||||
- Change: default network port from 12345 (known trojan) to 3979
|
||||
- Fix: pause button was not synched in network games
|
||||
- Fix: crash caused by invalid screen resolutions
|
||||
- Fix: AI can not build tubular bridges in 1950, etc. Same restrictions apply to it, as to human players.
|
||||
@ -29,7 +29,7 @@
|
||||
- Fix: 80% CPU load paused in fast-forward
|
||||
- Feature: Enabled 'remove' button for stations
|
||||
- Feature: Cheat GUI (activate with crtl-alt-c) The game remembers if you have used a cheat
|
||||
- Fix: Some airport runways were treated
|
||||
- Fix: Some airport runways were treated
|
||||
- Fix: minor minimap glitch
|
||||
- Fix: station sorting scroll fails with not ennough stations
|
||||
- Fix: desert ground for depots in the desert
|
||||
@ -58,7 +58,7 @@
|
||||
- Fix: allow deleting a bridge if a vehicle is below
|
||||
- Fix: crash loading a scenario
|
||||
- Fix: build tracks on water
|
||||
- Fix: fast forward button pressed with tab
|
||||
- Fix: fast forward button pressed with tab
|
||||
- Fix: vehicles don't get old
|
||||
- Feature: realistic train reversing
|
||||
- Feature: added support for 64 bit CPUs
|
||||
|
154
console.c
154
console.c
@ -207,9 +207,9 @@ void IConsoleInit()
|
||||
}
|
||||
IConsoleStdLibRegister();
|
||||
#if defined(WITH_REV)
|
||||
IConsolePrintF(13,"OpenTTD Game Console Revision 3 - %s",_openttd_revision);
|
||||
IConsolePrintF(13,"OpenTTD Game Console Revision 4 - %s",_openttd_revision);
|
||||
#else
|
||||
IConsolePrint(13,"OpenTTD Game Console Revision 3");
|
||||
IConsolePrint(13,"OpenTTD Game Console Revision 4");
|
||||
#endif
|
||||
IConsolePrint(12,"---------------------------------");
|
||||
IConsolePrint(12,"use \"help\" for more info");
|
||||
@ -269,16 +269,16 @@ void IConsoleOpen()
|
||||
if (_iconsole_mode==ICONSOLE_CLOSED) IConsoleSwitch();
|
||||
}
|
||||
|
||||
void IConsoleCmdBufferAdd(byte * cmd)
|
||||
void IConsoleCmdBufferAdd(const byte * cmd)
|
||||
{
|
||||
int i;
|
||||
if (_iconsole_cmdbufferpos != 19) return;
|
||||
if (_iconsole_cmdbuffer[18]!=NULL) free(_iconsole_cmdbuffer[18]);
|
||||
for (i=18; i>0; i--) _iconsole_cmdbuffer[i]=_iconsole_cmdbuffer[i-1];
|
||||
i=strlen((char *)cmd);
|
||||
i=strlen(cmd);
|
||||
_iconsole_cmdbuffer[0]=malloc(i+1);
|
||||
memset(((void *)_iconsole_cmdbuffer[0]),0,i+1);
|
||||
memcpy(((void *)_iconsole_cmdbuffer[0]),(void *)cmd,i);
|
||||
memcpy(((void *)_iconsole_cmdbuffer[0]),cmd,i);
|
||||
_iconsole_cmdbuffer[0][i]=0;
|
||||
_iconsole_cmdbufferpos = 19;
|
||||
}
|
||||
@ -303,7 +303,7 @@ void IConsoleCmdBufferNavigate(signed char direction)
|
||||
_iconsole_cmdpos =strlen(_iconsole_cmdbuffer[i]);
|
||||
}
|
||||
|
||||
void IConsolePrint(byte color_code, byte* string)
|
||||
void IConsolePrint(byte color_code, const byte* string)
|
||||
{
|
||||
byte * _ex;
|
||||
byte * _new;
|
||||
@ -314,7 +314,7 @@ void IConsolePrint(byte color_code, byte* string)
|
||||
if (!_iconsole_inited) return;
|
||||
|
||||
_newc=color_code;
|
||||
i=strlen((char *)string);
|
||||
i=strlen(string);
|
||||
_new=malloc(i+1);
|
||||
memset(_new,0,i+1);
|
||||
memcpy(_new,string,i);
|
||||
@ -354,22 +354,22 @@ void IConsoleDebug(byte* string)
|
||||
if (_stdlib_developer>1) IConsolePrintF(_iconsole_color_debug, "DEBUG: %s", string);
|
||||
}
|
||||
|
||||
void IConsoleError(byte* string)
|
||||
void IConsoleError(const byte* string)
|
||||
{
|
||||
if (_stdlib_developer>0) IConsolePrintF(_iconsole_color_error, "ERROR: %s", string);
|
||||
}
|
||||
|
||||
void IConsoleCmdRegister(byte * name, void * addr)
|
||||
void IConsoleCmdRegister(const byte * name, void * addr)
|
||||
{
|
||||
byte * _new;
|
||||
_iconsole_cmd * item;
|
||||
_iconsole_cmd * item_new;
|
||||
int i;
|
||||
|
||||
i=strlen((char *)name);
|
||||
_new=malloc(i+1);
|
||||
memset(_new,0,i+1);
|
||||
memcpy(_new,name,i);
|
||||
i=strlen(name);
|
||||
_new=malloc(i+1);
|
||||
memset(_new,0,i+1);
|
||||
memcpy(_new,name,i);
|
||||
|
||||
item_new = malloc(sizeof(_iconsole_cmd));
|
||||
|
||||
@ -390,7 +390,7 @@ void IConsoleCmdRegister(byte * name, void * addr)
|
||||
}
|
||||
}
|
||||
|
||||
void* IConsoleCmdGet(byte * name)
|
||||
void* IConsoleCmdGet(const byte * name)
|
||||
{
|
||||
_iconsole_cmd * item;
|
||||
|
||||
@ -402,18 +402,18 @@ void* IConsoleCmdGet(byte * name)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void IConsoleVarRegister(byte * name, void * addr, byte type)
|
||||
void IConsoleVarRegister(const byte * name, void * addr, byte type)
|
||||
{
|
||||
byte * _new;
|
||||
_iconsole_var * item;
|
||||
_iconsole_var * item_new;
|
||||
int i;
|
||||
|
||||
i=strlen((char *)name)+1;
|
||||
_new=malloc(i+1);
|
||||
memset(_new,0,i+1);
|
||||
_new[0]='*';
|
||||
memcpy(_new+1,name,i);
|
||||
i=strlen(name)+1;
|
||||
_new=malloc(i+1);
|
||||
memset(_new,0,i+1);
|
||||
_new[0]='*';
|
||||
memcpy(_new+1,name,i);
|
||||
|
||||
item_new = malloc(sizeof(_iconsole_var));
|
||||
|
||||
@ -436,7 +436,7 @@ void IConsoleVarRegister(byte * name, void * addr, byte type)
|
||||
}
|
||||
}
|
||||
|
||||
void IConsoleVarMemRegister(byte * name, byte type)
|
||||
void IConsoleVarMemRegister(byte * name, byte type) /* XXX TRON */
|
||||
{
|
||||
_iconsole_var * item;
|
||||
item = IConsoleVarAlloc(type);
|
||||
@ -444,7 +444,7 @@ void IConsoleVarMemRegister(byte * name, byte type)
|
||||
}
|
||||
|
||||
|
||||
void IConsoleVarInsert(_iconsole_var * var, byte * name)
|
||||
void IConsoleVarInsert(_iconsole_var * var, const byte * name)
|
||||
{
|
||||
byte * _new;
|
||||
_iconsole_var * item;
|
||||
@ -456,11 +456,11 @@ void IConsoleVarInsert(_iconsole_var * var, byte * name)
|
||||
// dont allow to build variable rings
|
||||
if (item_new->_next != NULL) return;
|
||||
|
||||
i=strlen((char *)name)+1;
|
||||
_new=malloc(i+1);
|
||||
memset(_new,0,i+1);
|
||||
_new[0]='*';
|
||||
memcpy(_new+1,name,i);
|
||||
i=strlen(name)+1;
|
||||
_new=malloc(i+1);
|
||||
memset(_new,0,i+1);
|
||||
_new[0]='*';
|
||||
memcpy(_new+1,name,i);
|
||||
|
||||
item_new->name = _new;
|
||||
|
||||
@ -474,7 +474,7 @@ void IConsoleVarInsert(_iconsole_var * var, byte * name)
|
||||
}
|
||||
|
||||
|
||||
_iconsole_var * IConsoleVarGet(byte * name)
|
||||
_iconsole_var * IConsoleVarGet(const byte * name)
|
||||
{
|
||||
_iconsole_var * item;
|
||||
|
||||
@ -551,13 +551,12 @@ _iconsole_var * IConsoleVarAlloc(byte type)
|
||||
|
||||
void IConsoleVarFree(_iconsole_var * var)
|
||||
{
|
||||
if (var ->_malloc) {
|
||||
free(var ->addr);
|
||||
}
|
||||
if (var->_malloc)
|
||||
free(var->addr);
|
||||
free(var);
|
||||
}
|
||||
|
||||
void IConsoleVarSetString(_iconsole_var * var, byte * string)
|
||||
void IConsoleVarSetString(_iconsole_var * var, const byte * string)
|
||||
{
|
||||
int l;
|
||||
|
||||
@ -567,52 +566,40 @@ void IConsoleVarSetString(_iconsole_var * var, byte * string)
|
||||
free(var->addr);
|
||||
}
|
||||
|
||||
l=strlen((char *) string);
|
||||
l=strlen(string);
|
||||
var->addr=malloc(l+1);
|
||||
var->_malloc=true;
|
||||
memset(var->addr,0,l);
|
||||
memcpy((void *) var->addr,(void *) string, l);
|
||||
memcpy(var->addr, string, l);
|
||||
((byte *)var->addr)[l]=0;
|
||||
}
|
||||
}
|
||||
|
||||
void IConsoleVarSetValue(_iconsole_var * var, int value) {
|
||||
void IConsoleVarSetValue(_iconsole_var * var, int value) {
|
||||
switch (var->type) {
|
||||
case ICONSOLE_VAR_BOOLEAN:
|
||||
{
|
||||
(*(bool *)var->addr)=(value!=0);
|
||||
}
|
||||
*(bool *)var->addr = (value != 0);
|
||||
break;
|
||||
case ICONSOLE_VAR_BYTE:
|
||||
{
|
||||
(*(byte *)var->addr)=value;
|
||||
}
|
||||
*(byte *)var->addr = value;
|
||||
break;
|
||||
case ICONSOLE_VAR_UINT16:
|
||||
{
|
||||
(*(unsigned short *)var->addr)=value;
|
||||
}
|
||||
*(unsigned short *)var->addr = value;
|
||||
break;
|
||||
case ICONSOLE_VAR_UINT32:
|
||||
{
|
||||
(*(unsigned int *)var->addr)=value;
|
||||
}
|
||||
*(unsigned int *)var->addr = value;
|
||||
break;
|
||||
case ICONSOLE_VAR_INT16:
|
||||
{
|
||||
(*(signed short *)var->addr)=value;
|
||||
}
|
||||
*(signed short *)var->addr = value;
|
||||
break;
|
||||
case ICONSOLE_VAR_INT32:
|
||||
{
|
||||
(*(signed int *)var->addr)=value;
|
||||
}
|
||||
*(signed int *)var->addr = value;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void IConsoleVarDump(_iconsole_var * var, byte * dump_desc)
|
||||
void IConsoleVarDump(_iconsole_var * var, const byte * dump_desc)
|
||||
{
|
||||
byte var_b; // TYPE BYTE
|
||||
unsigned short var_ui16; // TYPE UINT16
|
||||
@ -686,7 +673,7 @@ void IConsoleVarDump(_iconsole_var * var, byte * dump_desc)
|
||||
// * hooking code * //
|
||||
// * ************************* * //
|
||||
|
||||
void IConsoleVarHook(byte * name, byte type, void * proc)
|
||||
void IConsoleVarHook(const byte * name, byte type, void * proc)
|
||||
{
|
||||
_iconsole_var * hook_var;
|
||||
hook_var = IConsoleVarGet(name);
|
||||
@ -706,7 +693,7 @@ void IConsoleVarHook(byte * name, byte type, void * proc)
|
||||
|
||||
bool IConsoleVarHookHandle(_iconsole_var * hook_var, byte type)
|
||||
{
|
||||
bool (*proc)(_iconsole_var * hook_var);
|
||||
bool (*proc)(_iconsole_var * hook_var) = NULL;
|
||||
switch (type) {
|
||||
case ICONSOLE_HOOK_BEFORE_CHANGE:
|
||||
proc = hook_var->hook_before_change;
|
||||
@ -717,12 +704,13 @@ bool IConsoleVarHookHandle(_iconsole_var * hook_var, byte type)
|
||||
case ICONSOLE_HOOK_ACCESS:
|
||||
proc = hook_var->hook_access;
|
||||
break;
|
||||
default: return true;
|
||||
}
|
||||
if (proc == NULL) return true;
|
||||
|
||||
return proc(hook_var);
|
||||
}
|
||||
|
||||
void IConsoleCmdHook(byte * name, byte type, void * proc)
|
||||
void IConsoleCmdHook(const byte * name, byte type, void * proc)
|
||||
{
|
||||
_iconsole_cmd * hook_cmd;
|
||||
hook_cmd = IConsoleCmdGet(name);
|
||||
@ -753,6 +741,9 @@ bool IConsoleCmdHookHandle(_iconsole_cmd * hook_cmd, byte type)
|
||||
case ICONSOLE_HOOK_ACCESS:
|
||||
proc = hook_cmd->hook_access;
|
||||
break;
|
||||
default:
|
||||
proc = NULL;
|
||||
break;
|
||||
}
|
||||
if (proc == NULL) return true;
|
||||
return proc(hook_cmd);
|
||||
@ -885,7 +876,7 @@ void IConsoleCmdExec(byte * cmdstr)
|
||||
execution_mode=2; // this is a variable
|
||||
if (c>2) if (strcmp(tokens[1],"<<")==0) {
|
||||
// this is command to variable mode [normal]
|
||||
|
||||
|
||||
function = NULL;
|
||||
cmd = IConsoleCmdGet(tokens[2]);
|
||||
if (cmd != NULL) function = cmd->addr;
|
||||
@ -1115,28 +1106,29 @@ void IConsoleCmdExec(byte * cmdstr)
|
||||
case 4:
|
||||
{
|
||||
// execute command with result or assign a variable
|
||||
if (execution_mode==3) if (IConsoleCmdHookHandle(cmd,ICONSOLE_HOOK_ACCESS)) {
|
||||
int i;
|
||||
int diff;
|
||||
void * temp;
|
||||
byte temp2;
|
||||
if (execution_mode==3) {
|
||||
if (IConsoleCmdHookHandle(cmd,ICONSOLE_HOOK_ACCESS)) {
|
||||
int i;
|
||||
int diff;
|
||||
void * temp;
|
||||
byte temp2;
|
||||
|
||||
// tokenshifting
|
||||
for (diff=0; diff<2; diff++) {
|
||||
temp=tokens[0];
|
||||
temp2=tokentypes[0];
|
||||
for (i=1; i<20; i++) {
|
||||
tokens[i-1]=tokens[i];
|
||||
tokentypes[i-1]=tokentypes[i];
|
||||
// tokenshifting
|
||||
for (diff=0; diff<2; diff++) {
|
||||
temp=tokens[0];
|
||||
temp2=tokentypes[0];
|
||||
for (i=1; i<20; i++) {
|
||||
tokens[i-1]=tokens[i];
|
||||
tokentypes[i-1]=tokentypes[i];
|
||||
}
|
||||
tokens[19]=temp;
|
||||
tokentypes[19]=temp2;
|
||||
}
|
||||
tokens[19]=temp;
|
||||
tokentypes[19]=temp2;
|
||||
}
|
||||
IConsoleCmdHookHandle(cmd,ICONSOLE_HOOK_BEFORE_EXEC);
|
||||
result = function(c,tokens,tokentypes);
|
||||
IConsoleCmdHookHandle(cmd,ICONSOLE_HOOK_AFTER_EXEC);
|
||||
} else {
|
||||
execution_mode=255;
|
||||
IConsoleCmdHookHandle(cmd,ICONSOLE_HOOK_BEFORE_EXEC);
|
||||
result = function(c,tokens,tokentypes);
|
||||
IConsoleCmdHookHandle(cmd,ICONSOLE_HOOK_AFTER_EXEC);
|
||||
} else
|
||||
execution_mode=255;
|
||||
}
|
||||
|
||||
if (IConsoleVarHookHandle(var,ICONSOLE_HOOK_ACCESS)) if (result!=NULL) {
|
||||
|
24
console.h
24
console.h
@ -47,7 +47,7 @@ typedef struct {
|
||||
typedef struct {
|
||||
// --------------- //
|
||||
void * addr;
|
||||
byte * name;
|
||||
const byte * name;
|
||||
byte type;
|
||||
// -------------- //
|
||||
void * hook_access;
|
||||
@ -85,31 +85,31 @@ void IConsoleClose();
|
||||
void IConsoleOpen();
|
||||
|
||||
// ** console cmd buffer ** //
|
||||
void IConsoleCmdBufferAdd(byte * cmd);
|
||||
void IConsoleCmdBufferAdd(const byte *cmd);
|
||||
void IConsoleCmdBufferNavigate(signed char direction);
|
||||
|
||||
// ** console output ** //
|
||||
void IConsolePrint(byte color_code, byte* string);
|
||||
void IConsolePrint(byte color_code, const byte* string);
|
||||
void CDECL IConsolePrintF(byte color_code, const char *s, ...);
|
||||
void IConsoleDebug(byte* string);
|
||||
void IConsoleError(byte* string);
|
||||
void IConsoleError(const byte* string);
|
||||
|
||||
// *** Commands *** //
|
||||
|
||||
void IConsoleCmdRegister(byte * name, void * addr);
|
||||
void IConsoleCmdRegister(const byte * name, void * addr);
|
||||
void* IConsoleCmdGetAddr(byte * name);
|
||||
|
||||
// *** Variables *** //
|
||||
|
||||
void IConsoleVarRegister(byte * name, void * addr, byte type);
|
||||
void IConsoleVarRegister(const byte * name, void * addr, byte type);
|
||||
void IConsoleVarMemRegister(byte * name, byte type);
|
||||
void IConsoleVarInsert(_iconsole_var * var, byte * name);
|
||||
_iconsole_var * IConsoleVarGet(byte * name);
|
||||
void IConsoleVarInsert(_iconsole_var * var, const byte * name);
|
||||
_iconsole_var * IConsoleVarGet(const byte * name);
|
||||
_iconsole_var * IConsoleVarAlloc(byte type);
|
||||
void IConsoleVarFree(_iconsole_var * var);
|
||||
void IConsoleVarSetString(_iconsole_var * var, byte * string);
|
||||
void IConsoleVarSetString(_iconsole_var * var, const byte * string);
|
||||
void IConsoleVarSetValue(_iconsole_var * var, int value);
|
||||
void IConsoleVarDump(_iconsole_var * var, byte * dump_desc);
|
||||
void IConsoleVarDump(_iconsole_var * var, const byte * dump_desc);
|
||||
|
||||
// *** Parser *** //
|
||||
|
||||
@ -119,8 +119,8 @@ void IConsoleCmdExec(byte * cmdstr);
|
||||
void IConsoleStdLibRegister();
|
||||
|
||||
// ** hook code ** //
|
||||
void IConsoleVarHook(byte * name, byte type, void * proc);
|
||||
void IConsoleCmdHook(byte * name, byte type, void * proc);
|
||||
void IConsoleVarHook(const byte * name, byte type, void * proc);
|
||||
void IConsoleCmdHook(const byte * name, byte type, void * proc);
|
||||
bool IConsoleVarHookHandle(_iconsole_var * hook_var, byte type);
|
||||
bool IConsoleCmdHookHandle(_iconsole_cmd * hook_cmd, byte type);
|
||||
|
||||
|
778
console_cmds.c
778
console_cmds.c
@ -1,387 +1,391 @@
|
||||
/* -------------------- dont cross this line --------------------- */
|
||||
#include "stdafx.h"
|
||||
#include "ttd.h"
|
||||
#include "console.h"
|
||||
#include "engine.h"
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
#if defined(WIN32)
|
||||
# define ENABLE_NETWORK
|
||||
#endif
|
||||
|
||||
// ** console command / variable defines ** //
|
||||
#define DEF_CONSOLE_CMD(yyyy) static _iconsole_var * yyyy(byte argc, byte* argv[], byte argt[])
|
||||
#define DEF_CONSOLE_CMD_HOOK(yyyy) static bool yyyy(_iconsole_cmd * hookcmd)
|
||||
#define DEF_CONSOLE_VAR_HOOK(yyyy) static bool yyyy(_iconsole_var * hookvar)
|
||||
|
||||
static int32 GetArgumentInteger(byte *arg)
|
||||
{
|
||||
int32 result;
|
||||
sscanf((char *)arg, "%u", &result);
|
||||
|
||||
if (result == 0 && arg[0] == '0' && arg[1] == 'x')
|
||||
sscanf((char *)arg, "%x", &result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/* **************************** */
|
||||
/* variable and command hooks */
|
||||
/* **************************** */
|
||||
|
||||
DEF_CONSOLE_CMD_HOOK(ConCmdHookNoNetwork)
|
||||
{
|
||||
if (_networking) {
|
||||
IConsoleError("this command is forbidden in multiplayer");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_VAR_HOOK(ConVarHookNoNetwork)
|
||||
{
|
||||
if (_networking) {
|
||||
IConsoleError("this variable is forbidden in multiplayer");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_VAR_HOOK(ConVarHookNoNetClient)
|
||||
{
|
||||
if (!_networking_server) {
|
||||
IConsoleError("this variable only makes sense for a network server");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* **************************** */
|
||||
/* reset commands */
|
||||
/* **************************** */
|
||||
|
||||
DEF_CONSOLE_CMD(ConResetEngines)
|
||||
{
|
||||
StartupEngines();
|
||||
return 0;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConResetTile)
|
||||
{
|
||||
if (argc == 2) {
|
||||
TileIndex tile = (TileIndex)GetArgumentInteger(argv[1]);
|
||||
DoClearSquare(tile);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConScrollToTile)
|
||||
{
|
||||
if (argc == 2) {
|
||||
TileIndex tile = (TileIndex)GetArgumentInteger(argv[1]);
|
||||
ScrollMainWindowToTile(tile);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ********************************* //
|
||||
// * Network Core Console Commands * //
|
||||
// ********************************* //
|
||||
#ifdef ENABLE_NETWORK
|
||||
|
||||
DEF_CONSOLE_CMD(ConNetworkConnect)
|
||||
{
|
||||
byte * b;
|
||||
byte * ip = NULL;
|
||||
byte * port = NULL;
|
||||
byte * player = NULL;
|
||||
byte c;
|
||||
uint16 rport;
|
||||
|
||||
if (argc<2) return NULL;
|
||||
|
||||
b = argv[1];
|
||||
rport = _network_server_port;
|
||||
c = 0;
|
||||
ip = b;
|
||||
|
||||
while (b[c] != 0) {
|
||||
if (((char)b[c]) == '#') {
|
||||
player = &b[c+1];
|
||||
b[c] = 0;
|
||||
}
|
||||
if (((char)b[c]) == ':') {
|
||||
port = &b[c+1];
|
||||
b[c] = 0;
|
||||
}
|
||||
c++;
|
||||
}
|
||||
|
||||
IConsolePrintF(_iconsole_color_default,"Connecting to %s...",ip);
|
||||
if (player!=NULL) {
|
||||
_network_playas = atoi(player);
|
||||
IConsolePrintF(_iconsole_color_default," player-no: %s",player);
|
||||
}
|
||||
if (port!=NULL) {
|
||||
rport = atoi(port);
|
||||
IConsolePrintF(_iconsole_color_default," port: %s",port);
|
||||
}
|
||||
|
||||
NetworkCoreConnectGame(b, rport);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* **************************** */
|
||||
/* default console commands */
|
||||
/* **************************** */
|
||||
|
||||
DEF_CONSOLE_CMD(ConEcho)
|
||||
{
|
||||
if (argc<2) return NULL;
|
||||
IConsolePrint(_iconsole_color_default, argv[1]);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConEchoC)
|
||||
{
|
||||
if (argc<3) return NULL;
|
||||
IConsolePrint(atoi(argv[1]), argv[2]);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConPrintF)
|
||||
{
|
||||
if (argc<3) return NULL;
|
||||
IConsolePrintF(_iconsole_color_default, argv[1] ,argv[2],argv[3],argv[4],argv[5],argv[6],argv[7],argv[8],argv[9],argv[10],argv[11],argv[12],argv[13],argv[14],argv[15],argv[16],argv[17],argv[18],argv[19]);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConPrintFC)
|
||||
{
|
||||
if (argc<3) return NULL;
|
||||
IConsolePrintF(atoi(argv[1]), argv[2] ,argv[3],argv[4],argv[5],argv[6],argv[7],argv[8],argv[9],argv[10],argv[11],argv[12],argv[13],argv[14],argv[15],argv[16],argv[17],argv[18],argv[19]);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConScreenShot)
|
||||
{
|
||||
if (argc<2) {
|
||||
_make_screenshot=1;
|
||||
} else {
|
||||
if (strcmp(argv[1],"big")==0) {
|
||||
_make_screenshot=2;
|
||||
}
|
||||
if (strcmp(argv[1],"no_con")==0) {
|
||||
IConsoleClose();
|
||||
_make_screenshot=1;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConVarInfo)
|
||||
{
|
||||
if (argc<2) return NULL;
|
||||
if (argt[1]!=ICONSOLE_VAR_REFERENCE) {
|
||||
IConsoleError("variable must be an variable reference");
|
||||
} else {
|
||||
_iconsole_var * item;
|
||||
item = (_iconsole_var *) argv[1];
|
||||
IConsolePrintF(_iconsole_color_default,"variable_name: %s",item->name);
|
||||
IConsolePrintF(_iconsole_color_default,"variable_type: %i",item->type);
|
||||
IConsolePrintF(_iconsole_color_default,"variable_addr: %i",item->addr);
|
||||
if (item->_malloc) IConsolePrintF(_iconsole_color_default,"variable_malloc: internal allocated"); else IConsolePrintF(_iconsole_color_default, "variable_malloc: external allocated");
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConDebugLevel)
|
||||
{
|
||||
if (argc<2) return NULL;
|
||||
SetDebugString(argv[1]);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConExit)
|
||||
{
|
||||
_exit_game = true;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConHelp)
|
||||
{
|
||||
IConsolePrint(13 ," -- console help -- ");
|
||||
IConsolePrint(1 ," variables: [command to list them: list_vars]");
|
||||
IConsolePrint(1 ," *temp_string = \"my little \"");
|
||||
IConsolePrint(1 ,"");
|
||||
IConsolePrint(1 ," commands: [command to list them: list_cmds]");
|
||||
IConsolePrint(1 ," [command] [\"string argument with spaces\"] [argument 2] ...");
|
||||
IConsolePrint(1 ," printf \"%s world\" *temp_string");
|
||||
IConsolePrint(1 ,"");
|
||||
IConsolePrint(1 ," command/variable returning a value into an variable:");
|
||||
IConsolePrint(1 ," *temp_uint16 << random");
|
||||
IConsolePrint(1 ," *temp_uint16 << *temp_uint16_2");
|
||||
IConsolePrint(1 ,"");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConRandom)
|
||||
{
|
||||
_iconsole_var * result;
|
||||
result = IConsoleVarAlloc(ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarSetValue(result,rand());
|
||||
return result;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConListCommands)
|
||||
{
|
||||
_iconsole_cmd * item;
|
||||
int l = 0;
|
||||
|
||||
if (argv[1]!=NULL) l = strlen((char *) argv[1]);
|
||||
|
||||
item = _iconsole_cmds;
|
||||
while (item != NULL) {
|
||||
if (argv[1]!=NULL) {
|
||||
|
||||
if (memcmp((void *) item->name, (void *) argv[1],l)==0)
|
||||
IConsolePrintF(_iconsole_color_default,"%s",item->name);
|
||||
|
||||
} else {
|
||||
|
||||
IConsolePrintF(_iconsole_color_default,"%s",item->name);
|
||||
|
||||
}
|
||||
item = item->_next;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConListVariables)
|
||||
{
|
||||
_iconsole_var * item;
|
||||
int l = 0;
|
||||
|
||||
if (argv[1]!=NULL) l = strlen((char *) argv[1]);
|
||||
|
||||
item = _iconsole_vars;
|
||||
while (item != NULL) {
|
||||
if (argv[1]!=NULL) {
|
||||
|
||||
if (memcmp((void *) item->name, (void *) argv[1],l)==0)
|
||||
IConsolePrintF(_iconsole_color_default,"%s",item->name);
|
||||
|
||||
} else {
|
||||
|
||||
IConsolePrintF(_iconsole_color_default,"%s",item->name);
|
||||
|
||||
}
|
||||
item = item->_next;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConListDumpVariables)
|
||||
{
|
||||
_iconsole_var * item;
|
||||
int l = 0;
|
||||
|
||||
if (argv[1]!=NULL) l = strlen((char *) argv[1]);
|
||||
|
||||
item = _iconsole_vars;
|
||||
while (item != NULL) {
|
||||
if (argv[1]!=NULL) {
|
||||
|
||||
if (memcmp((void *) item->name, (void *) argv[1],l)==0)
|
||||
IConsoleVarDump(item,NULL);
|
||||
|
||||
} else {
|
||||
|
||||
IConsoleVarDump(item,NULL);
|
||||
|
||||
}
|
||||
item = item->_next;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
/* ****************************************** */
|
||||
/* debug commands and variables */
|
||||
/* ****************************************** */
|
||||
|
||||
void IConsoleDebugLibRegister()
|
||||
{
|
||||
IConsoleVarMemRegister("temp_bool",ICONSOLE_VAR_BOOLEAN);
|
||||
IConsoleVarMemRegister("temp_int16",ICONSOLE_VAR_INT16);
|
||||
IConsoleVarMemRegister("temp_int32",ICONSOLE_VAR_INT32);
|
||||
IConsoleVarMemRegister("temp_pointer",ICONSOLE_VAR_POINTER);
|
||||
IConsoleVarMemRegister("temp_uint16",ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarMemRegister("temp_uint16_2",ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarMemRegister("temp_uint32",ICONSOLE_VAR_UINT32);
|
||||
IConsoleVarMemRegister("temp_string",ICONSOLE_VAR_STRING);
|
||||
IConsoleVarMemRegister("temp_string2",ICONSOLE_VAR_STRING);
|
||||
IConsoleCmdRegister("resettile",ConResetTile);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* ****************************************** */
|
||||
/* console command and variable registration */
|
||||
/* ****************************************** */
|
||||
|
||||
void IConsoleStdLibRegister()
|
||||
{
|
||||
// stdlib
|
||||
extern byte _stdlib_developer;
|
||||
extern bool _stdlib_con_developer;
|
||||
|
||||
#ifdef _DEBUG
|
||||
IConsoleDebugLibRegister();
|
||||
#endif
|
||||
|
||||
// functions [please add them alphabeticaly]
|
||||
#ifdef ENABLE_NETWORK
|
||||
IConsoleCmdRegister("connect",ConNetworkConnect);
|
||||
IConsoleCmdHook("connect",ICONSOLE_HOOK_ACCESS,ConCmdHookNoNetwork);
|
||||
#endif
|
||||
IConsoleCmdRegister("debug_level",ConDebugLevel);
|
||||
IConsoleCmdRegister("dump_vars",ConListDumpVariables);
|
||||
IConsoleCmdRegister("echo",ConEcho);
|
||||
IConsoleCmdRegister("echoc",ConEchoC);
|
||||
IConsoleCmdRegister("exit",ConExit);
|
||||
IConsoleCmdRegister("help",ConHelp);
|
||||
IConsoleCmdRegister("printf",ConPrintF);
|
||||
IConsoleCmdRegister("printfc",ConPrintFC);
|
||||
IConsoleCmdRegister("quit",ConExit);
|
||||
IConsoleCmdRegister("random",ConRandom);
|
||||
IConsoleCmdRegister("list_cmds",ConListCommands);
|
||||
IConsoleCmdRegister("list_vars",ConListVariables);
|
||||
IConsoleCmdRegister("resetengines",ConResetEngines);
|
||||
IConsoleCmdHook("resetengines",ICONSOLE_HOOK_ACCESS,ConCmdHookNoNetwork);
|
||||
IConsoleCmdRegister("screenshot",ConScreenShot);
|
||||
IConsoleCmdRegister("scrollto",ConScrollToTile);
|
||||
IConsoleCmdRegister("varinfo",ConVarInfo);
|
||||
|
||||
// variables [please add them alphabeticaly]
|
||||
IConsoleVarRegister("con_developer",(void *) &_stdlib_con_developer,ICONSOLE_VAR_BOOLEAN);
|
||||
IConsoleVarRegister("developer",(void *) &_stdlib_developer,ICONSOLE_VAR_BYTE);
|
||||
#ifdef ENABLE_NETWORK
|
||||
IConsoleVarRegister("net_client_timeout",&_network_client_timeout,ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarHook("*net_client_timeout",ICONSOLE_HOOK_ACCESS,ConVarHookNoNetClient);
|
||||
IConsoleVarRegister("net_ready_ahead",&_network_ready_ahead,ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarRegister("net_sync_freq",&_network_sync_freq,ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarHook("*net_sync_freq",ICONSOLE_HOOK_ACCESS,ConVarHookNoNetClient);
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
/* -------------------- dont cross this line --------------------- */
|
||||
/* -------------------- dont cross this line --------------------- */
|
||||
#include "stdafx.h"
|
||||
#include "ttd.h"
|
||||
#include "console.h"
|
||||
#include "engine.h"
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
#if defined(WIN32)
|
||||
# define ENABLE_NETWORK
|
||||
#endif
|
||||
|
||||
// ** console command / variable defines ** //
|
||||
#define DEF_CONSOLE_CMD(yyyy) static _iconsole_var * yyyy(byte argc, byte* argv[], byte argt[])
|
||||
#define DEF_CONSOLE_CMD_HOOK(yyyy) static bool yyyy(_iconsole_cmd * hookcmd)
|
||||
#define DEF_CONSOLE_VAR_HOOK(yyyy) static bool yyyy(_iconsole_var * hookvar)
|
||||
|
||||
static int32 GetArgumentInteger(byte *arg)
|
||||
{
|
||||
int32 result;
|
||||
sscanf((char *)arg, "%u", &result);
|
||||
|
||||
if (result == 0 && arg[0] == '0' && arg[1] == 'x')
|
||||
sscanf((char *)arg, "%x", &result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/* **************************** */
|
||||
/* variable and command hooks */
|
||||
/* **************************** */
|
||||
|
||||
DEF_CONSOLE_CMD_HOOK(ConCmdHookNoNetwork)
|
||||
{
|
||||
if (_networking) {
|
||||
IConsoleError("this command is forbidden in multiplayer");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#if 0 /* Not used atm */
|
||||
DEF_CONSOLE_VAR_HOOK(ConVarHookNoNetwork)
|
||||
{
|
||||
if (_networking) {
|
||||
IConsoleError("this variable is forbidden in multiplayer");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
DEF_CONSOLE_VAR_HOOK(ConVarHookNoNetClient)
|
||||
{
|
||||
if (!_networking_server) {
|
||||
IConsoleError("this variable only makes sense for a network server");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* **************************** */
|
||||
/* reset commands */
|
||||
/* **************************** */
|
||||
|
||||
DEF_CONSOLE_CMD(ConResetEngines)
|
||||
{
|
||||
StartupEngines();
|
||||
return 0;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConResetTile)
|
||||
{
|
||||
if (argc == 2) {
|
||||
TileIndex tile = (TileIndex)GetArgumentInteger(argv[1]);
|
||||
DoClearSquare(tile);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConScrollToTile)
|
||||
{
|
||||
if (argc == 2) {
|
||||
TileIndex tile = (TileIndex)GetArgumentInteger(argv[1]);
|
||||
ScrollMainWindowToTile(tile);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ********************************* //
|
||||
// * Network Core Console Commands * //
|
||||
// ********************************* //
|
||||
#ifdef ENABLE_NETWORK
|
||||
|
||||
DEF_CONSOLE_CMD(ConNetworkConnect)
|
||||
{
|
||||
byte * b;
|
||||
byte * ip = NULL;
|
||||
byte * port = NULL;
|
||||
byte * player = NULL;
|
||||
byte c;
|
||||
uint16 rport;
|
||||
|
||||
if (argc<2) return NULL;
|
||||
|
||||
b = argv[1];
|
||||
rport = _network_server_port;
|
||||
c = 0;
|
||||
ip = b;
|
||||
|
||||
while (b[c] != 0) {
|
||||
if (((char)b[c]) == '#') {
|
||||
player = &b[c+1];
|
||||
b[c] = 0;
|
||||
}
|
||||
if (((char)b[c]) == ':') {
|
||||
port = &b[c+1];
|
||||
b[c] = 0;
|
||||
}
|
||||
c++;
|
||||
}
|
||||
|
||||
IConsolePrintF(_iconsole_color_default,"Connecting to %s...",ip);
|
||||
if (player!=NULL) {
|
||||
_network_playas = atoi(player);
|
||||
IConsolePrintF(_iconsole_color_default," player-no: %s",player);
|
||||
}
|
||||
if (port!=NULL) {
|
||||
rport = atoi(port);
|
||||
IConsolePrintF(_iconsole_color_default," port: %s",port);
|
||||
}
|
||||
|
||||
NetworkCoreConnectGame(b, rport);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* **************************** */
|
||||
/* default console commands */
|
||||
/* **************************** */
|
||||
|
||||
DEF_CONSOLE_CMD(ConEcho)
|
||||
{
|
||||
if (argc<2) return NULL;
|
||||
IConsolePrint(_iconsole_color_default, argv[1]);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConEchoC)
|
||||
{
|
||||
if (argc<3) return NULL;
|
||||
IConsolePrint(atoi(argv[1]), argv[2]);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConPrintF)
|
||||
{
|
||||
if (argc<3) return NULL;
|
||||
IConsolePrintF(_iconsole_color_default, argv[1] ,argv[2],argv[3],argv[4],argv[5],argv[6],argv[7],argv[8],argv[9],argv[10],argv[11],argv[12],argv[13],argv[14],argv[15],argv[16],argv[17],argv[18],argv[19]);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConPrintFC)
|
||||
{
|
||||
if (argc<3) return NULL;
|
||||
IConsolePrintF(atoi(argv[1]), argv[2] ,argv[3],argv[4],argv[5],argv[6],argv[7],argv[8],argv[9],argv[10],argv[11],argv[12],argv[13],argv[14],argv[15],argv[16],argv[17],argv[18],argv[19]);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConScreenShot)
|
||||
{
|
||||
if (argc<2) {
|
||||
_make_screenshot=1;
|
||||
} else {
|
||||
if (strcmp(argv[1],"big")==0) {
|
||||
_make_screenshot=2;
|
||||
}
|
||||
if (strcmp(argv[1],"no_con")==0) {
|
||||
IConsoleClose();
|
||||
_make_screenshot=1;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConVarInfo)
|
||||
{
|
||||
if (argc<2) return NULL;
|
||||
if (argt[1]!=ICONSOLE_VAR_REFERENCE) {
|
||||
IConsoleError("variable must be an variable reference");
|
||||
} else {
|
||||
_iconsole_var * item;
|
||||
item = (_iconsole_var *) argv[1];
|
||||
IConsolePrintF(_iconsole_color_default,"variable_name: %s",item->name);
|
||||
IConsolePrintF(_iconsole_color_default,"variable_type: %i",item->type);
|
||||
IConsolePrintF(_iconsole_color_default,"variable_addr: %i",item->addr);
|
||||
if (item->_malloc) IConsolePrintF(_iconsole_color_default,"variable_malloc: internal allocated"); else IConsolePrintF(_iconsole_color_default, "variable_malloc: external allocated");
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConDebugLevel)
|
||||
{
|
||||
if (argc<2) return NULL;
|
||||
SetDebugString(argv[1]);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConExit)
|
||||
{
|
||||
_exit_game = true;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConHelp)
|
||||
{
|
||||
IConsolePrint(13 ," -- console help -- ");
|
||||
IConsolePrint(1 ," variables: [command to list them: list_vars]");
|
||||
IConsolePrint(1 ," *temp_string = \"my little \"");
|
||||
IConsolePrint(1 ,"");
|
||||
IConsolePrint(1 ," commands: [command to list them: list_cmds]");
|
||||
IConsolePrint(1 ," [command] [\"string argument with spaces\"] [argument 2] ...");
|
||||
IConsolePrint(1 ," printf \"%s world\" *temp_string");
|
||||
IConsolePrint(1 ,"");
|
||||
IConsolePrint(1 ," command/variable returning a value into an variable:");
|
||||
IConsolePrint(1 ," *temp_uint16 << random");
|
||||
IConsolePrint(1 ," *temp_uint16 << *temp_uint16_2");
|
||||
IConsolePrint(1 ,"");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConRandom)
|
||||
{
|
||||
_iconsole_var * result;
|
||||
result = IConsoleVarAlloc(ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarSetValue(result,rand());
|
||||
return result;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConListCommands)
|
||||
{
|
||||
_iconsole_cmd * item;
|
||||
int l = 0;
|
||||
|
||||
if (argv[1]!=NULL) l = strlen((char *) argv[1]);
|
||||
|
||||
item = _iconsole_cmds;
|
||||
while (item != NULL) {
|
||||
if (argv[1]!=NULL) {
|
||||
|
||||
if (memcmp((void *) item->name, (void *) argv[1],l)==0)
|
||||
IConsolePrintF(_iconsole_color_default,"%s",item->name);
|
||||
|
||||
} else {
|
||||
|
||||
IConsolePrintF(_iconsole_color_default,"%s",item->name);
|
||||
|
||||
}
|
||||
item = item->_next;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConListVariables)
|
||||
{
|
||||
_iconsole_var * item;
|
||||
int l = 0;
|
||||
|
||||
if (argv[1]!=NULL) l = strlen((char *) argv[1]);
|
||||
|
||||
item = _iconsole_vars;
|
||||
while (item != NULL) {
|
||||
if (argv[1]!=NULL) {
|
||||
|
||||
if (memcmp(item->name, argv[1],l)==0)
|
||||
IConsolePrintF(_iconsole_color_default,"%s",item->name);
|
||||
|
||||
} else {
|
||||
|
||||
IConsolePrintF(_iconsole_color_default,"%s",item->name);
|
||||
|
||||
}
|
||||
item = item->_next;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConListDumpVariables)
|
||||
{
|
||||
_iconsole_var * item;
|
||||
int l = 0;
|
||||
|
||||
if (argv[1]!=NULL) l = strlen((char *) argv[1]);
|
||||
|
||||
item = _iconsole_vars;
|
||||
while (item != NULL) {
|
||||
if (argv[1]!=NULL) {
|
||||
|
||||
if (memcmp(item->name, argv[1],l)==0)
|
||||
IConsoleVarDump(item,NULL);
|
||||
|
||||
} else {
|
||||
|
||||
IConsoleVarDump(item,NULL);
|
||||
|
||||
}
|
||||
item = item->_next;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
/* ****************************************** */
|
||||
/* debug commands and variables */
|
||||
/* ****************************************** */
|
||||
|
||||
void IConsoleDebugLibRegister()
|
||||
{
|
||||
IConsoleVarMemRegister("temp_bool",ICONSOLE_VAR_BOOLEAN);
|
||||
IConsoleVarMemRegister("temp_int16",ICONSOLE_VAR_INT16);
|
||||
IConsoleVarMemRegister("temp_int32",ICONSOLE_VAR_INT32);
|
||||
IConsoleVarMemRegister("temp_pointer",ICONSOLE_VAR_POINTER);
|
||||
IConsoleVarMemRegister("temp_uint16",ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarMemRegister("temp_uint16_2",ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarMemRegister("temp_uint32",ICONSOLE_VAR_UINT32);
|
||||
IConsoleVarMemRegister("temp_string",ICONSOLE_VAR_STRING);
|
||||
IConsoleVarMemRegister("temp_string2",ICONSOLE_VAR_STRING);
|
||||
IConsoleCmdRegister("resettile",ConResetTile);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* ****************************************** */
|
||||
/* console command and variable registration */
|
||||
/* ****************************************** */
|
||||
|
||||
void IConsoleStdLibRegister()
|
||||
{
|
||||
// stdlib
|
||||
extern byte _stdlib_developer;
|
||||
extern bool _stdlib_con_developer;
|
||||
|
||||
#ifdef _DEBUG
|
||||
IConsoleDebugLibRegister();
|
||||
#else
|
||||
(void)ConResetTile; // Silence warning, this is only used in _DEBUG
|
||||
#endif
|
||||
|
||||
// functions [please add them alphabeticaly]
|
||||
#ifdef ENABLE_NETWORK
|
||||
IConsoleCmdRegister("connect",ConNetworkConnect);
|
||||
IConsoleCmdHook("connect",ICONSOLE_HOOK_ACCESS,ConCmdHookNoNetwork);
|
||||
#endif
|
||||
IConsoleCmdRegister("debug_level",ConDebugLevel);
|
||||
IConsoleCmdRegister("dump_vars",ConListDumpVariables);
|
||||
IConsoleCmdRegister("echo",ConEcho);
|
||||
IConsoleCmdRegister("echoc",ConEchoC);
|
||||
IConsoleCmdRegister("exit",ConExit);
|
||||
IConsoleCmdRegister("help",ConHelp);
|
||||
IConsoleCmdRegister("printf",ConPrintF);
|
||||
IConsoleCmdRegister("printfc",ConPrintFC);
|
||||
IConsoleCmdRegister("quit",ConExit);
|
||||
IConsoleCmdRegister("random",ConRandom);
|
||||
IConsoleCmdRegister("list_cmds",ConListCommands);
|
||||
IConsoleCmdRegister("list_vars",ConListVariables);
|
||||
IConsoleCmdRegister("resetengines",ConResetEngines);
|
||||
IConsoleCmdHook("resetengines",ICONSOLE_HOOK_ACCESS,ConCmdHookNoNetwork);
|
||||
IConsoleCmdRegister("screenshot",ConScreenShot);
|
||||
IConsoleCmdRegister("scrollto",ConScrollToTile);
|
||||
IConsoleCmdRegister("varinfo",ConVarInfo);
|
||||
|
||||
// variables [please add them alphabeticaly]
|
||||
IConsoleVarRegister("con_developer",(void *) &_stdlib_con_developer,ICONSOLE_VAR_BOOLEAN);
|
||||
IConsoleVarRegister("developer",(void *) &_stdlib_developer,ICONSOLE_VAR_BYTE);
|
||||
#ifdef ENABLE_NETWORK
|
||||
IConsoleVarRegister("net_client_timeout",&_network_client_timeout,ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarHook("*net_client_timeout",ICONSOLE_HOOK_ACCESS,ConVarHookNoNetClient);
|
||||
IConsoleVarRegister("net_ready_ahead",&_network_ready_ahead,ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarRegister("net_sync_freq",&_network_sync_freq,ICONSOLE_VAR_UINT16);
|
||||
IConsoleVarHook("*net_sync_freq",ICONSOLE_HOOK_ACCESS,ConVarHookNoNetClient);
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
/* -------------------- dont cross this line --------------------- */
|
||||
|
@ -1016,8 +1016,8 @@ static StringID GetPerformanceTitleFromValue(uint v)
|
||||
}
|
||||
|
||||
static int CDECL _perf_hist_comp(const void *elem1, const void *elem2 ) {
|
||||
Player *p1 = *(Player**)elem1;
|
||||
Player *p2 = *(Player**)elem2;
|
||||
const Player *p1 = *(const Player* const *)elem1;
|
||||
const Player *p2 = *(const Player* const *)elem2;
|
||||
int32 v = p2->old_economy[1].performance_history - p1->old_economy[1].performance_history;
|
||||
return (v!=0) | (v >> (sizeof(int32)*8-1));
|
||||
}
|
||||
|
2
hal.h
2
hal.h
@ -135,7 +135,7 @@ char *FiosBrowseTo(const FiosItem *item);
|
||||
// Get descriptive texts.
|
||||
// Returns a path as well as a
|
||||
// string describing the path.
|
||||
StringID FiosGetDescText(char **path);
|
||||
StringID FiosGetDescText(const char **path);
|
||||
// Delete a name
|
||||
void FiosDelete(const char *name);
|
||||
// Make a filename from a name
|
||||
|
@ -392,8 +392,8 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
|
||||
{
|
||||
char buf1[96];
|
||||
byte val;
|
||||
Industry *i = DEREF_INDUSTRY(*(byte*)a);
|
||||
Industry *j = DEREF_INDUSTRY(*(byte*)b);
|
||||
Industry *i = DEREF_INDUSTRY(*(const byte*)a);
|
||||
Industry *j = DEREF_INDUSTRY(*(const byte*)b);
|
||||
int r = 0;
|
||||
|
||||
switch (_industry_sort_order >> 1) {
|
||||
@ -437,7 +437,7 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
|
||||
SET_DPARAM32(0, i->town->townnameparts);
|
||||
GetString(buf1, i->town->townnametype);
|
||||
|
||||
if ( (val=*(byte*)b) != _last_industry_idx) {
|
||||
if ( (val=*(const byte*)b) != _last_industry_idx) {
|
||||
_last_industry_idx = val;
|
||||
SET_DPARAM32(0, j->town->townnameparts);
|
||||
GetString(_bufcache, j->town->townnametype);
|
||||
|
6
macros.h
6
macros.h
@ -203,18 +203,18 @@ static INLINE void swap_tile(TileIndex *a, TileIndex *b) { TileIndex t = *a; *a
|
||||
|
||||
|
||||
#if defined(TTD_LITTLE_ENDIAN)
|
||||
# define READ_LE_UINT16(b) (*(uint16*)(b))
|
||||
# define READ_LE_UINT16(b) (*(const uint16*)(b))
|
||||
# define ADD_WORD(x) (x)&0xFF, ((x) >> 8)&0xFF
|
||||
# define ADD_DWORD(x) (x)&0xFF, ((x) >> 8)&0xFF, ((x) >> 16)&0xFF, ((x) >> 24)&0xFF
|
||||
#elif defined(TTD_BIG_ENDIAN)
|
||||
static INLINE uint16 READ_LE_UINT16(const void *b) {
|
||||
return ((byte*)b)[0] + (((byte*)b)[1] << 8);
|
||||
return ((const byte*)b)[0] + (((const byte*)b)[1] << 8);
|
||||
}
|
||||
# define ADD_WORD(x) ((x) >> 8)&0xFF, (x)&0xFF
|
||||
# define ADD_DWORD(x) ((x) >> 24)&0xFF, ((x) >> 16)&0xFF, ((x) >> 8)&0xFF, (x)&0xFF
|
||||
#endif
|
||||
|
||||
static INLINE void WRITE_LE_UINT16(const void *b, uint16 x) {
|
||||
static INLINE void WRITE_LE_UINT16(void *b, uint16 x) {
|
||||
((byte*)b)[0] = (byte)x;
|
||||
((byte*)b)[1] = (byte)(x >> 8);
|
||||
}
|
||||
|
@ -2226,10 +2226,10 @@ void SetupColorsAndInitialWindow()
|
||||
w = AllocateWindowDesc(&_toolb_normal_desc);
|
||||
w->disabled_state = 1 << 17; // disable zoon-in button (by default game is zoomed in)
|
||||
|
||||
if (_networking) { // if networking, disable fast-forward button
|
||||
w->disabled_state |= (1 << 1);
|
||||
if (!_networking_server) // if not server, disable pause button
|
||||
w->disabled_state |= (1 << 0);
|
||||
if (_networking) { // if networking, disable fast-forward button
|
||||
w->disabled_state |= (1 << 1);
|
||||
if (!_networking_server) // if not server, disable pause button
|
||||
w->disabled_state |= (1 << 0);
|
||||
}
|
||||
|
||||
w->flags4 &= ~WF_WHITE_BORDER_MASK;
|
||||
|
@ -963,7 +963,7 @@ static void BuildFileList()
|
||||
|
||||
static void DrawFiosTexts()
|
||||
{
|
||||
char *path;
|
||||
const char *path;
|
||||
StringID str;
|
||||
|
||||
str = FiosGetDescText(&path);
|
||||
|
@ -528,7 +528,7 @@ static void HandleCommandPacket(ClientState *cs, CommandPacket *np)
|
||||
qp = (QueuedCommand*)calloc(sizeof(QueuedCommand), 1);
|
||||
}
|
||||
qp->cp = *np;
|
||||
|
||||
|
||||
qp->frame = _frame_counter_max - GetNextSyncFrame();
|
||||
|
||||
qp->callback = NULL;
|
||||
|
@ -144,7 +144,7 @@ static void NetworkGameWindowWndProc(Window *w, WindowEvent *e)
|
||||
NetworkGameListFromInternet();
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
_network_game_count_last = _network_game_count;
|
||||
SetWindowDirty(w);
|
||||
|
||||
@ -179,7 +179,7 @@ static void NetworkGameWindowWndProc(Window *w, WindowEvent *e)
|
||||
rport = _network_server_port;
|
||||
c = 0;
|
||||
ip = b;
|
||||
|
||||
|
||||
while (b[c] != 0) {
|
||||
if (((char)b[c]) == '#') {
|
||||
player = &b[c+1];
|
||||
|
@ -1520,7 +1520,7 @@ static void DrawTile_Track(TileInfo *ti)
|
||||
|
||||
s = _track_depot_layout_table[m5 & 0x3F];
|
||||
|
||||
image = *(uint16*)s;
|
||||
image = *(const uint16*)s;
|
||||
if (image & 0x8000) image = (image & 0x7FFF) + tracktype_offs;
|
||||
|
||||
// adjust ground tile for desert
|
||||
@ -1566,11 +1566,11 @@ void DrawTrainDepotSprite(int x, int y, int image, int railtype)
|
||||
x+=33;
|
||||
y+=17;
|
||||
|
||||
img = *(uint16*)t;
|
||||
img = *(const uint16*)t;
|
||||
if (img & 0x8000) img = (img & 0x7FFF) + railtype;
|
||||
DrawSprite(img, x, y);
|
||||
|
||||
for(dtss = (DrawTrackSeqStruct *)(t + sizeof(uint16)); dtss->image != 0; dtss++) {
|
||||
for(dtss = (const DrawTrackSeqStruct *)(t + sizeof(uint16)); dtss->image != 0; dtss++) {
|
||||
Point pt = RemapCoords(dtss->subcoord_x, dtss->subcoord_y, 0);
|
||||
image = dtss->image;
|
||||
if (image & 0x8000) image |= ormod;
|
||||
|
10
readme.txt
10
readme.txt
@ -126,7 +126,7 @@ Windows:
|
||||
and it should build automatically. In case you don't build with SDL,
|
||||
you need to remove WITH_SDL from the project settings.
|
||||
(see also docs/Readme_Windows_MSVC6.0.txt)
|
||||
|
||||
|
||||
You can also build it using the Makefile with MSys/MingW or Cygwin/MingW.
|
||||
Please read the Makefile for more information.
|
||||
|
||||
@ -147,8 +147,8 @@ FreeBSD
|
||||
Use "gmake".
|
||||
|
||||
MorphOS
|
||||
Use "make". Note that you need the MorphOS SDK and the
|
||||
powersdl.library SDK.
|
||||
Use "make". Note that you need the MorphOS SDK and the
|
||||
powersdl.library SDK.
|
||||
|
||||
8.0) Translating:
|
||||
---- -------------------
|
||||
@ -209,7 +209,7 @@ The OpenTTD team:
|
||||
Cian Duffy (MYOB) - BeOS port / manual writing
|
||||
Christian Rosentreter (tokaiz) - MorphOS/AmigaOS port
|
||||
Viktor Strigeus (wiggo) - Web hosting services
|
||||
|
||||
|
||||
Thanks to:
|
||||
Josef Drexler - For his great work on TTDPatch.
|
||||
Marcin Grzegorczyk - For his TTDPatch work and documentation of TTD internals and graphics (signals and track foundations).
|
||||
@ -222,4 +222,4 @@ Thanks to:
|
||||
George - Canal graphics
|
||||
Bug Reporters - Thanks for all bug reports.
|
||||
Chris Sawyer - For an amazing game.
|
||||
|
||||
|
||||
|
@ -810,9 +810,9 @@ static void DrawTile_Road(TileInfo *ti)
|
||||
|
||||
s = _road_display_datas[ti->map5 & 0xF];
|
||||
|
||||
DrawGroundSprite(*(uint32*)s);
|
||||
DrawGroundSprite(*(const uint32*)s);
|
||||
s += sizeof(uint32);
|
||||
drss = (DrawRoadSeqStruct*)s;
|
||||
drss = (const DrawRoadSeqStruct*)s;
|
||||
|
||||
while ((image=drss->image) != 0) {
|
||||
if (image & 0x8000)
|
||||
@ -840,10 +840,10 @@ void DrawRoadDepotSprite(int x, int y, int image)
|
||||
x+=33;
|
||||
y+=17;
|
||||
|
||||
DrawSprite(*(uint32*)t, x, y);
|
||||
DrawSprite(*(const uint32*)t, x, y);
|
||||
t += sizeof(uint32);
|
||||
|
||||
for(dtss = (DrawRoadSeqStruct *)t; dtss->image != 0; dtss++) {
|
||||
for(dtss = (const DrawRoadSeqStruct *)t; dtss->image != 0; dtss++) {
|
||||
Point pt = RemapCoords(dtss->subcoord_x, dtss->subcoord_y, 0);
|
||||
|
||||
image = dtss->image;
|
||||
|
@ -422,7 +422,7 @@ static size_t SlCalcObjLength(void *object, const void *desc)
|
||||
{
|
||||
size_t length = 0;
|
||||
uint cmd,conv;
|
||||
byte *d = (byte*)desc;
|
||||
const byte *d = (const byte*)desc;
|
||||
|
||||
// Need to determine the length and write a length tag.
|
||||
while (true) {
|
||||
@ -464,7 +464,7 @@ static size_t SlCalcObjLength(void *object, const void *desc)
|
||||
|
||||
void SlObject(void *object, const void *desc)
|
||||
{
|
||||
byte *d = (byte*)desc;
|
||||
const byte *d = (const byte*)desc;
|
||||
void *ptr;
|
||||
uint cmd,conv;
|
||||
|
||||
|
4
sdl.c
4
sdl.c
@ -212,9 +212,9 @@ static void DrawSurfaceToScreen()
|
||||
|
||||
static int CDECL compare_res(const void *pa, const void *pb)
|
||||
{
|
||||
int x = ((uint16*)pa)[0] - ((uint16*)pb)[0];
|
||||
int x = ((const uint16*)pa)[0] - ((const uint16*)pb)[0];
|
||||
if (x) return x;
|
||||
return ((uint16*)pa)[1] - ((uint16*)pb)[1];
|
||||
return ((const uint16*)pa)[1] - ((const uint16*)pb)[1];
|
||||
}
|
||||
|
||||
static const uint16 default_resolutions[][2] = {
|
||||
|
17
settings.c
17
settings.c
@ -325,9 +325,9 @@ static void ini_free(IniFile *ini)
|
||||
struct SettingDesc {
|
||||
const char *name;
|
||||
int flags;
|
||||
void *def;
|
||||
const void *def;
|
||||
void *ptr;
|
||||
void *b;
|
||||
const void *b;
|
||||
|
||||
};
|
||||
|
||||
@ -493,7 +493,7 @@ static void make_manyofmany(char *buf, const char *many, uint32 x)
|
||||
*buf = 0;
|
||||
}
|
||||
|
||||
static void *string_to_val(const SettingDesc *desc, const char *str)
|
||||
static const void *string_to_val(const SettingDesc *desc, const char *str)
|
||||
{
|
||||
unsigned long val;
|
||||
char *end;
|
||||
@ -532,11 +532,11 @@ static void *string_to_val(const SettingDesc *desc, const char *str)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void load_setting_desc(IniFile *ini, const SettingDesc *desc, void *grpname, void *base)
|
||||
static void load_setting_desc(IniFile *ini, const SettingDesc *desc, const void *grpname, void *base)
|
||||
{
|
||||
IniGroup *group_def = ini_getgroup(ini, grpname, -1), *group;
|
||||
IniItem *item;
|
||||
void *p;
|
||||
const void *p;
|
||||
void *ptr;
|
||||
|
||||
for (;desc->name;desc++) {
|
||||
@ -603,11 +603,12 @@ static void load_setting_desc(IniFile *ini, const SettingDesc *desc, void *grpna
|
||||
}
|
||||
}
|
||||
|
||||
static void save_setting_desc(IniFile *ini, const SettingDesc *desc, void *grpname, void *base)
|
||||
static void save_setting_desc(IniFile *ini, const SettingDesc *desc, const void *grpname, void *base)
|
||||
{
|
||||
IniGroup *group_def = NULL, *group;
|
||||
IniItem *item;
|
||||
void *p, *ptr;
|
||||
const void *p;
|
||||
void *ptr;
|
||||
int i = 0;
|
||||
char buf[512]; // setting buffer
|
||||
const char *s;
|
||||
@ -883,7 +884,7 @@ static const SettingDesc patch_settings[] = {
|
||||
{NULL, 0, NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
typedef void SettingDescProc(IniFile *ini, const SettingDesc *desc, void *grpname, void *base);
|
||||
typedef void SettingDescProc(IniFile *ini, const SettingDesc *desc, const void *grpname, void *base);
|
||||
|
||||
static void HandleSettingDescs(IniFile *ini, SettingDescProc *proc)
|
||||
{
|
||||
|
@ -1743,13 +1743,13 @@ static void DrawTile_Station(TileInfo *ti)
|
||||
|
||||
t = _station_display_datas[ti->map5];
|
||||
|
||||
image = *(uint32*)t;
|
||||
image = *(const uint32*)t;
|
||||
t += sizeof(uint32);
|
||||
if (image & 0x8000)
|
||||
image |= image_or_modificator;
|
||||
DrawGroundSprite(image + base_img);
|
||||
|
||||
for(dtss = (DrawTileSeqStruct *)t; (byte)dtss->delta_x != 0x80; dtss++) {
|
||||
for(dtss = (const DrawTileSeqStruct *)t; (byte)dtss->delta_x != 0x80; dtss++) {
|
||||
if ((byte)dtss->delta_z != 0x80) {
|
||||
image = dtss->image + base_img;
|
||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
||||
@ -1760,7 +1760,7 @@ static void DrawTile_Station(TileInfo *ti)
|
||||
|
||||
AddSortableSpriteToDraw(image, ti->x + dtss->delta_x, ti->y + dtss->delta_y, dtss->width, dtss->height, dtss->unk, ti->z + dtss->delta_z);
|
||||
} else {
|
||||
image = *(uint32*)&dtss->height + base_img; /* endian ok */
|
||||
image = *(const uint32*)&dtss->height + base_img; /* endian ok */
|
||||
|
||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
||||
if (image&0x8000) image |= image_or_modificator;
|
||||
@ -1785,13 +1785,13 @@ void StationPickerDrawSprite(int x, int y, int railtype, int image)
|
||||
|
||||
t = _station_display_datas[image];
|
||||
|
||||
img = *(uint32*)t;
|
||||
img = *(const uint32*)t;
|
||||
t += sizeof(uint32);
|
||||
if (img & 0x8000)
|
||||
img |= ormod;
|
||||
DrawSprite(img, x, y);
|
||||
|
||||
for(dtss = (DrawTileSeqStruct *)t; (byte)dtss->delta_x != 0x80; dtss++) {
|
||||
for(dtss = (const DrawTileSeqStruct *)t; (byte)dtss->delta_x != 0x80; dtss++) {
|
||||
Point pt = RemapCoords(dtss->delta_x, dtss->delta_y, dtss->delta_z);
|
||||
DrawSprite((dtss->image | ormod) + railtype, x + pt.x, y + pt.y);
|
||||
}
|
||||
|
@ -54,9 +54,8 @@ static int CDECL StationNameSorter(const void *a, const void *b)
|
||||
{
|
||||
char buf1[64];
|
||||
Station *st;
|
||||
SortStruct *cmp1, *cmp2;
|
||||
cmp1 = (SortStruct*)a;
|
||||
cmp2 = (SortStruct*)b;
|
||||
const SortStruct *cmp1 = (const SortStruct*)a;
|
||||
const SortStruct *cmp2 = (const SortStruct*)b;
|
||||
|
||||
st = DEREF_STATION(cmp1->index);
|
||||
SET_DPARAM16(0, st->town->townnametype);
|
||||
|
@ -43,7 +43,7 @@ typedef struct LineName {
|
||||
struct LineName *hash_next;
|
||||
int value;
|
||||
char str[1];
|
||||
} LineName;
|
||||
} LineName;
|
||||
|
||||
int _cur_line;
|
||||
bool _warnings;
|
||||
@ -218,7 +218,7 @@ static const CmdStruct _cmd_structs[] = {
|
||||
{"", EmitSingleByte, 10},
|
||||
|
||||
// Colors
|
||||
{"BLUE", EmitSingleByte, 15},
|
||||
{"BLUE", EmitSingleByte, 15},
|
||||
{"SILVER", EmitSingleByte, 16},
|
||||
{"GOLD", EmitSingleByte, 17},
|
||||
{"RED", EmitSingleByte, 18},
|
||||
@ -235,7 +235,7 @@ static const CmdStruct _cmd_structs[] = {
|
||||
{"GRAY", EmitSingleByte, 29},
|
||||
{"DKBLUE", EmitSingleByte, 30},
|
||||
{"BLACK", EmitSingleByte, 31},
|
||||
|
||||
|
||||
// 0x7B=123 is the LAST special character we may use.
|
||||
|
||||
// Numbers
|
||||
@ -245,12 +245,12 @@ static const CmdStruct _cmd_structs[] = {
|
||||
{"NUMU16", EmitSingleByte, 0x7E},
|
||||
|
||||
{"CURRENCY", EmitSingleByte, 0x7F},
|
||||
|
||||
|
||||
{"CURRCOMPACT", EmitEscapedByte, 0}, // compact currency
|
||||
{"INT32", EmitEscapedByte, 1}, // compact currency
|
||||
{"REV", EmitEscapedByte, 2}, // openttd revision string
|
||||
{"SHORTCARGO", EmitEscapedByte, 3}, // short cargo description, only ### tons, or ### litres
|
||||
|
||||
|
||||
{"STRINL", EmitStringInl, 0x81},
|
||||
|
||||
{"DATE_LONG", EmitSingleByte, 0x82},
|
||||
@ -388,7 +388,7 @@ bool check_commands_match(char *a, char *b)
|
||||
void handle_string(char *str, bool master) {
|
||||
char *s,*t,*r;
|
||||
int ent;
|
||||
|
||||
|
||||
if (*str == '#') {
|
||||
if (str[1] == '#' && str[2] != '#')
|
||||
handle_pragma(str + 2);
|
||||
@ -471,7 +471,7 @@ uint32 my_hash_str(uint32 hash, const char *s)
|
||||
if (hash & 1) hash = (hash>>1) ^ 0xDEADBEEF; else hash >>= 1;
|
||||
}
|
||||
return hash;
|
||||
|
||||
|
||||
}
|
||||
|
||||
void parse_file(const char *file, bool english) {
|
||||
@ -481,7 +481,7 @@ void parse_file(const char *file, bool english) {
|
||||
|
||||
in = fopen(file, "r");
|
||||
if (in == NULL) { error("Cannot open file '%s'", file); }
|
||||
|
||||
|
||||
_cur_line = 1;
|
||||
while (fgets(buf, sizeof(buf),in) != NULL) {
|
||||
i = strlen(buf);
|
||||
@ -512,7 +512,7 @@ void parse_file(const char *file, bool english) {
|
||||
if (hash & 1) hash = (hash>>1) ^ 0xF00BAA4; else hash >>= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_hash = hash;
|
||||
}
|
||||
@ -579,7 +579,7 @@ void gen_output(FILE *f) {
|
||||
for(j=0; j!=in_use[i]; j++) {
|
||||
char *s = allstr[(i<<11)+j];
|
||||
if (s == NULL) error("Internal error, s==NULL");
|
||||
|
||||
|
||||
write_length(f, *(uint16*)s);
|
||||
fwrite(s + sizeof(uint16), *(uint16*)s , 1, f);
|
||||
tot_str--;
|
||||
@ -642,7 +642,7 @@ void write_strings_h(const char *filename)
|
||||
lastgrp = (i >> 11);
|
||||
fprintf(out, "};\n\nenum {");
|
||||
}
|
||||
|
||||
|
||||
fprintf(out, next == i ? "%s,\n" : "\n%s = 0x%X,\n", allstr[i] + 1, i);
|
||||
next = i + 1;
|
||||
}
|
||||
@ -650,7 +650,7 @@ void write_strings_h(const char *filename)
|
||||
|
||||
fprintf(out, "};\n");
|
||||
|
||||
fprintf(out,
|
||||
fprintf(out,
|
||||
"\nenum {\n"
|
||||
"\tLANGUAGE_PACK_IDENT = 0x474E414C, // Big Endian value for 'LANG' (LE is 0x 4C 41 4E 47)\n"
|
||||
"\tLANGUAGE_PACK_VERSION = 0x%X,\n"
|
||||
@ -690,7 +690,7 @@ void write_langfile(const char *filename, int show_todo)
|
||||
hdr.offsets[i] = TO_LE16(n);
|
||||
}
|
||||
|
||||
// see line 655: fprintf(..."\tLANGUAGE_PACK_IDENT = 0x474E414C,...)
|
||||
// see line 655: fprintf(..."\tLANGUAGE_PACK_IDENT = 0x474E414C,...)
|
||||
hdr.ident = TO_LE32(0x474E414C); // Big Endian value for 'LANG'
|
||||
hdr.version = TO_LE32(_hash);
|
||||
strcpy(hdr.name, _lang_name);
|
||||
@ -712,7 +712,7 @@ void write_langfile(const char *filename, int show_todo)
|
||||
if (show_todo == 2) {
|
||||
fprintf(stderr, "Warning:%s: String '%s' is untranslated\n", filename, s + 1);
|
||||
} else {
|
||||
char *s = "<TODO> ";
|
||||
const char *s = "<TODO> ";
|
||||
while(*s) put_byte(*s++);
|
||||
}
|
||||
}
|
||||
@ -769,10 +769,10 @@ int main(int argc, char* argv[])
|
||||
if (_warnings) return 1;
|
||||
|
||||
// write english.lng and strings.h
|
||||
|
||||
|
||||
write_langfile("lang/english.lng", 0);
|
||||
write_strings_h("table/strings.h");
|
||||
|
||||
|
||||
} else if (argc == 2) {
|
||||
parse_file("lang/english.txt", true);
|
||||
parse_file(argv[1], false);
|
||||
|
@ -66,7 +66,7 @@ static const LandscapePredefVar _landscape_predef_var[4] = {
|
||||
STR_000E,
|
||||
STR_001F_PAPER,
|
||||
STR_0020_GOLD,
|
||||
STR_001E_FOOD,
|
||||
STR_001E_FOOD,
|
||||
},
|
||||
/* hilly weights */
|
||||
{
|
||||
|
@ -132,7 +132,7 @@ static const SpriteID _landscape_spriteindexes_3[] = {
|
||||
};
|
||||
|
||||
|
||||
/* Slope graphics indexes temperate climate
|
||||
/* Slope graphics indexes temperate climate
|
||||
Skip first 3 sprites and only load the proper set */
|
||||
static const SpriteID _slopes_spriteindexes_0[] = {
|
||||
0xfffe, 3,
|
||||
@ -148,7 +148,7 @@ static const SpriteID _slopes_spriteindexes_1[] = {
|
||||
0xffff,
|
||||
};
|
||||
|
||||
/* Slope graphics indexes tropical climate
|
||||
/* Slope graphics indexes tropical climate
|
||||
Skip first 155 sprites and only load the proper set */
|
||||
static const SpriteID _slopes_spriteindexes_2[] = {
|
||||
0xfffe, 155,
|
||||
|
128
table/palettes.h
128
table/palettes.h
@ -1,70 +1,70 @@
|
||||
byte _palettes[4][256 * 3] = {
|
||||
/* palette 1 */
|
||||
{
|
||||
0, 0, 0, 212, 0, 212, 212, 0, 212, 212, 0, 212,
|
||||
212, 0, 212, 212, 0, 212, 212, 0, 212, 212, 0, 212,
|
||||
212, 0, 212, 212, 0, 212, 168, 168, 168, 184, 184, 184,
|
||||
200, 200, 200, 216, 216, 216, 232, 232, 232, 252, 252, 252,
|
||||
52, 60, 72, 68, 76, 92, 88, 96, 112, 108, 116, 132,
|
||||
132, 140, 152, 156, 160, 172, 176, 184, 196, 204, 208, 220,
|
||||
48, 44, 4, 64, 60, 12, 80, 76, 20, 96, 92, 28,
|
||||
120, 120, 64, 148, 148, 100, 176, 176, 132, 204, 204, 168,
|
||||
100, 100, 100, 116, 116, 116, 104, 80, 44, 124, 104, 72,
|
||||
152, 132, 92, 184, 160, 120, 212, 188, 148, 244, 220, 176,
|
||||
132, 132, 132, 88, 4, 16, 112, 16, 32, 136, 32, 52,
|
||||
160, 56, 76, 188, 84, 108, 204, 104, 124, 220, 132, 144,
|
||||
236, 156, 164, 252, 188, 192, 252, 212, 0, 252, 232, 60,
|
||||
252, 248, 128, 76, 40, 0, 96, 60, 8, 116, 88, 28,
|
||||
136, 116, 56, 156, 136, 80, 176, 156, 108, 196, 180, 136,
|
||||
68, 24, 0, 96, 44, 4, 128, 68, 8, 156, 96, 16,
|
||||
184, 120, 24, 212, 156, 32, 232, 184, 16, 252, 212, 0,
|
||||
252, 248, 128, 252, 252, 192, 32, 4, 0, 64, 20, 8,
|
||||
84, 28, 16, 108, 44, 28, 128, 56, 40, 148, 72, 56,
|
||||
168, 92, 76, 184, 108, 88, 196, 128, 108, 212, 148, 128,
|
||||
8, 52, 0, 16, 64, 0, 32, 80, 4, 48, 96, 4,
|
||||
64, 112, 12, 84, 132, 20, 104, 148, 28, 128, 168, 44,
|
||||
64, 64, 64, 44, 68, 32, 60, 88, 48, 80, 104, 60,
|
||||
104, 124, 76, 128, 148, 92, 152, 176, 108, 180, 204, 124,
|
||||
16, 52, 24, 32, 72, 44, 56, 96, 72, 76, 116, 88,
|
||||
96, 136, 108, 120, 164, 136, 152, 192, 168, 184, 220, 200,
|
||||
32, 24, 0, 56, 28, 0, 80, 80, 80, 88, 52, 12,
|
||||
104, 64, 24, 124, 84, 44, 140, 108, 64, 160, 128, 88,
|
||||
76, 40, 16, 96, 52, 24, 116, 68, 40, 136, 84, 56,
|
||||
164, 96, 64, 184, 112, 80, 204, 128, 96, 212, 148, 112,
|
||||
224, 168, 128, 236, 188, 148, 80, 28, 4, 100, 40, 20,
|
||||
120, 56, 40, 140, 76, 64, 160, 100, 96, 184, 136, 136,
|
||||
36, 40, 68, 48, 52, 84, 64, 64, 100, 80, 80, 116,
|
||||
100, 100, 136, 132, 132, 164, 172, 172, 192, 212, 212, 224,
|
||||
48, 48, 48, 64, 44, 144, 88, 64, 172, 104, 76, 196,
|
||||
120, 88, 224, 140, 104, 252, 160, 136, 252, 188, 168, 252,
|
||||
0, 24, 108, 0, 36, 132, 0, 52, 160, 0, 72, 184,
|
||||
0, 96, 212, 24, 120, 220, 56, 144, 232, 88, 168, 240,
|
||||
128, 196, 252, 188, 224, 252, 16, 64, 96, 24, 80, 108,
|
||||
40, 96, 120, 52, 112, 132, 80, 140, 160, 116, 172, 192,
|
||||
156, 204, 220, 204, 240, 252, 172, 52, 52, 212, 52, 52,
|
||||
252, 52, 52, 252, 100, 88, 252, 144, 124, 252, 184, 160,
|
||||
252, 216, 200, 252, 244, 236, 72, 20, 112, 92, 44, 140,
|
||||
112, 68, 168, 140, 100, 196, 168, 136, 224, 204, 180, 252,
|
||||
204, 180, 252, 232, 208, 252, 60, 0, 0, 92, 0, 0,
|
||||
128, 0, 0, 160, 0, 0, 196, 0, 0, 224, 0, 0,
|
||||
252, 0, 0, 252, 80, 0, 252, 108, 0, 252, 136, 0,
|
||||
252, 164, 0, 252, 192, 0, 252, 220, 0, 252, 252, 0,
|
||||
204, 136, 8, 228, 144, 4, 252, 156, 0, 252, 176, 48,
|
||||
252, 196, 100, 252, 216, 152, 8, 24, 88, 12, 36, 104,
|
||||
20, 52, 124, 28, 68, 140, 40, 92, 164, 56, 120, 188,
|
||||
72, 152, 216, 100, 172, 224, 92, 156, 52, 108, 176, 64,
|
||||
124, 200, 76, 144, 224, 92, 224, 244, 252, 204, 240, 252,
|
||||
180, 220, 236, 132, 188, 216, 88, 152, 172, 16, 16, 16,
|
||||
32, 32, 32, 8, 92, 104, 16, 100, 112, 24, 108, 120,
|
||||
32, 116, 128, 44, 124, 140, 92, 164, 184, 116, 180, 196,
|
||||
148, 200, 216, 180, 220, 232, 216, 244, 252, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
252, 60, 0, 252, 80, 0, 252, 104, 0, 252, 128, 0,
|
||||
252, 148, 0, 252, 172, 0, 252, 196, 0, 252, 0, 0,
|
||||
252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
252, 228, 0, 148, 148, 148, 212, 0, 212, 212, 0, 212,
|
||||
212, 0, 212, 212, 0, 212, 212, 0, 212, 212, 0, 212,
|
||||
212, 0, 212, 212, 0, 212, 212, 0, 212, 252, 252, 252,
|
||||
0, 0, 0, 212, 0, 212, 212, 0, 212, 212, 0, 212,
|
||||
212, 0, 212, 212, 0, 212, 212, 0, 212, 212, 0, 212,
|
||||
212, 0, 212, 212, 0, 212, 168, 168, 168, 184, 184, 184,
|
||||
200, 200, 200, 216, 216, 216, 232, 232, 232, 252, 252, 252,
|
||||
52, 60, 72, 68, 76, 92, 88, 96, 112, 108, 116, 132,
|
||||
132, 140, 152, 156, 160, 172, 176, 184, 196, 204, 208, 220,
|
||||
48, 44, 4, 64, 60, 12, 80, 76, 20, 96, 92, 28,
|
||||
120, 120, 64, 148, 148, 100, 176, 176, 132, 204, 204, 168,
|
||||
100, 100, 100, 116, 116, 116, 104, 80, 44, 124, 104, 72,
|
||||
152, 132, 92, 184, 160, 120, 212, 188, 148, 244, 220, 176,
|
||||
132, 132, 132, 88, 4, 16, 112, 16, 32, 136, 32, 52,
|
||||
160, 56, 76, 188, 84, 108, 204, 104, 124, 220, 132, 144,
|
||||
236, 156, 164, 252, 188, 192, 252, 212, 0, 252, 232, 60,
|
||||
252, 248, 128, 76, 40, 0, 96, 60, 8, 116, 88, 28,
|
||||
136, 116, 56, 156, 136, 80, 176, 156, 108, 196, 180, 136,
|
||||
68, 24, 0, 96, 44, 4, 128, 68, 8, 156, 96, 16,
|
||||
184, 120, 24, 212, 156, 32, 232, 184, 16, 252, 212, 0,
|
||||
252, 248, 128, 252, 252, 192, 32, 4, 0, 64, 20, 8,
|
||||
84, 28, 16, 108, 44, 28, 128, 56, 40, 148, 72, 56,
|
||||
168, 92, 76, 184, 108, 88, 196, 128, 108, 212, 148, 128,
|
||||
8, 52, 0, 16, 64, 0, 32, 80, 4, 48, 96, 4,
|
||||
64, 112, 12, 84, 132, 20, 104, 148, 28, 128, 168, 44,
|
||||
64, 64, 64, 44, 68, 32, 60, 88, 48, 80, 104, 60,
|
||||
104, 124, 76, 128, 148, 92, 152, 176, 108, 180, 204, 124,
|
||||
16, 52, 24, 32, 72, 44, 56, 96, 72, 76, 116, 88,
|
||||
96, 136, 108, 120, 164, 136, 152, 192, 168, 184, 220, 200,
|
||||
32, 24, 0, 56, 28, 0, 80, 80, 80, 88, 52, 12,
|
||||
104, 64, 24, 124, 84, 44, 140, 108, 64, 160, 128, 88,
|
||||
76, 40, 16, 96, 52, 24, 116, 68, 40, 136, 84, 56,
|
||||
164, 96, 64, 184, 112, 80, 204, 128, 96, 212, 148, 112,
|
||||
224, 168, 128, 236, 188, 148, 80, 28, 4, 100, 40, 20,
|
||||
120, 56, 40, 140, 76, 64, 160, 100, 96, 184, 136, 136,
|
||||
36, 40, 68, 48, 52, 84, 64, 64, 100, 80, 80, 116,
|
||||
100, 100, 136, 132, 132, 164, 172, 172, 192, 212, 212, 224,
|
||||
48, 48, 48, 64, 44, 144, 88, 64, 172, 104, 76, 196,
|
||||
120, 88, 224, 140, 104, 252, 160, 136, 252, 188, 168, 252,
|
||||
0, 24, 108, 0, 36, 132, 0, 52, 160, 0, 72, 184,
|
||||
0, 96, 212, 24, 120, 220, 56, 144, 232, 88, 168, 240,
|
||||
128, 196, 252, 188, 224, 252, 16, 64, 96, 24, 80, 108,
|
||||
40, 96, 120, 52, 112, 132, 80, 140, 160, 116, 172, 192,
|
||||
156, 204, 220, 204, 240, 252, 172, 52, 52, 212, 52, 52,
|
||||
252, 52, 52, 252, 100, 88, 252, 144, 124, 252, 184, 160,
|
||||
252, 216, 200, 252, 244, 236, 72, 20, 112, 92, 44, 140,
|
||||
112, 68, 168, 140, 100, 196, 168, 136, 224, 204, 180, 252,
|
||||
204, 180, 252, 232, 208, 252, 60, 0, 0, 92, 0, 0,
|
||||
128, 0, 0, 160, 0, 0, 196, 0, 0, 224, 0, 0,
|
||||
252, 0, 0, 252, 80, 0, 252, 108, 0, 252, 136, 0,
|
||||
252, 164, 0, 252, 192, 0, 252, 220, 0, 252, 252, 0,
|
||||
204, 136, 8, 228, 144, 4, 252, 156, 0, 252, 176, 48,
|
||||
252, 196, 100, 252, 216, 152, 8, 24, 88, 12, 36, 104,
|
||||
20, 52, 124, 28, 68, 140, 40, 92, 164, 56, 120, 188,
|
||||
72, 152, 216, 100, 172, 224, 92, 156, 52, 108, 176, 64,
|
||||
124, 200, 76, 144, 224, 92, 224, 244, 252, 204, 240, 252,
|
||||
180, 220, 236, 132, 188, 216, 88, 152, 172, 16, 16, 16,
|
||||
32, 32, 32, 8, 92, 104, 16, 100, 112, 24, 108, 120,
|
||||
32, 116, 128, 44, 124, 140, 92, 164, 184, 116, 180, 196,
|
||||
148, 200, 216, 180, 220, 232, 216, 244, 252, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
252, 60, 0, 252, 80, 0, 252, 104, 0, 252, 128, 0,
|
||||
252, 148, 0, 252, 172, 0, 252, 196, 0, 252, 0, 0,
|
||||
252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
252, 228, 0, 148, 148, 148, 212, 0, 212, 212, 0, 212,
|
||||
212, 0, 212, 212, 0, 212, 212, 0, 212, 212, 0, 212,
|
||||
212, 0, 212, 212, 0, 212, 212, 0, 212, 252, 252, 252,
|
||||
}};
|
||||
|
||||
#define GET_PALETTE(x) _palettes[x]
|
||||
|
@ -43,7 +43,7 @@ static const SpriteID _road_tile_sprites_1[16] = {
|
||||
|
||||
|
||||
|
||||
#define MAKELINE(a,b,c) ADD_WORD(a), b, c,
|
||||
#define MAKELINE(a,b,c) ADD_WORD(a), b, c,
|
||||
static const byte _road_display_datas2_0[] = {
|
||||
0,0
|
||||
};
|
||||
|
@ -536,7 +536,7 @@ static const byte _station_display_datas_82[] = {
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
// end of runway
|
||||
// end of runway
|
||||
const byte _station_display_datas_083[] = {
|
||||
TILE_SEQ_BEGIN(0xA59)
|
||||
TILE_SEQ_END()
|
||||
@ -570,7 +570,7 @@ const byte _station_display_datas_087[] = {
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
// end of runway
|
||||
// end of runway
|
||||
const byte _station_display_datas_088[] = {
|
||||
TILE_SEQ_BEGIN(0xA59)
|
||||
TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, 0x8A68) // fences
|
||||
@ -580,7 +580,7 @@ const byte _station_display_datas_088[] = {
|
||||
// runway tiles
|
||||
const byte _station_display_datas_089[] = {
|
||||
TILE_SEQ_BEGIN(0xA56)
|
||||
TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, 0x8A68) // fences
|
||||
TILE_SEQ_LINE( 0, 0, 0, 16, 1, 6, 0x8A68) // fences
|
||||
TILE_SEQ_END()
|
||||
};
|
||||
|
||||
@ -857,28 +857,28 @@ static const byte * const _station_display_datas[] = {
|
||||
_station_display_datas_087,
|
||||
_station_display_datas_088,
|
||||
_station_display_datas_089,
|
||||
_station_display_datas_090,
|
||||
_station_display_datas_091,
|
||||
_station_display_datas_092,
|
||||
_station_display_datas_093,
|
||||
_station_display_datas_094,
|
||||
_station_display_datas_095,
|
||||
_station_display_datas_096,
|
||||
_station_display_datas_097,
|
||||
_station_display_datas_098,
|
||||
_station_display_datas_099,
|
||||
_station_display_datas_090,
|
||||
_station_display_datas_091,
|
||||
_station_display_datas_092,
|
||||
_station_display_datas_093,
|
||||
_station_display_datas_094,
|
||||
_station_display_datas_095,
|
||||
_station_display_datas_096,
|
||||
_station_display_datas_097,
|
||||
_station_display_datas_098,
|
||||
_station_display_datas_099,
|
||||
_station_display_datas_0100,
|
||||
_station_display_datas_0101,
|
||||
_station_display_datas_0102,
|
||||
_station_display_datas_0103,
|
||||
_station_display_datas_0104,
|
||||
_station_display_datas_0105,
|
||||
_station_display_datas_0106,
|
||||
_station_display_datas_0107,
|
||||
_station_display_datas_0108,
|
||||
_station_display_datas_0109,
|
||||
_station_display_datas_0110,
|
||||
_station_display_datas_0111,
|
||||
_station_display_datas_0101,
|
||||
_station_display_datas_0102,
|
||||
_station_display_datas_0103,
|
||||
_station_display_datas_0104,
|
||||
_station_display_datas_0105,
|
||||
_station_display_datas_0106,
|
||||
_station_display_datas_0107,
|
||||
_station_display_datas_0108,
|
||||
_station_display_datas_0109,
|
||||
_station_display_datas_0110,
|
||||
_station_display_datas_0111,
|
||||
_station_display_datas_0112,
|
||||
_station_display_datas_0113,
|
||||
_station_display_datas_0114,
|
||||
|
@ -1,43 +1,43 @@
|
||||
static const SpriteID _engine_sprite_base[] = {
|
||||
0x0B59, 0x0B61, 0x0B69, 0x0BE1, 0x0B71, 0x0B75, 0x0B7D, 0x0B7D,
|
||||
0x0B85, 0x0B85, 0x0B8D, 0x0B8D, 0x0BC9, 0x0BD1, 0x0BD9, 0x0BE9,
|
||||
0x0BED, 0x0BED, 0x0BF5, 0x0BF9, 0x0B79, 0x0B9D, 0x0B9D, 0x0B95,
|
||||
0x0B95, 0x0BA5, 0x0BA9, 0x0BA9, 0x0BC1, 0x0BC5, 0x0BB1, 0x0BB9,
|
||||
0x0BB9, 0x0AAD, 0x0AB1, 0x0AB5, 0x0AB9, 0x0ABD, 0x0AC1, 0x0AC9,
|
||||
0x0ACD, 0x0AD5, 0x0AD1, 0x0AD9, 0x0AC5, 0x0AD1, 0x0AD5, 0x0AF9,
|
||||
0x0AFD, 0x0B05, 0x0AB9, 0x0AC1, 0x0AC9, 0x0AD1, 0x0AD9, 0x0AE1,
|
||||
0x0AE5, 0x0AE9, 0x0AF1, 0x0AF9, 0x0B0D, 0x0B11, 0x0B15, 0x0B19,
|
||||
0x0B1D, 0x0B21, 0x0B29, 0x0B2D, 0x0B35, 0x0B31, 0x0B39, 0x0B25,
|
||||
0x0B31, 0x0B35,
|
||||
0x0B59, 0x0B61, 0x0B69, 0x0BE1, 0x0B71, 0x0B75, 0x0B7D, 0x0B7D,
|
||||
0x0B85, 0x0B85, 0x0B8D, 0x0B8D, 0x0BC9, 0x0BD1, 0x0BD9, 0x0BE9,
|
||||
0x0BED, 0x0BED, 0x0BF5, 0x0BF9, 0x0B79, 0x0B9D, 0x0B9D, 0x0B95,
|
||||
0x0B95, 0x0BA5, 0x0BA9, 0x0BA9, 0x0BC1, 0x0BC5, 0x0BB1, 0x0BB9,
|
||||
0x0BB9, 0x0AAD, 0x0AB1, 0x0AB5, 0x0AB9, 0x0ABD, 0x0AC1, 0x0AC9,
|
||||
0x0ACD, 0x0AD5, 0x0AD1, 0x0AD9, 0x0AC5, 0x0AD1, 0x0AD5, 0x0AF9,
|
||||
0x0AFD, 0x0B05, 0x0AB9, 0x0AC1, 0x0AC9, 0x0AD1, 0x0AD9, 0x0AE1,
|
||||
0x0AE5, 0x0AE9, 0x0AF1, 0x0AF9, 0x0B0D, 0x0B11, 0x0B15, 0x0B19,
|
||||
0x0B1D, 0x0B21, 0x0B29, 0x0B2D, 0x0B35, 0x0B31, 0x0B39, 0x0B25,
|
||||
0x0B31, 0x0B35,
|
||||
};
|
||||
|
||||
/* For how many directions do we have sprites? (8 or 4; if 4, the other 4
|
||||
* directions are symmetric. */
|
||||
static const byte _engine_sprite_and[] = {
|
||||
7, 7, 7, 7, 3, 3, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 3,
|
||||
7, 7, 3, 7, 3, 7, 7, 7,
|
||||
7, 3, 7, 7, 3, 3, 7, 7,
|
||||
7, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3,
|
||||
7, 7, 7, 7, 3, 3, 7, 7,
|
||||
7, 7, 7, 7, 7, 7, 7, 3,
|
||||
7, 7, 3, 7, 3, 7, 7, 7,
|
||||
7, 3, 7, 7, 3, 3, 7, 7,
|
||||
7, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3, 3, 3, 3, 3, 3, 3,
|
||||
3, 3,
|
||||
};
|
||||
|
||||
/* Non-zero for multihead trains. */
|
||||
static const byte _engine_sprite_add[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 4,
|
||||
0, 4, 0, 4, 0, 0, 0, 0,
|
||||
0, 4, 0, 0, 0, 0, 4, 0,
|
||||
4, 0, 0, 4, 0, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 4,
|
||||
0, 4, 0, 4, 0, 0, 0, 0,
|
||||
0, 4, 0, 0, 0, 0, 4, 0,
|
||||
4, 0, 0, 4, 0, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0,
|
||||
};
|
||||
|
||||
|
||||
|
@ -3,8 +3,8 @@ static const byte _shipdepot_display_seq_1[] = {
|
||||
|
||||
0,15,0,16,1,0x14,
|
||||
ADD_WORD(0x8FE8),
|
||||
|
||||
0x80
|
||||
|
||||
0x80
|
||||
};
|
||||
|
||||
static const byte _shipdepot_display_seq_2[] = {
|
||||
@ -121,7 +121,7 @@ static const byte _shiplift_display_seq_3t[] = {
|
||||
ADD_WORD(0xFDD),
|
||||
0, 0, 0, 1, 0x10, 0x14, ADD_WORD(SPR_CANALS_BASE + 9 + 16 + 3),
|
||||
0xF, 0, 0, 1, 0x10, 0x14, ADD_WORD(SPR_CANALS_BASE + 9 + 20 + 3),
|
||||
0x80, 8
|
||||
0x80, 8
|
||||
};
|
||||
|
||||
static const byte * const _shiplift_display_seq[] = {
|
||||
|
10
town_gui.c
10
town_gui.c
@ -354,15 +354,15 @@ static byte _last_town_idx;
|
||||
static int CDECL TownNameSorter(const void *a, const void *b)
|
||||
{
|
||||
char buf1[64];
|
||||
Town *t;
|
||||
const Town *t;
|
||||
byte val;
|
||||
int r;
|
||||
|
||||
t = DEREF_TOWN(*(byte*)a);
|
||||
t = DEREF_TOWN(*(const byte*)a);
|
||||
SET_DPARAM32(0, t->townnameparts);
|
||||
GetString(buf1, t->townnametype);
|
||||
|
||||
if ( (val=*(byte*)b) != _last_town_idx) {
|
||||
if ( (val=*(const byte*)b) != _last_town_idx) {
|
||||
_last_town_idx = val;
|
||||
t = DEREF_TOWN(val);
|
||||
SET_DPARAM32(0, t->townnameparts);
|
||||
@ -376,8 +376,8 @@ static int CDECL TownNameSorter(const void *a, const void *b)
|
||||
|
||||
static int CDECL TownPopSorter(const void *a, const void *b)
|
||||
{
|
||||
Town *ta = DEREF_TOWN(*(byte*)a);
|
||||
Town *tb = DEREF_TOWN(*(byte*)b);
|
||||
const Town *ta = DEREF_TOWN(*(const byte*)a);
|
||||
const Town *tb = DEREF_TOWN(*(const byte*)b);
|
||||
int r = ta->population - tb->population;
|
||||
if (_town_sort_order & 1) r = -r;
|
||||
return r;
|
||||
|
4
ttd.c
4
ttd.c
@ -279,10 +279,10 @@ void LoadDriver(int driver, const char *name)
|
||||
error("No such %s driver: %s\n", dc->name, buffer);
|
||||
}
|
||||
var = dc->var;
|
||||
if (*var != NULL) ((HalCommonDriver*)*var)->stop();
|
||||
if (*var != NULL) ((const HalCommonDriver*)*var)->stop();
|
||||
*var = NULL;
|
||||
drv = dd->drv;
|
||||
if ((err=((HalCommonDriver*)drv)->start(parms)) != NULL)
|
||||
if ((err=((const HalCommonDriver*)drv)->start(parms)) != NULL)
|
||||
error("Unable to load driver %s(%s). The error was: %s\n", dd->name, dd->longname, err);
|
||||
*var = drv;
|
||||
}
|
||||
|
4
unix.c
4
unix.c
@ -279,7 +279,7 @@ char *FiosBrowseTo(const FiosItem *item)
|
||||
// Get descriptive texts.
|
||||
// Returns a path as well as a
|
||||
// string describing the path.
|
||||
StringID FiosGetDescText(char **path)
|
||||
StringID FiosGetDescText(const char **path)
|
||||
{
|
||||
*path = _fios_path[0] ? _fios_path : "/";
|
||||
|
||||
@ -360,7 +360,7 @@ bool FileExists(const char *filename)
|
||||
|
||||
static int LanguageCompareFunc(const void *a, const void *b)
|
||||
{
|
||||
return strcmp(*(char**)a, *(char**)b);
|
||||
return strcmp(*(const char* const *)a, *(const char* const *)b);
|
||||
}
|
||||
|
||||
int GetLanguageList(char **languages, int max)
|
||||
|
@ -84,11 +84,11 @@ static void DrawTile_Unmovable(TileInfo *ti)
|
||||
ormod = PLAYER_SPRITE_COLOR(_map_owner[ti->tile]);
|
||||
|
||||
t = _unmovable_display_datas[ti->map5 & 0x7F];
|
||||
DrawGroundSprite(*(uint16*)t | ormod);
|
||||
DrawGroundSprite(*(const uint16*)t | ormod);
|
||||
|
||||
t += sizeof(uint16);
|
||||
|
||||
for(dtss = (DrawTileSeqStruct *)t; (byte)dtss->delta_x != 0x80; dtss++) {
|
||||
for(dtss = (const DrawTileSeqStruct *)t; (byte)dtss->delta_x != 0x80; dtss++) {
|
||||
image = dtss->image;
|
||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
||||
image |= ormod;
|
||||
|
@ -383,10 +383,10 @@ static void DrawWaterStuff(TileInfo *ti, const byte *t, uint32 palette, uint bas
|
||||
const WaterDrawTileStruct *wdts;
|
||||
uint32 image;
|
||||
|
||||
DrawGroundSprite(*(uint16*)t);
|
||||
DrawGroundSprite(*(const uint16*)t);
|
||||
t += sizeof(uint16);
|
||||
|
||||
for(wdts = (WaterDrawTileStruct *)t; (byte)wdts->delta_x != 0x80; wdts++) {
|
||||
for(wdts = (const WaterDrawTileStruct *)t; (byte)wdts->delta_x != 0x80; wdts++) {
|
||||
image = wdts->image + base;
|
||||
if (_display_opt & DO_TRANS_BUILDINGS) {
|
||||
image |= palette;
|
||||
@ -429,10 +429,10 @@ void DrawShipDepotSprite(int x, int y, int image)
|
||||
const WaterDrawTileStruct *wdts;
|
||||
|
||||
t = _shipdepot_display_seq[image];
|
||||
DrawSprite(*(uint16*)t, x, y);
|
||||
DrawSprite(*(const uint16*)t, x, y);
|
||||
t += sizeof(uint16);
|
||||
|
||||
for(wdts = (WaterDrawTileStruct *)t; (byte)wdts->delta_x != 0x80; wdts++) {
|
||||
for(wdts = (const WaterDrawTileStruct *)t; (byte)wdts->delta_x != 0x80; wdts++) {
|
||||
Point pt = RemapCoords(wdts->delta_x, wdts->delta_y, wdts->delta_z);
|
||||
DrawSprite(wdts->image + PLAYER_SPRITE_COLOR(_local_player), x + pt.x, y + pt.y);
|
||||
}
|
||||
|
4
win32.c
4
win32.c
@ -1741,7 +1741,7 @@ char *FiosBrowseTo(const FiosItem *item)
|
||||
// Get descriptive texts.
|
||||
// Returns a path as well as a
|
||||
// string describing the path.
|
||||
StringID FiosGetDescText(char **path)
|
||||
StringID FiosGetDescText(const char **path)
|
||||
{
|
||||
char root[4];
|
||||
DWORD spc, bps, nfc, tnc;
|
||||
@ -1812,7 +1812,7 @@ bool FileExists(const char *filename)
|
||||
|
||||
static int CDECL LanguageCompareFunc(const void *a, const void *b)
|
||||
{
|
||||
return strcmp(*(char**)a, *(char**)b);
|
||||
return strcmp(*(const char* const *)a, *(const char* const *)b);
|
||||
}
|
||||
|
||||
int GetLanguageList(char **languages, int max)
|
||||
|
2
window.c
2
window.c
@ -25,7 +25,7 @@ void DispatchLeftClickEvent(Window *w, int x, int y) {
|
||||
if (e.click.widget < 0) return; /* exit if clicked outside of widgets */
|
||||
|
||||
wi = &w->widget[e.click.widget];
|
||||
|
||||
|
||||
/* don't allow any interaction if the button has been disabled */
|
||||
if (HASBIT(w->disabled_state, e.click.widget))
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user