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 TCODK_TEXT 350 } 351 352 immutable TCOD_KEY_TEXT_SIZE = 32; 353 354 /* key data : special code or character or text */ 355 struct TCOD_key_t { 356 TCOD_keycode_t vk; /* key code */ 357 char c; /* character if vk == TCODK_CHAR else 0 */ 358 char[TCOD_KEY_TEXT_SIZE] text; /* text if vk == TCODK_TEXT else text[0] == '\0' */ 359 bool pressed; 360 bool lalt; 361 bool lctrl; 362 bool lmeta; 363 bool ralt; 364 bool rctrl; 365 bool rmeta; 366 bool shift; 367 } 368 369 enum { 370 // single walls 371 TCOD_CHAR_HLINE=196, 372 TCOD_CHAR_VLINE=179, 373 TCOD_CHAR_NE=191, 374 TCOD_CHAR_NW=218, 375 TCOD_CHAR_SE=217, 376 TCOD_CHAR_SW=192, 377 TCOD_CHAR_TEEW=180, 378 TCOD_CHAR_TEEE=195, 379 TCOD_CHAR_TEEN=193, 380 TCOD_CHAR_TEES=194, 381 TCOD_CHAR_CROSS=197, 382 // double walls 383 TCOD_CHAR_DHLINE=205, 384 TCOD_CHAR_DVLINE=186, 385 TCOD_CHAR_DNE=187, 386 TCOD_CHAR_DNW=201, 387 TCOD_CHAR_DSE=188, 388 TCOD_CHAR_DSW=200, 389 TCOD_CHAR_DTEEW=185, 390 TCOD_CHAR_DTEEE=204, 391 TCOD_CHAR_DTEEN=202, 392 TCOD_CHAR_DTEES=203, 393 TCOD_CHAR_DCROSS=206, 394 // blocks 395 TCOD_CHAR_BLOCK1=176, 396 TCOD_CHAR_BLOCK2=177, 397 TCOD_CHAR_BLOCK3=178, 398 // arrows 399 TCOD_CHAR_ARROW_N=24, 400 TCOD_CHAR_ARROW_S=25, 401 TCOD_CHAR_ARROW_E=26, 402 TCOD_CHAR_ARROW_W=27, 403 // arrows without tail 404 TCOD_CHAR_ARROW2_N=30, 405 TCOD_CHAR_ARROW2_S=31, 406 TCOD_CHAR_ARROW2_E=16, 407 TCOD_CHAR_ARROW2_W=17, 408 // double arrows 409 TCOD_CHAR_DARROW_H=29, 410 TCOD_CHAR_DARROW_V=18, 411 // GUI stuff 412 TCOD_CHAR_CHECKBOX_UNSET=224, 413 TCOD_CHAR_CHECKBOX_SET=225, 414 TCOD_CHAR_RADIO_UNSET=9, 415 TCOD_CHAR_RADIO_SET=10, 416 // sub-pixel resolution kit 417 TCOD_CHAR_SUBP_NW=226, 418 TCOD_CHAR_SUBP_NE=227, 419 TCOD_CHAR_SUBP_N=228, 420 TCOD_CHAR_SUBP_SE=229, 421 TCOD_CHAR_SUBP_DIAG=230, 422 TCOD_CHAR_SUBP_E=231, 423 TCOD_CHAR_SUBP_SW=232, 424 /* miscellaneous */ 425 TCOD_CHAR_SMILIE = 1, 426 TCOD_CHAR_SMILIE_INV = 2, 427 TCOD_CHAR_HEART = 3, 428 TCOD_CHAR_DIAMOND = 4, 429 TCOD_CHAR_CLUB = 5, 430 TCOD_CHAR_SPADE = 6, 431 TCOD_CHAR_BULLET = 7, 432 TCOD_CHAR_BULLET_INV = 8, 433 TCOD_CHAR_MALE = 11, 434 TCOD_CHAR_FEMALE = 12, 435 TCOD_CHAR_NOTE = 13, 436 TCOD_CHAR_NOTE_DOUBLE = 14, 437 TCOD_CHAR_LIGHT = 15, 438 TCOD_CHAR_EXCLAM_DOUBLE = 19, 439 TCOD_CHAR_PILCROW = 20, 440 TCOD_CHAR_SECTION = 21, 441 TCOD_CHAR_POUND = 156, 442 TCOD_CHAR_MULTIPLICATION = 158, 443 TCOD_CHAR_FUNCTION = 159, 444 TCOD_CHAR_RESERVED = 169, 445 TCOD_CHAR_HALF = 171, 446 TCOD_CHAR_ONE_QUARTER = 172, 447 TCOD_CHAR_COPYRIGHT = 184, 448 TCOD_CHAR_CENT = 189, 449 TCOD_CHAR_YEN = 190, 450 TCOD_CHAR_CURRENCY = 207, 451 TCOD_CHAR_THREE_QUARTERS = 243, 452 TCOD_CHAR_DIVISION = 246, 453 TCOD_CHAR_GRADE = 248, 454 TCOD_CHAR_UMLAUT = 249, 455 TCOD_CHAR_POW1 = 251, 456 TCOD_CHAR_POW3 = 252, 457 TCOD_CHAR_POW2 = 253, 458 TCOD_CHAR_BULLET_SQUARE = 254, 459 } 460 461 alias int TCOD_colctrl_t; 462 enum : TCOD_colctrl_t { 463 TCOD_COLCTRL_1 = 1, 464 TCOD_COLCTRL_2, 465 TCOD_COLCTRL_3, 466 TCOD_COLCTRL_4, 467 TCOD_COLCTRL_5, 468 TCOD_COLCTRL_NUMBER=5, 469 TCOD_COLCTRL_FORE_RGB, 470 TCOD_COLCTRL_BACK_RGB, 471 TCOD_COLCTRL_STOP 472 } 473 474 alias int TCOD_bkgnd_flag_t; 475 enum : TCOD_bkgnd_flag_t { 476 TCOD_BKGND_NONE, 477 TCOD_BKGND_SET, 478 TCOD_BKGND_MULTIPLY, 479 TCOD_BKGND_LIGHTEN, 480 TCOD_BKGND_DARKEN, 481 TCOD_BKGND_SCREEN, 482 TCOD_BKGND_COLOR_DODGE, 483 TCOD_BKGND_COLOR_BURN, 484 TCOD_BKGND_ADD, 485 TCOD_BKGND_ADDA, 486 TCOD_BKGND_BURN, 487 TCOD_BKGND_OVERLAY, 488 TCOD_BKGND_ALPH, 489 TCOD_BKGND_DEFAULT 490 } 491 492 pure TCOD_bkgnd_flag_t TCOD_BKGND_ALPHA(T)(T alpha) 493 { 494 return (TCOD_BKGND_ALPH | (cast(ubyte)(alpha * 255) << 8)); 495 } 496 497 pure TCOD_bkgnd_flag_t TCOD_BKGND_ADDALPHA(T)(T alpha) 498 { 499 return (TCOD_BKGND_ADDA | (cast(ubyte)(alpha * 255) << 8)); 500 } 501 502 enum { 503 TCOD_KEY_PRESSED=1, 504 TCOD_KEY_RELEASED=2, 505 } 506 507 /** 508 * These font flags can be OR'd together into a bit-field and passed to 509 * TCOD_console_set_custom_font 510 */ 511 enum { 512 /** Tiles are arranged in column-major order. 513 * 514 * 0 3 6 515 * 1 4 7 516 * 2 5 8 517 */ 518 TCOD_FONT_LAYOUT_ASCII_INCOL=1, 519 /** Tiles are arranged in row-major order. 520 * 521 * 0 1 2 522 * 3 4 5 523 * 6 7 8 524 */ 525 TCOD_FONT_LAYOUT_ASCII_INROW=2, 526 /** Converts all tiles into a monochrome gradient. */ 527 TCOD_FONT_TYPE_GREYSCALE=4, 528 TCOD_FONT_TYPE_GRAYSCALE=4, 529 /** A unique layout used by some of libtcod's fonts. */ 530 TCOD_FONT_LAYOUT_TCOD=8, 531 } 532 533 alias int TCOD_renderer_t; 534 /** 535 * The available renderers. 536 */ 537 enum : TCOD_renderer_t { 538 /** An OpenGL implementation using a shader. */ 539 TCOD_RENDERER_GLSL, 540 /** 541 * An OpenGL implementation without a shader. 542 * 543 * Performs worse than TCOD_RENDERER_GLSL without many benefits. 544 */ 545 TCOD_RENDERER_OPENGL, 546 /** 547 * A software based renderer. 548 * 549 * The font file is loaded into RAM instead of VRAM in this implementation. 550 */ 551 TCOD_RENDERER_SDL, 552 TCOD_NB_RENDERERS, 553 } 554 555 alias int TCOD_alignment_t; 556 enum : TCOD_alignment_t { 557 TCOD_LEFT, 558 TCOD_RIGHT, 559 TCOD_CENTER, 560 } 561 562 alias void* TCOD_console_t; 563 564 // --- Image. --- 565 alias void* TCOD_image_t; 566 567 // --- Sys. --- 568 569 alias int TCOD_event_t; 570 571 enum : TCOD_event_t { 572 TCOD_EVENT_NONE=0, 573 TCOD_EVENT_KEY_PRESS = 1, 574 TCOD_EVENT_KEY_RELEASE = 2, 575 TCOD_EVENT_KEY = TCOD_EVENT_KEY_PRESS | TCOD_EVENT_KEY_RELEASE, 576 TCOD_EVENT_MOUSE_MOVE = 4, 577 TCOD_EVENT_MOUSE_PRESS = 8, 578 TCOD_EVENT_MOUSE_RELEASE = 16, 579 TCOD_EVENT_MOUSE = TCOD_EVENT_MOUSE_MOVE | TCOD_EVENT_MOUSE_PRESS | TCOD_EVENT_MOUSE_RELEASE, 580 TCOD_EVENT_FINGER_MOVE=32, 581 TCOD_EVENT_FINGER_PRESS=64, 582 TCOD_EVENT_FINGER_RELEASE=128, 583 TCOD_EVENT_FINGER=TCOD_EVENT_FINGER_MOVE|TCOD_EVENT_FINGER_PRESS|TCOD_EVENT_FINGER_RELEASE, 584 TCOD_EVENT_ANY=TCOD_EVENT_KEY|TCOD_EVENT_MOUSE|TCOD_EVENT_FINGER, 585 } 586 587 alias void* TCOD_thread_t; 588 alias void* TCOD_semaphore_t; 589 alias void* TCOD_mutex_t; 590 alias void* TCOD_cond_t; 591 alias void* TCOD_library_t; 592 593 alias void function(void* sdl_surface) SDL_renderer_t; 594 595 // --- Mersenne. --- 596 alias void* TCOD_random_t; 597 alias int TCOD_random_algo_t; 598 enum : TCOD_random_algo_t 599 { 600 TCOD_RNG_MT, 601 TCOD_RNG_CMWC, 602 } 603 604 alias int TCOD_distribution_t; 605 enum : TCOD_distribution_t 606 { 607 TCOD_DISTRIBUTION_LINEAR, 608 TCOD_DISTRIBUTION_GAUSSIAN, 609 TCOD_DISTRIBUTION_GAUSSIAN_RANGE, 610 TCOD_DISTRIBUTION_GAUSSIAN_INVERSE, 611 TCOD_DISTRIBUTION_GAUSSIAN_RANGE_INVERSE, 612 } 613 614 // --- Mouse. --- 615 struct TCOD_mouse_t { 616 int x,y; /* absolute position */ 617 int dx,dy; /* movement since last update in pixels */ 618 int cx,cy; /* cell coordinates in the root console */ 619 int dcx,dcy; /* movement since last update in console cells */ 620 bool lbutton; 621 bool rbutton; 622 bool mbutton; 623 bool lbutton_pressed; 624 bool rbutton_pressed; 625 bool mbutton_pressed; 626 bool wheel_up; 627 bool wheel_down; 628 } 629 630 // --- Bresenham. --- 631 alias bool function(int x, int y) TCOD_line_listener_t; 632 633 struct TCOD_bresenham_data_t { 634 int stepx; 635 int stepy; 636 int e; 637 int deltax; 638 int deltay; 639 int origx; 640 int origy; 641 int destx; 642 int desty; 643 } 644 645 // --- BSP. --- 646 struct TCOD_bsp_t { 647 TCOD_tree_t tree; /* pseudo oop : bsp inherit tree */ 648 int x,y,w,h; /* node position & size */ 649 int position; /* position of splitting */ 650 ubyte level; /* level in the tree */ 651 bool horizontal; /* horizontal splitting ? */ 652 } 653 654 alias bool function(TCOD_bsp_t* node, void* userData) TCOD_bsp_callback_t; 655 656 // --- Noise. --- 657 alias void* TCOD_noise_t; 658 659 const int TCOD_NOISE_MAX_OCTAVES = 128; 660 const int TCOD_NOISE_MAX_DIMENSIONS = 4; 661 const float TCOD_NOISE_DEFAULT_HURST = 0.5f; 662 const float TCOD_NOISE_DEFAULT_LACUNARITY = 2.0f; 663 664 alias int TCOD_noise_type_t; 665 enum : TCOD_noise_type_t { 666 TCOD_NOISE_PERLIN = 1, 667 TCOD_NOISE_SIMPLEX = 2, 668 TCOD_NOISE_WAVELET = 4, 669 TCOD_NOISE_DEFAULT = 0, 670 } 671 672 // --- FOV. --- 673 alias void* TCOD_map_t; 674 675 // FOV_BASIC : http://roguebasin.roguelikedevelopment.org/index.php?title=Ray_casting 676 // FOV_DIAMOND : http://www.geocities.com/temerra/los_rays.html 677 // FOV_SHADOW : http://roguebasin.roguelikedevelopment.org/index.php?title=FOV_using_recursive_shadowcasting 678 // FOV_PERMISSIVE : http://roguebasin.roguelikedevelopment.org/index.php?title=Precise_Permissive_Field_of_View 679 // FOV_RESTRICTIVE : Mingos' Restrictive Precise Angle Shadowcasting (contribution by Mingos) 680 681 alias int TCOD_fov_algorithm_t; 682 enum : TCOD_fov_algorithm_t { 683 FOV_BASIC, 684 FOV_DIAMOND, 685 FOV_SHADOW, 686 FOV_PERMISSIVE_0, 687 FOV_PERMISSIVE_1, 688 FOV_PERMISSIVE_2, 689 FOV_PERMISSIVE_3, 690 FOV_PERMISSIVE_4, 691 FOV_PERMISSIVE_5, 692 FOV_PERMISSIVE_6, 693 FOV_PERMISSIVE_7, 694 FOV_PERMISSIVE_8, 695 FOV_RESTRICTIVE, 696 NB_FOV_ALGORITHMS 697 } 698 699 TCOD_fov_algorithm_t FOV_PERMISSIVE(int x) { return FOV_PERMISSIVE_0 + x; } 700 701 // --- Path. --- 702 alias float function(int xFrom, int yFrom, int xTo, int yTo, void* user_data) TCOD_path_func_t; 703 alias void *TCOD_path_t; 704 alias void* TCOD_dijkstra_t; 705 706 // --- Lex. --- 707 const int TCOD_LEX_FLAG_NOCASE = 1; 708 const int TCOD_LEX_FLAG_NESTING_COMMENT = 2; 709 const int TCOD_LEX_FLAG_TOKENIZE_COMMENTS = 4; 710 711 const int TCOD_LEX_ERROR = -1; 712 const int TCOD_LEX_UNKNOWN = 0; 713 const int TCOD_LEX_SYMBOL = 1; 714 const int TCOD_LEX_KEYWORD = 2; 715 const int TCOD_LEX_IDEN = 3; 716 const int TCOD_LEX_STRING = 4; 717 const int TCOD_LEX_INTEGER = 5; 718 const int TCOD_LEX_FLOAT = 6; 719 const int TCOD_LEX_CHAR = 7; 720 const int TCOD_LEX_EOF = 8; 721 const int TCOD_LEX_COMMENT = 9; 722 723 const int TCOD_LEX_MAX_SYMBOLS = 100; 724 const int TCOD_LEX_SYMBOL_SIZE = 5; 725 const int TCOD_LEX_MAX_KEYWORDS = 100; 726 const int TCOD_LEX_KEYWORD_SIZE = 20; 727 728 struct TCOD_lex_t { 729 int file_line, token_type, token_int_val, token_idx; 730 float token_float_val; 731 char *tok; 732 int toklen; 733 char lastStringDelim; 734 char *pos; 735 char *buf; 736 char *filename; 737 char *last_javadoc_comment; 738 // private stuff 739 int nb_symbols, nb_keywords, flags; 740 char[TCOD_LEX_SYMBOL_SIZE][TCOD_LEX_MAX_SYMBOLS] symbols; 741 char[TCOD_LEX_KEYWORD_SIZE][TCOD_LEX_MAX_KEYWORDS] keywords; 742 charptr simpleCmt; 743 charptr cmtStart, cmtStop, javadocCmtStart; 744 charptr stringDelim; 745 bool javadoc_read; 746 bool allocBuf; 747 bool savept; // is this object a savepoint (no free in destructor) 748 } 749 750 751 // --- Parser. --- 752 /* generic type */ 753 alias int TCOD_value_type_t; 754 enum : TCOD_value_type_t { 755 TCOD_TYPE_NONE, 756 TCOD_TYPE_BOOL, 757 TCOD_TYPE_CHAR, 758 TCOD_TYPE_INT, 759 TCOD_TYPE_FLOAT, 760 TCOD_TYPE_STRING, 761 TCOD_TYPE_COLOR, 762 TCOD_TYPE_DICE, 763 TCOD_TYPE_VALUELIST00, 764 TCOD_TYPE_VALUELIST01, 765 TCOD_TYPE_VALUELIST02, 766 TCOD_TYPE_VALUELIST03, 767 TCOD_TYPE_VALUELIST04, 768 TCOD_TYPE_VALUELIST05, 769 TCOD_TYPE_VALUELIST06, 770 TCOD_TYPE_VALUELIST07, 771 TCOD_TYPE_VALUELIST08, 772 TCOD_TYPE_VALUELIST09, 773 TCOD_TYPE_VALUELIST10, 774 TCOD_TYPE_VALUELIST11, 775 TCOD_TYPE_VALUELIST12, 776 TCOD_TYPE_VALUELIST13, 777 TCOD_TYPE_VALUELIST14, 778 TCOD_TYPE_VALUELIST15, 779 TCOD_TYPE_CUSTOM00, 780 TCOD_TYPE_CUSTOM01, 781 TCOD_TYPE_CUSTOM02, 782 TCOD_TYPE_CUSTOM03, 783 TCOD_TYPE_CUSTOM04, 784 TCOD_TYPE_CUSTOM05, 785 TCOD_TYPE_CUSTOM06, 786 TCOD_TYPE_CUSTOM07, 787 TCOD_TYPE_CUSTOM08, 788 TCOD_TYPE_CUSTOM09, 789 TCOD_TYPE_CUSTOM10, 790 TCOD_TYPE_CUSTOM11, 791 TCOD_TYPE_CUSTOM12, 792 TCOD_TYPE_CUSTOM13, 793 TCOD_TYPE_CUSTOM14, 794 TCOD_TYPE_CUSTOM15, 795 TCOD_TYPE_LIST=1024 796 } 797 798 /* dice roll */ 799 struct TCOD_dice_t { 800 int nb_dices; 801 int nb_faces; 802 float multiplier; 803 float addsub; 804 } 805 806 /* generic value */ 807 union TCOD_value_t { 808 bool b; 809 char c; 810 int i; 811 float f; 812 char *s; 813 TCOD_color_t col; 814 TCOD_dice_t dice; 815 TCOD_list_t list; 816 void *custom; 817 } 818 819 /* parser structures */ 820 alias void *TCOD_parser_struct_t; 821 822 /* parser listener */ 823 struct TCOD_parser_listener_t { 824 bool function(TCOD_parser_struct_t str, charptr name) new_struct; 825 bool function(charptr name) new_flag; 826 bool function(charptr propname, TCOD_value_type_t type, TCOD_value_t value) new_property; 827 bool function(TCOD_parser_struct_t str, charptr name) end_struct; 828 void function(charptr msg) error; 829 } 830 831 /* a custom type parser */ 832 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; 833 834 /* the parser */ 835 alias void *TCOD_parser_t; 836 837 /* parser internals (may be used by custom type parsers) */ 838 /* parser structures */ 839 struct TCOD_struct_int_t { 840 charptr name; /* entity type name */ 841 /* list of flags */ 842 TCOD_list_t flags; 843 /* list of properties (name, type, mandatory) */ 844 TCOD_list_t props; 845 /* list of value lists */ 846 TCOD_list_t lists; 847 /* list of sub-structures */ 848 TCOD_list_t structs; 849 } 850 851 /* the parser */ 852 struct TCOD_parser_int_t { 853 /* list of structures */ 854 TCOD_list_t structs; 855 /* list of custom type parsers */ 856 TCOD_parser_custom_t[16] customs; 857 /* fatal error occurred */ 858 bool fatal; 859 // list of properties if default listener is used 860 TCOD_list_t props; 861 } 862 863 864 // --- Tree. --- 865 struct TCOD_tree_t { 866 TCOD_tree_t *next; 867 TCOD_tree_t *father; 868 TCOD_tree_t *sons; 869 } 870 871 872 // --- Heightmap. --- 873 struct TCOD_heightmap_t { 874 int w,h; 875 float *values; 876 } 877 878 879 // --- Zip. --- 880 alias void* TCOD_zip_t; 881 882 883 // --- Namegen. --- 884 alias void* TCOD_namegen_t; 885 886 887 // --- Txtfield. --- 888 alias void* TCOD_text_t;