1 module tcod.c.types; 2 3 import tcod.c.all; 4 5 extern (C): 6 7 // --- List --- 8 alias void* TCOD_list_t; 9 10 11 // --- Colour --- 12 struct TCOD_color_t { 13 ubyte r,g,b; 14 } 15 16 // color names 17 enum { 18 TCOD_COLOR_RED, 19 TCOD_COLOR_FLAME, 20 TCOD_COLOR_ORANGE, 21 TCOD_COLOR_AMBER, 22 TCOD_COLOR_YELLOW, 23 TCOD_COLOR_LIME, 24 TCOD_COLOR_CHARTREUSE, 25 TCOD_COLOR_GREEN, 26 TCOD_COLOR_SEA, 27 TCOD_COLOR_TURQUOISE, 28 TCOD_COLOR_CYAN, 29 TCOD_COLOR_SKY, 30 TCOD_COLOR_AZURE, 31 TCOD_COLOR_BLUE, 32 TCOD_COLOR_HAN, 33 TCOD_COLOR_VIOLET, 34 TCOD_COLOR_PURPLE, 35 TCOD_COLOR_FUCHSIA, 36 TCOD_COLOR_MAGENTA, 37 TCOD_COLOR_PINK, 38 TCOD_COLOR_CRIMSON, 39 TCOD_COLOR_NB, 40 } 41 42 // color levels 43 enum { 44 TCOD_COLOR_DESATURATED, 45 TCOD_COLOR_LIGHTEST, 46 TCOD_COLOR_LIGHTER, 47 TCOD_COLOR_LIGHT, 48 TCOD_COLOR_NORMAL, 49 TCOD_COLOR_DARK, 50 TCOD_COLOR_DARKER, 51 TCOD_COLOR_DARKEST, 52 TCOD_COLOR_LEVELS, 53 } 54 55 // color array 56 const TCOD_color_t[TCOD_COLOR_LEVELS][TCOD_COLOR_NB] TCOD_colors; 57 58 // grey levels 59 const TCOD_color_t TCOD_black = TCOD_color_t(0, 0, 0); 60 const TCOD_color_t TCOD_darkest_grey = TCOD_color_t(31, 31, 31); 61 const TCOD_color_t TCOD_darkest_gray = TCOD_color_t(31, 31, 31); 62 const TCOD_color_t TCOD_darker_grey = TCOD_color_t(63, 63, 63); 63 const TCOD_color_t TCOD_darker_gray = TCOD_color_t(63, 63, 63); 64 const TCOD_color_t TCOD_dark_grey = TCOD_color_t(95, 95, 95); 65 const TCOD_color_t TCOD_dark_gray = TCOD_color_t(95, 95, 95); 66 const TCOD_color_t TCOD_grey = TCOD_color_t(127, 127, 127); 67 const TCOD_color_t TCOD_gray = TCOD_color_t(127, 127, 127); 68 const TCOD_color_t TCOD_light_grey = TCOD_color_t(159, 159, 159); 69 const TCOD_color_t TCOD_light_gray = TCOD_color_t(159, 159, 159); 70 const TCOD_color_t TCOD_lighter_grey = TCOD_color_t(191, 191, 191); 71 const TCOD_color_t TCOD_lighter_gray = TCOD_color_t(191, 191, 191); 72 const TCOD_color_t TCOD_lightest_grey = TCOD_color_t(223, 223, 223); 73 const TCOD_color_t TCOD_lightest_gray = TCOD_color_t(223, 223, 223); 74 const TCOD_color_t TCOD_white = TCOD_color_t(255, 255, 255); 75 76 /* sepia */ 77 const TCOD_color_t TCOD_darkest_sepia = TCOD_color_t(31, 24, 15); 78 const TCOD_color_t TCOD_darker_sepia = TCOD_color_t(63, 50, 31); 79 const TCOD_color_t TCOD_dark_sepia = TCOD_color_t(94, 75, 47); 80 const TCOD_color_t TCOD_sepia = TCOD_color_t(127, 101, 63); 81 const TCOD_color_t TCOD_light_sepia = TCOD_color_t(158, 134, 100); 82 const TCOD_color_t TCOD_lighter_sepia = TCOD_color_t(191, 171, 143); 83 const TCOD_color_t TCOD_lightest_sepia = TCOD_color_t(222, 211, 195); 84 85 // standard colors 86 const TCOD_color_t TCOD_red = TCOD_color_t(255, 0, 0); 87 const TCOD_color_t TCOD_flame = TCOD_color_t(255, 63, 0); 88 const TCOD_color_t TCOD_orange = TCOD_color_t(255, 127, 0); 89 const TCOD_color_t TCOD_amber = TCOD_color_t(255, 191, 0); 90 const TCOD_color_t TCOD_yellow = TCOD_color_t(255, 255, 0); 91 const TCOD_color_t TCOD_lime = TCOD_color_t(191, 255, 0); 92 const TCOD_color_t TCOD_chartreuse = TCOD_color_t(127, 255, 0); 93 const TCOD_color_t TCOD_green = TCOD_color_t(0, 255, 0); 94 const TCOD_color_t TCOD_sea = TCOD_color_t(0, 255, 127); 95 const TCOD_color_t TCOD_turquoise = TCOD_color_t(0, 255, 191); 96 const TCOD_color_t TCOD_cyan = TCOD_color_t(0, 255, 255); 97 const TCOD_color_t TCOD_sky = TCOD_color_t(0, 127, 255); 98 const TCOD_color_t TCOD_azure = TCOD_color_t(0, 127, 255); 99 const TCOD_color_t TCOD_blue = TCOD_color_t(0, 0, 255); 100 const TCOD_color_t TCOD_han = TCOD_color_t(63, 0, 255); 101 const TCOD_color_t TCOD_violet = TCOD_color_t(127, 0, 255); 102 const TCOD_color_t TCOD_purple = TCOD_color_t(191, 0, 255); 103 const TCOD_color_t TCOD_fuchsia = TCOD_color_t(255, 0, 191); 104 const TCOD_color_t TCOD_magenta = TCOD_color_t(255, 0, 255); 105 const TCOD_color_t TCOD_pink = TCOD_color_t(255, 0, 127); 106 const TCOD_color_t TCOD_crimson = TCOD_color_t(255, 0, 63); 107 108 // dark colors 109 const TCOD_color_t TCOD_dark_red = TCOD_color_t(191, 0, 0); 110 const TCOD_color_t TCOD_dark_flame = TCOD_color_t(191, 47, 0); 111 const TCOD_color_t TCOD_dark_orange = TCOD_color_t(191, 95, 0); 112 const TCOD_color_t TCOD_dark_amber = TCOD_color_t(191, 143, 0); 113 const TCOD_color_t TCOD_dark_yellow = TCOD_color_t(191, 191, 0); 114 const TCOD_color_t TCOD_dark_lime = TCOD_color_t(143, 191, 0); 115 const TCOD_color_t TCOD_dark_chartreuse = TCOD_color_t(95, 191, 0); 116 const TCOD_color_t TCOD_dark_green = TCOD_color_t(0, 191, 0); 117 const TCOD_color_t TCOD_dark_sea = TCOD_color_t(0, 191, 95); 118 const TCOD_color_t TCOD_dark_turquoise = TCOD_color_t(0, 191, 143); 119 const TCOD_color_t TCOD_dark_cyan = TCOD_color_t(0, 191, 191); 120 const TCOD_color_t TCOD_dark_sky = TCOD_color_t(0, 143, 191); 121 const TCOD_color_t TCOD_dark_azure = TCOD_color_t(0, 95, 191); 122 const TCOD_color_t TCOD_dark_blue = TCOD_color_t(0, 0, 191); 123 const TCOD_color_t TCOD_dark_han = TCOD_color_t(47, 0, 191); 124 const TCOD_color_t TCOD_dark_violet = TCOD_color_t(95, 0, 191); 125 const TCOD_color_t TCOD_dark_purple = TCOD_color_t(143, 0, 191); 126 const TCOD_color_t TCOD_dark_fuchsia = TCOD_color_t(191, 0, 191); 127 const TCOD_color_t TCOD_dark_magenta = TCOD_color_t(191, 0, 143); 128 const TCOD_color_t TCOD_dark_pink = TCOD_color_t(191, 0, 95); 129 const TCOD_color_t TCOD_dark_crimson = TCOD_color_t(191, 0, 47); 130 131 // darker colors 132 const TCOD_color_t TCOD_darker_red = TCOD_color_t(127, 0, 0); 133 const TCOD_color_t TCOD_darker_flame = TCOD_color_t(127, 31, 0); 134 const TCOD_color_t TCOD_darker_orange = TCOD_color_t(127, 63, 0); 135 const TCOD_color_t TCOD_darker_amber = TCOD_color_t(127, 95, 0); 136 const TCOD_color_t TCOD_darker_yellow = TCOD_color_t(127, 127, 0); 137 const TCOD_color_t TCOD_darker_lime = TCOD_color_t(95, 127, 0); 138 const TCOD_color_t TCOD_darker_chartreuse = TCOD_color_t(62, 127, 0); 139 const TCOD_color_t TCOD_darker_green = TCOD_color_t(0, 127, 0); 140 const TCOD_color_t TCOD_darker_sea = TCOD_color_t(0, 127, 63); 141 const TCOD_color_t TCOD_darker_turquoise = TCOD_color_t(0, 127, 95); 142 const TCOD_color_t TCOD_darker_cyan = TCOD_color_t(0, 127, 127); 143 const TCOD_color_t TCOD_darker_sky = TCOD_color_t(0, 95, 127); 144 const TCOD_color_t TCOD_darker_azure = TCOD_color_t(0, 63, 127); 145 const TCOD_color_t TCOD_darker_blue = TCOD_color_t(0, 0, 127); 146 const TCOD_color_t TCOD_darker_han = TCOD_color_t(31, 0, 127); 147 const TCOD_color_t TCOD_darker_violet = TCOD_color_t(63, 0, 127); 148 const TCOD_color_t TCOD_darker_purple = TCOD_color_t(95, 0, 127); 149 const TCOD_color_t TCOD_darker_fuchsia = TCOD_color_t(127, 0, 127); 150 const TCOD_color_t TCOD_darker_magenta = TCOD_color_t(127, 0, 95); 151 const TCOD_color_t TCOD_darker_pink = TCOD_color_t(127, 0, 63); 152 const TCOD_color_t TCOD_darker_crimson = TCOD_color_t(127, 0, 31); 153 154 // darkest colors 155 const TCOD_color_t TCOD_darkest_red = TCOD_color_t(63, 0, 0); 156 const TCOD_color_t TCOD_darkest_flame = TCOD_color_t(63, 15, 0); 157 const TCOD_color_t TCOD_darkest_orange = TCOD_color_t(63, 31, 0); 158 const TCOD_color_t TCOD_darkest_amber = TCOD_color_t(63, 47, 0); 159 const TCOD_color_t TCOD_darkest_yellow = TCOD_color_t(63, 63, 0); 160 const TCOD_color_t TCOD_darkest_lime = TCOD_color_t(47, 63, 0); 161 const TCOD_color_t TCOD_darkest_chartreuse = TCOD_color_t(31, 63, 0); 162 const TCOD_color_t TCOD_darkest_green = TCOD_color_t(0, 63, 0); 163 const TCOD_color_t TCOD_darkest_sea = TCOD_color_t(0, 63, 31); 164 const TCOD_color_t TCOD_darkest_turquoise = TCOD_color_t(0, 63, 47); 165 const TCOD_color_t TCOD_darkest_cyan = TCOD_color_t(0, 63, 63); 166 const TCOD_color_t TCOD_darkest_sky = TCOD_color_t(0, 47, 63); 167 const TCOD_color_t TCOD_darkest_azure = TCOD_color_t(0, 31, 63); 168 const TCOD_color_t TCOD_darkest_blue = TCOD_color_t(0, 0, 63); 169 const TCOD_color_t TCOD_darkest_han = TCOD_color_t(15, 0, 63); 170 const TCOD_color_t TCOD_darkest_violet = TCOD_color_t(31, 0, 63); 171 const TCOD_color_t TCOD_darkest_purple = TCOD_color_t(47, 0, 63); 172 const TCOD_color_t TCOD_darkest_fuchsia = TCOD_color_t(63, 0, 63); 173 const TCOD_color_t TCOD_darkest_magenta = TCOD_color_t(63, 0, 47); 174 const TCOD_color_t TCOD_darkest_pink = TCOD_color_t(63, 0, 31); 175 const TCOD_color_t TCOD_darkest_crimson = TCOD_color_t(63, 0, 15); 176 177 // light colors 178 const TCOD_color_t TCOD_light_red = TCOD_color_t(255, 63, 63); 179 const TCOD_color_t TCOD_light_flame = TCOD_color_t(255, 111, 63); 180 const TCOD_color_t TCOD_light_orange = TCOD_color_t(255, 159, 63); 181 const TCOD_color_t TCOD_light_amber = TCOD_color_t(255, 207, 63); 182 const TCOD_color_t TCOD_light_yellow = TCOD_color_t(255, 255, 63); 183 const TCOD_color_t TCOD_light_lime = TCOD_color_t(207, 255, 63); 184 const TCOD_color_t TCOD_light_chartreuse = TCOD_color_t(159, 255, 63); 185 const TCOD_color_t TCOD_light_green = TCOD_color_t(63, 255, 159); 186 const TCOD_color_t TCOD_light_sea = TCOD_color_t(63, 255, 159); 187 const TCOD_color_t TCOD_light_turquoise = TCOD_color_t(63, 255, 207); 188 const TCOD_color_t TCOD_light_cyan = TCOD_color_t(63, 255, 255); 189 const TCOD_color_t TCOD_light_sky = TCOD_color_t(63, 207, 255); 190 const TCOD_color_t TCOD_light_azure = TCOD_color_t(63, 159, 255); 191 const TCOD_color_t TCOD_light_blue = TCOD_color_t(63, 63, 255); 192 const TCOD_color_t TCOD_light_han = TCOD_color_t(111, 63, 255); 193 const TCOD_color_t TCOD_light_violet = TCOD_color_t(159, 63, 255); 194 const TCOD_color_t TCOD_light_purple = TCOD_color_t(207, 63, 255); 195 const TCOD_color_t TCOD_light_fuchsia = TCOD_color_t(255, 63, 255); 196 const TCOD_color_t TCOD_light_magenta = TCOD_color_t(255, 63, 207); 197 const TCOD_color_t TCOD_light_pink = TCOD_color_t(255, 63, 159); 198 const TCOD_color_t TCOD_light_crimson = TCOD_color_t(255, 63, 111); 199 200 // lighter colors 201 const TCOD_color_t TCOD_lighter_red = TCOD_color_t(255, 127, 127); 202 const TCOD_color_t TCOD_lighter_flame = TCOD_color_t(255, 159, 127); 203 const TCOD_color_t TCOD_lighter_orange = TCOD_color_t(255, 191, 127); 204 const TCOD_color_t TCOD_lighter_amber = TCOD_color_t(255, 223, 127); 205 const TCOD_color_t TCOD_lighter_yellow = TCOD_color_t(255, 255, 127); 206 const TCOD_color_t TCOD_lighter_lime = TCOD_color_t(223, 255, 127); 207 const TCOD_color_t TCOD_lighter_chartreuse = TCOD_color_t(191, 255, 127); 208 const TCOD_color_t TCOD_lighter_green = TCOD_color_t(127, 255, 127); 209 const TCOD_color_t TCOD_lighter_sea = TCOD_color_t(127, 255, 191); 210 const TCOD_color_t TCOD_lighter_turquoise = TCOD_color_t(127, 255, 223); 211 const TCOD_color_t TCOD_lighter_cyan = TCOD_color_t(127, 255, 255); 212 const TCOD_color_t TCOD_lighter_sky = TCOD_color_t(127, 223, 255); 213 const TCOD_color_t TCOD_lighter_azure = TCOD_color_t(127, 191, 255); 214 const TCOD_color_t TCOD_lighter_blue = TCOD_color_t(127, 127, 255); 215 const TCOD_color_t TCOD_lighter_han = TCOD_color_t(159, 127, 255); 216 const TCOD_color_t TCOD_lighter_violet = TCOD_color_t(191, 127, 255); 217 const TCOD_color_t TCOD_lighter_purple = TCOD_color_t(223, 127, 255); 218 const TCOD_color_t TCOD_lighter_fuchsia = TCOD_color_t(255, 127, 255); 219 const TCOD_color_t TCOD_lighter_magenta = TCOD_color_t(255, 127, 223); 220 const TCOD_color_t TCOD_lighter_pink = TCOD_color_t(255, 127, 191); 221 const TCOD_color_t TCOD_lighter_crimson = TCOD_color_t(255, 127, 159); 222 223 // lightest colors 224 const TCOD_color_t TCOD_lightest_red = TCOD_color_t(255, 191, 191); 225 const TCOD_color_t TCOD_lightest_flame = TCOD_color_t(255, 207, 191); 226 const TCOD_color_t TCOD_lightest_orange = TCOD_color_t(255, 223, 191); 227 const TCOD_color_t TCOD_lightest_amber = TCOD_color_t(255, 239, 191); 228 const TCOD_color_t TCOD_lightest_yellow = TCOD_color_t(255, 255, 191); 229 const TCOD_color_t TCOD_lightest_lime = TCOD_color_t(239, 255, 191); 230 const TCOD_color_t TCOD_lightest_chartreuse = TCOD_color_t(223, 255, 191); 231 const TCOD_color_t TCOD_lightest_green = TCOD_color_t(191, 255, 191); 232 const TCOD_color_t TCOD_lightest_sea = TCOD_color_t(191, 255, 223); 233 const TCOD_color_t TCOD_lightest_turquoise = TCOD_color_t(191, 255, 239); 234 const TCOD_color_t TCOD_lightest_cyan = TCOD_color_t(191, 255, 255); 235 const TCOD_color_t TCOD_lightest_sky = TCOD_color_t(191, 239, 255); 236 const TCOD_color_t TCOD_lightest_azure = TCOD_color_t(191, 223, 255); 237 const TCOD_color_t TCOD_lightest_blue = TCOD_color_t(191, 191, 255); 238 const TCOD_color_t TCOD_lightest_han = TCOD_color_t(207, 191, 255); 239 const TCOD_color_t TCOD_lightest_violet = TCOD_color_t(223, 191, 255); 240 const TCOD_color_t TCOD_lightest_purple = TCOD_color_t(239, 191, 255); 241 const TCOD_color_t TCOD_lightest_fuchsia = TCOD_color_t(255, 191, 255); 242 const TCOD_color_t TCOD_lightest_magenta = TCOD_color_t(255, 191, 239); 243 const TCOD_color_t TCOD_lightest_pink = TCOD_color_t(255, 191, 223); 244 const TCOD_color_t TCOD_lightest_crimson = TCOD_color_t(255, 191, 207); 245 246 // desaturated 247 const TCOD_color_t TCOD_desaturated_red = TCOD_color_t(127, 63, 63); 248 const TCOD_color_t TCOD_desaturated_flame = TCOD_color_t(127, 79, 63); 249 const TCOD_color_t TCOD_desaturated_orange = TCOD_color_t(127, 95, 63); 250 const TCOD_color_t TCOD_desaturated_amber = TCOD_color_t(127, 111, 63); 251 const TCOD_color_t TCOD_desaturated_yellow = TCOD_color_t(127, 127, 63); 252 const TCOD_color_t TCOD_desaturated_lime = TCOD_color_t(111, 127, 63); 253 const TCOD_color_t TCOD_desaturated_chartreuse = TCOD_color_t(95, 127, 63); 254 const TCOD_color_t TCOD_desaturated_green = TCOD_color_t(63, 127, 63); 255 const TCOD_color_t TCOD_desaturated_sea = TCOD_color_t(63, 127, 95); 256 const TCOD_color_t TCOD_desaturated_turquoise = TCOD_color_t(63, 127, 111); 257 const TCOD_color_t TCOD_desaturated_cyan = TCOD_color_t(63, 127, 127); 258 const TCOD_color_t TCOD_desaturated_sky = TCOD_color_t(63, 111, 127); 259 const TCOD_color_t TCOD_desaturated_azure = TCOD_color_t(63, 95, 127); 260 const TCOD_color_t TCOD_desaturated_blue = TCOD_color_t(63, 63, 127); 261 const TCOD_color_t TCOD_desaturated_han = TCOD_color_t(79, 63, 127); 262 const TCOD_color_t TCOD_desaturated_violet = TCOD_color_t(95, 63, 127); 263 const TCOD_color_t TCOD_desaturated_purple = TCOD_color_t(111, 63, 127); 264 const TCOD_color_t TCOD_desaturated_fuchsia = TCOD_color_t(127, 63, 127); 265 const TCOD_color_t TCOD_desaturated_magenta = TCOD_color_t(127, 63, 111); 266 const TCOD_color_t TCOD_desaturated_pink = TCOD_color_t(127, 63, 95); 267 const TCOD_color_t TCOD_desaturated_crimson = TCOD_color_t(127, 63, 79); 268 269 // metallic 270 const TCOD_color_t TCOD_brass = TCOD_color_t(191, 151, 96); 271 const TCOD_color_t TCOD_copper = TCOD_color_t(197, 136, 124); 272 const TCOD_color_t TCOD_gold = TCOD_color_t(229, 191, 0); 273 const TCOD_color_t TCOD_silver = TCOD_color_t(203, 203, 203); 274 275 // miscellaneous 276 const TCOD_color_t TCOD_celadon = TCOD_color_t(172, 255, 175); 277 const TCOD_color_t TCOD_peach = TCOD_color_t(255, 159, 127); 278 279 // --- Console --- 280 281 alias int TCOD_keycode_t; 282 enum : TCOD_keycode_t { 283 TCODK_NONE, 284 TCODK_ESCAPE, 285 TCODK_BACKSPACE, 286 TCODK_TAB, 287 TCODK_ENTER, 288 TCODK_SHIFT, 289 TCODK_CONTROL, 290 TCODK_ALT, 291 TCODK_PAUSE, 292 TCODK_CAPSLOCK, 293 TCODK_PAGEUP, 294 TCODK_PAGEDOWN, 295 TCODK_END, 296 TCODK_HOME, 297 TCODK_UP, 298 TCODK_LEFT, 299 TCODK_RIGHT, 300 TCODK_DOWN, 301 TCODK_PRINTSCREEN, 302 TCODK_INSERT, 303 TCODK_DELETE, 304 TCODK_LWIN, 305 TCODK_RWIN, 306 TCODK_APPS, 307 TCODK_0, 308 TCODK_1, 309 TCODK_2, 310 TCODK_3, 311 TCODK_4, 312 TCODK_5, 313 TCODK_6, 314 TCODK_7, 315 TCODK_8, 316 TCODK_9, 317 TCODK_KP0, 318 TCODK_KP1, 319 TCODK_KP2, 320 TCODK_KP3, 321 TCODK_KP4, 322 TCODK_KP5, 323 TCODK_KP6, 324 TCODK_KP7, 325 TCODK_KP8, 326 TCODK_KP9, 327 TCODK_KPADD, 328 TCODK_KPSUB, 329 TCODK_KPDIV, 330 TCODK_KPMUL, 331 TCODK_KPDEC, 332 TCODK_KPENTER, 333 TCODK_F1, 334 TCODK_F2, 335 TCODK_F3, 336 TCODK_F4, 337 TCODK_F5, 338 TCODK_F6, 339 TCODK_F7, 340 TCODK_F8, 341 TCODK_F9, 342 TCODK_F10, 343 TCODK_F11, 344 TCODK_F12, 345 TCODK_NUMLOCK, 346 TCODK_SCROLLLOCK, 347 TCODK_SPACE, 348 TCODK_CHAR 349 } 350 351 /* key data : special code or character */ 352 struct TCOD_key_t { 353 TCOD_keycode_t vk; /* key code */ 354 char c; /* character if vk == TCODK_CHAR else 0 */ 355 bool pressed; 356 bool lalt; 357 bool lctrl; 358 bool ralt; 359 bool rctrl; 360 bool shift; 361 } 362 363 enum { 364 // single walls 365 TCOD_CHAR_HLINE=196, 366 TCOD_CHAR_VLINE=179, 367 TCOD_CHAR_NE=191, 368 TCOD_CHAR_NW=218, 369 TCOD_CHAR_SE=217, 370 TCOD_CHAR_SW=192, 371 TCOD_CHAR_TEEW=180, 372 TCOD_CHAR_TEEE=195, 373 TCOD_CHAR_TEEN=193, 374 TCOD_CHAR_TEES=194, 375 TCOD_CHAR_CROSS=197, 376 // double walls 377 TCOD_CHAR_DHLINE=205, 378 TCOD_CHAR_DVLINE=186, 379 TCOD_CHAR_DNE=187, 380 TCOD_CHAR_DNW=201, 381 TCOD_CHAR_DSE=188, 382 TCOD_CHAR_DSW=200, 383 TCOD_CHAR_DTEEW=185, 384 TCOD_CHAR_DTEEE=204, 385 TCOD_CHAR_DTEEN=202, 386 TCOD_CHAR_DTEES=203, 387 TCOD_CHAR_DCROSS=206, 388 // blocks 389 TCOD_CHAR_BLOCK1=176, 390 TCOD_CHAR_BLOCK2=177, 391 TCOD_CHAR_BLOCK3=178, 392 // arrows 393 TCOD_CHAR_ARROW_N=24, 394 TCOD_CHAR_ARROW_S=25, 395 TCOD_CHAR_ARROW_E=26, 396 TCOD_CHAR_ARROW_W=27, 397 // arrows without tail 398 TCOD_CHAR_ARROW2_N=30, 399 TCOD_CHAR_ARROW2_S=31, 400 TCOD_CHAR_ARROW2_E=16, 401 TCOD_CHAR_ARROW2_W=17, 402 // double arrows 403 TCOD_CHAR_DARROW_H=29, 404 TCOD_CHAR_DARROW_V=18, 405 // GUI stuff 406 TCOD_CHAR_CHECKBOX_UNSET=224, 407 TCOD_CHAR_CHECKBOX_SET=225, 408 TCOD_CHAR_RADIO_UNSET=9, 409 TCOD_CHAR_RADIO_SET=10, 410 // sub-pixel resolution kit 411 TCOD_CHAR_SUBP_NW=226, 412 TCOD_CHAR_SUBP_NE=227, 413 TCOD_CHAR_SUBP_N=228, 414 TCOD_CHAR_SUBP_SE=229, 415 TCOD_CHAR_SUBP_DIAG=230, 416 TCOD_CHAR_SUBP_E=231, 417 TCOD_CHAR_SUBP_SW=232, 418 /* miscellaneous */ 419 TCOD_CHAR_SMILIE = 1, 420 TCOD_CHAR_SMILIE_INV = 2, 421 TCOD_CHAR_HEART = 3, 422 TCOD_CHAR_DIAMOND = 4, 423 TCOD_CHAR_CLUB = 5, 424 TCOD_CHAR_SPADE = 6, 425 TCOD_CHAR_BULLET = 7, 426 TCOD_CHAR_BULLET_INV = 8, 427 TCOD_CHAR_MALE = 11, 428 TCOD_CHAR_FEMALE = 12, 429 TCOD_CHAR_NOTE = 13, 430 TCOD_CHAR_NOTE_DOUBLE = 14, 431 TCOD_CHAR_LIGHT = 15, 432 TCOD_CHAR_EXCLAM_DOUBLE = 19, 433 TCOD_CHAR_PILCROW = 20, 434 TCOD_CHAR_SECTION = 21, 435 TCOD_CHAR_POUND = 156, 436 TCOD_CHAR_MULTIPLICATION = 158, 437 TCOD_CHAR_FUNCTION = 159, 438 TCOD_CHAR_RESERVED = 169, 439 TCOD_CHAR_HALF = 171, 440 TCOD_CHAR_ONE_QUARTER = 172, 441 TCOD_CHAR_COPYRIGHT = 184, 442 TCOD_CHAR_CENT = 189, 443 TCOD_CHAR_YEN = 190, 444 TCOD_CHAR_CURRENCY = 207, 445 TCOD_CHAR_THREE_QUARTERS = 243, 446 TCOD_CHAR_DIVISION = 246, 447 TCOD_CHAR_GRADE = 248, 448 TCOD_CHAR_UMLAUT = 249, 449 TCOD_CHAR_POW1 = 251, 450 TCOD_CHAR_POW3 = 252, 451 TCOD_CHAR_POW2 = 253, 452 TCOD_CHAR_BULLET_SQUARE = 254, 453 } 454 455 alias int TCOD_colctrl_t; 456 enum : TCOD_colctrl_t { 457 TCOD_COLCTRL_1 = 1, 458 TCOD_COLCTRL_2, 459 TCOD_COLCTRL_3, 460 TCOD_COLCTRL_4, 461 TCOD_COLCTRL_5, 462 TCOD_COLCTRL_NUMBER=5, 463 TCOD_COLCTRL_FORE_RGB, 464 TCOD_COLCTRL_BACK_RGB, 465 TCOD_COLCTRL_STOP 466 } 467 468 alias int TCOD_bkgnd_flag_t; 469 enum : TCOD_bkgnd_flag_t { 470 TCOD_BKGND_NONE, 471 TCOD_BKGND_SET, 472 TCOD_BKGND_MULTIPLY, 473 TCOD_BKGND_LIGHTEN, 474 TCOD_BKGND_DARKEN, 475 TCOD_BKGND_SCREEN, 476 TCOD_BKGND_COLOR_DODGE, 477 TCOD_BKGND_COLOR_BURN, 478 TCOD_BKGND_ADD, 479 TCOD_BKGND_ADDA, 480 TCOD_BKGND_BURN, 481 TCOD_BKGND_OVERLAY, 482 TCOD_BKGND_ALPH, 483 TCOD_BKGND_DEFAULT 484 } 485 486 pure TCOD_bkgnd_flag_t TCOD_BKGND_ALPHA(T)(T alpha) 487 { 488 return (TCOD_BKGND_ALPH | (cast(ubyte)(alpha * 255) << 8)); 489 } 490 491 pure TCOD_bkgnd_flag_t TCOD_BKGND_ADDALPHA(T)(T alpha) 492 { 493 return (TCOD_BKGND_ADDA | (cast(ubyte)(alpha * 255) << 8)); 494 } 495 496 enum { 497 TCOD_KEY_PRESSED=1, 498 TCOD_KEY_RELEASED=2, 499 } 500 501 // custom font flags 502 enum { 503 TCOD_FONT_LAYOUT_ASCII_INCOL=1, 504 TCOD_FONT_LAYOUT_ASCII_INROW=2, 505 TCOD_FONT_TYPE_GREYSCALE=4, 506 TCOD_FONT_TYPE_GRAYSCALE=4, 507 TCOD_FONT_LAYOUT_TCOD=8, 508 } 509 510 alias int TCOD_renderer_t; 511 enum : TCOD_renderer_t { 512 TCOD_RENDERER_GLSL, 513 TCOD_RENDERER_OPENGL, 514 TCOD_RENDERER_SDL, 515 } 516 517 alias int TCOD_alignment_t; 518 enum : TCOD_alignment_t { 519 TCOD_LEFT, 520 TCOD_RIGHT, 521 TCOD_CENTER, 522 } 523 524 alias void* TCOD_console_t; 525 526 // --- Image. --- 527 alias void* TCOD_image_t; 528 529 // --- Sys. --- 530 531 alias int TCOD_event_t; 532 533 enum : TCOD_event_t { 534 TCOD_EVENT_KEY_PRESS = 1, 535 TCOD_EVENT_KEY_RELEASE = 2, 536 TCOD_EVENT_KEY = TCOD_EVENT_KEY_PRESS | TCOD_EVENT_KEY_RELEASE, 537 TCOD_EVENT_MOUSE_MOVE = 4, 538 TCOD_EVENT_MOUSE_PRESS = 8, 539 TCOD_EVENT_MOUSE_RELEASE = 16, 540 TCOD_EVENT_MOUSE = TCOD_EVENT_MOUSE_MOVE | TCOD_EVENT_MOUSE_PRESS | TCOD_EVENT_MOUSE_RELEASE, 541 TCOD_EVENT_ANY = TCOD_EVENT_KEY | TCOD_EVENT_MOUSE, 542 } 543 544 alias void* TCOD_thread_t; 545 alias void* TCOD_semaphore_t; 546 alias void* TCOD_mutex_t; 547 alias void* TCOD_cond_t; 548 alias void* TCOD_library_t; 549 550 alias void function(void* sdl_surface) SDL_renderer_t; 551 552 // --- Mersenne. --- 553 alias void* TCOD_random_t; 554 alias int TCOD_random_algo_t; 555 enum : TCOD_random_algo_t 556 { 557 TCOD_RNG_MT, 558 TCOD_RNG_CMWC, 559 } 560 561 alias int TCOD_distribution_t; 562 enum : TCOD_distribution_t 563 { 564 TCOD_DISTRIBUTION_LINEAR, 565 TCOD_DISTRIBUTION_GAUSSIAN, 566 TCOD_DISTRIBUTION_GAUSSIAN_RANGE, 567 TCOD_DISTRIBUTION_GAUSSIAN_INVERSE, 568 TCOD_DISTRIBUTION_GAUSSIAN_RANGE_INVERSE, 569 } 570 571 // --- Mouse. --- 572 struct TCOD_mouse_t { 573 int x,y; /* absolute position */ 574 int dx,dy; /* movement since last update in pixels */ 575 int cx,cy; /* cell coordinates in the root console */ 576 int dcx,dcy; /* movement since last update in console cells */ 577 bool lbutton; 578 bool rbutton; 579 bool mbutton; 580 bool lbutton_pressed; 581 bool rbutton_pressed; 582 bool mbutton_pressed; 583 bool wheel_up; 584 bool wheel_down; 585 } 586 587 // --- Bresenham. --- 588 alias bool function(int x, int y) TCOD_line_listener_t; 589 590 struct TCOD_bresenham_data_t { 591 int stepx; 592 int stepy; 593 int e; 594 int deltax; 595 int deltay; 596 int origx; 597 int origy; 598 int destx; 599 int desty; 600 } 601 602 // --- BSP. --- 603 struct TCOD_bsp_t { 604 TCOD_tree_t tree; /* pseudo oop : bsp inherit tree */ 605 int x,y,w,h; /* node position & size */ 606 int position; /* position of splitting */ 607 ubyte level; /* level in the tree */ 608 bool horizontal; /* horizontal splitting ? */ 609 } 610 611 alias bool function(TCOD_bsp_t* node, void* userData) TCOD_bsp_callback_t; 612 613 // --- Noise. --- 614 alias void* TCOD_noise_t; 615 616 const int TCOD_NOISE_MAX_OCTAVES = 128; 617 const int TCOD_NOISE_MAX_DIMENSIONS = 4; 618 const float TCOD_NOISE_DEFAULT_HURST = 0.5f; 619 const float TCOD_NOISE_DEFAULT_LACUNARITY = 2.0f; 620 621 alias int TCOD_noise_type_t; 622 enum : TCOD_noise_type_t { 623 TCOD_NOISE_PERLIN = 1, 624 TCOD_NOISE_SIMPLEX = 2, 625 TCOD_NOISE_WAVELET = 4, 626 TCOD_NOISE_DEFAULT = 0, 627 } 628 629 // --- FOV. --- 630 alias void* TCOD_map_t; 631 632 // FOV_BASIC : http://roguebasin.roguelikedevelopment.org/index.php?title=Ray_casting 633 // FOV_DIAMOND : http://www.geocities.com/temerra/los_rays.html 634 // FOV_SHADOW : http://roguebasin.roguelikedevelopment.org/index.php?title=FOV_using_recursive_shadowcasting 635 // FOV_PERMISSIVE : http://roguebasin.roguelikedevelopment.org/index.php?title=Precise_Permissive_Field_of_View 636 // FOV_RESTRICTIVE : Mingos' Restrictive Precise Angle Shadowcasting (contribution by Mingos) 637 638 alias int TCOD_fov_algorithm_t; 639 enum : TCOD_fov_algorithm_t { 640 FOV_BASIC, 641 FOV_DIAMOND, 642 FOV_SHADOW, 643 FOV_PERMISSIVE_0, 644 FOV_PERMISSIVE_1, 645 FOV_PERMISSIVE_2, 646 FOV_PERMISSIVE_3, 647 FOV_PERMISSIVE_4, 648 FOV_PERMISSIVE_5, 649 FOV_PERMISSIVE_6, 650 FOV_PERMISSIVE_7, 651 FOV_PERMISSIVE_8, 652 FOV_RESTRICTIVE, 653 NB_FOV_ALGORITHMS 654 } 655 656 TCOD_fov_algorithm_t FOV_PERMISSIVE(int x) { return FOV_PERMISSIVE_0 + x; } 657 658 // --- Path. --- 659 alias float function(int xFrom, int yFrom, int xTo, int yTo, void* user_data) TCOD_path_func_t; 660 alias void *TCOD_path_t; 661 alias void* TCOD_dijkstra_t; 662 663 // --- Lex. --- 664 const int TCOD_LEX_FLAG_NOCASE = 1; 665 const int TCOD_LEX_FLAG_NESTING_COMMENT = 2; 666 const int TCOD_LEX_FLAG_TOKENIZE_COMMENTS = 4; 667 668 const int TCOD_LEX_ERROR = -1; 669 const int TCOD_LEX_UNKNOWN = 0; 670 const int TCOD_LEX_SYMBOL = 1; 671 const int TCOD_LEX_KEYWORD = 2; 672 const int TCOD_LEX_IDEN = 3; 673 const int TCOD_LEX_STRING = 4; 674 const int TCOD_LEX_INTEGER = 5; 675 const int TCOD_LEX_FLOAT = 6; 676 const int TCOD_LEX_CHAR = 7; 677 const int TCOD_LEX_EOF = 8; 678 const int TCOD_LEX_COMMENT = 9; 679 680 const int TCOD_LEX_MAX_SYMBOLS = 100; 681 const int TCOD_LEX_SYMBOL_SIZE = 5; 682 const int TCOD_LEX_MAX_KEYWORDS = 100; 683 const int TCOD_LEX_KEYWORD_SIZE = 20; 684 685 struct TCOD_lex_t { 686 int file_line, token_type, token_int_val, token_idx; 687 float token_float_val; 688 char *tok; 689 int toklen; 690 char lastStringDelim; 691 char *pos; 692 char *buf; 693 char *filename; 694 char *last_javadoc_comment; 695 // private stuff 696 int nb_symbols, nb_keywords, flags; 697 char[TCOD_LEX_SYMBOL_SIZE][TCOD_LEX_MAX_SYMBOLS] symbols; 698 char[TCOD_LEX_KEYWORD_SIZE][TCOD_LEX_MAX_KEYWORDS] keywords; 699 charptr simpleCmt; 700 charptr cmtStart, cmtStop, javadocCmtStart; 701 charptr stringDelim; 702 bool javadoc_read; 703 bool allocBuf; 704 bool savept; // is this object a savepoint (no free in destructor) 705 } 706 707 708 // --- Parser. --- 709 /* generic type */ 710 alias int TCOD_value_type_t; 711 enum : TCOD_value_type_t { 712 TCOD_TYPE_NONE, 713 TCOD_TYPE_BOOL, 714 TCOD_TYPE_CHAR, 715 TCOD_TYPE_INT, 716 TCOD_TYPE_FLOAT, 717 TCOD_TYPE_STRING, 718 TCOD_TYPE_COLOR, 719 TCOD_TYPE_DICE, 720 TCOD_TYPE_VALUELIST00, 721 TCOD_TYPE_VALUELIST01, 722 TCOD_TYPE_VALUELIST02, 723 TCOD_TYPE_VALUELIST03, 724 TCOD_TYPE_VALUELIST04, 725 TCOD_TYPE_VALUELIST05, 726 TCOD_TYPE_VALUELIST06, 727 TCOD_TYPE_VALUELIST07, 728 TCOD_TYPE_VALUELIST08, 729 TCOD_TYPE_VALUELIST09, 730 TCOD_TYPE_VALUELIST10, 731 TCOD_TYPE_VALUELIST11, 732 TCOD_TYPE_VALUELIST12, 733 TCOD_TYPE_VALUELIST13, 734 TCOD_TYPE_VALUELIST14, 735 TCOD_TYPE_VALUELIST15, 736 TCOD_TYPE_CUSTOM00, 737 TCOD_TYPE_CUSTOM01, 738 TCOD_TYPE_CUSTOM02, 739 TCOD_TYPE_CUSTOM03, 740 TCOD_TYPE_CUSTOM04, 741 TCOD_TYPE_CUSTOM05, 742 TCOD_TYPE_CUSTOM06, 743 TCOD_TYPE_CUSTOM07, 744 TCOD_TYPE_CUSTOM08, 745 TCOD_TYPE_CUSTOM09, 746 TCOD_TYPE_CUSTOM10, 747 TCOD_TYPE_CUSTOM11, 748 TCOD_TYPE_CUSTOM12, 749 TCOD_TYPE_CUSTOM13, 750 TCOD_TYPE_CUSTOM14, 751 TCOD_TYPE_CUSTOM15, 752 TCOD_TYPE_LIST=1024 753 } 754 755 /* dice roll */ 756 struct TCOD_dice_t { 757 int nb_dices; 758 int nb_faces; 759 float multiplier; 760 float addsub; 761 } 762 763 /* generic value */ 764 union TCOD_value_t { 765 bool b; 766 char c; 767 int i; 768 float f; 769 char *s; 770 TCOD_color_t col; 771 TCOD_dice_t dice; 772 TCOD_list_t list; 773 void *custom; 774 } 775 776 /* parser structures */ 777 alias void *TCOD_parser_struct_t; 778 779 /* parser listener */ 780 struct TCOD_parser_listener_t { 781 bool function(TCOD_parser_struct_t str, charptr name) new_struct; 782 bool function(charptr name) new_flag; 783 bool function(charptr propname, TCOD_value_type_t type, TCOD_value_t value) new_property; 784 bool function(TCOD_parser_struct_t str, charptr name) end_struct; 785 void function(charptr msg) error; 786 } 787 788 /* a custom type parser */ 789 alias TCOD_value_t function(TCOD_lex_t* lex, TCOD_parser_listener_t* listener, TCOD_parser_struct_t str, charptr propname) TCOD_parser_custom_t; 790 791 /* the parser */ 792 alias void *TCOD_parser_t; 793 794 /* parser internals (may be used by custom type parsers) */ 795 /* parser structures */ 796 struct TCOD_struct_int_t { 797 charptr name; /* entity type name */ 798 /* list of flags */ 799 TCOD_list_t flags; 800 /* list of properties (name, type, mandatory) */ 801 TCOD_list_t props; 802 /* list of value lists */ 803 TCOD_list_t lists; 804 /* list of sub-structures */ 805 TCOD_list_t structs; 806 } 807 808 /* the parser */ 809 struct TCOD_parser_int_t { 810 /* list of structures */ 811 TCOD_list_t structs; 812 /* list of custom type parsers */ 813 TCOD_parser_custom_t[16] customs; 814 /* fatal error occured */ 815 bool fatal; 816 // list of properties if default listener is used 817 TCOD_list_t props; 818 } 819 820 821 // --- Tree. --- 822 struct TCOD_tree_t { 823 TCOD_tree_t *next; 824 TCOD_tree_t *father; 825 TCOD_tree_t *sons; 826 } 827 828 829 // --- Heightmap. --- 830 struct TCOD_heightmap_t { 831 int w,h; 832 float *values; 833 } 834 835 836 // --- Zip. --- 837 alias void* TCOD_zip_t; 838 839 840 // --- Namegen. --- 841 alias void* TCOD_namegen_t; 842 843 844 // --- Txtfield. --- 845 alias void* TCOD_text_t;