settings_gui.c
changeset 20 13a47054d81e
parent 17 2a3a095d9aec
child 21 67cde01e8359
equal deleted inserted replaced
19:6080d2b6a959 20:13a47054d81e
   667 	PE_BOOL = 0,
   667 	PE_BOOL = 0,
   668 	PE_UINT8 = 1,
   668 	PE_UINT8 = 1,
   669 	PE_INT16 = 2,
   669 	PE_INT16 = 2,
   670 	PE_UINT16 = 3,
   670 	PE_UINT16 = 3,
   671 	PE_INT32 = 4,
   671 	PE_INT32 = 4,
   672 	PE_BYTE = 5,
       
   673 
   672 
   674 	PF_0ISDIS = 1,
   673 	PF_0ISDIS = 1,
   675 	PF_NOCOMMA = 2,
   674 	PF_NOCOMMA = 2,
   676 };
   675 };
   677 
   676 
   717 	{PE_UINT16, PF_0ISDIS, STR_CONFIG_PATCHES_SERVINT_TRAINS, &_patches.servint_trains, 30, 1200, 10},
   716 	{PE_UINT16, PF_0ISDIS, STR_CONFIG_PATCHES_SERVINT_TRAINS, &_patches.servint_trains, 30, 1200, 10},
   718 	{PE_UINT16, PF_0ISDIS, STR_CONFIG_PATCHES_SERVINT_ROADVEH, &_patches.servint_roadveh, 30, 1200, 10},
   717 	{PE_UINT16, PF_0ISDIS, STR_CONFIG_PATCHES_SERVINT_ROADVEH, &_patches.servint_roadveh, 30, 1200, 10},
   719 	{PE_UINT16, PF_0ISDIS, STR_CONFIG_PATCHES_SERVINT_AIRCRAFT, &_patches.servint_aircraft, 30, 1200, 10},
   718 	{PE_UINT16, PF_0ISDIS, STR_CONFIG_PATCHES_SERVINT_AIRCRAFT, &_patches.servint_aircraft, 30, 1200, 10},
   720 	{PE_UINT16, PF_0ISDIS, STR_CONFIG_PATCHES_SERVINT_SHIPS, &_patches.servint_ships, 30, 1200, 10},
   719 	{PE_UINT16, PF_0ISDIS, STR_CONFIG_PATCHES_SERVINT_SHIPS, &_patches.servint_ships, 30, 1200, 10},
   721 
   720 
   722 	{PE_BYTE, 0, STR_CONFIG_PATCHES_AI_BUILDS_TRAINS, &_patches.ai_disable_veh, 0x01},
   721 	{PE_BOOL, 0, STR_CONFIG_PATCHES_AI_BUILDS_TRAINS, &_patches.ai_disable_veh_train},
   723 	{PE_BYTE, 0, STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH, &_patches.ai_disable_veh, 0x02},
   722 	{PE_BOOL, 0, STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH, &_patches.ai_disable_veh_roadveh},
   724 	{PE_BYTE, 0, STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT, &_patches.ai_disable_veh, 0x04},
   723 	{PE_BOOL, 0, STR_CONFIG_PATCHES_AI_BUILDS_AIRCRAFT, &_patches.ai_disable_veh_aircraft},
   725 	{PE_BYTE, 0, STR_CONFIG_PATCHES_AI_BUILDS_SHIPS, &_patches.ai_disable_veh, 0x08},
   724 	{PE_BOOL, 0, STR_CONFIG_PATCHES_AI_BUILDS_SHIPS, &_patches.ai_disable_veh_ship},
   726 };
   725 };
   727 
   726 
   728 static const PatchEntry _patches_stations[] = {
   727 static const PatchEntry _patches_stations[] = {
   729 	{PE_BOOL, 0, STR_CONFIG_PATCHES_JOINSTATIONS, &_patches.join_stations},
   728 	{PE_BOOL, 0, STR_CONFIG_PATCHES_JOINSTATIONS, &_patches.join_stations},
   730 	{PE_BOOL, 0, STR_CONFIG_PATCHES_FULLLOADANY, &_patches.full_load_any},
   729 	{PE_BOOL, 0, STR_CONFIG_PATCHES_FULLLOADANY, &_patches.full_load_any},
   768 	case PE_BOOL:   return *(bool*)pe->variable;
   767 	case PE_BOOL:   return *(bool*)pe->variable;
   769 	case PE_UINT8:  return *(uint8*)pe->variable;
   768 	case PE_UINT8:  return *(uint8*)pe->variable;
   770 	case PE_INT16:  return *(int16*)pe->variable;
   769 	case PE_INT16:  return *(int16*)pe->variable;
   771 	case PE_UINT16: return *(uint16*)pe->variable;
   770 	case PE_UINT16: return *(uint16*)pe->variable;
   772 	case PE_INT32:  return *(int32*)pe->variable;
   771 	case PE_INT32:  return *(int32*)pe->variable;
   773 	case PE_BYTE:   return *(byte*)pe->variable;
       
   774 	default:
   772 	default:
   775 		NOT_REACHED();
   773 		NOT_REACHED();
   776 	}
   774 	}
   777   
   775   
   778 	/* useless, but avoids compiler warning this way */
   776 	/* useless, but avoids compiler warning this way */
   781 
   779 
   782 static void WritePE(const PatchEntry *pe, int32 val)
   780 static void WritePE(const PatchEntry *pe, int32 val)
   783 {
   781 {
   784 	switch(pe->type) {
   782 	switch(pe->type) {
   785 	case PE_BOOL: *(bool*)pe->variable = (bool)val; break;
   783 	case PE_BOOL: *(bool*)pe->variable = (bool)val; break;
   786 	case PE_BYTE: if ((byte)val > (byte)pe->max) 
       
   787 									*(byte*)pe->variable = (byte)pe->max;
       
   788 								else if ((byte)val < (byte)pe->min)
       
   789 									*(byte*)pe->variable = (byte)pe->min;
       
   790 								else
       
   791 									*(byte*)pe->variable = (byte)val;
       
   792 								break;
       
   793 
   784 
   794 	case PE_UINT8: if ((uint8)val > (uint8)pe->max) 
   785 	case PE_UINT8: if ((uint8)val > (uint8)pe->max) 
   795 									*(uint8*)pe->variable = (uint8)pe->max;
   786 									*(uint8*)pe->variable = (uint8)pe->max;
   796 								else if ((uint8)val < (uint8)pe->min)
   787 								else if ((uint8)val < (uint8)pe->min)
   797 									*(uint8*)pe->variable = (uint8)pe->min;
   788 									*(uint8*)pe->variable = (uint8)pe->min;
   849 		for(i=0,pe=page->entries; i!=page->num; i++,pe++) {
   840 		for(i=0,pe=page->entries; i!=page->num; i++,pe++) {
   850 			bool disabled = false;
   841 			bool disabled = false;
   851 			if (pe->type == PE_BOOL) {
   842 			if (pe->type == PE_BOOL) {
   852 				DrawFrameRect(x+5, y+1, x+15+9, y+9, (*(bool*)pe->variable)?6:4, (*(bool*)pe->variable)?0x20:0);
   843 				DrawFrameRect(x+5, y+1, x+15+9, y+9, (*(bool*)pe->variable)?6:4, (*(bool*)pe->variable)?0x20:0);
   853 				SET_DPARAM16(0, *(bool*)pe->variable ? STR_CONFIG_PATCHES_ON : STR_CONFIG_PATCHES_OFF);
   844 				SET_DPARAM16(0, *(bool*)pe->variable ? STR_CONFIG_PATCHES_ON : STR_CONFIG_PATCHES_OFF);
   854 			} else if (pe->type == PE_BYTE) {
       
   855 				bool enabled;
       
   856 				val = ReadPE(pe);
       
   857 				enabled = (byte)val & (byte)pe->min;
       
   858 				DrawFrameRect(x+5, y+1, x+15+9, y+9, enabled?6:4, enabled?0x20:0);
       
   859 				SET_DPARAM16(0, enabled ? STR_CONFIG_PATCHES_ON : STR_CONFIG_PATCHES_OFF);
       
   860 			} else {
   845 			} else {
   861 				DrawFrameRect(x+5, y+1, x+5+9, y+9, 3, clk == i*2+1 ? 0x20 : 0);
   846 				DrawFrameRect(x+5, y+1, x+5+9, y+9, 3, clk == i*2+1 ? 0x20 : 0);
   862 				DrawFrameRect(x+15, y+1, x+15+9, y+9, 3, clk == i*2+2 ? 0x20 : 0);
   847 				DrawFrameRect(x+15, y+1, x+15+9, y+9, 3, clk == i*2+2 ? 0x20 : 0);
   863 				DrawStringCentered(x+10, y+1, STR_6819, 0);
   848 				DrawStringCentered(x+10, y+1, STR_6819, 0);
   864 				DrawStringCentered(x+20, y+1, STR_681A, 0);
   849 				DrawStringCentered(x+20, y+1, STR_681A, 0);
   903 				int32 val = ReadPE(pe), oval = val;
   888 				int32 val = ReadPE(pe), oval = val;
   904 
   889 
   905 				switch(pe->type) {
   890 				switch(pe->type) {
   906 				case PE_BOOL:
   891 				case PE_BOOL:
   907 					val ^= 1;
   892 					val ^= 1;
   908 					break;
       
   909 				case PE_BYTE:
       
   910 					val ^= pe->min;
       
   911 					break;
   893 					break;
   912 				case PE_UINT8:
   894 				case PE_UINT8:
   913 				case PE_INT16:
   895 				case PE_INT16:
   914 				case PE_UINT16:
   896 				case PE_UINT16:
   915 				case PE_INT32:
   897 				case PE_INT32: