diff --git a/assets/batchtest.txt b/assets/batchtest.txt index 995dc3d1a..cfa353aae 100644 --- a/assets/batchtest.txt +++ b/assets/batchtest.txt @@ -1,5 +1,5 @@ echo "Hello, world! This is a batch test." -echo "Will add actorvalue 'batch = true' to player" +echo "Will add actorvalue 'batch = __true' to player" setav batch true echo "Checking if command did something." getav batch \ No newline at end of file diff --git a/assets/getlightdata b/assets/getlightdata new file mode 100644 index 000000000..3d4631557 --- /dev/null +++ b/assets/getlightdata @@ -0,0 +1,3073 @@ +setgl 0 0 0 + +setgl 0 +testgetlight 50 50 + +setgl 1 +testgetlight 50 50 + +setgl 2 +testgetlight 50 50 + +setgl 3 +testgetlight 50 50 + +setgl 4 +testgetlight 50 50 + +setgl 5 +testgetlight 50 50 + +setgl 6 +testgetlight 50 50 + +setgl 7 +testgetlight 50 50 + +setgl 8 +testgetlight 50 50 + +setgl 9 +testgetlight 50 50 + +setgl 10 +testgetlight 50 50 + +setgl 11 +testgetlight 50 50 + +setgl 12 +testgetlight 50 50 + +setgl 13 +testgetlight 50 50 + +setgl 14 +testgetlight 50 50 + +setgl 15 +testgetlight 50 50 + +setgl 16 +testgetlight 50 50 + +setgl 17 +testgetlight 50 50 + +setgl 18 +testgetlight 50 50 + +setgl 19 +testgetlight 50 50 + +setgl 20 +testgetlight 50 50 + +setgl 21 +testgetlight 50 50 + +setgl 22 +testgetlight 50 50 + +setgl 23 +testgetlight 50 50 + +setgl 24 +testgetlight 50 50 + +setgl 25 +testgetlight 50 50 + +setgl 26 +testgetlight 50 50 + +setgl 27 +testgetlight 50 50 + +setgl 28 +testgetlight 50 50 + +setgl 29 +testgetlight 50 50 + +setgl 30 +testgetlight 50 50 + +setgl 31 +testgetlight 50 50 + +setgl 32 +testgetlight 50 50 + +setgl 33 +testgetlight 50 50 + +setgl 34 +testgetlight 50 50 + +setgl 35 +testgetlight 50 50 + +setgl 36 +testgetlight 50 50 + +setgl 37 +testgetlight 50 50 + +setgl 38 +testgetlight 50 50 + +setgl 39 +testgetlight 50 50 + +setgl 40 +testgetlight 50 50 + +setgl 41 +testgetlight 50 50 + +setgl 42 +testgetlight 50 50 + +setgl 43 +testgetlight 50 50 + +setgl 44 +testgetlight 50 50 + +setgl 45 +testgetlight 50 50 + +setgl 46 +testgetlight 50 50 + +setgl 47 +testgetlight 50 50 + +setgl 48 +testgetlight 50 50 + +setgl 49 +testgetlight 50 50 + +setgl 50 +testgetlight 50 50 + +setgl 51 +testgetlight 50 50 + +setgl 52 +testgetlight 50 50 + +setgl 53 +testgetlight 50 50 + +setgl 54 +testgetlight 50 50 + +setgl 55 +testgetlight 50 50 + +setgl 56 +testgetlight 50 50 + +setgl 57 +testgetlight 50 50 + +setgl 58 +testgetlight 50 50 + +setgl 59 +testgetlight 50 50 + +setgl 60 +testgetlight 50 50 + +setgl 61 +testgetlight 50 50 + +setgl 62 +testgetlight 50 50 + +setgl 63 +testgetlight 50 50 + +setgl 64 +testgetlight 50 50 + +setgl 65 +testgetlight 50 50 + +setgl 66 +testgetlight 50 50 + +setgl 67 +testgetlight 50 50 + +setgl 68 +testgetlight 50 50 + +setgl 69 +testgetlight 50 50 + +setgl 70 +testgetlight 50 50 + +setgl 71 +testgetlight 50 50 + +setgl 72 +testgetlight 50 50 + +setgl 73 +testgetlight 50 50 + +setgl 74 +testgetlight 50 50 + +setgl 75 +testgetlight 50 50 + +setgl 76 +testgetlight 50 50 + +setgl 77 +testgetlight 50 50 + +setgl 78 +testgetlight 50 50 + +setgl 79 +testgetlight 50 50 + +setgl 80 +testgetlight 50 50 + +setgl 81 +testgetlight 50 50 + +setgl 82 +testgetlight 50 50 + +setgl 83 +testgetlight 50 50 + +setgl 84 +testgetlight 50 50 + +setgl 85 +testgetlight 50 50 + +setgl 86 +testgetlight 50 50 + +setgl 87 +testgetlight 50 50 + +setgl 88 +testgetlight 50 50 + +setgl 89 +testgetlight 50 50 + +setgl 90 +testgetlight 50 50 + +setgl 91 +testgetlight 50 50 + +setgl 92 +testgetlight 50 50 + +setgl 93 +testgetlight 50 50 + +setgl 94 +testgetlight 50 50 + +setgl 95 +testgetlight 50 50 + +setgl 96 +testgetlight 50 50 + +setgl 97 +testgetlight 50 50 + +setgl 98 +testgetlight 50 50 + +setgl 99 +testgetlight 50 50 + +setgl 100 +testgetlight 50 50 + +setgl 101 +testgetlight 50 50 + +setgl 102 +testgetlight 50 50 + +setgl 103 +testgetlight 50 50 + +setgl 104 +testgetlight 50 50 + +setgl 105 +testgetlight 50 50 + +setgl 106 +testgetlight 50 50 + +setgl 107 +testgetlight 50 50 + +setgl 108 +testgetlight 50 50 + +setgl 109 +testgetlight 50 50 + +setgl 110 +testgetlight 50 50 + +setgl 111 +testgetlight 50 50 + +setgl 112 +testgetlight 50 50 + +setgl 113 +testgetlight 50 50 + +setgl 114 +testgetlight 50 50 + +setgl 115 +testgetlight 50 50 + +setgl 116 +testgetlight 50 50 + +setgl 117 +testgetlight 50 50 + +setgl 118 +testgetlight 50 50 + +setgl 119 +testgetlight 50 50 + +setgl 120 +testgetlight 50 50 + +setgl 121 +testgetlight 50 50 + +setgl 122 +testgetlight 50 50 + +setgl 123 +testgetlight 50 50 + +setgl 124 +testgetlight 50 50 + +setgl 125 +testgetlight 50 50 + +setgl 126 +testgetlight 50 50 + +setgl 127 +testgetlight 50 50 + +setgl 128 +testgetlight 50 50 + +setgl 129 +testgetlight 50 50 + +setgl 130 +testgetlight 50 50 + +setgl 131 +testgetlight 50 50 + +setgl 132 +testgetlight 50 50 + +setgl 133 +testgetlight 50 50 + +setgl 134 +testgetlight 50 50 + +setgl 135 +testgetlight 50 50 + +setgl 136 +testgetlight 50 50 + +setgl 137 +testgetlight 50 50 + +setgl 138 +testgetlight 50 50 + +setgl 139 +testgetlight 50 50 + +setgl 140 +testgetlight 50 50 + +setgl 141 +testgetlight 50 50 + +setgl 142 +testgetlight 50 50 + +setgl 143 +testgetlight 50 50 + +setgl 144 +testgetlight 50 50 + +setgl 145 +testgetlight 50 50 + +setgl 146 +testgetlight 50 50 + +setgl 147 +testgetlight 50 50 + +setgl 148 +testgetlight 50 50 + +setgl 149 +testgetlight 50 50 + +setgl 150 +testgetlight 50 50 + +setgl 151 +testgetlight 50 50 + +setgl 152 +testgetlight 50 50 + +setgl 153 +testgetlight 50 50 + +setgl 154 +testgetlight 50 50 + +setgl 155 +testgetlight 50 50 + +setgl 156 +testgetlight 50 50 + +setgl 157 +testgetlight 50 50 + +setgl 158 +testgetlight 50 50 + +setgl 159 +testgetlight 50 50 + +setgl 160 +testgetlight 50 50 + +setgl 161 +testgetlight 50 50 + +setgl 162 +testgetlight 50 50 + +setgl 163 +testgetlight 50 50 + +setgl 164 +testgetlight 50 50 + +setgl 165 +testgetlight 50 50 + +setgl 166 +testgetlight 50 50 + +setgl 167 +testgetlight 50 50 + +setgl 168 +testgetlight 50 50 + +setgl 169 +testgetlight 50 50 + +setgl 170 +testgetlight 50 50 + +setgl 171 +testgetlight 50 50 + +setgl 172 +testgetlight 50 50 + +setgl 173 +testgetlight 50 50 + +setgl 174 +testgetlight 50 50 + +setgl 175 +testgetlight 50 50 + +setgl 176 +testgetlight 50 50 + +setgl 177 +testgetlight 50 50 + +setgl 178 +testgetlight 50 50 + +setgl 179 +testgetlight 50 50 + +setgl 180 +testgetlight 50 50 + +setgl 181 +testgetlight 50 50 + +setgl 182 +testgetlight 50 50 + +setgl 183 +testgetlight 50 50 + +setgl 184 +testgetlight 50 50 + +setgl 185 +testgetlight 50 50 + +setgl 186 +testgetlight 50 50 + +setgl 187 +testgetlight 50 50 + +setgl 188 +testgetlight 50 50 + +setgl 189 +testgetlight 50 50 + +setgl 190 +testgetlight 50 50 + +setgl 191 +testgetlight 50 50 + +setgl 192 +testgetlight 50 50 + +setgl 193 +testgetlight 50 50 + +setgl 194 +testgetlight 50 50 + +setgl 195 +testgetlight 50 50 + +setgl 196 +testgetlight 50 50 + +setgl 197 +testgetlight 50 50 + +setgl 198 +testgetlight 50 50 + +setgl 199 +testgetlight 50 50 + +setgl 200 +testgetlight 50 50 + +setgl 201 +testgetlight 50 50 + +setgl 202 +testgetlight 50 50 + +setgl 203 +testgetlight 50 50 + +setgl 204 +testgetlight 50 50 + +setgl 205 +testgetlight 50 50 + +setgl 206 +testgetlight 50 50 + +setgl 207 +testgetlight 50 50 + +setgl 208 +testgetlight 50 50 + +setgl 209 +testgetlight 50 50 + +setgl 210 +testgetlight 50 50 + +setgl 211 +testgetlight 50 50 + +setgl 212 +testgetlight 50 50 + +setgl 213 +testgetlight 50 50 + +setgl 214 +testgetlight 50 50 + +setgl 215 +testgetlight 50 50 + +setgl 216 +testgetlight 50 50 + +setgl 217 +testgetlight 50 50 + +setgl 218 +testgetlight 50 50 + +setgl 219 +testgetlight 50 50 + +setgl 220 +testgetlight 50 50 + +setgl 221 +testgetlight 50 50 + +setgl 222 +testgetlight 50 50 + +setgl 223 +testgetlight 50 50 + +setgl 224 +testgetlight 50 50 + +setgl 225 +testgetlight 50 50 + +setgl 226 +testgetlight 50 50 + +setgl 227 +testgetlight 50 50 + +setgl 228 +testgetlight 50 50 + +setgl 229 +testgetlight 50 50 + +setgl 230 +testgetlight 50 50 + +setgl 231 +testgetlight 50 50 + +setgl 232 +testgetlight 50 50 + +setgl 233 +testgetlight 50 50 + +setgl 234 +testgetlight 50 50 + +setgl 235 +testgetlight 50 50 + +setgl 236 +testgetlight 50 50 + +setgl 237 +testgetlight 50 50 + +setgl 238 +testgetlight 50 50 + +setgl 239 +testgetlight 50 50 + +setgl 240 +testgetlight 50 50 + +setgl 241 +testgetlight 50 50 + +setgl 242 +testgetlight 50 50 + +setgl 243 +testgetlight 50 50 + +setgl 244 +testgetlight 50 50 + +setgl 245 +testgetlight 50 50 + +setgl 246 +testgetlight 50 50 + +setgl 247 +testgetlight 50 50 + +setgl 248 +testgetlight 50 50 + +setgl 249 +testgetlight 50 50 + +setgl 250 +testgetlight 50 50 + +setgl 251 +testgetlight 50 50 + +setgl 252 +testgetlight 50 50 + +setgl 253 +testgetlight 50 50 + +setgl 254 +testgetlight 50 50 + +setgl 255 +testgetlight 50 50 + +setgl 256 +testgetlight 50 50 + +setgl 257 +testgetlight 50 50 + +setgl 258 +testgetlight 50 50 + +setgl 259 +testgetlight 50 50 + +setgl 260 +testgetlight 50 50 + +setgl 261 +testgetlight 50 50 + +setgl 262 +testgetlight 50 50 + +setgl 263 +testgetlight 50 50 + +setgl 264 +testgetlight 50 50 + +setgl 265 +testgetlight 50 50 + +setgl 266 +testgetlight 50 50 + +setgl 267 +testgetlight 50 50 + +setgl 268 +testgetlight 50 50 + +setgl 269 +testgetlight 50 50 + +setgl 270 +testgetlight 50 50 + +setgl 271 +testgetlight 50 50 + +setgl 272 +testgetlight 50 50 + +setgl 273 +testgetlight 50 50 + +setgl 274 +testgetlight 50 50 + +setgl 275 +testgetlight 50 50 + +setgl 276 +testgetlight 50 50 + +setgl 277 +testgetlight 50 50 + +setgl 278 +testgetlight 50 50 + +setgl 279 +testgetlight 50 50 + +setgl 280 +testgetlight 50 50 + +setgl 281 +testgetlight 50 50 + +setgl 282 +testgetlight 50 50 + +setgl 283 +testgetlight 50 50 + +setgl 284 +testgetlight 50 50 + +setgl 285 +testgetlight 50 50 + +setgl 286 +testgetlight 50 50 + +setgl 287 +testgetlight 50 50 + +setgl 288 +testgetlight 50 50 + +setgl 289 +testgetlight 50 50 + +setgl 290 +testgetlight 50 50 + +setgl 291 +testgetlight 50 50 + +setgl 292 +testgetlight 50 50 + +setgl 293 +testgetlight 50 50 + +setgl 294 +testgetlight 50 50 + +setgl 295 +testgetlight 50 50 + +setgl 296 +testgetlight 50 50 + +setgl 297 +testgetlight 50 50 + +setgl 298 +testgetlight 50 50 + +setgl 299 +testgetlight 50 50 + +setgl 300 +testgetlight 50 50 + +setgl 301 +testgetlight 50 50 + +setgl 302 +testgetlight 50 50 + +setgl 303 +testgetlight 50 50 + +setgl 304 +testgetlight 50 50 + +setgl 305 +testgetlight 50 50 + +setgl 306 +testgetlight 50 50 + +setgl 307 +testgetlight 50 50 + +setgl 308 +testgetlight 50 50 + +setgl 309 +testgetlight 50 50 + +setgl 310 +testgetlight 50 50 + +setgl 311 +testgetlight 50 50 + +setgl 312 +testgetlight 50 50 + +setgl 313 +testgetlight 50 50 + +setgl 314 +testgetlight 50 50 + +setgl 315 +testgetlight 50 50 + +setgl 316 +testgetlight 50 50 + +setgl 317 +testgetlight 50 50 + +setgl 318 +testgetlight 50 50 + +setgl 319 +testgetlight 50 50 + +setgl 320 +testgetlight 50 50 + +setgl 321 +testgetlight 50 50 + +setgl 322 +testgetlight 50 50 + +setgl 323 +testgetlight 50 50 + +setgl 324 +testgetlight 50 50 + +setgl 325 +testgetlight 50 50 + +setgl 326 +testgetlight 50 50 + +setgl 327 +testgetlight 50 50 + +setgl 328 +testgetlight 50 50 + +setgl 329 +testgetlight 50 50 + +setgl 330 +testgetlight 50 50 + +setgl 331 +testgetlight 50 50 + +setgl 332 +testgetlight 50 50 + +setgl 333 +testgetlight 50 50 + +setgl 334 +testgetlight 50 50 + +setgl 335 +testgetlight 50 50 + +setgl 336 +testgetlight 50 50 + +setgl 337 +testgetlight 50 50 + +setgl 338 +testgetlight 50 50 + +setgl 339 +testgetlight 50 50 + +setgl 340 +testgetlight 50 50 + +setgl 341 +testgetlight 50 50 + +setgl 342 +testgetlight 50 50 + +setgl 343 +testgetlight 50 50 + +setgl 344 +testgetlight 50 50 + +setgl 345 +testgetlight 50 50 + +setgl 346 +testgetlight 50 50 + +setgl 347 +testgetlight 50 50 + +setgl 348 +testgetlight 50 50 + +setgl 349 +testgetlight 50 50 + +setgl 350 +testgetlight 50 50 + +setgl 351 +testgetlight 50 50 + +setgl 352 +testgetlight 50 50 + +setgl 353 +testgetlight 50 50 + +setgl 354 +testgetlight 50 50 + +setgl 355 +testgetlight 50 50 + +setgl 356 +testgetlight 50 50 + +setgl 357 +testgetlight 50 50 + +setgl 358 +testgetlight 50 50 + +setgl 359 +testgetlight 50 50 + +setgl 360 +testgetlight 50 50 + +setgl 361 +testgetlight 50 50 + +setgl 362 +testgetlight 50 50 + +setgl 363 +testgetlight 50 50 + +setgl 364 +testgetlight 50 50 + +setgl 365 +testgetlight 50 50 + +setgl 366 +testgetlight 50 50 + +setgl 367 +testgetlight 50 50 + +setgl 368 +testgetlight 50 50 + +setgl 369 +testgetlight 50 50 + +setgl 370 +testgetlight 50 50 + +setgl 371 +testgetlight 50 50 + +setgl 372 +testgetlight 50 50 + +setgl 373 +testgetlight 50 50 + +setgl 374 +testgetlight 50 50 + +setgl 375 +testgetlight 50 50 + +setgl 376 +testgetlight 50 50 + +setgl 377 +testgetlight 50 50 + +setgl 378 +testgetlight 50 50 + +setgl 379 +testgetlight 50 50 + +setgl 380 +testgetlight 50 50 + +setgl 381 +testgetlight 50 50 + +setgl 382 +testgetlight 50 50 + +setgl 383 +testgetlight 50 50 + +setgl 384 +testgetlight 50 50 + +setgl 385 +testgetlight 50 50 + +setgl 386 +testgetlight 50 50 + +setgl 387 +testgetlight 50 50 + +setgl 388 +testgetlight 50 50 + +setgl 389 +testgetlight 50 50 + +setgl 390 +testgetlight 50 50 + +setgl 391 +testgetlight 50 50 + +setgl 392 +testgetlight 50 50 + +setgl 393 +testgetlight 50 50 + +setgl 394 +testgetlight 50 50 + +setgl 395 +testgetlight 50 50 + +setgl 396 +testgetlight 50 50 + +setgl 397 +testgetlight 50 50 + +setgl 398 +testgetlight 50 50 + +setgl 399 +testgetlight 50 50 + +setgl 400 +testgetlight 50 50 + +setgl 401 +testgetlight 50 50 + +setgl 402 +testgetlight 50 50 + +setgl 403 +testgetlight 50 50 + +setgl 404 +testgetlight 50 50 + +setgl 405 +testgetlight 50 50 + +setgl 406 +testgetlight 50 50 + +setgl 407 +testgetlight 50 50 + +setgl 408 +testgetlight 50 50 + +setgl 409 +testgetlight 50 50 + +setgl 410 +testgetlight 50 50 + +setgl 411 +testgetlight 50 50 + +setgl 412 +testgetlight 50 50 + +setgl 413 +testgetlight 50 50 + +setgl 414 +testgetlight 50 50 + +setgl 415 +testgetlight 50 50 + +setgl 416 +testgetlight 50 50 + +setgl 417 +testgetlight 50 50 + +setgl 418 +testgetlight 50 50 + +setgl 419 +testgetlight 50 50 + +setgl 420 +testgetlight 50 50 + +setgl 421 +testgetlight 50 50 + +setgl 422 +testgetlight 50 50 + +setgl 423 +testgetlight 50 50 + +setgl 424 +testgetlight 50 50 + +setgl 425 +testgetlight 50 50 + +setgl 426 +testgetlight 50 50 + +setgl 427 +testgetlight 50 50 + +setgl 428 +testgetlight 50 50 + +setgl 429 +testgetlight 50 50 + +setgl 430 +testgetlight 50 50 + +setgl 431 +testgetlight 50 50 + +setgl 432 +testgetlight 50 50 + +setgl 433 +testgetlight 50 50 + +setgl 434 +testgetlight 50 50 + +setgl 435 +testgetlight 50 50 + +setgl 436 +testgetlight 50 50 + +setgl 437 +testgetlight 50 50 + +setgl 438 +testgetlight 50 50 + +setgl 439 +testgetlight 50 50 + +setgl 440 +testgetlight 50 50 + +setgl 441 +testgetlight 50 50 + +setgl 442 +testgetlight 50 50 + +setgl 443 +testgetlight 50 50 + +setgl 444 +testgetlight 50 50 + +setgl 445 +testgetlight 50 50 + +setgl 446 +testgetlight 50 50 + +setgl 447 +testgetlight 50 50 + +setgl 448 +testgetlight 50 50 + +setgl 449 +testgetlight 50 50 + +setgl 450 +testgetlight 50 50 + +setgl 451 +testgetlight 50 50 + +setgl 452 +testgetlight 50 50 + +setgl 453 +testgetlight 50 50 + +setgl 454 +testgetlight 50 50 + +setgl 455 +testgetlight 50 50 + +setgl 456 +testgetlight 50 50 + +setgl 457 +testgetlight 50 50 + +setgl 458 +testgetlight 50 50 + +setgl 459 +testgetlight 50 50 + +setgl 460 +testgetlight 50 50 + +setgl 461 +testgetlight 50 50 + +setgl 462 +testgetlight 50 50 + +setgl 463 +testgetlight 50 50 + +setgl 464 +testgetlight 50 50 + +setgl 465 +testgetlight 50 50 + +setgl 466 +testgetlight 50 50 + +setgl 467 +testgetlight 50 50 + +setgl 468 +testgetlight 50 50 + +setgl 469 +testgetlight 50 50 + +setgl 470 +testgetlight 50 50 + +setgl 471 +testgetlight 50 50 + +setgl 472 +testgetlight 50 50 + +setgl 473 +testgetlight 50 50 + +setgl 474 +testgetlight 50 50 + +setgl 475 +testgetlight 50 50 + +setgl 476 +testgetlight 50 50 + +setgl 477 +testgetlight 50 50 + +setgl 478 +testgetlight 50 50 + +setgl 479 +testgetlight 50 50 + +setgl 480 +testgetlight 50 50 + +setgl 481 +testgetlight 50 50 + +setgl 482 +testgetlight 50 50 + +setgl 483 +testgetlight 50 50 + +setgl 484 +testgetlight 50 50 + +setgl 485 +testgetlight 50 50 + +setgl 486 +testgetlight 50 50 + +setgl 487 +testgetlight 50 50 + +setgl 488 +testgetlight 50 50 + +setgl 489 +testgetlight 50 50 + +setgl 490 +testgetlight 50 50 + +setgl 491 +testgetlight 50 50 + +setgl 492 +testgetlight 50 50 + +setgl 493 +testgetlight 50 50 + +setgl 494 +testgetlight 50 50 + +setgl 495 +testgetlight 50 50 + +setgl 496 +testgetlight 50 50 + +setgl 497 +testgetlight 50 50 + +setgl 498 +testgetlight 50 50 + +setgl 499 +testgetlight 50 50 + +setgl 500 +testgetlight 50 50 + +setgl 501 +testgetlight 50 50 + +setgl 502 +testgetlight 50 50 + +setgl 503 +testgetlight 50 50 + +setgl 504 +testgetlight 50 50 + +setgl 505 +testgetlight 50 50 + +setgl 506 +testgetlight 50 50 + +setgl 507 +testgetlight 50 50 + +setgl 508 +testgetlight 50 50 + +setgl 509 +testgetlight 50 50 + +setgl 510 +testgetlight 50 50 + +setgl 511 +testgetlight 50 50 + +setgl 512 +testgetlight 50 50 + +setgl 513 +testgetlight 50 50 + +setgl 514 +testgetlight 50 50 + +setgl 515 +testgetlight 50 50 + +setgl 516 +testgetlight 50 50 + +setgl 517 +testgetlight 50 50 + +setgl 518 +testgetlight 50 50 + +setgl 519 +testgetlight 50 50 + +setgl 520 +testgetlight 50 50 + +setgl 521 +testgetlight 50 50 + +setgl 522 +testgetlight 50 50 + +setgl 523 +testgetlight 50 50 + +setgl 524 +testgetlight 50 50 + +setgl 525 +testgetlight 50 50 + +setgl 526 +testgetlight 50 50 + +setgl 527 +testgetlight 50 50 + +setgl 528 +testgetlight 50 50 + +setgl 529 +testgetlight 50 50 + +setgl 530 +testgetlight 50 50 + +setgl 531 +testgetlight 50 50 + +setgl 532 +testgetlight 50 50 + +setgl 533 +testgetlight 50 50 + +setgl 534 +testgetlight 50 50 + +setgl 535 +testgetlight 50 50 + +setgl 536 +testgetlight 50 50 + +setgl 537 +testgetlight 50 50 + +setgl 538 +testgetlight 50 50 + +setgl 539 +testgetlight 50 50 + +setgl 540 +testgetlight 50 50 + +setgl 541 +testgetlight 50 50 + +setgl 542 +testgetlight 50 50 + +setgl 543 +testgetlight 50 50 + +setgl 544 +testgetlight 50 50 + +setgl 545 +testgetlight 50 50 + +setgl 546 +testgetlight 50 50 + +setgl 547 +testgetlight 50 50 + +setgl 548 +testgetlight 50 50 + +setgl 549 +testgetlight 50 50 + +setgl 550 +testgetlight 50 50 + +setgl 551 +testgetlight 50 50 + +setgl 552 +testgetlight 50 50 + +setgl 553 +testgetlight 50 50 + +setgl 554 +testgetlight 50 50 + +setgl 555 +testgetlight 50 50 + +setgl 556 +testgetlight 50 50 + +setgl 557 +testgetlight 50 50 + +setgl 558 +testgetlight 50 50 + +setgl 559 +testgetlight 50 50 + +setgl 560 +testgetlight 50 50 + +setgl 561 +testgetlight 50 50 + +setgl 562 +testgetlight 50 50 + +setgl 563 +testgetlight 50 50 + +setgl 564 +testgetlight 50 50 + +setgl 565 +testgetlight 50 50 + +setgl 566 +testgetlight 50 50 + +setgl 567 +testgetlight 50 50 + +setgl 568 +testgetlight 50 50 + +setgl 569 +testgetlight 50 50 + +setgl 570 +testgetlight 50 50 + +setgl 571 +testgetlight 50 50 + +setgl 572 +testgetlight 50 50 + +setgl 573 +testgetlight 50 50 + +setgl 574 +testgetlight 50 50 + +setgl 575 +testgetlight 50 50 + +setgl 576 +testgetlight 50 50 + +setgl 577 +testgetlight 50 50 + +setgl 578 +testgetlight 50 50 + +setgl 579 +testgetlight 50 50 + +setgl 580 +testgetlight 50 50 + +setgl 581 +testgetlight 50 50 + +setgl 582 +testgetlight 50 50 + +setgl 583 +testgetlight 50 50 + +setgl 584 +testgetlight 50 50 + +setgl 585 +testgetlight 50 50 + +setgl 586 +testgetlight 50 50 + +setgl 587 +testgetlight 50 50 + +setgl 588 +testgetlight 50 50 + +setgl 589 +testgetlight 50 50 + +setgl 590 +testgetlight 50 50 + +setgl 591 +testgetlight 50 50 + +setgl 592 +testgetlight 50 50 + +setgl 593 +testgetlight 50 50 + +setgl 594 +testgetlight 50 50 + +setgl 595 +testgetlight 50 50 + +setgl 596 +testgetlight 50 50 + +setgl 597 +testgetlight 50 50 + +setgl 598 +testgetlight 50 50 + +setgl 599 +testgetlight 50 50 + +setgl 600 +testgetlight 50 50 + +setgl 601 +testgetlight 50 50 + +setgl 602 +testgetlight 50 50 + +setgl 603 +testgetlight 50 50 + +setgl 604 +testgetlight 50 50 + +setgl 605 +testgetlight 50 50 + +setgl 606 +testgetlight 50 50 + +setgl 607 +testgetlight 50 50 + +setgl 608 +testgetlight 50 50 + +setgl 609 +testgetlight 50 50 + +setgl 610 +testgetlight 50 50 + +setgl 611 +testgetlight 50 50 + +setgl 612 +testgetlight 50 50 + +setgl 613 +testgetlight 50 50 + +setgl 614 +testgetlight 50 50 + +setgl 615 +testgetlight 50 50 + +setgl 616 +testgetlight 50 50 + +setgl 617 +testgetlight 50 50 + +setgl 618 +testgetlight 50 50 + +setgl 619 +testgetlight 50 50 + +setgl 620 +testgetlight 50 50 + +setgl 621 +testgetlight 50 50 + +setgl 622 +testgetlight 50 50 + +setgl 623 +testgetlight 50 50 + +setgl 624 +testgetlight 50 50 + +setgl 625 +testgetlight 50 50 + +setgl 626 +testgetlight 50 50 + +setgl 627 +testgetlight 50 50 + +setgl 628 +testgetlight 50 50 + +setgl 629 +testgetlight 50 50 + +setgl 630 +testgetlight 50 50 + +setgl 631 +testgetlight 50 50 + +setgl 632 +testgetlight 50 50 + +setgl 633 +testgetlight 50 50 + +setgl 634 +testgetlight 50 50 + +setgl 635 +testgetlight 50 50 + +setgl 636 +testgetlight 50 50 + +setgl 637 +testgetlight 50 50 + +setgl 638 +testgetlight 50 50 + +setgl 639 +testgetlight 50 50 + +setgl 640 +testgetlight 50 50 + +setgl 641 +testgetlight 50 50 + +setgl 642 +testgetlight 50 50 + +setgl 643 +testgetlight 50 50 + +setgl 644 +testgetlight 50 50 + +setgl 645 +testgetlight 50 50 + +setgl 646 +testgetlight 50 50 + +setgl 647 +testgetlight 50 50 + +setgl 648 +testgetlight 50 50 + +setgl 649 +testgetlight 50 50 + +setgl 650 +testgetlight 50 50 + +setgl 651 +testgetlight 50 50 + +setgl 652 +testgetlight 50 50 + +setgl 653 +testgetlight 50 50 + +setgl 654 +testgetlight 50 50 + +setgl 655 +testgetlight 50 50 + +setgl 656 +testgetlight 50 50 + +setgl 657 +testgetlight 50 50 + +setgl 658 +testgetlight 50 50 + +setgl 659 +testgetlight 50 50 + +setgl 660 +testgetlight 50 50 + +setgl 661 +testgetlight 50 50 + +setgl 662 +testgetlight 50 50 + +setgl 663 +testgetlight 50 50 + +setgl 664 +testgetlight 50 50 + +setgl 665 +testgetlight 50 50 + +setgl 666 +testgetlight 50 50 + +setgl 667 +testgetlight 50 50 + +setgl 668 +testgetlight 50 50 + +setgl 669 +testgetlight 50 50 + +setgl 670 +testgetlight 50 50 + +setgl 671 +testgetlight 50 50 + +setgl 672 +testgetlight 50 50 + +setgl 673 +testgetlight 50 50 + +setgl 674 +testgetlight 50 50 + +setgl 675 +testgetlight 50 50 + +setgl 676 +testgetlight 50 50 + +setgl 677 +testgetlight 50 50 + +setgl 678 +testgetlight 50 50 + +setgl 679 +testgetlight 50 50 + +setgl 680 +testgetlight 50 50 + +setgl 681 +testgetlight 50 50 + +setgl 682 +testgetlight 50 50 + +setgl 683 +testgetlight 50 50 + +setgl 684 +testgetlight 50 50 + +setgl 685 +testgetlight 50 50 + +setgl 686 +testgetlight 50 50 + +setgl 687 +testgetlight 50 50 + +setgl 688 +testgetlight 50 50 + +setgl 689 +testgetlight 50 50 + +setgl 690 +testgetlight 50 50 + +setgl 691 +testgetlight 50 50 + +setgl 692 +testgetlight 50 50 + +setgl 693 +testgetlight 50 50 + +setgl 694 +testgetlight 50 50 + +setgl 695 +testgetlight 50 50 + +setgl 696 +testgetlight 50 50 + +setgl 697 +testgetlight 50 50 + +setgl 698 +testgetlight 50 50 + +setgl 699 +testgetlight 50 50 + +setgl 700 +testgetlight 50 50 + +setgl 701 +testgetlight 50 50 + +setgl 702 +testgetlight 50 50 + +setgl 703 +testgetlight 50 50 + +setgl 704 +testgetlight 50 50 + +setgl 705 +testgetlight 50 50 + +setgl 706 +testgetlight 50 50 + +setgl 707 +testgetlight 50 50 + +setgl 708 +testgetlight 50 50 + +setgl 709 +testgetlight 50 50 + +setgl 710 +testgetlight 50 50 + +setgl 711 +testgetlight 50 50 + +setgl 712 +testgetlight 50 50 + +setgl 713 +testgetlight 50 50 + +setgl 714 +testgetlight 50 50 + +setgl 715 +testgetlight 50 50 + +setgl 716 +testgetlight 50 50 + +setgl 717 +testgetlight 50 50 + +setgl 718 +testgetlight 50 50 + +setgl 719 +testgetlight 50 50 + +setgl 720 +testgetlight 50 50 + +setgl 721 +testgetlight 50 50 + +setgl 722 +testgetlight 50 50 + +setgl 723 +testgetlight 50 50 + +setgl 724 +testgetlight 50 50 + +setgl 725 +testgetlight 50 50 + +setgl 726 +testgetlight 50 50 + +setgl 727 +testgetlight 50 50 + +setgl 728 +testgetlight 50 50 + +setgl 729 +testgetlight 50 50 + +setgl 730 +testgetlight 50 50 + +setgl 731 +testgetlight 50 50 + +setgl 732 +testgetlight 50 50 + +setgl 733 +testgetlight 50 50 + +setgl 734 +testgetlight 50 50 + +setgl 735 +testgetlight 50 50 + +setgl 736 +testgetlight 50 50 + +setgl 737 +testgetlight 50 50 + +setgl 738 +testgetlight 50 50 + +setgl 739 +testgetlight 50 50 + +setgl 740 +testgetlight 50 50 + +setgl 741 +testgetlight 50 50 + +setgl 742 +testgetlight 50 50 + +setgl 743 +testgetlight 50 50 + +setgl 744 +testgetlight 50 50 + +setgl 745 +testgetlight 50 50 + +setgl 746 +testgetlight 50 50 + +setgl 747 +testgetlight 50 50 + +setgl 748 +testgetlight 50 50 + +setgl 749 +testgetlight 50 50 + +setgl 750 +testgetlight 50 50 + +setgl 751 +testgetlight 50 50 + +setgl 752 +testgetlight 50 50 + +setgl 753 +testgetlight 50 50 + +setgl 754 +testgetlight 50 50 + +setgl 755 +testgetlight 50 50 + +setgl 756 +testgetlight 50 50 + +setgl 757 +testgetlight 50 50 + +setgl 758 +testgetlight 50 50 + +setgl 759 +testgetlight 50 50 + +setgl 760 +testgetlight 50 50 + +setgl 761 +testgetlight 50 50 + +setgl 762 +testgetlight 50 50 + +setgl 763 +testgetlight 50 50 + +setgl 764 +testgetlight 50 50 + +setgl 765 +testgetlight 50 50 + +setgl 766 +testgetlight 50 50 + +setgl 767 +testgetlight 50 50 + +setgl 768 +testgetlight 50 50 + +setgl 769 +testgetlight 50 50 + +setgl 770 +testgetlight 50 50 + +setgl 771 +testgetlight 50 50 + +setgl 772 +testgetlight 50 50 + +setgl 773 +testgetlight 50 50 + +setgl 774 +testgetlight 50 50 + +setgl 775 +testgetlight 50 50 + +setgl 776 +testgetlight 50 50 + +setgl 777 +testgetlight 50 50 + +setgl 778 +testgetlight 50 50 + +setgl 779 +testgetlight 50 50 + +setgl 780 +testgetlight 50 50 + +setgl 781 +testgetlight 50 50 + +setgl 782 +testgetlight 50 50 + +setgl 783 +testgetlight 50 50 + +setgl 784 +testgetlight 50 50 + +setgl 785 +testgetlight 50 50 + +setgl 786 +testgetlight 50 50 + +setgl 787 +testgetlight 50 50 + +setgl 788 +testgetlight 50 50 + +setgl 789 +testgetlight 50 50 + +setgl 790 +testgetlight 50 50 + +setgl 791 +testgetlight 50 50 + +setgl 792 +testgetlight 50 50 + +setgl 793 +testgetlight 50 50 + +setgl 794 +testgetlight 50 50 + +setgl 795 +testgetlight 50 50 + +setgl 796 +testgetlight 50 50 + +setgl 797 +testgetlight 50 50 + +setgl 798 +testgetlight 50 50 + +setgl 799 +testgetlight 50 50 + +setgl 800 +testgetlight 50 50 + +setgl 801 +testgetlight 50 50 + +setgl 802 +testgetlight 50 50 + +setgl 803 +testgetlight 50 50 + +setgl 804 +testgetlight 50 50 + +setgl 805 +testgetlight 50 50 + +setgl 806 +testgetlight 50 50 + +setgl 807 +testgetlight 50 50 + +setgl 808 +testgetlight 50 50 + +setgl 809 +testgetlight 50 50 + +setgl 810 +testgetlight 50 50 + +setgl 811 +testgetlight 50 50 + +setgl 812 +testgetlight 50 50 + +setgl 813 +testgetlight 50 50 + +setgl 814 +testgetlight 50 50 + +setgl 815 +testgetlight 50 50 + +setgl 816 +testgetlight 50 50 + +setgl 817 +testgetlight 50 50 + +setgl 818 +testgetlight 50 50 + +setgl 819 +testgetlight 50 50 + +setgl 820 +testgetlight 50 50 + +setgl 821 +testgetlight 50 50 + +setgl 822 +testgetlight 50 50 + +setgl 823 +testgetlight 50 50 + +setgl 824 +testgetlight 50 50 + +setgl 825 +testgetlight 50 50 + +setgl 826 +testgetlight 50 50 + +setgl 827 +testgetlight 50 50 + +setgl 828 +testgetlight 50 50 + +setgl 829 +testgetlight 50 50 + +setgl 830 +testgetlight 50 50 + +setgl 831 +testgetlight 50 50 + +setgl 832 +testgetlight 50 50 + +setgl 833 +testgetlight 50 50 + +setgl 834 +testgetlight 50 50 + +setgl 835 +testgetlight 50 50 + +setgl 836 +testgetlight 50 50 + +setgl 837 +testgetlight 50 50 + +setgl 838 +testgetlight 50 50 + +setgl 839 +testgetlight 50 50 + +setgl 840 +testgetlight 50 50 + +setgl 841 +testgetlight 50 50 + +setgl 842 +testgetlight 50 50 + +setgl 843 +testgetlight 50 50 + +setgl 844 +testgetlight 50 50 + +setgl 845 +testgetlight 50 50 + +setgl 846 +testgetlight 50 50 + +setgl 847 +testgetlight 50 50 + +setgl 848 +testgetlight 50 50 + +setgl 849 +testgetlight 50 50 + +setgl 850 +testgetlight 50 50 + +setgl 851 +testgetlight 50 50 + +setgl 852 +testgetlight 50 50 + +setgl 853 +testgetlight 50 50 + +setgl 854 +testgetlight 50 50 + +setgl 855 +testgetlight 50 50 + +setgl 856 +testgetlight 50 50 + +setgl 857 +testgetlight 50 50 + +setgl 858 +testgetlight 50 50 + +setgl 859 +testgetlight 50 50 + +setgl 860 +testgetlight 50 50 + +setgl 861 +testgetlight 50 50 + +setgl 862 +testgetlight 50 50 + +setgl 863 +testgetlight 50 50 + +setgl 864 +testgetlight 50 50 + +setgl 865 +testgetlight 50 50 + +setgl 866 +testgetlight 50 50 + +setgl 867 +testgetlight 50 50 + +setgl 868 +testgetlight 50 50 + +setgl 869 +testgetlight 50 50 + +setgl 870 +testgetlight 50 50 + +setgl 871 +testgetlight 50 50 + +setgl 872 +testgetlight 50 50 + +setgl 873 +testgetlight 50 50 + +setgl 874 +testgetlight 50 50 + +setgl 875 +testgetlight 50 50 + +setgl 876 +testgetlight 50 50 + +setgl 877 +testgetlight 50 50 + +setgl 878 +testgetlight 50 50 + +setgl 879 +testgetlight 50 50 + +setgl 880 +testgetlight 50 50 + +setgl 881 +testgetlight 50 50 + +setgl 882 +testgetlight 50 50 + +setgl 883 +testgetlight 50 50 + +setgl 884 +testgetlight 50 50 + +setgl 885 +testgetlight 50 50 + +setgl 886 +testgetlight 50 50 + +setgl 887 +testgetlight 50 50 + +setgl 888 +testgetlight 50 50 + +setgl 889 +testgetlight 50 50 + +setgl 890 +testgetlight 50 50 + +setgl 891 +testgetlight 50 50 + +setgl 892 +testgetlight 50 50 + +setgl 893 +testgetlight 50 50 + +setgl 894 +testgetlight 50 50 + +setgl 895 +testgetlight 50 50 + +setgl 896 +testgetlight 50 50 + +setgl 897 +testgetlight 50 50 + +setgl 898 +testgetlight 50 50 + +setgl 899 +testgetlight 50 50 + +setgl 900 +testgetlight 50 50 + +setgl 901 +testgetlight 50 50 + +setgl 902 +testgetlight 50 50 + +setgl 903 +testgetlight 50 50 + +setgl 904 +testgetlight 50 50 + +setgl 905 +testgetlight 50 50 + +setgl 906 +testgetlight 50 50 + +setgl 907 +testgetlight 50 50 + +setgl 908 +testgetlight 50 50 + +setgl 909 +testgetlight 50 50 + +setgl 910 +testgetlight 50 50 + +setgl 911 +testgetlight 50 50 + +setgl 912 +testgetlight 50 50 + +setgl 913 +testgetlight 50 50 + +setgl 914 +testgetlight 50 50 + +setgl 915 +testgetlight 50 50 + +setgl 916 +testgetlight 50 50 + +setgl 917 +testgetlight 50 50 + +setgl 918 +testgetlight 50 50 + +setgl 919 +testgetlight 50 50 + +setgl 920 +testgetlight 50 50 + +setgl 921 +testgetlight 50 50 + +setgl 922 +testgetlight 50 50 + +setgl 923 +testgetlight 50 50 + +setgl 924 +testgetlight 50 50 + +setgl 925 +testgetlight 50 50 + +setgl 926 +testgetlight 50 50 + +setgl 927 +testgetlight 50 50 + +setgl 928 +testgetlight 50 50 + +setgl 929 +testgetlight 50 50 + +setgl 930 +testgetlight 50 50 + +setgl 931 +testgetlight 50 50 + +setgl 932 +testgetlight 50 50 + +setgl 933 +testgetlight 50 50 + +setgl 934 +testgetlight 50 50 + +setgl 935 +testgetlight 50 50 + +setgl 936 +testgetlight 50 50 + +setgl 937 +testgetlight 50 50 + +setgl 938 +testgetlight 50 50 + +setgl 939 +testgetlight 50 50 + +setgl 940 +testgetlight 50 50 + +setgl 941 +testgetlight 50 50 + +setgl 942 +testgetlight 50 50 + +setgl 943 +testgetlight 50 50 + +setgl 944 +testgetlight 50 50 + +setgl 945 +testgetlight 50 50 + +setgl 946 +testgetlight 50 50 + +setgl 947 +testgetlight 50 50 + +setgl 948 +testgetlight 50 50 + +setgl 949 +testgetlight 50 50 + +setgl 950 +testgetlight 50 50 + +setgl 951 +testgetlight 50 50 + +setgl 952 +testgetlight 50 50 + +setgl 953 +testgetlight 50 50 + +setgl 954 +testgetlight 50 50 + +setgl 955 +testgetlight 50 50 + +setgl 956 +testgetlight 50 50 + +setgl 957 +testgetlight 50 50 + +setgl 958 +testgetlight 50 50 + +setgl 959 +testgetlight 50 50 + +setgl 960 +testgetlight 50 50 + +setgl 961 +testgetlight 50 50 + +setgl 962 +testgetlight 50 50 + +setgl 963 +testgetlight 50 50 + +setgl 964 +testgetlight 50 50 + +setgl 965 +testgetlight 50 50 + +setgl 966 +testgetlight 50 50 + +setgl 967 +testgetlight 50 50 + +setgl 968 +testgetlight 50 50 + +setgl 969 +testgetlight 50 50 + +setgl 970 +testgetlight 50 50 + +setgl 971 +testgetlight 50 50 + +setgl 972 +testgetlight 50 50 + +setgl 973 +testgetlight 50 50 + +setgl 974 +testgetlight 50 50 + +setgl 975 +testgetlight 50 50 + +setgl 976 +testgetlight 50 50 + +setgl 977 +testgetlight 50 50 + +setgl 978 +testgetlight 50 50 + +setgl 979 +testgetlight 50 50 + +setgl 980 +testgetlight 50 50 + +setgl 981 +testgetlight 50 50 + +setgl 982 +testgetlight 50 50 + +setgl 983 +testgetlight 50 50 + +setgl 984 +testgetlight 50 50 + +setgl 985 +testgetlight 50 50 + +setgl 986 +testgetlight 50 50 + +setgl 987 +testgetlight 50 50 + +setgl 988 +testgetlight 50 50 + +setgl 989 +testgetlight 50 50 + +setgl 990 +testgetlight 50 50 + +setgl 991 +testgetlight 50 50 + +setgl 992 +testgetlight 50 50 + +setgl 993 +testgetlight 50 50 + +setgl 994 +testgetlight 50 50 + +setgl 995 +testgetlight 50 50 + +setgl 996 +testgetlight 50 50 + +setgl 997 +testgetlight 50 50 + +setgl 998 +testgetlight 50 50 + +setgl 999 +testgetlight 50 50 + +setgl 1000 +testgetlight 50 50 + +setgl 1001 +testgetlight 50 50 + +setgl 1002 +testgetlight 50 50 + +setgl 1003 +testgetlight 50 50 + +setgl 1004 +testgetlight 50 50 + +setgl 1005 +testgetlight 50 50 + +setgl 1006 +testgetlight 50 50 + +setgl 1007 +testgetlight 50 50 + +setgl 1008 +testgetlight 50 50 + +setgl 1009 +testgetlight 50 50 + +setgl 1010 +testgetlight 50 50 + +setgl 1011 +testgetlight 50 50 + +setgl 1012 +testgetlight 50 50 + +setgl 1013 +testgetlight 50 50 + +setgl 1014 +testgetlight 50 50 + +setgl 1015 +testgetlight 50 50 + +setgl 1016 +testgetlight 50 50 + +setgl 1017 +testgetlight 50 50 + +setgl 1018 +testgetlight 50 50 + +setgl 1019 +testgetlight 50 50 + +setgl 1020 +testgetlight 50 50 + +setgl 1021 +testgetlight 50 50 + +setgl 1022 +testgetlight 50 50 + +setgl 1023 +testgetlight 50 50 diff --git a/src/net/torvald/colourutil/CIELChUtil.kt b/src/net/torvald/colourutil/CIELChabUtil.kt similarity index 90% rename from src/net/torvald/colourutil/CIELChUtil.kt rename to src/net/torvald/colourutil/CIELChabUtil.kt index 34d3c1833..0faa161b6 100644 --- a/src/net/torvald/colourutil/CIELChUtil.kt +++ b/src/net/torvald/colourutil/CIELChabUtil.kt @@ -7,7 +7,8 @@ import net.torvald.colourutil.CIELabUtil.toXYZ import org.newdawn.slick.Color /** - * RGB in this code is always sRGB. + * Cylindrical modification of CIELab colour space + * * reference: http://www.brucelindbloom.com/index.html?Equations.html * * Created by minjaesong on 16-09-01. @@ -15,7 +16,7 @@ import org.newdawn.slick.Color object CIELChUtil { - /** Sweet LCh linear gradient */ + /** Sweet LCh_ab linear gradient */ fun getGradient(scale: Float, fromCol: Color, toCol: Color): Color { val from = fromCol.toLCh() val to = toCol.toLCh() @@ -48,8 +49,8 @@ object CIELChUtil { return CIELab(L, a, b, alpha) } - private fun Color.toLCh() = this.toXYZ().toLab().toLCh() - private fun CIELCh.toRGB() = this.toLab().toXYZ().toRGB() + fun Color.toLCh() = this.toXYZ().toLab().toLCh() + fun CIELCh.toRGB() = this.toLab().toXYZ().toRGB() private fun Float.sqr() = this * this private fun Float.sqrt() = Math.sqrt(this.toDouble()).toFloat() diff --git a/src/net/torvald/colourutil/CIELabUtil.kt b/src/net/torvald/colourutil/CIELabUtil.kt index a10ac96b9..907e2067f 100644 --- a/src/net/torvald/colourutil/CIELabUtil.kt +++ b/src/net/torvald/colourutil/CIELabUtil.kt @@ -4,9 +4,18 @@ import com.jme3.math.FastMath import org.newdawn.slick.Color /** + * A modification of CIEXYZ that is useful for surface colours + * + * If you are trying to mix some colour with other, especially one that + * requires additive mixing (such as illuminant), USE CIELuvUtil, this is + * not for you. + * * RGB in this code is always sRGB. * reference: http://www.brucelindbloom.com/index.html?Equations.html * + * If you're using Mac, you can play around with this colour space with + * ColorSync Utility's calculator. + * * Created by minjaesong on 16-09-01. */ object CIELabUtil { @@ -38,10 +47,12 @@ object CIELabUtil { return CIELab(newL, newA, newB, newAlpha).toRGB() } - private fun Color.toLab() = this.toXYZ().toLab() - private fun CIELab.toRGB() = this.toXYZ().toRGB() + fun Color.toLab() = this.toXYZ().toLab() + fun RGB.toLab() = this.toXYZ().toLab() + fun CIELab.toRGB() = this.toXYZ().toRGB() + fun CIELab.toRawRGB() = this.toXYZ().toRawRGB() - fun Color.toXYZ(): CIEXYZ { + fun RGB.toXYZ(): CIEXYZ { val newR = if (r > 0.04045f) ((r + 0.055f) / 1.055f).powerOf(2.4f) else r / 12.92f @@ -56,13 +67,15 @@ object CIELabUtil { val y = 0.2126729f * newR + 0.7151522f * newG + 0.0721750f * newB val z = 0.0193339f * newR + 0.1191920f * newG + 0.9503041f * newB - return CIEXYZ(x, y, z, a) + return CIEXYZ(x, y, z, alpha) } - fun CIEXYZ.toRGB(): Color { - var r = 3.2404542f * x - 1.5371385f * y - 0.4985314f * z - var g = -0.9692660f * x + 1.8760108f * y + 0.0415560f * z - var b = 0.0556434f * x - 0.2040259f * y + 1.0572252f * z + fun Color.toXYZ(): CIEXYZ = RGB(this).toXYZ() + + fun CIEXYZ.toRawRGB(): RGB { + var r = 3.2404542f * X - 1.5371385f * Y - 0.4985314f * Z + var g = -0.9692660f * X + 1.8760108f * Y + 0.0415560f * Z + var b = 0.0556434f * X - 0.2040259f * Y + 1.0572252f * Z if (r > 0.0031308f) r = 1.055f * r.powerOf(1f / 2.4f) - 0.055f @@ -77,13 +90,18 @@ object CIELabUtil { else b *= 12.92f - return Color(r, g, b, alpha) + return RGB(r, g, b, alpha) + } + + fun CIEXYZ.toRGB(): Color { + val rgb = this.toRawRGB() + return Color(rgb.r, rgb.g, rgb.b, rgb.alpha) } fun CIEXYZ.toLab(): CIELab { - val x = pivotXYZ(x / whitePoint.x) - val y = pivotXYZ(y / whitePoint.y) - val z = pivotXYZ(z / whitePoint.z) + val x = pivotXYZ(X / D65.X) + val y = pivotXYZ(Y / D65.Y) + val z = pivotXYZ(Z / D65.Z) val L = Math.max(0f, 116 * y - 16) val a = 500 * (x - y) @@ -101,23 +119,28 @@ object CIELabUtil { val z3 = z.cube() return CIEXYZ( - whitePoint.x * if (x3 > epsilon) x3 else (x - 16f / 116f) / 7.787f, - whitePoint.y * if (L > kappa * epsilon) (L.plus(16f) / 116f).cube() else L / kappa, - whitePoint.z * if (z3 > epsilon) z3 else (z - 16f / 116f) / 7.787f, + D65.X * if (x3 > epsilon) x3 else (x - 16f / 116f) / 7.787f, + D65.Y * if (L > kappa * epsilon) (L.plus(16f) / 116f).cube() else L / kappa, + D65.Z * if (z3 > epsilon) z3 else (z - 16f / 116f) / 7.787f, alpha ) } private fun pivotXYZ(n: Float) = if (n > epsilon) n.cbrt() else (kappa * n + 16f) / 116f - val epsilon = 0.008856f - val kappa = 903.3f - val whitePoint = CIEXYZ(95.047f, 100f, 108.883f) - private fun Float.cbrt() = FastMath.pow(this, 1f / 3f) private fun Float.cube() = this * this * this private fun Float.powerOf(exp: Float) = FastMath.pow(this, exp) } -data class CIEXYZ(var x: Float = 0f, var y: Float = 0f, var z: Float = 0f, val alpha: Float = 1f) +internal val D65 = CIEXYZ(95.047f, 100f, 108.883f) +val epsilon = 216.0.div(24389.0).toFloat() +val kappa = 24389.0.div(27.0).toFloat() + +data class CIEXYZ(var X: Float = 0f, var Y: Float = 0f, var Z: Float = 0f, val alpha: Float = 1f) data class CIELab(var L: Float = 0f, var a: Float = 0f, var b: Float = 0f, val alpha: Float = 1f) +data class RGB(var r: Float = 0f, var g: Float = 0f, var b: Float = 0f, val alpha: Float = 1f) { + constructor(color: Color) : this() { + r = color.r; g = color.g; b = color.b + } +} diff --git a/src/net/torvald/colourutil/CIELuvUtil.kt b/src/net/torvald/colourutil/CIELuvUtil.kt new file mode 100644 index 000000000..4aa996c1e --- /dev/null +++ b/src/net/torvald/colourutil/CIELuvUtil.kt @@ -0,0 +1,102 @@ +package net.torvald.colourutil + +import com.jme3.math.FastMath +import org.newdawn.slick.Color +import net.torvald.colourutil.CIELabUtil.toXYZ +import net.torvald.colourutil.CIELabUtil.toRawRGB +import net.torvald.colourutil.CIELabUtil.toRGB + +/** + * A modification of CIEXYZ that is useful for additive mixtures of lights. + * + * reference: http://www.brucelindbloom.com/index.html?Equations.html + * + * If you're using Mac, you can play around with this colour space with + * ColorSync Utility's calculator. + * + * Created by minjaesong on 16-09-06. + */ +object CIELuvUtil { + + fun Color.brighterLuv(scale: Float): Color { + val brighten = scale + 1f + + val luv = this.toLuv() + luv.L *= brighten + return luv.toRGB() + } + + fun Color.darkerLuv(scale: Float): Color { + val darken = 1f - scale + + val luv = this.toLuv() + luv.L *= darken + return luv.toRGB() + } + + /** + * Alpha value will be overwritten to 1.0 + */ + infix fun Color.additiveLuv(other: Color): Color { + val rgb = RGB(r, g, b) additiveLuv RGB(other.r, other.g, other.b) + return Color(rgb.r, rgb.g, rgb.b, a) + } + + /** + * Alpha value will be overwritten to 1.0 + */ + infix fun RGB.additiveLuv(other: RGB): RGB { + val thisLuv = this.toXYZ().toLuv() + val otherLuv = other.toXYZ().toLuv() + + val newL = 1f - (1f - thisLuv.L) * (1 - otherLuv.L) + val newU = thisLuv.u.times(otherLuv.L / newL) + otherLuv.u.times(otherLuv.L).times(1f - thisLuv.L).div(newL) + val newV = thisLuv.v.times(otherLuv.L / newL) + otherLuv.v.times(otherLuv.L).times(1f - thisLuv.L).div(newL) + + return CIELuv(newL, newU, newV).toRawRGB() + } + + fun CIEXYZ.toLuv(): CIELuv { + val yRef = Y / D65.Y + val uPrime = 4f * X / (X + 15f * Y + 3f * Z) + val vPrime = 9f * Y / (X + 15f * Y + 3f * Z) + val uRefPrime = 4f * D65.X / (D65.X + 15f * D65.Y + 3f * D65.Z) + val vRefPrime = 9f * D65.Y / (D65.X + 15f * D65.Y + 3f * D65.Z) + + val L = if (yRef > epsilon) + 116f * yRef.cbrt() - 16f + else + kappa * yRef + + val u = 13f * L * (uPrime - uRefPrime) + val v = 13f * L * (vPrime - vRefPrime) + + return CIELuv(L, u, v, alpha) + } + + fun CIELuv.toXYZ(): CIEXYZ { + val Y = if (L > kappa * epsilon) + L.plus(16f).div(116f).cube() + else + L.div(kappa) + val uRef = 4f * D65.X / (D65.X + 15f * D65.Y + 3f * D65.Z) + val vRef = 9f * D65.Y / (D65.X + 15f * D65.Y + 3f * D65.Z) + val a = (1f / 3f) * (52.times(L) / u.plus(13 * L * uRef)).minus(1f) + val b = -5f * Y + val c = -1f / 3f + val d = Y * (39f.times(L) / v.plus(13f * L * vRef)).minus(5f) + val X = (d - b) / (a - c) + val Z = X * a + b + + return CIEXYZ(X, Y, Z, alpha) + } + + fun Color.toLuv() = this.toXYZ().toLuv() + fun CIELuv.toRawRGB() = this.toXYZ().toRawRGB() + fun CIELuv.toRGB() = this.toXYZ().toRGB() + + private fun Float.cbrt() = FastMath.pow(this, 1f / 3f) + private fun Float.cube() = this * this * this +} + +data class CIELuv(var L: Float = 0f, var u: Float = 0f, var v: Float = 0f, val alpha: Float = 1f) diff --git a/src/net/torvald/point/Point2d.kt b/src/net/torvald/point/Point2d.kt index 5d62f55ac..5cbee0ff6 100644 --- a/src/net/torvald/point/Point2d.kt +++ b/src/net/torvald/point/Point2d.kt @@ -1,5 +1,7 @@ package net.torvald.point +import org.dyn4j.geometry.Vector2 + /** * Created by minjaesong on 16-01-15. */ @@ -13,4 +15,35 @@ class Point2d(var x: Double, var y: Double) : Cloneable { this.x = x this.y = y } + + fun set(other: Point2d) { + this.x = other.x + this.y = other.y + } + + /** + * Rotate transform this point, with pivot (0, 0) + * @return new Point2d that is rotated + */ + infix fun rot(deg_delta: Double) = Point2d( + x * Math.cos(deg_delta) - y * Math.sin(deg_delta), + x * Math.sin(deg_delta) + y * Math.cos(deg_delta) + ) + + fun translate(other: Point2d) { + x += other.x + y += other.y + } + fun translate(tx: Double, ty: Double) { + x += tx + y += ty + } + operator fun plus(other: Point2d) = Point2d(x + other.x, y + other.y) + operator fun minus(other: Point2d) = Point2d(x - other.x, y - other.y) + operator fun times(scalar: Double) = Point2d(x * scalar, y * scalar) + operator fun times(other: Point2d) = Point2d(x * other.x, y * other.y) + operator fun div(scalar: Double) = Point2d(x / scalar, y / scalar) + operator fun div(other: Point2d) = Point2d(x / other.x, y / other.y) + + fun toVector() = Vector2(x, y) } diff --git a/src/net/torvald/terrarum/StateInGame.kt b/src/net/torvald/terrarum/StateInGame.kt index 127948213..1ee6a6862 100644 --- a/src/net/torvald/terrarum/StateInGame.kt +++ b/src/net/torvald/terrarum/StateInGame.kt @@ -16,6 +16,7 @@ import net.torvald.terrarum.gamemap.GameWorld import net.torvald.terrarum.gamemap.WorldSimulator import net.torvald.terrarum.gamemap.WorldTime import net.torvald.terrarum.mapdrawer.LightmapRenderer +import net.torvald.terrarum.mapdrawer.LightmapRenderer.constructRGBFromInt import net.torvald.terrarum.mapdrawer.MapCamera import net.torvald.terrarum.mapdrawer.MapDrawer import net.torvald.terrarum.mapgenerator.WorldGenerator @@ -121,8 +122,8 @@ constructor() : BasicGameState() { // add new player and put it to actorContainer - //player = PBSigrid.create() - player = PBCynthia.create() + player = PBSigrid.create() + //player = PBCynthia.create() //player.setNoClip(true); addActor(player) @@ -177,7 +178,11 @@ constructor() : BasicGameState() { WeatherMixer.update(gc, delta) TileStats.update() if (!(CommandDict["setgl"] as SetGlobalLightOverride).lightOverride) - world.globalLight = globalLightByTime.toInt() + world.globalLight = constructRGBFromInt( + globalLightByTime.redByte, + globalLightByTime.greenByte, + globalLightByTime.blueByte + ) /////////////////////////// @@ -438,7 +443,9 @@ constructor() : BasicGameState() { } // inactivate distant actors else if (actor is Visible && !actor.inUpdateRange()) { - actorContainerInactive.add(actor) // naïve add; duplicates are checked when the actor is re-activated + if (actor !is Projectile) { // if it's a projectile, just kill it. + actorContainerInactive.add(actor) // naïve add; duplicates are checked when the actor is re-activated + } actorContainer.removeAt(actorIndex) actorContainerSize -= 1 i-- // array removed 1 elem, so we also decrement counter by 1 @@ -570,3 +577,5 @@ constructor() : BasicGameState() { return -(low + 1) // key not found } } + +fun Color.toInt() = redByte.shl(16) or greenByte.shl(8) or blueByte diff --git a/src/net/torvald/terrarum/StateTestingSandbox.kt b/src/net/torvald/terrarum/StateTestingSandbox.kt index f82318f98..6156bd2a7 100644 --- a/src/net/torvald/terrarum/StateTestingSandbox.kt +++ b/src/net/torvald/terrarum/StateTestingSandbox.kt @@ -1,8 +1,14 @@ package net.torvald.terrarum +import net.torvald.CSVFetcher import net.torvald.colourutil.CIELabUtil.toXYZ import net.torvald.colourutil.CIELabUtil.toLab import net.torvald.colourutil.CIELabUtil.toRGB +import net.torvald.colourutil.CIELuv +import net.torvald.colourutil.CIELuvUtil.toRawRGB +import net.torvald.colourutil.CIELuvUtil.toLuv +import net.torvald.colourutil.RGB +import org.apache.commons.csv.CSVRecord import org.newdawn.slick.Color import org.newdawn.slick.GameContainer import org.newdawn.slick.Graphics @@ -13,14 +19,22 @@ import org.newdawn.slick.state.StateBasedGame * Created by minjaesong on 16-09-05. */ class StateTestingSandbox : BasicGameState() { - val colRGB = Color(0x51621D) - val colAfter1 = colRGB.toXYZ().toRGB() - //val colAfter2 = colRGB.toXYZ().toLab().toXYZ().toRGB() override fun init(container: GameContainer?, game: StateBasedGame?) { - println("Color:\n$colRGB") - println("Color -> XYZ -> Color:\n$colAfter1") - //println("Color -> XYZ -> Lab -> XYZ -> Color:\n$colAfter2") + val records = CSVFetcher("./src/net/torvald/terrarum/tileproperties/tileprop_10bcol.csv") + records.forEach { + val tenOpacity = intVal(it, "opacity") + val tenLum = intVal(it, "lumcolor") + + val eightOpacity = tenOpacity.and(0xff) or + tenOpacity.ushr(10).and(0xff).shl(8) or + tenOpacity.ushr(20).and(0xff).shl(16) + val eightLum = tenLum.and(0xff) or + tenLum.ushr(10).and(0xff).shl(8) or + tenLum.ushr(20).and(0xff).shl(16) + + println("$eightOpacity\t$eightLum") + } } override fun update(container: GameContainer?, game: StateBasedGame?, delta: Int) { @@ -31,4 +45,15 @@ class StateTestingSandbox : BasicGameState() { override fun render(container: GameContainer?, game: StateBasedGame?, g: Graphics?) { } + + private fun intVal(rec: CSVRecord, s: String): Int { + var ret = -1 + try { + ret = Integer.decode(rec.get(s))!! + } + catch (e: NullPointerException) { + } + + return ret + } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/StateVTTest.kt b/src/net/torvald/terrarum/StateVTTest.kt new file mode 100644 index 000000000..17ee59b1f --- /dev/null +++ b/src/net/torvald/terrarum/StateVTTest.kt @@ -0,0 +1,27 @@ +package net.torvald.terrarum + +import org.newdawn.slick.GameContainer +import org.newdawn.slick.Graphics +import org.newdawn.slick.state.BasicGameState +import org.newdawn.slick.state.StateBasedGame + +/** + * ComputerCraft/OpenComputers like-alike, just for fun! + * + * Created by minjaesong on 16-09-07. + */ +class StateVTTest : BasicGameState() { + override fun init(container: GameContainer?, game: StateBasedGame?) { + throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun update(container: GameContainer?, game: StateBasedGame?, delta: Int) { + throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun getID() = Terrarum.STATE_ID_TEST_TTY + + override fun render(container: GameContainer?, game: StateBasedGame?, g: Graphics?) { + throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates. + } +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index f78feea4d..d260710d3 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -193,6 +193,7 @@ constructor(gamename: String) : StateBasedGame(gamename) { val STATE_ID_CONFIG_CALIBRATE = 0x11 val STATE_ID_TEST_FONT = 0x100 + val STATE_ID_TEST_TTY = 0x110 val STATE_ID_TEST_SHIT = 0x5617 var hasController = false diff --git a/src/net/torvald/terrarum/console/CommandDict.kt b/src/net/torvald/terrarum/console/CommandDict.kt index e06063a1b..d9ba5e198 100644 --- a/src/net/torvald/terrarum/console/CommandDict.kt +++ b/src/net/torvald/terrarum/console/CommandDict.kt @@ -38,6 +38,8 @@ object CommandDict { Pair("help", Help()), Pair("version", Version()), Pair("seed", Seed()), + Pair("testgetlight", TestGetLight()), + Pair("println", EchoConsole()), // Test codes Pair("bulletintest", SetBulletin()), diff --git a/src/net/torvald/terrarum/console/EchoConsole.kt b/src/net/torvald/terrarum/console/EchoConsole.kt new file mode 100644 index 000000000..3a5502c5f --- /dev/null +++ b/src/net/torvald/terrarum/console/EchoConsole.kt @@ -0,0 +1,33 @@ +package net.torvald.terrarum.console + +/** + * Created by minjaesong on 16-09-07. + */ +class EchoConsole : ConsoleCommand { + /** + * Args 0: command given + * Args 1: first argument + * + * e.g. in ```setav mass 74```, zeroth args will be ```setav```. + */ + override fun execute(args: Array) { + val argsWoHeader = Array(args.size - 1, {it -> args[it + 1]}) + argsWoHeader.forEach { execute(it) } + } + + fun execute(single_line: String) { + val sb = StringBuilder() + for (ch in single_line) { + if (ch == '\n') { + println(sb.toString()) + sb.delete(0, sb.length - 1) + } + else + sb.append(ch) + } + println(sb.toString()) + } + + override fun printUsage() { + } +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/console/TestGetLight.kt b/src/net/torvald/terrarum/console/TestGetLight.kt new file mode 100644 index 000000000..066a2f2b4 --- /dev/null +++ b/src/net/torvald/terrarum/console/TestGetLight.kt @@ -0,0 +1,24 @@ +package net.torvald.terrarum.console + +import net.torvald.terrarum.mapdrawer.LightmapRenderer + +/** + * Created by minjaesong on 16-09-07. + */ +class TestGetLight : ConsoleCommand { + /** + * Args 0: command given + * Args 1: first argument + * + * e.g. in ```setav mass 74```, zeroth args will be ```setav```. + */ + override fun execute(args: Array) { + val x = args[1].toInt() + val y = args[2].toInt() + val l = LightmapRenderer.getLightRawPos(16, 16) + EchoConsole().execute(l.toString()) + } + + override fun printUsage() { + } +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/AVKey.kt b/src/net/torvald/terrarum/gameactors/AVKey.kt index 17a849e2b..cda5547c0 100644 --- a/src/net/torvald/terrarum/gameactors/AVKey.kt +++ b/src/net/torvald/terrarum/gameactors/AVKey.kt @@ -79,5 +79,5 @@ object AVKey { - const val _PLAYER_QUICKBARSEL = "__quickbarselection" + const val __PLAYER_QUICKBARSEL = "__quickbarselection" } \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt index d0af8ec46..46586d851 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt @@ -1,6 +1,7 @@ package net.torvald.terrarum.gameactors import com.jme3.math.FastMath +import net.torvald.point.Point2d import net.torvald.terrarum.* import net.torvald.terrarum.gamemap.GameWorld import net.torvald.terrarum.mapdrawer.MapDrawer @@ -36,6 +37,7 @@ open class ActorWithBody : Actor(), Visible { /** * * Position: top-left point * * Unit: pixel + * !! external class should not hitbox.set(); use setHitboxDimension() and setPosition() */ override val hitbox = Hitbox(0.0, 0.0, 0.0, 0.0) @Transient val nextHitbox = Hitbox(0.0, 0.0, 0.0, 0.0) @@ -261,6 +263,13 @@ open class ActorWithBody : Actor(), Visible { baseHitboxH * scale) } + val centrePosition: Vector2 + get() = Vector2(hitbox.centeredX, hitbox.centeredY) + val centrePosPoint: Point2d + get() = Point2d(hitbox.centeredX, hitbox.centeredY) + val feetPosition: Vector2 + get() = Vector2(hitbox.centeredX, hitbox.posY + hitbox.height) + override fun run() = update(Terrarum.appgc, Terrarum.ingame.UPDATE_DELTA) /** @@ -325,8 +334,10 @@ open class ActorWithBody : Actor(), Visible { * If and only if: * This body is NON-STATIC and the other body is STATIC */ - displaceByCCD() - applyNormalForce() + if (!isPlayerNoClip) { + displaceByCCD() + applyNormalForce() + } setHorizontalFriction() if (isPlayerNoClip) // or hanging on the rope, etc. @@ -342,6 +353,10 @@ open class ActorWithBody : Actor(), Visible { // cheap solution for sticking into the wall while Left or Right is held walledLeft = isTouchingSide(nextHitbox, COLLIDING_LEFT) walledRight = isTouchingSide(nextHitbox, COLLIDING_RIGHT) + if (isPlayerNoClip) { + walledLeft = false + walledRight = false + } } } @@ -428,7 +443,8 @@ open class ActorWithBody : Actor(), Visible { else if (moveDelta.y < 0.0) { // or was moving upward? grounded = false if (isTouchingSide(nextHitbox, COLLIDING_TOP)) { // actor hit something on its top - hitAndForciblyReflectY() + //hitAndForciblyReflectY() + hitAndReflectY() } else { // the actor is not grounded at all } @@ -491,6 +507,7 @@ open class ActorWithBody : Actor(), Visible { } } + @Deprecated("it's no use!") private fun hitAndForciblyReflectY() { if (veloY.abs() * CEILING_HIT_ELASTICITY > A_PIXEL) veloY = -veloY * CEILING_HIT_ELASTICITY diff --git a/src/net/torvald/terrarum/gameactors/PBCynthia.kt b/src/net/torvald/terrarum/gameactors/PBCynthia.kt index 596aad0f0..0f03e1317 100644 --- a/src/net/torvald/terrarum/gameactors/PBCynthia.kt +++ b/src/net/torvald/terrarum/gameactors/PBCynthia.kt @@ -12,7 +12,7 @@ object PBCynthia { val p: Player = Player() CreatureRawInjector.inject(p.actorValue, "CreatureHuman.json") - p.actorValue[AVKey._PLAYER_QUICKBARSEL] = 0 + p.actorValue[AVKey.__PLAYER_QUICKBARSEL] = 0 p.actorValue["__selectedtile"] = 16 diff --git a/src/net/torvald/terrarum/gameactors/PBSigrid.kt b/src/net/torvald/terrarum/gameactors/PBSigrid.kt index e7ec5c570..e2f1201d9 100644 --- a/src/net/torvald/terrarum/gameactors/PBSigrid.kt +++ b/src/net/torvald/terrarum/gameactors/PBSigrid.kt @@ -58,6 +58,7 @@ object PBSigrid { p.actorValue[AVKey.BASEDEFENCE] = 141 + p.actorValue[AVKey.__PLAYER_QUICKBARSEL] = 0 p.actorValue["__selectedtile"] = 16 // test code; replace with .primaryUse(gc, delta) p.actorValue["__aimhelper"] = true diff --git a/src/net/torvald/terrarum/gameactors/PlayerBuilder.kt b/src/net/torvald/terrarum/gameactors/PlayerBuilder.kt index 7f01399d0..3d6ef7e34 100644 --- a/src/net/torvald/terrarum/gameactors/PlayerBuilder.kt +++ b/src/net/torvald/terrarum/gameactors/PlayerBuilder.kt @@ -18,7 +18,7 @@ object PlayerBuilder { // attach sprite // do etc. - p.actorValue[AVKey._PLAYER_QUICKBARSEL] = 0 + p.actorValue[AVKey.__PLAYER_QUICKBARSEL] = 0 return p } diff --git a/src/net/torvald/terrarum/gameactors/Projectile.kt b/src/net/torvald/terrarum/gameactors/Projectile.kt new file mode 100644 index 000000000..90cebdb35 --- /dev/null +++ b/src/net/torvald/terrarum/gameactors/Projectile.kt @@ -0,0 +1,9 @@ +package net.torvald.terrarum.gameactors + +/** + * Projectile marker. Used to kill them when they're far away from the player, instead of making them sleep. + * + * Created by minjaesong on 16-09-05. + */ +interface Projectile { +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/ProjectileHoming.kt b/src/net/torvald/terrarum/gameactors/ProjectileHoming.kt index 061b88618..ae42312da 100644 --- a/src/net/torvald/terrarum/gameactors/ProjectileHoming.kt +++ b/src/net/torvald/terrarum/gameactors/ProjectileHoming.kt @@ -8,8 +8,8 @@ import org.dyn4j.geometry.Vector2 class ProjectileHoming( type: Int, fromPoint: Vector2, // projected coord - toPoint: Vector2, // arriving coord - override var luminosity: Int = 0) : ProjectileSimple(type, fromPoint, toPoint, luminosity) { + toPoint: Vector2 // arriving coord + ) : ProjectileSimple(type, fromPoint, toPoint) { diff --git a/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt b/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt index c6f3391fb..83a972833 100644 --- a/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt +++ b/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt @@ -1,7 +1,9 @@ package net.torvald.terrarum.gameactors -import net.torvald.colourutil.CIELabUtil.brighterLab +import net.torvald.colourutil.CIELabUtil.darkerLab +import net.torvald.point.Point2d import net.torvald.spriteanimation.SpriteAnimation +import net.torvald.terrarum.Terrarum import org.dyn4j.geometry.Vector2 import org.newdawn.slick.Color import org.newdawn.slick.GameContainer @@ -14,16 +16,21 @@ import java.util.* * Created by minjaesong on 16-08-29. */ open class ProjectileSimple( - type: Int, + private val type: Int, fromPoint: Vector2, // projected coord - toPoint: Vector2, // arriving coord - override var luminosity: Int = 0) : ActorWithBody(), Luminous { + toPoint: Vector2 // arriving coord + ) : ActorWithBody(), Luminous, Projectile { val damage: Int val displayColour: Color /** scalar part of velocity */ val speed: Int + + override var luminosity: Int + get() = bulletDatabase[type][OFFSET_LUMINOSITY] as Int + set(value) { + } /** * Arguments: * @@ -32,8 +39,14 @@ open class ProjectileSimple( */ override val lightBoxList = ArrayList() + val lifetimeMax = 2500 + var lifetimeCounter = 0 + + val posPre: Point2d + init { - hitbox.set(fromPoint.x, fromPoint.y, 2.0, 2.0) // 2.0: size of the hitbox in pixels + setPosition(fromPoint.x, fromPoint.y) + posPre = Point2d(fromPoint.x, fromPoint.y) // lightbox sized 8x8 centered to the bullet lightBoxList.add(Hitbox(-4.0, -4.0, 8.0, 8.0)) this.velocity.set(velocity) @@ -43,16 +56,10 @@ open class ProjectileSimple( isNoSubjectToGrav = bulletDatabase[type][OFFSET_NOGRAVITY] as Boolean speed = bulletDatabase[type][OFFSET_SPEED] as Int - if (displayColour == Color(254, 0, 0, 0)) { - sprite = bulletDatabase[type][OFFSET_SPRITE] as SpriteAnimation - } + setHitboxDimension(2, 2, 0, 0) // should be following sprite's properties if there IS one - - val initVelo = Vector2(speed.toDouble(), 0.0) - initVelo.setDirection((fromPoint to toPoint).direction) - - velocity.set(initVelo) + velocity.set((fromPoint to toPoint).setMagnitude(speed.toDouble())) @@ -61,34 +68,42 @@ open class ProjectileSimple( override fun update(gc: GameContainer, delta: Int) { // hit something and despawn - if (ccdCollided || grounded) flagDespawn() + lifetimeCounter += delta + if ((ccdCollided || grounded) || lifetimeCounter >= lifetimeMax) flagDespawn() + + posPre.set(centrePosPoint) super.update(gc, delta) } override fun drawBody(gc: GameContainer, g: Graphics) { + val colourTail = displayColour.darker(0f) // clone a colour + colourTail.a = 0.16f + // draw trail of solid colour (Terraria style maybe?) - g.lineWidth = 3f + g.lineWidth = 2f * Terrarum.ingame.screenZoom g.drawGradientLine( - nextHitbox.centeredX.toFloat(), - nextHitbox.centeredY.toFloat(), + hitbox.centeredX.toFloat() * Terrarum.ingame.screenZoom, + hitbox.centeredY.toFloat() * Terrarum.ingame.screenZoom, displayColour, - hitbox.centeredX.toFloat(), - hitbox.centeredY.toFloat(), - displayColour.brighterLab(0.8f) + posPre.x.toFloat() * Terrarum.ingame.screenZoom, + posPre.y.toFloat() * Terrarum.ingame.screenZoom, + colourTail ) } + override fun drawGlow(gc: GameContainer, g: Graphics) = drawBody(gc, g) + companion object { val OFFSET_DAMAGE = 0 - val OFFSET_COL = 1 // set it to Color(254, 0, 0, 0) to use sprite + val OFFSET_COL = 1 // Color or SpriteAnimation val OFFSET_NOGRAVITY = 2 val OFFSET_SPEED = 3 - val OFFSET_SPRITE = 4 + val OFFSET_LUMINOSITY = 4 val bulletDatabase = arrayOf( // damage, display colour, no gravity, speed - arrayOf(7, Color(0xFF5429), true, 50), - arrayOf(8, Color(0xFF5429), true, 50) + arrayOf(7, Color(0xFF5429), true, 40, 32), + arrayOf(8, Color(0xFF5429), true, 20, 0) // ... ) } diff --git a/src/net/torvald/terrarum/gamecontroller/GameController.kt b/src/net/torvald/terrarum/gamecontroller/GameController.kt index 51850d173..54758a3a2 100644 --- a/src/net/torvald/terrarum/gamecontroller/GameController.kt +++ b/src/net/torvald/terrarum/gamecontroller/GameController.kt @@ -5,9 +5,11 @@ import net.torvald.terrarum.gameactors.Player import net.torvald.terrarum.mapdrawer.MapCamera import net.torvald.terrarum.mapdrawer.MapDrawer import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.gameactors.ProjectileSimple import net.torvald.terrarum.tileproperties.TileNameCode import net.torvald.terrarum.tileproperties.TilePropCodex import net.torvald.terrarum.ui.UIHandler +import org.dyn4j.geometry.Vector2 import org.newdawn.slick.Input /** @@ -15,10 +17,16 @@ import org.newdawn.slick.Input */ object GameController { - fun processInput(input: Input) { - val mouseTileX = ((MapCamera.cameraX + input.mouseX / Terrarum.ingame.screenZoom) / MapDrawer.TILE_SIZE).toInt() - val mouseTileY = ((MapCamera.cameraY + input.mouseY / Terrarum.ingame.screenZoom) / MapDrawer.TILE_SIZE).toInt() + val mouseX: Float + get() = (MapCamera.cameraX + Terrarum.appgc.input.mouseX / Terrarum.ingame.screenZoom) + val mouseY: Float + get() = (MapCamera.cameraY + Terrarum.appgc.input.mouseY / Terrarum.ingame.screenZoom) + val mouseTileX: Int + get() = (mouseX / MapDrawer.TILE_SIZE).toInt() + val mouseTileY: Int + get() = (mouseY / MapDrawer.TILE_SIZE).toInt() + fun processInput(input: Input) { KeyToggler.update(input) @@ -48,6 +56,7 @@ object GameController { catch (e: ArrayIndexOutOfBoundsException) { } + } else if (input.isMouseButtonDown(Input.MOUSE_RIGHT_BUTTON)) { // test tile place @@ -100,7 +109,13 @@ object GameController { } fun mousePressed(button: Int, x: Int, y: Int) { - + if (button == 0) { + Terrarum.ingame.addActor(ProjectileSimple( + 0, + Terrarum.ingame.player.centrePosition, + Vector2(mouseX.toDouble(), mouseY.toDouble()) + )) + } } fun mouseReleased(button: Int, x: Int, y: Int) { diff --git a/src/net/torvald/terrarum/mapdrawer/Light10B.kt b/src/net/torvald/terrarum/mapdrawer/Light10B.kt index 3e091fa49..09d12bebe 100644 --- a/src/net/torvald/terrarum/mapdrawer/Light10B.kt +++ b/src/net/torvald/terrarum/mapdrawer/Light10B.kt @@ -7,7 +7,7 @@ import org.newdawn.slick.Color * Created by minjaesong on 16-07-08. */ -class Light10B { +/*class Light10B { private var data = 0 @@ -192,4 +192,4 @@ class Light10B { (this.rawG() + other.rawG()).clampChannel() , (this.rawB() + other.rawB()).clampChannel() ) -} \ No newline at end of file +}*/ \ No newline at end of file diff --git a/src/net/torvald/terrarum/mapdrawer/LightmapRenderer.kt b/src/net/torvald/terrarum/mapdrawer/LightmapRenderer.kt index ac2173832..314101280 100644 --- a/src/net/torvald/terrarum/mapdrawer/LightmapRenderer.kt +++ b/src/net/torvald/terrarum/mapdrawer/LightmapRenderer.kt @@ -4,12 +4,13 @@ import net.torvald.terrarum.gameactors.Luminous import net.torvald.terrarum.Terrarum import net.torvald.terrarum.tileproperties.TilePropCodex import com.jme3.math.FastMath +import net.torvald.colourutil.RGB +import net.torvald.colourutil.CIELuvUtil.additiveLuv import net.torvald.terrarum.gameactors.Visible import net.torvald.terrarum.tileproperties.TileNameCode import net.torvald.terrarum.tileproperties.TilePropUtil import org.newdawn.slick.Color import org.newdawn.slick.Graphics -import org.newdawn.slick.Image import java.util.* /** @@ -41,7 +42,7 @@ object LightmapRenderer { // color model related constants const val MUL = 1024 // modify this to 1024 to implement 30-bit RGB - const val CHANNEL_MAX_DECIMAL = 4f + const val CHANNEL_MAX_DECIMAL = 1f const val MUL_2 = MUL * MUL const val CHANNEL_MAX = MUL - 1 const val CHANNEL_MAX_FLOAT = CHANNEL_MAX.toFloat() @@ -52,6 +53,8 @@ object LightmapRenderer { internal var for_x_end: Int = 0 internal var for_y_end: Int = 0 + fun getLightRawPos(x: Int, y: Int) = lightmap[y][x] + fun getLight(x: Int, y: Int): Int? { /*if (x !in 0..Terrarum.game.map.width - 1 || y !in 0..Terrarum.game.map.height - 1) // if out of range then @@ -240,11 +243,11 @@ object LightmapRenderer { lightLevelThis = sunLight } // luminous tile on top of air - else if (thisWall == AIR && thisTileLuminosity.toInt() > 0) { + else if (thisWall == AIR && thisTileLuminosity > 0) { lightLevelThis = sunLight maxBlend thisTileLuminosity // maximise to not exceed 1.0 with normal (<= 1.0) light } // opaque wall and luminous tile - else if (thisWall != AIR && thisTileLuminosity.toInt() > 0) { + else if (thisWall != AIR && thisTileLuminosity > 0) { lightLevelThis = thisTileLuminosity } // END MIX TILE @@ -278,7 +281,7 @@ object LightmapRenderer { } else if (xoff != 0 && yoff != 0) { // 'a' tiles - nearby = darkenUniformInt(getLight(x + xoff, y + yoff) ?: 0, 12) //2 for 40step + nearby = darkenUniformInt(getLight(x + xoff, y + yoff) ?: 0, 12) // mix some to have more 'spreading' // so that light spreads in a shape of an octagon instead of a diamond } @@ -290,8 +293,7 @@ object LightmapRenderer { } } - ambient = darkenColoured(ambient, - thisTileOpacity) // get real ambient by appling opacity value + ambient = darkenColoured(ambient, thisTileOpacity) // get real ambient by appling opacity value // mix and return lightlevel and ambient return lightLevelThis maxBlend ambient @@ -371,7 +373,7 @@ object LightmapRenderer { for (iy in 0..1) { for (ix in 0..1) { - g.color = Color(colourMapItoL[iy * 2 + ix].rgb30ClampTo24()) + g.color = colourMapItoL[iy * 2 + ix].normaliseToColour() g.fillRect( (x.toFloat() * TSIZE.toFloat() * Terrarum.ingame.screenZoom).round() @@ -398,7 +400,7 @@ object LightmapRenderer { if (x + sameLevelCounter >= this_x_end) break } - g.color = Color((getLight(x, y) ?: 0).rgb30ClampTo24()) + g.color = (getLight(x, y) ?: 0).normaliseToColour() g.fillRect( (x.toFloat() * TSIZE.toFloat() * Terrarum.ingame.screenZoom).round().toFloat(), (y.toFloat() * TSIZE.toFloat() * Terrarum.ingame.screenZoom).round().toFloat(), @@ -434,9 +436,9 @@ object LightmapRenderer { if (darken.toInt() < 0 || darken.toInt() >= COLOUR_RANGE_SIZE) throw IllegalArgumentException("darken: out of range ($darken)") - val r = data.r() * (1f - darken.r() * 6) // 6: Arbitrary value - val g = data.g() * (1f - darken.g() * 6) // TODO gamma correction? - val b = data.b() * (1f - darken.b() * 6) + val r = data.r() * (1f - darken.r() * 4f) + val g = data.g() * (1f - darken.g() * 4f) + val b = data.b() * (1f - darken.b() * 4f) return constructRGBFromFloat(r.clampZero(), g.clampZero(), b.clampZero()) } @@ -452,9 +454,9 @@ object LightmapRenderer { if (brighten.toInt() < 0 || brighten.toInt() >= COLOUR_RANGE_SIZE) throw IllegalArgumentException("brighten: out of range ($brighten)") - val r = data.r() * (1f + brighten.r() * 6) // 6: Arbitrary value - val g = data.g() * (1f + brighten.g() * 6) // TODO gamma correction? - val b = data.b() * (1f + brighten.b() * 6) + val r = data.r() * (1f + brighten.r() * 4f) + val g = data.g() * (1f + brighten.g() * 4f) + val b = data.b() * (1f + brighten.b() * 4f) return constructRGBFromFloat(r.clampChannel(), g.clampChannel(), b.clampChannel()) } @@ -498,29 +500,44 @@ object LightmapRenderer { * @return */ private infix fun Int.maxBlend(other: Int): Int { - val r1 = this.rawR() - val r2 = other.rawR() - val newR = if (r1 > r2) r1 else r2 - val g1 = this.rawG() - val g2 = other.rawG() - val newG = if (g1 > g2) g1 else g2 - val b1 = this.rawB() - val b2 = other.rawB() - val newB = if (b1 > b2) b1 else b2 + val r1 = this.rawR(); val r2 = other.rawR(); val newR = if (r1 > r2) r1 else r2 + val g1 = this.rawG(); val g2 = other.rawG(); val newG = if (g1 > g2) g1 else g2 + val b1 = this.rawB(); val b2 = other.rawB(); val newB = if (b1 > b2) b1 else b2 return constructRGBFromInt(newR, newG, newB) } - + + // TODO LUT of 1024 entries (int resulting light, int rectified light) + val compLut = floatArrayOf(0f, 0.61328125f, 0.6875f, 0.68359375f, 0.66015625f, 0.62109375f, 0.56640625f, 0.515625f, 0.46484375f, 0.40625f, 0.3515625f, 0.29296875f, 0.234375f, 0.17578125f, 0.1171875f, 0.0546875f, 0f) + fun getComp(lum: Float) = FastMath.interpolateLinear( + lum.mod(1f / compLut.size), + compLut[lum.times(compLut.size).toInt() / compLut.size], + compLut[lum.times(compLut.size).toInt() / compLut.size + 1]) + + /** + * Deprecated: Fuck it, this vittupää just doesn't want to work + */ private infix fun Int.screenBlend(other: Int): Int { - val r1 = this.r() - val r2 = other.r() - val newR = 1 - (1 - r1) * (1 - r2) - val g1 = this.g() - val g2 = other.g() - val newG = 1 - (1 - g1) * (1 - g2) - val b1 = this.b() - val b2 = other.b() - val newB = 1 - (1 - b1) * (1 - b2) + /*val r1 = this.r(); val r2 = other.r(); val newR = 1 - (1 - r1) * (1 - r2) + val g1 = this.g(); val g2 = other.g(); val newG = 1 - (1 - g1) * (1 - g2) + val b1 = this.b(); val b2 = other.b(); val newB = 1 - (1 - b1) * (1 - b2)*/ + + val r1 = this.r(); val r2 = other.r() + val g1 = this.g(); val g2 = other.g() + val b1 = this.b(); val b2 = other.b() + + var screenR = 1f - (1f - r1).clampZero() * (1f - r2).clampZero() + var screenG = 1f - (1f - g1).clampZero() * (1f - g2).clampZero() + var screenB = 1f - (1f - b1).clampZero() * (1f - b2).clampZero() + + // hax. + val addR = if (r1 > r2) r1 else r2 + val addG = if (g1 > g2) g1 else g2 + val addB = if (b1 > b2) b1 else b2 + + val newR = Math.min(screenR, addR) + val newG = Math.min(screenG, addG) + val newB = Math.min(screenB, addB) return constructRGBFromFloat(newR, newG, newB) } @@ -541,6 +558,7 @@ object LightmapRenderer { fun Int.rawG() = this % MUL_2 / MUL fun Int.rawB() = this % MUL + /** 0.0 - 1.0 for 0-1023 (0.0 - 0.25 for 0-255) */ fun Int.r(): Float = this.rawR() / CHANNEL_MAX_FLOAT fun Int.g(): Float = this.rawG() / CHANNEL_MAX_FLOAT fun Int.b(): Float = this.rawB() / CHANNEL_MAX_FLOAT @@ -570,17 +588,17 @@ object LightmapRenderer { if (r !in 0..CHANNEL_MAX) throw IllegalArgumentException("Red: out of range ($r)") if (g !in 0..CHANNEL_MAX) throw IllegalArgumentException("Green: out of range ($g)") if (b !in 0..CHANNEL_MAX) throw IllegalArgumentException("Blue: out of range ($b)") - return (r * MUL_2 + g * MUL + b) + return r * MUL_2 + g * MUL + b } fun constructRGBFromFloat(r: Float, g: Float, b: Float): Int { - if (r < 0 || r > 1.0f) throw IllegalArgumentException("Red: out of range ($r)") - if (g < 0 || g > 1.0f) throw IllegalArgumentException("Green: out of range ($g)") - if (b < 0 || b > 1.0f) throw IllegalArgumentException("Blue: out of range ($b)") + if (r < 0 || r > CHANNEL_MAX_DECIMAL) throw IllegalArgumentException("Red: out of range ($r)") + if (g < 0 || g > CHANNEL_MAX_DECIMAL) throw IllegalArgumentException("Green: out of range ($g)") + if (b < 0 || b > CHANNEL_MAX_DECIMAL) throw IllegalArgumentException("Blue: out of range ($b)") - val intR = (r * CHANNEL_MAX).floor() - val intG = (g * CHANNEL_MAX).floor() - val intB = (b * CHANNEL_MAX).floor() + val intR = (r * CHANNEL_MAX).round() + val intG = (g * CHANNEL_MAX).round() + val intB = (b * CHANNEL_MAX).round() return constructRGBFromInt(intR, intG, intB) } @@ -622,14 +640,6 @@ object LightmapRenderer { private fun Int.clamp256() = if (this > 255) 255 else this - fun Int.rgb30ClampTo24(): Int { - val r = this.rawR().clamp256() - val g = this.rawG().clamp256() - val b = this.rawB().clamp256() - - return r.shl(16) or g.shl(8) or b - } - infix fun Float.powerOf(f: Float) = FastMath.pow(this, f) private fun Float.sqr() = this * this private fun Float.sqrt() = FastMath.sqrt(this) @@ -641,6 +651,11 @@ object LightmapRenderer { fun Float.ceil() = FastMath.ceil(this) fun Int.even(): Boolean = this and 1 == 0 fun Int.odd(): Boolean = this and 1 == 1 + fun Int.normaliseToColour(): Color = Color( + Math.min(this.rawR(), 256), + Math.min(this.rawG(), 256), + Math.min(this.rawB(), 256) + ) data class Lantern(val posX: Int, val posY: Int, val luminosity: Int) diff --git a/src/net/torvald/terrarum/tileproperties/TilePropCodex.kt b/src/net/torvald/terrarum/tileproperties/TilePropCodex.kt index 45af892a2..1af0fa1b2 100644 --- a/src/net/torvald/terrarum/tileproperties/TilePropCodex.kt +++ b/src/net/torvald/terrarum/tileproperties/TilePropCodex.kt @@ -33,9 +33,8 @@ object TilePropCodex { println("[TilePropCodex] Building tile properties table") - records.forEach { record -> setProp( - tileProps[idDamageToIndex(intVal(record, "id"), intVal(record, "dmg"))] - , record) + records.forEach { setProp( + tileProps[idDamageToIndex(intVal(it, "id"), intVal(it, "dmg"))], it) } } catch (e: IOException) { diff --git a/src/net/torvald/terrarum/tileproperties/TilePropUtil.kt b/src/net/torvald/terrarum/tileproperties/TilePropUtil.kt index 5661771a0..c4f8a7129 100644 --- a/src/net/torvald/terrarum/tileproperties/TilePropUtil.kt +++ b/src/net/torvald/terrarum/tileproperties/TilePropUtil.kt @@ -5,7 +5,9 @@ import net.torvald.random.HQRNG import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gamemap.WorldTime import net.torvald.terrarum.mapdrawer.LightmapRenderer +import net.torvald.terrarum.toInt import net.torvald.terrarum.weather.WeatherMixer +import org.newdawn.slick.Color /** * Created by minjaesong on 16-06-16. diff --git a/src/net/torvald/terrarum/tileproperties/tileprop.csv b/src/net/torvald/terrarum/tileproperties/tileprop.csv index 67cdd2220..3142a8c7b 100644 --- a/src/net/torvald/terrarum/tileproperties/tileprop.csv +++ b/src/net/torvald/terrarum/tileproperties/tileprop.csv @@ -127,7 +127,7 @@ ## Notes ## # Friction: 0: frictionless, <16: slippery, 16: regular, >16: sticky -# Opacity/Lumcolor: 30-bit RGB. Light diffusers have a value of ZERO. +# Opacity/Lumcolor: 30-bit RGB. Only the light diffusers have a opacity value of ZERO. # Solid: whether the tile has full collision # movr: Movement resistance, (walkspeedmax) / (1 + (n/16)), 16 halves movement speed # dsty: density. As we are putting water an 1000, it is identical to specific gravity. [g/l] diff --git a/src/net/torvald/terrarum/tileproperties/tileprop_8bcol.csv b/src/net/torvald/terrarum/tileproperties/tileprop_8bcol.csv new file mode 100644 index 000000000..87c7dc806 --- /dev/null +++ b/src/net/torvald/terrarum/tileproperties/tileprop_8bcol.csv @@ -0,0 +1,156 @@ + "id";"dmg";"name" ; "opacity";"strength";"dsty";"fluid";"solid";"wall";"lumcolor";"drop";"ddmg";"fall";"dlfn";"friction" + "0"; "0";"TILE_AIR" ; "526344"; "0"; "1"; "0"; "0"; "0"; "0"; "0"; "0"; "0"; "0";"4" + "1"; "0";"TILE_STONE" ; "2105376"; "25";"2400"; "0"; "1"; "1"; "0"; "1"; "0"; "0"; "0";"16" + "1"; "1";"TILE_STONE_QUARRIED" ; "2105376"; "25";"2400"; "0"; "1"; "1"; "0"; "1"; "1"; "0"; "0";"16" + "1"; "2";"TILE_STONE_TILE_WHITE" ; "2105376"; "25";"2400"; "0"; "1"; "1"; "0"; "1"; "2"; "0"; "0";"16" + "1"; "3";"TILE_STONE_BRICKS" ; "2105376"; "25";"2400"; "0"; "1"; "1"; "0"; "1"; "3"; "0"; "0";"16" + "2"; "0";"TILE_DIRT" ; "2105376"; "6";"1400"; "0"; "1"; "1"; "0"; "2"; "0"; "0"; "0";"16" + "2"; "1";"TILE_GRASS" ; "2105376"; "6";"1400"; "0"; "1"; "1"; "0"; "2"; "1"; "0"; "0";"16" + "3"; "0";"TILE_PLANK_NORMAL" ; "2105376"; "12"; "740"; "0"; "1"; "1"; "0"; "3"; "0"; "0"; "0";"16" + "3"; "1";"TILE_PLANK_EBONY" ; "2105376"; "12";"1200"; "0"; "1"; "1"; "0"; "3"; "1"; "0"; "0";"16" + "3"; "2";"TILE_PLANK_BIRCH" ; "2105376"; "12"; "670"; "0"; "1"; "1"; "0"; "3"; "2"; "0"; "0";"16" + "3"; "3";"TILE_PLANK_BLOODROSE" ; "2105376"; "12"; "900"; "0"; "1"; "1"; "0"; "3"; "3"; "0"; "0";"16" + "4"; "0";"TILE_TRUNK_NORMAL" ; "2105376"; "12"; "740"; "0"; "1"; "0"; "0"; "3"; "0"; "0"; "0";"16" + "4"; "1";"TILE_TRUNK_EBONY" ; "2105376"; "12";"1200"; "0"; "1"; "0"; "0"; "3"; "1"; "0"; "0";"16" + "4"; "2";"TILE_TRUNK_BIRCH" ; "2105376"; "12"; "670"; "0"; "1"; "0"; "0"; "3"; "2"; "0"; "0";"16" + "4"; "3";"TILE_TRUNK_BLOODROSE" ; "2105376"; "12"; "900"; "0"; "1"; "0"; "0"; "3"; "3"; "0"; "0";"16" + "5"; "0";"TILE_SAND" ; "2105376"; "6";"2400"; "0"; "1"; "0"; "0"; "5"; "0"; "1"; "0";"16" + "5"; "1";"TILE_SAND_WHITE" ; "2105376"; "6";"2400"; "0"; "1"; "0"; "0"; "5"; "1"; "1"; "0";"16" + "5"; "2";"TILE_SAND_RED" ; "2105376"; "6";"2400"; "0"; "1"; "0"; "0"; "5"; "2"; "1"; "0";"16" + "5"; "3";"TILE_SAND_DESERT" ; "2105376"; "6";"2400"; "0"; "1"; "0"; "0"; "5"; "3"; "1"; "0";"16" + "5"; "4";"TILE_SAND_BLACK" ; "2105376"; "6";"2400"; "0"; "1"; "0"; "0"; "5"; "4"; "1"; "0";"16" + "5"; "5";"TILE_SAND_GREEN" ; "2105376"; "6";"2400"; "0"; "1"; "0"; "0"; "5"; "5"; "1"; "0";"16" + "6"; "0";"TILE_GRAVEL" ; "2105376"; "6";"2400"; "0"; "1"; "0"; "0"; "6"; "0"; "1"; "0";"16" + "6"; "1";"TILE_GRAVEL_GREY" ; "2105376"; "6";"2400"; "0"; "1"; "0"; "0"; "6"; "1"; "1"; "0";"16" + "7"; "0";"TILE_ORE_MALACHITE" ; "2105376"; "25";"2400"; "0"; "1"; "0"; "0"; "7"; "0"; "0"; "0";"16" + "7"; "1";"TILE_ORE_HEMATITE" ; "2105376"; "25";"2400"; "0"; "1"; "0"; "0"; "7"; "1"; "0"; "0";"16" + "7"; "2";"TILE_ORE_NATURAL_GOLD" ; "2105376"; "25";"2400"; "0"; "1"; "0"; "0"; "7"; "2"; "0"; "0";"16" + "7"; "3";"TILE_ORE_NATURAL_SILVER" ; "2105376"; "25";"2400"; "0"; "1"; "0"; "0"; "7"; "3"; "0"; "0";"16" + "7"; "4";"TILE_ORE_RUTILE" ; "2105376"; "25";"2400"; "0"; "1"; "0"; "0"; "7"; "4"; "0"; "0";"16" + "7"; "5";"TILE_ORE_AURICHALCUMITE" ; "2105376"; "25";"2400"; "0"; "1"; "0"; "0"; "7"; "5"; "0"; "0";"16" + "8"; "0";"TILE_GEM_RUBY" ; "2105376"; "25";"2400"; "0"; "1"; "0"; "0"; "8"; "0"; "0"; "0";"16" + "8"; "1";"TILE_GEM_EMERALD" ; "2105376"; "25";"2400"; "0"; "1"; "0"; "0"; "8"; "1"; "0"; "0";"16" + "8"; "2";"TILE_GEM_SAPPHIRE" ; "2105376"; "25";"2400"; "0"; "1"; "0"; "0"; "8"; "2"; "0"; "0";"16" + "8"; "3";"TILE_GEM_TOPAZ" ; "2105376"; "25";"2400"; "0"; "1"; "0"; "0"; "8"; "3"; "0"; "0";"16" + "8"; "4";"TILE_GEM_DIAMOND" ; "2105376"; "25";"2400"; "0"; "1"; "0"; "0"; "8"; "4"; "0"; "0";"16" + "8"; "5";"TILE_GEM_AMETHYST" ; "2105376"; "25";"2400"; "0"; "1"; "0"; "0"; "8"; "5"; "0"; "0";"16" + "9"; "0";"TILE_SNOW" ; "2105376"; "6"; "500"; "0"; "1"; "1"; "0"; "9"; "0"; "0"; "0";"16" + "9"; "1";"TILE_ICE_FRAGILE" ; "855309"; "1"; "930"; "0"; "1"; "0"; "0"; "9"; "1"; "0"; "0";"16" + "9"; "2";"TILE_ICE_NATURAL" ; "1710618"; "25"; "930"; "0"; "1"; "1"; "0"; "9"; "2"; "0"; "0"; "8" + "9"; "3";"TILE_ICE_CLEAR_MAGICAL" ; "2105376"; "25";"3720"; "0"; "1"; "1"; "1253434"; "9"; "3"; "0"; "0"; "8" + "9"; "4";"TILE_GLASS_CRUDE" ; "196867"; "1";"2500"; "0"; "1"; "1"; "0"; "9"; "4"; "0"; "0";"16" + "9"; "5";"TILE_GLASS_CLEAN" ; "65793"; "1";"2203"; "0"; "1"; "1"; "0"; "9"; "5"; "0"; "0";"16" + "10"; "0";"TILE_PLATFORM_STONE" ; "526344"; "1"; "N/A"; "0"; "0"; "0"; "0"; "10"; "0"; "0"; "0";"16" + "10"; "1";"TILE_PLATFORM_WOODEN" ; "526344"; "1"; "N/A"; "0"; "0"; "0"; "0"; "10"; "1"; "0"; "0";"16" + "10"; "2";"TILE_PLATFORM_EBONY" ; "526344"; "1"; "N/A"; "0"; "0"; "0"; "0"; "10"; "2"; "0"; "0";"16" + "10"; "3";"TILE_PLATFORM_BIRCH" ; "526344"; "1"; "N/A"; "0"; "0"; "0"; "0"; "10"; "3"; "0"; "0";"16" + "10"; "4";"TILE_PLATFORM_BLOODROSE" ; "526344"; "1"; "N/A"; "0"; "0"; "0"; "0"; "10"; "4"; "0"; "0";"16" + "11"; "0";"TILE_TORCH" ; "526344"; "0"; "N/A"; "0"; "0"; "0";"16674864"; "11"; "0"; "0"; "1";"16" + "11"; "1";"TILE_TORCH_FROST" ; "526344"; "0"; "N/A"; "0"; "0"; "0"; "5143807"; "11"; "1"; "0"; "1";"16" + "12"; "0";"TILE_TORCH" ; "526344"; "0"; "N/A"; "0"; "0"; "0"; "0"; "11"; "0"; "0"; "0";"16" + "12"; "1";"TILE_TORCH_FROST" ; "526344"; "0"; "N/A"; "0"; "0"; "0"; "0"; "11"; "1"; "0"; "0";"16" + "13"; "0";"TILE_ILLUMINATOR_WHITE" ; "526344"; "0"; "N/A"; "0"; "1"; "1";"15003370"; "13"; "0"; "0"; "0";"16" + "13"; "1";"TILE_ILLUMINATOR_YELLOW" ; "526344"; "0"; "N/A"; "0"; "1"; "1";"16766720"; "13"; "1"; "0"; "0";"16" + "13"; "2";"TILE_ILLUMINATOR_ORANGE" ; "526344"; "0"; "N/A"; "0"; "1"; "1";"16751616"; "13"; "2"; "0"; "0";"16" + "13"; "3";"TILE_ILLUMINATOR_RED" ; "526344"; "0"; "N/A"; "0"; "1"; "1";"15400960"; "13"; "3"; "0"; "0";"16" + "13"; "4";"TILE_ILLUMINATOR_FUCHSIA" ; "526344"; "0"; "N/A"; "0"; "1"; "1";"15401143"; "13"; "4"; "0"; "0";"16" + "13"; "5";"TILE_ILLUMINATOR_PURPLE" ; "526344"; "0"; "N/A"; "0"; "1"; "1";"11993323"; "13"; "5"; "0"; "0";"16" + "13"; "6";"TILE_ILLUMINATOR_BLUE" ; "526344"; "0"; "N/A"; "0"; "1"; "1"; "13311"; "13"; "6"; "0"; "0";"16" + "13"; "7";"TILE_ILLUMINATOR_CYAN" ; "526344"; "0"; "N/A"; "0"; "1"; "1"; "55039"; "13"; "7"; "0"; "0";"16" + "13"; "8";"TILE_ILLUMINATOR_GREEN" ; "526344"; "0"; "N/A"; "0"; "1"; "1"; "3604224"; "13"; "8"; "0"; "0";"16" + "13"; "9";"TILE_ILLUMINATOR_GREEN_DARK"; "526344"; "0"; "N/A"; "0"; "1"; "1"; "2123776"; "13"; "9"; "0"; "0";"16" + "13"; "10";"TILE_ILLUMINATOR_BROWN" ; "526344"; "0"; "N/A"; "0"; "1"; "1"; "5578752"; "13"; "10"; "0"; "0";"16" + "13"; "11";"TILE_ILLUMINATOR_TAN" ; "526344"; "0"; "N/A"; "0"; "1"; "1"; "9857076"; "13"; "11"; "0"; "0";"16" + "13"; "12";"TILE_ILLUMINATOR_GREY_LIGHT"; "526344"; "0"; "N/A"; "0"; "1"; "1";"12434877"; "13"; "12"; "0"; "0";"16" + "13"; "13";"TILE_ILLUMINATOR_GREY_MED" ; "526344"; "0"; "N/A"; "0"; "1"; "1"; "7697781"; "13"; "13"; "0"; "0";"16" + "13"; "14";"TILE_ILLUMINATOR_GREY_DARK" ; "526344"; "0"; "N/A"; "0"; "1"; "1"; "4276545"; "13"; "14"; "0"; "0";"16" + "13"; "15";"TILE_ILLUMINATOR_BLACK" ; "526344"; "0"; "N/A"; "0"; "1"; "1"; "7274751"; "13"; "15"; "0"; "0";"16" + "14"; "0";"TILE_ILLUMINATOR_WHITE" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "0"; "0"; "0";"16" + "14"; "1";"TILE_ILLUMINATOR_YELLOW" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "1"; "0"; "0";"16" + "14"; "2";"TILE_ILLUMINATOR_ORANGE" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "2"; "0"; "0";"16" + "14"; "3";"TILE_ILLUMINATOR_RED" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "3"; "0"; "0";"16" + "14"; "4";"TILE_ILLUMINATOR_FUCHSIA" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "4"; "0"; "0";"16" + "14"; "5";"TILE_ILLUMINATOR_PURPLE" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "5"; "0"; "0";"16" + "14"; "6";"TILE_ILLUMINATOR_BLUE" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "6"; "0"; "0";"16" + "14"; "7";"TILE_ILLUMINATOR_CYAN" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "7"; "0"; "0";"16" + "14"; "8";"TILE_ILLUMINATOR_GREEN" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "8"; "0"; "0";"16" + "14"; "9";"TILE_ILLUMINATOR_GREEN_DARK"; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "9"; "0"; "0";"16" + "14"; "10";"TILE_ILLUMINATOR_BROWN" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "10"; "0"; "0";"16" + "14"; "11";"TILE_ILLUMINATOR_TAN" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "11"; "0"; "0";"16" + "14"; "12";"TILE_ILLUMINATOR_GREY_LIGHT"; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "12"; "0"; "0";"16" + "14"; "13";"TILE_ILLUMINATOR_GREY_MED" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "13"; "0"; "0";"16" + "14"; "14";"TILE_ILLUMINATOR_GREY_DARK" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "14"; "0"; "0";"16" + "14"; "15";"TILE_ILLUMINATOR_BLACK" ; "2105376"; "0"; "N/A"; "0"; "1"; "1"; "0"; "13"; "15"; "0"; "0";"16" + "15"; "0";"TILE_SANDSTONE" ; "2105376"; "25";"1900"; "0"; "1"; "1"; "0"; "15"; "0"; "0"; "0";"16" + "15"; "1";"TILE_SANDSTONE_WHITE" ; "2105376"; "25";"1900"; "0"; "1"; "1"; "0"; "15"; "1"; "0"; "0";"16" + "15"; "2";"TILE_SANDSTONE_RED" ; "2105376"; "25";"1900"; "0"; "1"; "1"; "0"; "15"; "2"; "0"; "0";"16" + "15"; "3";"TILE_SANDSTONE_DESERT" ; "2105376"; "25";"1900"; "0"; "1"; "1"; "0"; "15"; "3"; "0"; "0";"16" + "15"; "4";"TILE_SANDSTONE_BLACK" ; "2105376"; "25";"1900"; "0"; "1"; "1"; "0"; "15"; "4"; "0"; "0";"16" + "15"; "5";"TILE_SANDSTONE_BLACK" ; "2105376"; "25";"1900"; "0"; "1"; "1"; "0"; "15"; "5"; "0"; "0";"16" + "16"; "0";"TILE_LANTERN_IRON_REGULAR" ; "526344"; "0"; "N/A"; "0"; "0"; "0";"16674864"; "16"; "0"; "0"; "0";"16" + "16"; "1";"TILE_SUNSTONE" ; "2105376"; "0"; "N/A"; "0"; "1"; "0"; "0"; "16"; "1"; "0"; "2";"16" + "16"; "2";"TILE_DAYLIGHT_CAPACITOR" ; "2105376"; "0"; "N/A"; "0"; "1"; "0"; "0"; "16"; "2"; "0"; "3";"16" +"254"; "0";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "1";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "2";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "3";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "4";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "5";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "6";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "7";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "8";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "9";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "10";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "11";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "12";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "13";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "14";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"254"; "15";"TILE_LAVA" ;"16316664"; "100";"2600"; "1"; "0"; "0";"12858368"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "0";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "1";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "2";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "3";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "4";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "5";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "6";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "7";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "8";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "9";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "10";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "11";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "12";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "13";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "14";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"255"; "15";"TILE_WATER" ; "1708813"; "100";"1000"; "1"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" +"256"; "0";"TILE_NULL" ; "0"; "-1";"2600"; "0"; "0"; "0"; "0"; "N/A"; "N/A"; "0"; "0";"16" + +## Notes ## + +# Friction: 0: frictionless, <16: slippery, 16: regular, >16: sticky +# Opacity/Lumcolor: 24-bit RGB. Only the light diffusers have a opacity value of ZERO. +# Solid: whether the tile has full collision +# movr: Movement resistance, (walkspeedmax) / (1 + (n/16)), 16 halves movement speed +# dsty: density. As we are putting water an 1000, it is identical to specific gravity. [g/l] +# dlfn: dynamic luminosity function. +# 0-static, 1-torch flicker, 2-current global light (sun, star, moon), 3-daylight at noon, +# 4-slow breath, 5-pulsate + + +## Illuminators ## + +# Illuminator white: RGB(228,238,234), simulation of a halophosphate FL lamp (If you want high CRI lamp, collect a daylight!) +# Defalut torch : L 64 a 51 b 59; real candlelight colour taken from properly configured camera. +# Sunstone: Artificial sunlight, change colour over time in sync with sunlight. The light is set by game's code. +# Sunlight capacitor: daylight at noon. Set by game's code. + + +## Tiles ## + +# 16 colour palette : Old Apple Macintosh 16-colour palette +# Magical ice: theoretical __metallic__ ice that might form under super-high pressure (> 5 TPa). Its density is a wild guess. + + +## References ## + +# * Density of various woods : http://www.engineeringtoolbox.com/wood-density-d_40.html +# * Density of various phases of ice : http://www1.lsbu.ac.uk/water/ice_phases.html \ No newline at end of file diff --git a/src/net/torvald/terrarum/ui/UIPieMenu.kt b/src/net/torvald/terrarum/ui/UIPieMenu.kt index 38c28f8b1..53fafcedd 100644 --- a/src/net/torvald/terrarum/ui/UIPieMenu.kt +++ b/src/net/torvald/terrarum/ui/UIPieMenu.kt @@ -34,7 +34,7 @@ class UIPieMenu : UICanvas { override fun update(gc: GameContainer, delta: Int) { if (selection >= 0) - Terrarum.ingame.player.actorValue[AVKey._PLAYER_QUICKBARSEL] = + Terrarum.ingame.player.actorValue[AVKey.__PLAYER_QUICKBARSEL] = selection % slotCount diff --git a/src/net/torvald/terrarum/ui/UIQuickBar.kt b/src/net/torvald/terrarum/ui/UIQuickBar.kt index 6ec66cecc..6eb790a15 100644 --- a/src/net/torvald/terrarum/ui/UIQuickBar.kt +++ b/src/net/torvald/terrarum/ui/UIQuickBar.kt @@ -24,8 +24,8 @@ class UIQuickBar : UICanvas, MouseControlled { override var handler: UIHandler? = null private var selection: Int - get() = Terrarum.ingame.player.actorValue.getAsInt(AVKey._PLAYER_QUICKBARSEL)!! - set(value) { Terrarum.ingame.player.actorValue[AVKey._PLAYER_QUICKBARSEL] = value } + get() = Terrarum.ingame.player.actorValue.getAsInt(AVKey.__PLAYER_QUICKBARSEL)!! + set(value) { Terrarum.ingame.player.actorValue[AVKey.__PLAYER_QUICKBARSEL] = value } override fun update(gc: GameContainer, delta: Int) { } diff --git a/src/net/torvald/terrarum/weather/WeatherMixer.kt b/src/net/torvald/terrarum/weather/WeatherMixer.kt index bc11f0d4e..360722320 100644 --- a/src/net/torvald/terrarum/weather/WeatherMixer.kt +++ b/src/net/torvald/terrarum/weather/WeatherMixer.kt @@ -7,7 +7,6 @@ import net.torvald.colourutil.ColourUtil import net.torvald.random.HQRNG import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gamemap.WorldTime -import net.torvald.terrarum.mapdrawer.Light10B import org.newdawn.slick.Color import org.newdawn.slick.GameContainer import org.newdawn.slick.Graphics @@ -32,7 +31,7 @@ object WeatherMixer { private var skyBoxCurrent = Rectangle(0f, 0f, Terrarum.WIDTH.toFloat(), Terrarum.HEIGHT.toFloat()) private var skyBoxNext = Rectangle(0f, 0f, Terrarum.WIDTH.toFloat(), Terrarum.HEIGHT.toFloat()) - val globalLightNow = Light10B(0) + val globalLightNow = Color(0) // Weather indices const val WEATHER_GENERIC = "generic" @@ -91,11 +90,14 @@ object WeatherMixer { g.fill(skyBoxCurrent, skyColourFill) // calculate global light - globalLightNow.fromSlickColor(getGradientColour(lightColourMap, 0, timeNow)) + val gradCol = getGradientColour(lightColourMap, 0, timeNow) + globalLightNow.r = gradCol.r + globalLightNow.g = gradCol.g + globalLightNow.b = gradCol.b } - fun getGlobalLightOfTime(timeInSec: Int): Light10B = - Light10B(getGradientColour(currentWeather.globalLightColourMap, 0, timeInSec)) + fun getGlobalLightOfTime(timeInSec: Int): Color = + getGradientColour(currentWeather.globalLightColourMap, 0, timeInSec) fun getGradientColour(image: Image, row: Int, timeInSec: Int): Color { val dataPointDistance = WorldTime.DAY_LENGTH / image.width