this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #2096 from AlecTroemel/1940-wren-music

add function definitions for music args count 4 through 7

authored by

Vadim Grigoruk and committed by
GitHub
c0b8d4e8 9a25f20a

+50 -44
+50 -44
src/api/wren.c
··· 115 115 foreign static music()\n\ 116 116 foreign static music(track)\n\ 117 117 foreign static music(track, frame)\n\ 118 - foreign static music(track, frame, loop)\n\ 119 - foreign static music(track, frame, loop, sustain)\n\ 118 + foreign static music(track, frame, row)\n\ 119 + foreign static music(track, frame, row, loop)\n\ 120 + foreign static music(track, frame, row, loop, sustain)\n\ 121 + foreign static music(track, frame, row, loop, sustain, tempo)\n\ 122 + foreign static music(track, frame, row, loop, sustain, tempo, speed)\n\ 120 123 foreign static time()\n\ 121 124 foreign static tstamp()\n\ 122 125 foreign static vbank()\n\ ··· 216 219 { 217 220 tic_core* core = (tic_core*)tic; 218 221 if(core->currentVM) 219 - { 222 + { 220 223 // release handles 221 224 if (loaded) 222 225 { ··· 227 230 wrenReleaseHandle(core->currentVM, border_handle); 228 231 wrenReleaseHandle(core->currentVM, menu_handle); 229 232 wrenReleaseHandle(core->currentVM, overline_handle); 230 - if (game_class != NULL) 233 + if (game_class != NULL) 231 234 { 232 235 wrenReleaseHandle(core->currentVM, game_class); 233 236 } ··· 261 264 { 262 265 s32 index = getWrenNumber(vm, 1); 263 266 264 - if(index < 0 || index >= TIC_MAP_WIDTH * TIC_MAP_HEIGHT) 267 + if(index < 0 || index >= TIC_MAP_WIDTH * TIC_MAP_HEIGHT) 265 268 { 266 269 wrenSetSlotDouble(vm, 0, 0); 267 270 return; ··· 292 295 bool pressed = tic_api_btn(tic, getWrenNumber(vm, 1) & 0x1f); 293 296 wrenSetSlotBool(vm, 0, pressed); 294 297 } 295 - 298 + 296 299 } 297 300 298 301 static void wren_btnp(WrenVM* vm) 299 - { 302 + { 300 303 tic_core* core = getWrenCore(vm); 301 304 tic_mem* tic = (tic_mem*)core; 302 305 ··· 519 522 } 520 523 521 524 static void wren_spr(WrenVM* vm) 522 - { 525 + { 523 526 s32 top = wrenGetSlotCount(vm); 524 527 525 528 s32 index = 0; ··· 533 536 static u8 colors[TIC_PALETTE_SIZE]; 534 537 s32 count = 0; 535 538 536 - if(top > 1) 539 + if(top > 1) 537 540 { 538 541 index = getWrenNumber(vm, 1); 539 542 ··· 562 565 } 563 566 } 564 567 } 565 - else 568 + else 566 569 { 567 570 colors[0] = getWrenNumber(vm, 4); 568 571 count = 1; ··· 597 600 tic_api_spr(tic, index, x, y, w, h, colors, count, scale, flip, rotate); 598 601 } 599 602 600 - static void wren_spr_internal(WrenVM* vm) 601 - { 603 + static void wren_spr_internal(WrenVM* vm) 604 + { 602 605 s32 top = wrenGetSlotCount(vm); 603 606 604 607 s32 index = getWrenNumber(vm, 1); ··· 607 610 608 611 static u8 colors[TIC_PALETTE_SIZE]; 609 612 s32 count = 0; 610 - 613 + 611 614 if(isList(vm, 4)) 612 615 { 613 616 wrenEnsureSlots(vm, top+1); ··· 626 629 } 627 630 } 628 631 } 629 - else 632 + else 630 633 { 631 634 colors[0] = getWrenNumber(vm, 4); 632 635 count = 1; ··· 655 658 656 659 s32 top = wrenGetSlotCount(vm); 657 660 658 - if(top > 2) 661 + if(top > 2) 659 662 { 660 663 x = getWrenNumber(vm, 1); 661 664 y = getWrenNumber(vm, 2); ··· 690 693 } 691 694 } 692 695 } 693 - else 696 + else 694 697 { 695 698 colors[0] = getWrenNumber(vm, 7); 696 699 count = 1; ··· 722 725 } 723 726 724 727 static void wren_mget(WrenVM* vm) 725 - { 728 + { 726 729 s32 x = getWrenNumber(vm, 1); 727 730 s32 y = getWrenNumber(vm, 2); 728 731 ··· 732 735 wrenSetSlotDouble(vm, 0, value); 733 736 } 734 737 735 - static struct 738 + static struct 736 739 { 737 740 float z[3]; 738 741 bool on; ··· 775 778 src = getWrenNumber(vm, 13); 776 779 } 777 780 778 - // check for chroma 781 + // check for chroma 779 782 if(isList(vm, 14)) 780 783 { 781 784 wrenEnsureSlots(vm, top+1); ··· 794 797 } 795 798 } 796 799 } 797 - else 800 + else 798 801 { 799 802 colors[0] = getWrenNumber(vm, 14); 800 803 count = 1; 801 804 } 802 805 803 - tic_api_ttri(tic, 806 + tic_api_ttri(tic, 804 807 pt[0], pt[1], // xy 1 805 808 pt[2], pt[3], // xy 2 806 809 pt[4], pt[5], // xy 3 ··· 817 820 818 821 s32 x = getWrenNumber(vm, 1); 819 822 s32 y = getWrenNumber(vm, 2); 820 - 823 + 821 824 tic_mem* tic = (tic_mem*)getWrenCore(vm); 822 825 823 826 if(top > 3) ··· 921 924 } 922 925 923 926 static void wren_tri(WrenVM* vm) 924 - { 927 + { 925 928 float pt[6]; 926 929 927 930 for(s32 i = 0; i < COUNT_OF(pt); i++) 928 931 { 929 932 pt[i] = (float)wrenGetSlotDouble(vm, i + 1); 930 933 } 931 - 934 + 932 935 s32 color = getWrenNumber(vm, 7); 933 936 934 937 tic_mem* tic = (tic_mem*)getWrenCore(vm); ··· 937 940 } 938 941 939 942 static void wren_trib(WrenVM* vm) 940 - { 943 + { 941 944 float pt[6]; 942 945 943 946 for(s32 i = 0; i < COUNT_OF(pt); i++) 944 947 { 945 948 pt[i] = (float)wrenGetSlotDouble(vm, i + 1); 946 949 } 947 - 950 + 948 951 s32 color = getWrenNumber(vm, 7); 949 952 950 953 tic_mem* tic = (tic_mem*)getWrenCore(vm); ··· 970 973 if(top == 1) 971 974 { 972 975 tic_api_clip(tic, 0, 0, TIC80_WIDTH, TIC80_HEIGHT); 973 - } 974 - else 976 + } 977 + else 975 978 { 976 979 s32 x = getWrenNumber(vm, 1); 977 980 s32 y = getWrenNumber(vm, 2); ··· 1168 1171 { 1169 1172 wrenGetListElement(vm, 5, i, top); 1170 1173 if(isNumber(vm, top)) 1171 - volumes[i] = getWrenNumber(vm, top); 1174 + volumes[i] = getWrenNumber(vm, top); 1172 1175 } 1173 1176 } 1174 1177 else volumes[0] = volumes[1] = getWrenNumber(vm, 5); ··· 1178 1181 speed = getWrenNumber(vm, 6); 1179 1182 } 1180 1183 } 1181 - } 1184 + } 1182 1185 } 1183 1186 } 1184 1187 1185 1188 if (channel >= 0 && channel < TIC_SOUND_CHANNELS) 1186 1189 { 1187 1190 tic_api_sfx(tic, index, note, octave, duration, channel, volumes[0] & 0xf, volumes[1] & 0xf, speed); 1188 - } 1191 + } 1189 1192 else wrenError(vm, "unknown channel\n"); 1190 1193 } 1191 1194 else wrenError(vm, "unknown sfx index\n"); ··· 1194 1197 static void wren_music(WrenVM* vm) 1195 1198 { 1196 1199 s32 top = wrenGetSlotCount(vm); 1197 - 1200 + 1198 1201 tic_mem* tic = (tic_mem*)getWrenCore(vm); 1199 1202 1200 1203 s32 track = -1; ··· 1252 1255 static void wren_time(WrenVM* vm) 1253 1256 { 1254 1257 tic_mem* tic = (tic_mem*)getWrenCore(vm); 1255 - 1258 + 1256 1259 wrenSetSlotDouble(vm, 0, tic_api_time(tic)); 1257 1260 } 1258 1261 ··· 1447 1450 if (strcmp(signature, "static TIC.music(_,_)" ) == 0) return wren_music; 1448 1451 if (strcmp(signature, "static TIC.music(_,_,_)" ) == 0) return wren_music; 1449 1452 if (strcmp(signature, "static TIC.music(_,_,_,_)" ) == 0) return wren_music; 1453 + if (strcmp(signature, "static TIC.music(_,_,_,_,_)" ) == 0) return wren_music; 1454 + if (strcmp(signature, "static TIC.music(_,_,_,_,_,_)" ) == 0) return wren_music; 1455 + if (strcmp(signature, "static TIC.music(_,_,_,_,_,_,_)" ) == 0) return wren_music; 1450 1456 1451 1457 if (strcmp(signature, "static TIC.time()" ) == 0) return wren_time; 1452 1458 if (strcmp(signature, "static TIC.tstamp()" ) == 0) return wren_tstamp; ··· 1476 1482 static WrenForeignMethodFn bindForeignMethod( 1477 1483 WrenVM* vm, const char* module, const char* className, 1478 1484 bool isStatic, const char* signature) 1479 - { 1485 + { 1480 1486 if (strcmp(module, "main") != 0) return NULL; 1481 1487 1482 1488 // For convenience, concatenate all of the method qualifiers into a single signature string. 1483 1489 char fullName[256]; 1484 1490 fullName[0] = '\0'; 1485 - if (isStatic) 1491 + if (isStatic) 1486 1492 { 1487 1493 strcat(fullName, "static "); 1488 1494 } ··· 1499 1505 wrenSetUserData(core->currentVM, core); 1500 1506 1501 1507 if (wrenInterpret(core->currentVM, "main", tic_wren_api) != WREN_RESULT_SUCCESS) 1502 - { 1508 + { 1503 1509 core->data->error(core->data->data, "can't load TIC wren api"); 1504 1510 } 1505 1511 } ··· 1520 1526 core->data->error(core->data->data, buffer); 1521 1527 } 1522 1528 1523 - static void writeFn(WrenVM* vm, const char* text) 1529 + static void writeFn(WrenVM* vm, const char* text) 1524 1530 { 1525 1531 tic_core* core = getWrenCore(vm); 1526 1532 u8 color = tic_color_dark_blue; ··· 1532 1538 tic_core* core = (tic_core*)tic; 1533 1539 closeWren(tic); 1534 1540 1535 - WrenConfiguration config; 1541 + WrenConfiguration config; 1536 1542 wrenInitConfiguration(&config); 1537 1543 1538 1544 config.bindForeignMethodFn = bindForeignMethod; ··· 1543 1549 WrenVM* vm = core->currentVM = wrenNewVM(&config); 1544 1550 1545 1551 initAPI(core); 1546 - 1552 + 1547 1553 if (wrenInterpret(core->currentVM, "main", code) != WREN_RESULT_SUCCESS) 1548 1554 { 1549 1555 return false; ··· 1554 1560 // make handles 1555 1561 wrenEnsureSlots(vm, 1); 1556 1562 wrenGetVariable(vm, "main", "Game", 0); 1557 - game_class = wrenGetSlotHandle(vm, 0); // handle from game class 1563 + game_class = wrenGetSlotHandle(vm, 0); // handle from game class 1558 1564 1559 1565 new_handle = wrenMakeCallHandle(vm, "new()"); 1560 1566 update_handle = wrenMakeCallHandle(vm, TIC_FN "()"); ··· 1572 1578 wrenCall(vm, new_handle); 1573 1579 wrenReleaseHandle(core->currentVM, game_class); // release game class handle 1574 1580 game_class = NULL; 1575 - if (wrenGetSlotCount(vm) == 0) 1581 + if (wrenGetSlotCount(vm) == 0) 1576 1582 { 1577 1583 core->data->error(core->data->data, "Error in game class :("); 1578 1584 return false; 1579 1585 } 1580 - game_class = wrenGetSlotHandle(vm, 0); // handle from game object 1586 + game_class = wrenGetSlotHandle(vm, 0); // handle from game object 1581 1587 } else { 1582 - core->data->error(core->data->data, "'Game class' isn't found :("); 1588 + core->data->error(core->data->data, "'Game class' isn't found :("); 1583 1589 return false; 1584 1590 } 1585 1591 ··· 1727 1733 wrenInterpret(core->currentVM, "main", code); 1728 1734 } 1729 1735 1730 - tic_script_config WrenSyntaxConfig = 1736 + tic_script_config WrenSyntaxConfig = 1731 1737 { 1732 1738 .id = 16, 1733 1739 .name = "wren",