Tint unused industries red/orange in zonning
This commit is contained in:
Binary file not shown.
@@ -454,6 +454,13 @@ replace border_highlight(10029, "sprites/borderhighlight.png") {
|
||||
0x00: 0xa2; 0x01: 0xb6; 0x02: 0xb6; 0x03: 0xb6; 0x04: 0xb6; 0x05: 0xb7; 0x06: 0xb7; 0x07: 0xa3; 0x08: 0xa3; 0x09: 0xa3; 0x0a: 0xa4; 0x0b: 0xa4; 0x0c: 0xa4; 0x0d: 0xa4; 0x0e: 0xa4; 0x0f: 0xa4; 0x10: 0xb6; 0x11: 0xb6; 0x12: 0xa3; 0x13: 0xa3; 0x14: 0xa3; 0x15: 0xa3; 0x16: 0xa4; 0x17: 0xa4; 0x18: 0xb6; 0x19: 0xb6; 0x1a: 0xb7; 0x1b: 0xb7; 0x1c: 0xb7; 0x1d: 0xa3; 0x1e: 0xa4; 0x1f: 0xa4; 0x20: 0xb6; 0x21: 0xb7; 0x22: 0xb7; 0x23: 0xb7; 0x24: 0xa3; 0x25: 0xa4; 0x26: 0xa4; 0x27: 0xa4; 0x28: 0xb6; 0x29: 0xb7; 0x2a: 0xb7; 0x2b: 0xb7; 0x2c: 0xb7; 0x2d: 0xb7; 0x2e: 0xa4; 0x2f: 0xa4; 0x30: 0xa4; 0x31: 0xa4; 0x32: 0xb9; 0x33: 0xb9; 0x34: 0xa4; 0x35: 0xb6; 0x36: 0xb7; 0x37: 0xb7; 0x38: 0xb7; 0x39: 0xb7; 0x3a: 0xa4; 0x3b: 0xa4; 0x3c: 0xb6; 0x3d: 0xb7; 0x3e: 0xb7; 0x3f: 0xb7; 0x40: 0xb7; 0x41: 0xb8; 0x42: 0xb9; 0x43: 0xb9; 0x44: 0xa4; 0x45: 0xa4; 0x46: 0xb6; 0x47: 0xb6; 0x48: 0xb7; 0x49: 0xb7; 0x4a: 0xb7; 0x4b: 0xb7; 0x4c: 0xb7; 0x4d: 0xb7; 0x4e: 0xa4; 0x4f: 0xa4; 0x50: 0xb6; 0x51: 0xb6; 0x52: 0xb6; 0x53: 0xb6; 0x54: 0xb6; 0x55: 0xb7; 0x56: 0xb7; 0x57: 0xb7; 0x58: 0xb6; 0x59: 0xb6; 0x5a: 0xb6; 0x5b: 0xb7; 0x5c: 0xb7; 0x5d: 0xa3; 0x5e: 0xa3; 0x5f: 0xa4; 0x60: 0xb6; 0x61: 0xb6; 0x62: 0xb6; 0x63: 0xa3; 0x64: 0xa3; 0x65: 0xa3; 0x66: 0xa3; 0x67: 0xa4; 0x68: 0xb6; 0x69: 0xb6; 0x6a: 0xb6; 0x6b: 0xb7; 0x6c: 0xb7; 0x6d: 0xb7; 0x6e: 0xb7; 0x6f: 0xb7; 0x70: 0xb6; 0x71: 0xb7; 0x72: 0xb7; 0x73: 0xb7; 0x74: 0xb7; 0x75: 0xb7; 0x76: 0xa4; 0x77: 0xa4; 0x78: 0xa4; 0x79: 0xa4; 0x7a: 0xb7; 0x7b: 0xb7; 0x7c: 0xb7; 0x7d: 0xb7; 0x7e: 0xb7; 0x7f: 0xa4; 0x80: 0xb6; 0x81: 0xb6; 0x82: 0xb6; 0x83: 0xb7; 0x84: 0xa3; 0x85: 0xa3; 0x86: 0xa4; 0x87: 0xa4; 0x88: 0xb6; 0x89: 0xb6; 0x8a: 0xa3; 0x8b: 0xa3; 0x8c: 0xa3; 0x8d: 0xa3; 0x8e: 0xa3; 0x8f: 0xa4; 0x90: 0xb6; 0x91: 0xb6; 0x92: 0xb6; 0x93: 0xa2; 0x94: 0xa2; 0x95: 0xa3; 0x96: 0xa3; 0x97: 0xa3; 0x98: 0xa3; 0x99: 0xa4; 0x9a: 0xb6; 0x9b: 0xb6; 0x9c: 0xa3; 0x9d: 0xa3; 0x9e: 0xa3; 0x9f: 0xa3; 0xa0: 0xa3; 0xa1: 0xa4; 0xa2: 0xb7; 0xa3: 0xb8; 0xa4: 0xb8; 0xa5: 0xb8; 0xa6: 0xa4; 0xa7: 0xa4; 0xa8: 0xa4; 0xa9: 0xa4; 0xaa: 0xb6; 0xab: 0xb7; 0xac: 0xa3; 0xad: 0xa3; 0xae: 0xa4; 0xaf: 0xa4; 0xb0: 0xa4; 0xb1: 0xa4; 0xb2: 0xb6; 0xb3: 0xb7; 0xb4: 0xb7; 0xb5: 0xb7; 0xb6: 0xb8; 0xb7: 0xb8; 0xb8: 0xb8; 0xb9: 0xb8; 0xba: 0xb8; 0xbb: 0xb8; 0xbc: 0xb9; 0xbd: 0xb9; 0xbe: 0xb9; 0xbf: 0xb9; 0xc0: 0xb8; 0xc1: 0xb8; 0xc2: 0xb8; 0xc3: 0xb9; 0xc4: 0xa4; 0xc5: 0xa4; 0xc6: 0xb6; 0xc7: 0xb6; 0xc8: 0xb6; 0xc9: 0xb6; 0xca: 0xa3; 0xcb: 0xa3; 0xcc: 0xa3; 0xcd: 0xa3; 0xce: 0xa3; 0xcf: 0xa3; 0xd0: 0xa3; 0xd1: 0xa3; 0xd2: 0xa4; 0xd3: 0xa4; 0xd4: 0xa4; 0xd5: 0xa3; 0xd6: 0xa3; 0xd7: 0xa4; 0xd8: 0xa4; 0xd9: 0xa4; 0xda: 0xa4; 0xdb: 0xa4; 0xdc: 0xa4; 0xdd: 0xa4; 0xde: 0xa4; 0xdf: 0xa4; 0xe0: 0xa4; 0xe1: 0xa4; 0xe2: 0xa4; 0xe3: 0xb6; 0xe4: 0xb7; 0xe5: 0xb7; 0xe6: 0xb7; 0xe7: 0xa4; 0xe8: 0xb8; 0xe9: 0xb8; 0xea: 0xb8; 0xeb: 0xb8; 0xec: 0xb8; 0xed: 0xb9; 0xee: 0xb9; 0xef: 0xb6; 0xf0: 0xb8; 0xf1: 0xb6; 0xf2: 0xb6; 0xf3: 0xb7; 0xf4: 0xb9; 0xf5: 0xb6; 0xf6: 0xb6; 0xf7: 0xb6; 0xf8: 0xb6; 0xf9: 0xa3; 0xfa: 0xa3; 0xfb: 0xa3; 0xfc: 0xa4; 0xfd: 0xa3; 0xfe: 0xa3; 0xff: 0xa4;
|
||||
}
|
||||
|
||||
recolour_sprite {
|
||||
0x00: 0x7e; 0x01: 0x3f; 0x02: 0x40; 0x03: 0x40; 0x04: 0x40; 0x05: 0x40; 0x06: 0x41; 0x07: 0x41; 0x08: 0x41; 0x09: 0x41; 0x0a: 0xc3; 0x0b: 0xc3; 0x0c: 0xc4; 0x0d: 0xc4; 0x0e: 0xc4; 0x0f: 0xc4; 0x10: 0x40; 0x11: 0x40; 0x12: 0x40; 0x13: 0x41; 0x14: 0x41; 0x15: 0xc3; 0x16: 0xc3; 0x17: 0xc4; 0x18: 0x40; 0x19: 0x40; 0x1a: 0xc0; 0x1b: 0xc0; 0x1c: 0x41; 0x1d: 0x41; 0x1e: 0xc3; 0x1f: 0xc3; 0x20: 0x40; 0x21: 0xc0; 0x22: 0xc0; 0x23: 0x41; 0x24: 0x41; 0x25: 0xc3; 0x26: 0xc3; 0x27: 0xc3; 0x28: 0x40; 0x29: 0x40; 0x2a: 0x40; 0x2b: 0xba; 0x2c: 0xba; 0x2d: 0x41; 0x2e: 0xc3; 0x2f: 0xc3; 0x30: 0xc3; 0x31: 0xc3; 0x32: 0xbc; 0x33: 0x42; 0x34: 0xc3; 0x35: 0x40; 0x36: 0xc0; 0x37: 0xc0; 0x38: 0xc1; 0x39: 0x41; 0x3a: 0xc3; 0x3b: 0xc3; 0x3c: 0x40; 0x3d: 0xc0; 0x3e: 0xc0; 0x3f: 0xc1; 0x40: 0xbb; 0x41: 0xc2; 0x42: 0xbc; 0x43: 0xbc; 0x44: 0xc3; 0x45: 0xc4; 0x46: 0x3f; 0x47: 0x40; 0x48: 0x40; 0x49: 0xc0; 0x4a: 0xc0; 0x4b: 0xc1; 0x4c: 0xc1; 0x4d: 0xc1; 0x4e: 0xc3; 0x4f: 0xc3; 0x50: 0x3f; 0x51: 0x40; 0x52: 0x40; 0x53: 0xc0; 0x54: 0xc0; 0x55: 0xc0; 0x56: 0xc0; 0x57: 0x41; 0x58: 0x40; 0x59: 0x40; 0x5a: 0x40; 0x5b: 0xc0; 0x5c: 0x41; 0x5d: 0x41; 0x5e: 0x41; 0x5f: 0xc3; 0x60: 0x40; 0x61: 0x40; 0x62: 0x40; 0x63: 0x41; 0x64: 0x41; 0x65: 0x41; 0x66: 0xc3; 0x67: 0xc4; 0x68: 0x3f; 0x69: 0x40; 0x6a: 0x40; 0x6b: 0xc0; 0x6c: 0xc0; 0x6d: 0xc0; 0x6e: 0xc1; 0x6f: 0x41; 0x70: 0x40; 0x71: 0xc0; 0x72: 0xc0; 0x73: 0xc0; 0x74: 0xc1; 0x75: 0xc1; 0x76: 0xc3; 0x77: 0xc3; 0x78: 0xc3; 0x79: 0xc3; 0x7a: 0x40; 0x7b: 0xc0; 0x7c: 0xc0; 0x7d: 0xc0; 0x7e: 0x41; 0x7f: 0xc3; 0x80: 0x40; 0x81: 0x40; 0x82: 0x40; 0x83: 0x40; 0x84: 0x41; 0x85: 0x41; 0x86: 0xc3; 0x87: 0xc4; 0x88: 0x74; 0x89: 0x75; 0x8a: 0x75; 0x8b: 0x76; 0x8c: 0x76; 0x8d: 0x76; 0x8e: 0x77; 0x8f: 0xa6; 0x90: 0x74; 0x91: 0x74; 0x92: 0x74; 0x93: 0x6f; 0x94: 0x6f; 0x95: 0x6f; 0x96: 0x3a; 0x97: 0x77; 0x98: 0x77; 0x99: 0xc4; 0x9a: 0x40; 0x9b: 0x40; 0x9c: 0x40; 0x9d: 0x40; 0x9e: 0x41; 0x9f: 0x77; 0xa0: 0xc4; 0xa1: 0xc4; 0xa2: 0xba; 0xa3: 0xba; 0xa4: 0xba; 0xa5: 0xbb; 0xa6: 0xc3; 0xa7: 0xc3; 0xa8: 0xc4; 0xa9: 0xc4; 0xaa: 0x40; 0xab: 0x75; 0xac: 0x76; 0xad: 0x76; 0xae: 0x77; 0xaf: 0xa6; 0xb0: 0xa6; 0xb1: 0xc4; 0xb2: 0x40; 0xb3: 0x40; 0xb4: 0xb9; 0xb5: 0xb9; 0xb6: 0xb9; 0xb7: 0xb9; 0xb8: 0xb9; 0xb9: 0xbb; 0xba: 0xbb; 0xbb: 0xbb; 0xbc: 0xc2; 0xbd: 0xbc; 0xbe: 0xbd; 0xbf: 0xbd; 0xc0: 0xbb; 0xc1: 0xc2; 0xc2: 0xc2; 0xc3: 0xbc; 0xc4: 0xc3; 0xc5: 0xc3; 0xc6: 0x3f; 0xc7: 0x40; 0xc8: 0x74; 0xc9: 0x75; 0xca: 0x75; 0xcb: 0x76; 0xcc: 0x76; 0xcd: 0x77; 0xce: 0x41; 0xcf: 0x41; 0xd0: 0x41; 0xd1: 0x42; 0xd2: 0xc4; 0xd3: 0xc4; 0xd4: 0xc4; 0xd5: 0x77; 0xd6: 0x76; 0xd7: 0xa5; 0xd8: 0xa5; 0xd9: 0xa5; 0xda: 0xa5; 0xdb: 0xa5; 0xdc: 0xa5; 0xdd: 0xa5; 0xde: 0xa5; 0xdf: 0xa5; 0xe0: 0xa5; 0xe1: 0xa5; 0xe2: 0xa5; 0xe3: 0x40; 0xe4: 0xc0; 0xe5: 0xc0; 0xe6: 0xc1; 0xe7: 0xc3; 0xe8: 0xba; 0xe9: 0xbb; 0xea: 0xbb; 0xeb: 0xbb; 0xec: 0xc2; 0xed: 0xbc; 0xee: 0xbc; 0xef: 0x40; 0xf0: 0xb9; 0xf1: 0x40; 0xf2: 0xc0; 0xf3: 0xc0; 0xf4: 0xbd; 0xf5: 0x40; 0xf6: 0x40; 0xf7: 0x40; 0xf8: 0x40; 0xf9: 0x40; 0xfa: 0x75; 0xfb: 0x76; 0xfc: 0xc4; 0xfd: 0x76; 0xfe: 0x75; 0xff: 0xc4;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
recolour_sprite {
|
||||
0x00: 0xb3; 0x01: 0x46; 0x02: 0x46; 0x03: 0xb2; 0x04: 0x28; 0x05: 0xb3; 0x06: 0xb3; 0x07: 0xb4; 0x08: 0xb4; 0x09: 0xb5; 0x0a: 0xb5; 0x0b: 0xb6; 0x0c: 0xb6; 0x0d: 0xb7; 0x0e: 0xb7; 0x0f: 0xb8; 0x10: 0xb2; 0x11: 0xb3; 0x12: 0xb3; 0x13: 0xb4; 0x14: 0xb4; 0x15: 0xb5; 0x16: 0xb6; 0x17: 0xb7; 0x18: 0x46; 0x19: 0x46; 0x1a: 0xb2; 0x1b: 0x28; 0x1c: 0xb3; 0x1d: 0xb4; 0x1e: 0xb5; 0x1f: 0xb6; 0x20: 0x46; 0x21: 0xb2; 0x22: 0x28; 0x23: 0xb3; 0x24: 0xb4; 0x25: 0xb5; 0x26: 0xb6; 0x27: 0xb7; 0x28: 0x46; 0x29: 0x46; 0x2a: 0xb2; 0x2b: 0x28; 0x2c: 0xb3; 0x2d: 0xb4; 0x2e: 0xb4; 0x2f: 0xb5; 0x30: 0xb6; 0x31: 0xb7; 0x32: 0xb5; 0x33: 0xb6; 0x34: 0xb7; 0x35: 0x46; 0x36: 0xb2; 0x37: 0x28; 0x38: 0xb3; 0x39: 0xb4; 0x3a: 0xb5; 0x3b: 0xb5; 0x3c: 0x46; 0x3d: 0xb2; 0x3e: 0x28; 0x3f: 0xb3; 0x40: 0xb3; 0x41: 0xb4; 0x42: 0xb4; 0x43: 0xb5; 0x44: 0xb6; 0x45: 0xb7; 0x46: 0x46; 0x47: 0x46; 0x48: 0x46; 0x49: 0xb2; 0x4a: 0x28; 0x4b: 0xb3; 0x4c: 0xb4; 0x4d: 0xb4; 0x4e: 0xb4; 0x4f: 0xb5; 0x50: 0x46; 0x51: 0x46; 0x52: 0x46; 0x53: 0xb2; 0x54: 0xb2; 0x55: 0xb3; 0x56: 0xb3; 0x57: 0xb4; 0x58: 0x46; 0x59: 0xb2; 0x5a: 0x28; 0x5b: 0xb3; 0x5c: 0xb3; 0x5d: 0xb4; 0x5e: 0xb5; 0x5f: 0xb5; 0x60: 0x46; 0x61: 0xb2; 0x62: 0x28; 0x63: 0xb3; 0x64: 0xb4; 0x65: 0xb4; 0x66: 0xb5; 0x67: 0xb6; 0x68: 0x46; 0x69: 0x46; 0x6a: 0x46; 0x6b: 0xb2; 0x6c: 0x28; 0x6d: 0xb3; 0x6e: 0xb3; 0x6f: 0xb4; 0x70: 0x46; 0x71: 0xb2; 0x72: 0x28; 0x73: 0xb3; 0x74: 0xb3; 0x75: 0xb4; 0x76: 0xb4; 0x77: 0xb5; 0x78: 0xb5; 0x79: 0xb6; 0x7a: 0x46; 0x7b: 0xb2; 0x7c: 0x28; 0x7d: 0xb3; 0x7e: 0xb4; 0x7f: 0xb5; 0x80: 0xb2; 0x81: 0xb2; 0x82: 0x28; 0x83: 0xb3; 0x84: 0xb4; 0x85: 0xb4; 0x86: 0xb6; 0x87: 0xb7; 0x88: 0xb2; 0x89: 0xb3; 0x8a: 0xb3; 0x8b: 0xb4; 0x8c: 0xb4; 0x8d: 0xb5; 0x8e: 0xb6; 0x8f: 0xb6; 0x90: 0x46; 0x91: 0xb2; 0x92: 0x28; 0x93: 0xb3; 0x94: 0xb3; 0x95: 0xb4; 0x96: 0xb4; 0x97: 0xb5; 0x98: 0xb6; 0x99: 0xb7; 0x9a: 0xb2; 0x9b: 0x28; 0x9c: 0xb3; 0x9d: 0xb3; 0x9e: 0xb4; 0x9f: 0xb5; 0xa0: 0xb6; 0xa1: 0xb7; 0xa2: 0xb3; 0xa3: 0xb3; 0xa4: 0xb4; 0xa5: 0xb5; 0xa6: 0xb5; 0xa7: 0xb6; 0xa8: 0xb7; 0xa9: 0xb8; 0xaa: 0x28; 0xab: 0xb3; 0xac: 0xb4; 0xad: 0xb5; 0xae: 0xb5; 0xaf: 0xb6; 0xb0: 0xb7; 0xb1: 0xb7; 0xb2: 0x46; 0xb3: 0x46; 0xb4: 0x46; 0xb5: 0xb2; 0xb6: 0x28; 0xb7: 0x28; 0xb8: 0xb3; 0xb9: 0xb4; 0xba: 0xb4; 0xbb: 0xb4; 0xbc: 0xb4; 0xbd: 0xb5; 0xbe: 0xb5; 0xbf: 0xb5; 0xc0: 0xb4; 0xc1: 0xb4; 0xc2: 0xb4; 0xc3: 0xb5; 0xc4: 0xb6; 0xc5: 0xb6; 0xc6: 0x46; 0xc7: 0xb2; 0xc8: 0x28; 0xc9: 0xb3; 0xca: 0xb3; 0xcb: 0xb4; 0xcc: 0xb5; 0xcd: 0xb5; 0xce: 0xb3; 0xcf: 0xb4; 0xd0: 0xb4; 0xd1: 0xb5; 0xd2: 0xb8; 0xd3: 0xb7; 0xd4: 0xb7; 0xd5: 0xb6; 0xd6: 0xb4; 0xd7: 0xb5; 0xd8: 0xb5; 0xd9: 0xb5; 0xda: 0xb5; 0xdb: 0xb5; 0xdc: 0xb5; 0xdd: 0xb5; 0xde: 0xb5; 0xdf: 0xb5; 0xe0: 0xb5; 0xe1: 0xb5; 0xe2: 0xb5; 0xe3: 0x46; 0xe4: 0xb2; 0xe5: 0xb3; 0xe6: 0xb4; 0xe7: 0xb5; 0xe8: 0xb3; 0xe9: 0xb4; 0xea: 0xb4; 0xeb: 0xb4; 0xec: 0xb4; 0xed: 0xb4; 0xee: 0xb5; 0xef: 0x46; 0xf0: 0xb3; 0xf1: 0x46; 0xf2: 0x46; 0xf3: 0xb2; 0xf4: 0xb5; 0xf5: 0x28; 0xf6: 0x28; 0xf7: 0xb3; 0xf8: 0xb3; 0xf9: 0xb3; 0xfa: 0xb3; 0xfb: 0xb4; 0xfc: 0xb7; 0xfd: 0xb4; 0xfe: 0xb3; 0xff: 0xb8;
|
||||
|
||||
62
grf/recolourgen.py
Normal file
62
grf/recolourgen.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import math
|
||||
import spectra
|
||||
|
||||
# SAFE_COLORS = list(range(0xA0, 0xD8)) + [0xf5]
|
||||
SAFE_COLORS = list(range(1, 0xD7))
|
||||
# f = open("ttd-noaction-nocomp.gpl")
|
||||
f = open("ttd-newgrf-dos.gpl")
|
||||
|
||||
while f.readline().strip() != "#":
|
||||
pass
|
||||
|
||||
|
||||
# def color_distance(c1, c2):
|
||||
# rmean = (c1[0] + c2[0]) / 2.
|
||||
# r = c1[0] - c2[0]
|
||||
# g = c1[1] - c2[1]
|
||||
# b = c1[2] - c2[2]
|
||||
# return math.sqrt(
|
||||
# (((512 + rmean) * r * r) / 256.) +
|
||||
# 4 * g * g +
|
||||
# (((767 - rmean) * b * b) / 256.))
|
||||
|
||||
def color_distance(c1, c2):
|
||||
r = c1[0] - c2[0]
|
||||
g = c1[1] - c2[1]
|
||||
b = c1[2] - c2[2]
|
||||
return math.sqrt(r*r + g*g + b*b)
|
||||
|
||||
|
||||
def gen_recolor(tint, ratio):
|
||||
print(" recolour_sprite {")
|
||||
print(" ", end="")
|
||||
for i, (r, g, b) in colors:
|
||||
x = spectra.rgb(r / 255., g / 255., b / 255.)
|
||||
x = x.blend(tint, ratio=ratio)
|
||||
r, g, b = [int(q * 255) for q in x.clamped_rgb]
|
||||
mj, md = 0, 1e100
|
||||
for j, c in colors:
|
||||
if j not in SAFE_COLORS:
|
||||
continue
|
||||
d = color_distance((r, g, b), c)
|
||||
if d < md:
|
||||
mj, md = j, d
|
||||
# mj = 0xa4
|
||||
print(f"0x{i:02x}: 0x{mj:02x};", end=" ")
|
||||
print()
|
||||
print(" }")
|
||||
print()
|
||||
|
||||
|
||||
colors = []
|
||||
for _ in range(256):
|
||||
try:
|
||||
r, g, b, _, i = f.readline().split()
|
||||
except ValueError:
|
||||
break
|
||||
c = (int(r), int(g), int(b))
|
||||
# if c in SAFE_COLORS:
|
||||
colors.append((int(i), c))
|
||||
|
||||
gen_recolor(spectra.rgb(1, 0, 0), 0.75)
|
||||
gen_recolor(spectra.rgb(1.1, 0.6, 0), 0.6)
|
||||
260
grf/ttd-newgrf-dos.gpl
Normal file
260
grf/ttd-newgrf-dos.gpl
Normal file
@@ -0,0 +1,260 @@
|
||||
GIMP Palette
|
||||
Name: ttd-newgrf-dos
|
||||
Columns: 16
|
||||
#
|
||||
0 0 255 Index 0
|
||||
16 16 16 Index 1
|
||||
32 32 32 Index 2
|
||||
48 48 48 Index 3
|
||||
64 64 64 Index 4
|
||||
80 80 80 Index 5
|
||||
100 100 100 Index 6
|
||||
116 116 116 Index 7
|
||||
132 132 132 Index 8
|
||||
148 148 148 Index 9
|
||||
168 168 168 Index 10
|
||||
184 184 184 Index 11
|
||||
200 200 200 Index 12
|
||||
216 216 216 Index 13
|
||||
232 232 232 Index 14
|
||||
252 252 252 Index 15
|
||||
52 60 72 Index 16
|
||||
68 76 92 Index 17
|
||||
88 96 112 Index 18
|
||||
108 116 132 Index 19
|
||||
132 140 152 Index 20
|
||||
156 160 172 Index 21
|
||||
176 184 196 Index 22
|
||||
204 208 220 Index 23
|
||||
48 44 4 Index 24
|
||||
64 60 12 Index 25
|
||||
80 76 20 Index 26
|
||||
96 92 28 Index 27
|
||||
120 120 64 Index 28
|
||||
148 148 100 Index 29
|
||||
176 176 132 Index 30
|
||||
204 204 168 Index 31
|
||||
72 44 4 Index 32
|
||||
88 60 20 Index 33
|
||||
104 80 44 Index 34
|
||||
124 104 72 Index 35
|
||||
152 132 92 Index 36
|
||||
184 160 120 Index 37
|
||||
212 188 148 Index 38
|
||||
244 220 176 Index 39
|
||||
64 0 4 Index 40
|
||||
88 4 16 Index 41
|
||||
112 16 32 Index 42
|
||||
136 32 52 Index 43
|
||||
160 56 76 Index 44
|
||||
188 84 108 Index 45
|
||||
204 104 124 Index 46
|
||||
220 132 144 Index 47
|
||||
236 156 164 Index 48
|
||||
252 188 192 Index 49
|
||||
252 208 0 Index 50
|
||||
252 232 60 Index 51
|
||||
252 252 128 Index 52
|
||||
76 40 0 Index 53
|
||||
96 60 8 Index 54
|
||||
116 88 28 Index 55
|
||||
136 116 56 Index 56
|
||||
156 136 80 Index 57
|
||||
176 156 108 Index 58
|
||||
196 180 136 Index 59
|
||||
68 24 0 Index 60
|
||||
96 44 4 Index 61
|
||||
128 68 8 Index 62
|
||||
156 96 16 Index 63
|
||||
184 120 24 Index 64
|
||||
212 156 32 Index 65
|
||||
232 184 16 Index 66
|
||||
252 212 0 Index 67
|
||||
252 248 128 Index 68
|
||||
252 252 192 Index 69
|
||||
32 4 0 Index 70
|
||||
64 20 8 Index 71
|
||||
84 28 16 Index 72
|
||||
108 44 28 Index 73
|
||||
128 56 40 Index 74
|
||||
148 72 56 Index 75
|
||||
168 92 76 Index 76
|
||||
184 108 88 Index 77
|
||||
196 128 108 Index 78
|
||||
212 148 128 Index 79
|
||||
8 52 0 Index 80
|
||||
16 64 0 Index 81
|
||||
32 80 4 Index 82
|
||||
48 96 4 Index 83
|
||||
64 112 12 Index 84
|
||||
84 132 20 Index 85
|
||||
104 148 28 Index 86
|
||||
128 168 44 Index 87
|
||||
28 52 24 Index 88
|
||||
44 68 32 Index 89
|
||||
60 88 48 Index 90
|
||||
80 104 60 Index 91
|
||||
104 124 76 Index 92
|
||||
128 148 92 Index 93
|
||||
152 176 108 Index 94
|
||||
180 204 124 Index 95
|
||||
16 52 24 Index 96
|
||||
32 72 44 Index 97
|
||||
56 96 72 Index 98
|
||||
76 116 88 Index 99
|
||||
96 136 108 Index 100
|
||||
120 164 136 Index 101
|
||||
152 192 168 Index 102
|
||||
184 220 200 Index 103
|
||||
32 24 0 Index 104
|
||||
56 28 0 Index 105
|
||||
72 40 4 Index 106
|
||||
88 52 12 Index 107
|
||||
104 64 24 Index 108
|
||||
124 84 44 Index 109
|
||||
140 108 64 Index 110
|
||||
160 128 88 Index 111
|
||||
76 40 16 Index 112
|
||||
96 52 24 Index 113
|
||||
116 68 40 Index 114
|
||||
136 84 56 Index 115
|
||||
164 96 64 Index 116
|
||||
184 112 80 Index 117
|
||||
204 128 96 Index 118
|
||||
212 148 112 Index 119
|
||||
224 168 128 Index 120
|
||||
236 188 148 Index 121
|
||||
80 28 4 Index 122
|
||||
100 40 20 Index 123
|
||||
120 56 40 Index 124
|
||||
140 76 64 Index 125
|
||||
160 100 96 Index 126
|
||||
184 136 136 Index 127
|
||||
36 40 68 Index 128
|
||||
48 52 84 Index 129
|
||||
64 64 100 Index 130
|
||||
80 80 116 Index 131
|
||||
100 100 136 Index 132
|
||||
132 132 164 Index 133
|
||||
172 172 192 Index 134
|
||||
212 212 224 Index 135
|
||||
40 20 112 Index 136
|
||||
64 44 144 Index 137
|
||||
88 64 172 Index 138
|
||||
104 76 196 Index 139
|
||||
120 88 224 Index 140
|
||||
140 104 252 Index 141
|
||||
160 136 252 Index 142
|
||||
188 168 252 Index 143
|
||||
0 24 108 Index 144
|
||||
0 36 132 Index 145
|
||||
0 52 160 Index 146
|
||||
0 72 184 Index 147
|
||||
0 96 212 Index 148
|
||||
24 120 220 Index 149
|
||||
56 144 232 Index 150
|
||||
88 168 240 Index 151
|
||||
128 196 252 Index 152
|
||||
188 224 252 Index 153
|
||||
16 64 96 Index 154
|
||||
24 80 108 Index 155
|
||||
40 96 120 Index 156
|
||||
52 112 132 Index 157
|
||||
80 140 160 Index 158
|
||||
116 172 192 Index 159
|
||||
156 204 220 Index 160
|
||||
204 240 252 Index 161
|
||||
172 52 52 Index 162
|
||||
212 52 52 Index 163
|
||||
252 52 52 Index 164
|
||||
252 100 88 Index 165
|
||||
252 144 124 Index 166
|
||||
252 184 160 Index 167
|
||||
252 216 200 Index 168
|
||||
252 244 236 Index 169
|
||||
72 20 112 Index 170
|
||||
92 44 140 Index 171
|
||||
112 68 168 Index 172
|
||||
140 100 196 Index 173
|
||||
168 136 224 Index 174
|
||||
200 176 248 Index 175
|
||||
208 184 255 Index 176
|
||||
232 208 252 Index 177
|
||||
60 0 0 Index 178
|
||||
92 0 0 Index 179
|
||||
128 0 0 Index 180
|
||||
160 0 0 Index 181
|
||||
196 0 0 Index 182
|
||||
224 0 0 Index 183
|
||||
252 0 0 Index 184
|
||||
252 80 0 Index 185
|
||||
252 108 0 Index 186
|
||||
252 136 0 Index 187
|
||||
252 164 0 Index 188
|
||||
252 192 0 Index 189
|
||||
252 220 0 Index 190
|
||||
252 252 0 Index 191
|
||||
204 136 8 Index 192
|
||||
228 144 4 Index 193
|
||||
252 156 0 Index 194
|
||||
252 176 48 Index 195
|
||||
252 196 100 Index 196
|
||||
252 216 152 Index 197
|
||||
8 24 88 Index 198
|
||||
12 36 104 Index 199
|
||||
20 52 124 Index 200
|
||||
28 68 140 Index 201
|
||||
40 92 164 Index 202
|
||||
56 120 188 Index 203
|
||||
72 152 216 Index 204
|
||||
100 172 224 Index 205
|
||||
92 156 52 Index 206
|
||||
108 176 64 Index 207
|
||||
124 200 76 Index 208
|
||||
144 224 92 Index 209
|
||||
224 244 252 Index 210
|
||||
200 236 248 Index 211
|
||||
180 220 236 Index 212
|
||||
132 188 216 Index 213
|
||||
88 152 172 Index 214
|
||||
244 0 244 Index 215
|
||||
245 0 245 Index 216
|
||||
246 0 246 Index 217
|
||||
247 0 247 Index 218
|
||||
248 0 248 Index 219
|
||||
249 0 249 Index 220
|
||||
250 0 250 Index 221
|
||||
251 0 251 Index 222
|
||||
252 0 252 Index 223
|
||||
253 0 253 Index 224
|
||||
254 0 254 Index 225
|
||||
255 0 255 Index 226
|
||||
76 24 8 Index 227
|
||||
108 44 24 Index 228
|
||||
144 72 52 Index 229
|
||||
176 108 84 Index 230
|
||||
210 146 126 Index 231
|
||||
252 60 0 Index 232
|
||||
252 84 0 Index 233
|
||||
252 104 0 Index 234
|
||||
252 124 0 Index 235
|
||||
252 148 0 Index 236
|
||||
252 172 0 Index 237
|
||||
252 196 0 Index 238
|
||||
64 0 0 Index 239
|
||||
255 0 0 Index 240
|
||||
48 48 0 Index 241
|
||||
64 64 0 Index 242
|
||||
80 80 0 Index 243
|
||||
255 255 0 Index 244
|
||||
32 68 112 Index 245
|
||||
36 72 116 Index 246
|
||||
40 76 120 Index 247
|
||||
44 80 124 Index 248
|
||||
48 84 128 Index 249
|
||||
72 100 144 Index 250
|
||||
100 132 168 Index 251
|
||||
216 244 252 Index 252
|
||||
96 128 164 Index 253
|
||||
68 96 140 Index 254
|
||||
255 255 255 Index 255
|
||||
@@ -2,8 +2,9 @@
|
||||
|
||||
#include "zoning.hpp"
|
||||
|
||||
#include "../house.h"
|
||||
#include "../core/math_func.hpp"
|
||||
#include "../house.h"
|
||||
#include "../industry.h"
|
||||
#include "../town.h"
|
||||
#include "../tilearea_type.h"
|
||||
#include "../viewport_func.h"
|
||||
@@ -136,17 +137,30 @@ ZoningBorder GetAnyStationCatchmentBorder(TileIndex tile) {
|
||||
|
||||
SpriteID GetTownTileZoningPalette(TileIndex tile) {
|
||||
if (_zoning.outer == CHECKBULUNSER) {
|
||||
if (IsTileType (tile, MP_HOUSE)) {
|
||||
StationFinder stations(TileArea(tile, 1, 1));
|
||||
StationFinder stations(TileArea(tile, 1, 1));
|
||||
|
||||
if (!stations.GetStations()->empty()) {
|
||||
return PAL_NONE;
|
||||
}
|
||||
return SPR_RECOLOR_RED;
|
||||
}
|
||||
if (stations.GetStations()->empty())
|
||||
return SPR_RECOLOUR_RED;
|
||||
}
|
||||
return PAL_NONE;
|
||||
}
|
||||
|
||||
SpriteID GetIndustryTileZoningPalette(TileIndex tile, Industry *ind) {
|
||||
if (_zoning.outer == CHECKINDUNSER) {
|
||||
auto n_produced = 0;
|
||||
auto n_serviced = 0;
|
||||
for (auto j = 0; j < INDUSTRY_NUM_OUTPUTS; j++) {
|
||||
if (ind->produced_cargo[j] == CT_INVALID) continue;
|
||||
if (ind->last_month_production[j] == 0 && ind->this_month_production[j] == 0) continue;
|
||||
n_produced++;
|
||||
if (ind->last_month_transported[j] > 0 || ind->last_month_transported[j] > 0)
|
||||
n_serviced++;
|
||||
}
|
||||
if (n_serviced < n_produced)
|
||||
return (n_serviced == 0 ? SPR_RECOLOUR_RED : SPR_RECOLOUR_ORANGE);
|
||||
}
|
||||
|
||||
return PAL_NONE;
|
||||
}
|
||||
|
||||
} // namespace citymania
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "../core/enum_type.hpp"
|
||||
#include "../gfx_type.h"
|
||||
#include "../industry_type.h"
|
||||
#include "../tile_type.h"
|
||||
#include "../town_type.h"
|
||||
|
||||
@@ -42,7 +43,7 @@ ZoningBorder GetAnyStationCatchmentBorder(TileIndex tlie);
|
||||
// std::pair<ZoningBorder, uint8> GetTownAdvertisementBorder(TileIndex tile);
|
||||
//
|
||||
SpriteID GetTownTileZoningPalette(TileIndex tile);
|
||||
|
||||
SpriteID GetIndustryTileZoningPalette(TileIndex tile, Industry *ind);
|
||||
} // namespace citymania
|
||||
|
||||
#endif
|
||||
|
||||
@@ -44,6 +44,8 @@
|
||||
#include "table/industry_land.h"
|
||||
#include "table/build_industry.h"
|
||||
|
||||
#include "citymania/zoning.hpp"
|
||||
|
||||
#include "safeguards.h"
|
||||
|
||||
IndustryPool _industry_pool("Industry");
|
||||
@@ -348,12 +350,15 @@ static void DrawTile_Industry(TileInfo *ti)
|
||||
/* DrawFoundation() modifies ti->z and ti->tileh */
|
||||
if (ti->tileh != SLOPE_FLAT) DrawFoundation(ti, FOUNDATION_LEVELED);
|
||||
|
||||
auto zoning_pal = citymania::GetIndustryTileZoningPalette(ti->tile, ind);
|
||||
|
||||
/* If the ground sprite is the default flat water sprite, draw also canal/river borders.
|
||||
* Do not do this if the tile's WaterClass is 'land'. */
|
||||
if (image == SPR_FLAT_WATER_TILE && IsTileOnWater(ti->tile)) {
|
||||
DrawWaterClassGround(ti);
|
||||
} else {
|
||||
DrawGroundSprite(image, GroundSpritePaletteTransform(image, dits->ground.pal, GENERAL_SPRITE_COLOUR(ind->random_colour)));
|
||||
DrawGroundSprite(image, zoning_pal == PAL_NONE ? GroundSpritePaletteTransform(image, dits->ground.pal, GENERAL_SPRITE_COLOUR(ind->random_colour)) : zoning_pal);
|
||||
// DrawGroundSprite(image, GroundSpritePaletteTransform(image, dits->ground.pal, GENERAL_SPRITE_COLOUR(ind->random_colour)));
|
||||
}
|
||||
|
||||
/* If industries are transparent and invisible, do not draw the upper part */
|
||||
@@ -362,7 +367,7 @@ static void DrawTile_Industry(TileInfo *ti)
|
||||
/* Add industry on top of the ground? */
|
||||
image = dits->building.sprite;
|
||||
if (image != 0) {
|
||||
AddSortableSpriteToDraw(image, SpriteLayoutPaletteTransform(image, dits->building.pal, GENERAL_SPRITE_COLOUR(ind->random_colour)),
|
||||
AddSortableSpriteToDraw(image, zoning_pal == PAL_NONE ? SpriteLayoutPaletteTransform(image, dits->building.pal, GENERAL_SPRITE_COLOUR(ind->random_colour)) : zoning_pal,
|
||||
ti->x + dits->subtile_x,
|
||||
ti->y + dits->subtile_y,
|
||||
dits->width,
|
||||
|
||||
@@ -83,4 +83,4 @@ const byte _openttd_revision_tagged = 1;
|
||||
const uint32 _openttd_newgrf_version = 1 << 28 | 10 << 24 | 0 << 20 | 0 << 19 | 28004;
|
||||
|
||||
|
||||
const char _citymania_version[] = "20200106-master-m248ef04353 02.02.20";
|
||||
const char _citymania_version[] = "!!VERSION!! !!DATE!!";
|
||||
|
||||
@@ -317,10 +317,13 @@ static const SpriteID SPR_INNER_HIGHLIGHT_COUNT = 29;
|
||||
|
||||
static const SpriteID SPR_BORDER_HIGHLIGHT_BASE = SPR_INNER_HIGHLIGHT_BASE + SPR_INNER_HIGHLIGHT_COUNT + 1;
|
||||
static const SpriteID SPR_BORDER_HIGHLIGHT_COUNT = 19 * 19;
|
||||
static const SpriteID SPR_RECOLOR_RED = SPR_BORDER_HIGHLIGHT_BASE + SPR_BORDER_HIGHLIGHT_COUNT;
|
||||
static const SpriteID SPR_RECOLOUR_BASE = SPR_BORDER_HIGHLIGHT_BASE + SPR_BORDER_HIGHLIGHT_COUNT;
|
||||
static const SpriteID SPR_RECOLOUR_RED = SPR_RECOLOUR_BASE;
|
||||
static const SpriteID SPR_RECOLOUR_ORANGE = SPR_RECOLOUR_BASE + 1;
|
||||
static const SpriteID SPR_RECOLOUR_COUNT = 2;
|
||||
|
||||
/* From where can we start putting NewGRFs? */
|
||||
static const SpriteID SPR_NEWGRFS_BASE = SPR_RECOLOR_RED + 1;
|
||||
static const SpriteID SPR_NEWGRFS_BASE = SPR_RECOLOUR_BASE + SPR_RECOLOUR_COUNT;
|
||||
|
||||
/* Manager face sprites */
|
||||
static const SpriteID SPR_GRADIENT = 874; // background gradient behind manager face
|
||||
|
||||
@@ -202,10 +202,6 @@ SpriteID TileZoneCheckBuildEvaluation(TileIndex tile, Owner owner) {
|
||||
if (IsTileType(tile, MP_STATION)){
|
||||
return INVALID_SPRITE_ID;
|
||||
}
|
||||
// For accepted goods
|
||||
if (IsTileWithinAcceptanceZoneOfStation(tile)){
|
||||
return SPR_PALETTE_ZONING_LIGHT_BLUE;
|
||||
}
|
||||
return INVALID_SPRITE_ID;
|
||||
}
|
||||
|
||||
@@ -223,10 +219,6 @@ SpriteID TileZoneCheckUnservedBuildingsEvaluation(TileIndex tile) {
|
||||
if (!stations.GetStations()->empty()) {
|
||||
return INVALID_SPRITE_ID;
|
||||
}
|
||||
// For accepted goods
|
||||
if (IsTileWithinAcceptanceZoneOfStation(tile)){
|
||||
return SPR_PALETTE_ZONING_ORANGE;
|
||||
}
|
||||
return SPR_PALETTE_ZONING_RED;
|
||||
}
|
||||
return INVALID_SPRITE_ID;
|
||||
@@ -243,10 +235,6 @@ SpriteID TileZoneCheckUnservedIndustriesEvaluation(TileIndex tile) {
|
||||
return INVALID_SPRITE_ID;
|
||||
}
|
||||
|
||||
// For accepted goods
|
||||
if (IsAreaWithinAcceptanceZoneOfStation(ind->location)){
|
||||
return SPR_PALETTE_ZONING_ORANGE;
|
||||
}
|
||||
return SPR_PALETTE_ZONING_RED;
|
||||
}
|
||||
return INVALID_SPRITE_ID;
|
||||
@@ -431,7 +419,7 @@ void DrawTileZoning(const TileInfo *ti) {
|
||||
if (p.first && p.second) {
|
||||
DrawBorderSprites(ti, p.first, GetTownZoneBorderColor(p.second));
|
||||
}
|
||||
} else if (_zoning.outer == CHECKBULUNSER) {
|
||||
} else if (_zoning.outer == CHECKBULUNSER || _zoning.outer == CHECKINDUNSER) {
|
||||
// handled in house drawing
|
||||
} else if (_zoning.outer == CHECKSTACATCH) {
|
||||
auto b = citymania::GetAnyStationCatchmentBorder(ti->tile);
|
||||
|
||||
Reference in New Issue
Block a user