From: Holger Schemel <holger.schemel@virtion.de> Date: Sat, 28 Sep 2024 10:55:24 +0000 (+0200) Subject: changed 16-bit level micro chunk value type from unsigned to signed X-Git-Tag: 4.4.0.0-test-4~189 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=23b6fe9e393f2f7ecf9ea20dafb8fb173f63556b;p=rocksndiamonds.git changed 16-bit level micro chunk value type from unsigned to signed This change allows for saving and loading negative 16-bit values in level files (like negatiove values for "gems needed", for example). As a result, 16-bit and 32-bit micro chunk values are always signed now, while 8-bit micro chunk values are still always unsigned bytes. --- diff --git a/src/files.c b/src/files.c index 9e3c25e5..93c7303e 100644 --- a/src/files.c +++ b/src/files.c @@ -3845,9 +3845,9 @@ static int LoadLevel_MicroChunk(File *file, struct LevelFileConfigInfo *conf, } else // constant size configuration data (1, 2 or 4 bytes) { - int value = (byte_mask == CONF_MASK_1_BYTE ? getFile8Bit (file) : - byte_mask == CONF_MASK_2_BYTE ? getFile16BitBE(file) : - byte_mask == CONF_MASK_4_BYTE ? getFile32BitBE(file) : 0); + int value = (byte_mask == CONF_MASK_1_BYTE ? (byte) getFile8Bit (file) : + byte_mask == CONF_MASK_2_BYTE ? (short) getFile16BitBE(file) : + byte_mask == CONF_MASK_4_BYTE ? (int) getFile32BitBE(file) : 0); for (i = 0; conf[i].data_type != -1; i++) {