Guest User

Untitled

a guest
Jun 16th, 2018
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.30 KB | None | 0 0
  1. #TouhouDanmakufu[Package]
  2. #Title["Heart's EverLasting Lunacy"]
  3. #Text["Package"]
  4. #include "./lib_sound.dnh"
  5. let titleImg;
  6. let titleImg1;
  7. let objTitleText;
  8. let titleShine;
  9. let k1;
  10. let k2;
  11. let k3;
  12. let k4;
  13. let k5;
  14. let CSD = GetCurrentScriptDirectory;
  15. let mask;
  16. let line;
  17. let line1;
  18. let Reimu;
  19. let canvas;
  20. let text;
  21.  
  22. let stageCounter = 1;
  23.  
  24. let TitleIndex = 1;
  25. let fixTitleIndex = 0;
  26. let restriction = 1;
  27.  
  28. let titleSceneIndex = 1;
  29.  
  30. let selectIndex = 0;
  31.  
  32. function wait(n){
  33. loop(n){yield;}
  34. }
  35.  
  36. function rand_int(min, max){
  37. return round(rand(min, max))
  38. }
  39.  
  40. @Initialize{
  41. TTitle;
  42. }
  43.  
  44. @MainLoop{
  45. yield;
  46. }
  47.  
  48. @Finalize{
  49.  
  50. }
  51.  
  52. task TTitle{
  53. text = ObjText_Create;
  54. ObjText_SetText(text, GetCommonData("TDBGClose", 2));
  55. let pathImg = CSD ~ "images/Title1.png";
  56.  
  57. mask = ObjMask_Create("example_mask", 21, 21);
  58. ObjRender_SetAlpha(mask, 0);
  59. canvas = ObjPrim_Create(OBJ_SPRITE_2D);
  60. ObjPrim_SetTexture(canvas, GetCurrentScriptDirectory() ~ "white.png"); // white pixel
  61. ObjSprite2D_SetSourceRect(canvas, 0, 0, 1024, 512); // 1024x512 is render target size
  62. ObjSprite2D_SetDestRect(canvas, 0, 0, 1024, 512);
  63. ObjMask_AddSource(mask, canvas);
  64. Shader;
  65.  
  66. titleImg = ObjPrim_Create(OBJ_SPRITE_2D);
  67. Obj_SetRenderPriorityI(titleImg, 21);
  68. ObjPrim_SetTexture(titleImg, pathImg);
  69. ObjSprite2D_SetSourceRect(titleImg, 0, 0, 1280, 960);
  70. ObjSprite2D_SetDestRect(titleImg, 0, 0, 640, 480);
  71.  
  72. titleImg1 = ObjPrim_Create(OBJ_SPRITE_2D);
  73. Obj_SetRenderPriorityI(titleImg1, 20);
  74. ObjPrim_SetTexture(titleImg1, pathImg);
  75. ObjSprite2D_SetSourceRect(titleImg1, 0, 0, 1280, 960);
  76. ObjSprite2D_SetDestRect(titleImg1, 0, 0, 640, 480);
  77. ObjRender_SetBlendType(titleImg1, BLEND_ADD_ARGB);
  78.  
  79. Reimu = ObjPrim_Create(OBJ_SPRITE_2D);
  80. Obj_SetRenderPriorityI(Reimu, 22);
  81. ObjPrim_SetTexture(Reimu, GetCurrentScriptDirectory() ~ "images/Reimu.png");
  82. ObjSprite2D_SetSourceRect(Reimu, 0, 0, 432, 735);
  83. ObjSprite2D_SetDestCenter(Reimu);
  84. ObjRender_SetScaleXYZ(Reimu, 0.45, 0.45, 0.45);
  85. ObjRender_SetPosition(Reimu, 97, 315, 0);
  86. Slide(Reimu);
  87.  
  88. objTitleText = ObjPrim_Create(OBJ_SPRITE_2D);
  89. ObjPrim_SetTexture(objTitleText, GetCurrentScriptDirectory ~ "images/TitleName.png");
  90. ObjSprite2D_SetSourceRect(objTitleText, 1025, 0, 2048, 1024);
  91. ObjSprite2D_SetDestCenter(objTitleText);
  92. ObjRender_SetScaleXYZ(objTitleText, 0.35, 0.35, 0);
  93. ObjRender_SetPosition(objTitleText, 200, 200, 0);
  94. Obj_SetRenderPriorityI(objTitleText, 20);
  95. Appear(objTitleText);
  96.  
  97. k1 = ObjPrim_Create(OBJ_SPRITE_2D);
  98. Obj_SetRenderPriorityI(k1, 22);
  99. ObjPrim_SetTexture(k1, GetCurrentScriptDirectory ~ "images/k1.png");
  100. ObjSprite2D_SetSourceRect(k1, 0, 0, 256, 256);
  101. ObjSprite2D_SetDestCenter(k1);
  102. ObjRender_SetPosition(k1, GetScreenWidth/2 + 20, GetScreenHeight/2 - 100, 0);
  103. ObjRender_SetScaleXYZ(k1, 0.35, 0.35, 0.35);
  104. Spin(k1);
  105. wait(10);
  106.  
  107. k2 = ObjPrim_Create(OBJ_SPRITE_2D);
  108. Obj_SetRenderPriorityI(k2, 22);
  109. ObjPrim_SetTexture(k2, GetCurrentScriptDirectory ~ "images/k2.png");
  110. ObjSprite2D_SetSourceRect(k2, 0, 0, 256, 256);
  111. ObjSprite2D_SetDestCenter(k2);
  112. ObjRender_SetPosition(k2, GetScreenWidth/2 + 50, GetScreenHeight/2 - 20, 0);
  113. ObjRender_SetScaleXYZ(k2, 0.35, 0.35, 0.35);
  114. Spin(k2);
  115. wait(10);
  116.  
  117. k3 = ObjPrim_Create(OBJ_SPRITE_2D);
  118. Obj_SetRenderPriorityI(k3, 22);
  119. ObjPrim_SetTexture(k3, GetCurrentScriptDirectory ~ "images/k3.png");
  120. ObjSprite2D_SetSourceRect(k3, 0, 0, 256, 256);
  121. ObjSprite2D_SetDestCenter(k3);
  122. ObjRender_SetPosition(k3, GetScreenWidth/2 - 20, GetScreenHeight/2 + 30, 0);
  123. ObjRender_SetScaleXYZ(k3, 0.35, 0.35, 0.35);
  124. Spin(k3);
  125. wait(10);
  126.  
  127. k4 = ObjPrim_Create(OBJ_SPRITE_2D);
  128. Obj_SetRenderPriorityI(k4, 22);
  129. ObjPrim_SetTexture(k4, GetCurrentScriptDirectory ~ "images/k4.png");
  130. ObjSprite2D_SetSourceRect(k4, 0, 0, 256, 256);
  131. ObjSprite2D_SetDestCenter(k4);
  132. ObjRender_SetPosition(k4, GetScreenWidth/2 + 50, GetScreenHeight/2 + 100, 0);
  133. ObjRender_SetScaleXYZ(k4, 0.35, 0.35, 0.35);
  134. Spin(k4);
  135.  
  136. MainMenu;
  137. wait(10);
  138.  
  139. k5 = ObjPrim_Create(OBJ_SPRITE_2D);
  140. Obj_SetRenderPriorityI(k5, 22);
  141. ObjPrim_SetTexture(k5, GetCurrentScriptDirectory ~ "images/k5.png");
  142. ObjSprite2D_SetSourceRect(k5, 0, 0, 256, 256);
  143. ObjSprite2D_SetDestCenter(k5);
  144. ObjRender_SetPosition(k5, GetScreenWidth/2, GetScreenHeight/2 + 190, 0);
  145. ObjRender_SetScaleXYZ(k5, 0.35, 0.35, 0.35);
  146. Spin(k5);
  147.  
  148. task Slide(obj){
  149. ObjRender_SetPosition(obj, 47, 315, 0);
  150. ObjRender_SetAlpha(obj, 0);
  151. let X = 27;
  152. let alp = 0;
  153. loop(30){
  154. X += 70/60;
  155. alp += 255/30;
  156. ObjRender_SetX(obj, X);
  157. ObjRender_SetAlpha(obj, alp);
  158. yield;
  159. }
  160. loop(30){
  161. X += 70/60;
  162. ObjRender_SetX(obj, X);
  163. yield;
  164. }
  165. }
  166.  
  167. task Spin(obj){
  168. ObjRender_SetScaleXYZ(obj, 2, 2, 2);
  169. ObjRender_SetAlpha(obj, 0);
  170. let alp = 0;
  171. let scale = 2;
  172. let angleZ = 0;
  173. let r = [-1, 1][rand_int(0, 1)];
  174. loop(45){
  175. alp += 255/45;
  176. scale -= 1.65/45;
  177. angleZ += 8*r;
  178. ObjRender_SetAngleZ(obj, angleZ);
  179. ObjRender_SetScaleXYZ(obj, scale, scale, 0);
  180. ObjRender_SetAlpha(obj, alp);
  181. yield;
  182. }
  183. }
  184.  
  185. task Appear(obj){
  186. line = ObjPrim_Create(OBJ_SPRITE_2D);
  187. Obj_SetRenderPriorityI(line, 20);
  188. ObjPrim_SetTexture(line, GetCurrentScriptDirectory ~ "images/outline.png");
  189. ObjSprite2D_SetSourceRect(line, 0, 0, 128, 1024);
  190. ObjSprite2D_SetDestCenter(line);
  191. ObjRender_SetScaleXYZ(line, 0.25, 0.25, 0);
  192. ObjRender_SetY(line, 150);
  193. ObjRender_SetBlendType(line, BLEND_ADD_ARGB);
  194. line1 = ObjPrim_Create(OBJ_SPRITE_2D);
  195. Obj_SetRenderPriorityI(line1, 20);
  196. ObjPrim_SetTexture(line1, GetCurrentScriptDirectory ~ "images/outline1.png");
  197. ObjSprite2D_SetSourceRect(line1, 0, 0, 128, 1024);
  198. ObjSprite2D_SetDestCenter(line1);
  199. ObjRender_SetScaleXYZ(line1, 0.25, 0.25, 0);
  200. ObjRender_SetY(line1, 150);
  201. ObjRender_SetBlendType(line1, BLEND_ADD_ARGB);
  202. let r = 0;
  203. let X = ObjRender_GetX(obj) - (1024*0.35);
  204. let X1 = X + 179; //1024 multiplied by 0.35 and then divided by 2. Former gets scale in X, latter finds the scale of each side(right and left)
  205. loop(90){
  206. r += 1024/90;
  207. X += (1024*0.35)/90;
  208. X1 += (1024*0.35)/90;
  209. ObjSprite2D_SetSourceRect(obj, 1025 + r, 0, 2048 + r, 1024);
  210. ObjRender_SetX(obj, X);
  211. ObjRender_SetX(line, X1);
  212. ObjRender_SetX(line1, X1);
  213. yield;
  214. }
  215. }
  216. }
  217.  
  218. task TMenuItem1(Index, X, Y, text, ind, reqIndex){
  219. let objText = CreateTextObject(X, Y, text);
  220. let objSelect = CreateTextObject(X, Y, text);
  221. ObjRender_SetBlendType(objSelect, BLEND_ADD_RGB);
  222. while(reqIndex == TitleIndex){
  223. Obj_SetVisible(objSelect, Index == selectIndex);
  224. yield;
  225. }
  226. Obj_Delete(objText);
  227. Obj_Delete(objSelect);
  228.  
  229.  
  230. function CreateTextObject(X, Y, text){
  231. let obj = ObjText_Create();
  232. ObjText_SetText(obj, text);
  233. ObjText_SetFontSize(obj, 30);
  234. ObjText_SetFontBold(obj, true);
  235. ObjText_SetFontColorTop(obj, 128, 128, 255);
  236. ObjText_SetFontColorBottom(obj, 64, 64, 255);
  237. ObjText_SetFontBorderType(obj, BORDER_FULL);
  238. ObjText_SetFontType(obj, "Vijaya");
  239. ObjText_SetFontBorderColor(obj,255, 255, 255);
  240. ObjText_SetFontBorderWidth(obj, 2);
  241. Obj_SetRenderPriorityI(obj, 30);
  242. ObjRender_SetX(obj, X);
  243. ObjRender_SetY(obj, Y);
  244. return obj;
  245. }
  246. }
  247.  
  248. task TMenuItem(Index, X, Y, ind, reqIndex, angleT){
  249. let l = 257;
  250. let r = 512;
  251. let obj = ObjPrim_Create(OBJ_SPRITE_2D);
  252. ObjPrim_SetTexture(obj, GetCurrentScriptDirectory ~ "images/TitleItems.png");
  253. ObjSprite2D_SetSourceRect(obj, l, 1 + 64*Index, r, 64 + 64*Index);
  254. ObjSprite2D_SetDestCenter(obj);
  255. ObjRender_SetScaleXYZ(obj, 0.6, 0.6, 0);
  256. ObjRender_SetPosition(obj, X + 300*cos(angleT), Y + 300*sin(angleT), 0);
  257.  
  258. let obj1 = ObjPrim_Create(OBJ_SPRITE_2D);
  259. ObjPrim_SetTexture(obj1, GetCurrentScriptDirectory ~ "images/TitleItems.png");
  260. ObjSprite2D_SetSourceRect(obj1, l - 256, 1 + 64*Index, r - 256, 64 + 64*Index);
  261. ObjSprite2D_SetDestCenter(obj1);
  262. ObjRender_SetScaleXYZ(obj1, 0.6, 0.6, 0);
  263. ObjRender_SetPosition(obj1, X + 300*cos(angleT), Y + 300*sin(angleT), 0);
  264. Obj_SetVisible(obj1, Index == selectIndex);
  265.  
  266. ObjRender_SetBlendType(obj1, BLEND_ADD_ARGB);
  267. let alp = 0;
  268. ObjRender_SetX(obj, ObjRender_GetX(obj) + 200);
  269. ObjRender_SetX(obj1, ObjRender_GetX(obj1) + 200);
  270. loop(20){
  271. alp += 255/20;
  272. ObjRender_SetAlpha(obj, alp);
  273. ObjRender_SetX(obj, ObjRender_GetX(obj) - 200/20);
  274. ObjRender_SetX(obj1, ObjRender_GetX(obj1) - 200/20);
  275. yield;
  276. }
  277. while(reqIndex == TitleIndex){
  278. Obj_SetVisible(obj1, Index == selectIndex);
  279. yield;
  280. }
  281. Obj_Delete(obj);
  282. Obj_Delete(obj1);
  283. }
  284.  
  285. task MainMenu{
  286. let pathImg = CSD ~ "images/TitleItems.png";
  287.  
  288. let INDEX_START = 0;
  289. let INDEX_EXTRA = 1;
  290. let INDEX_PRACTICE = 2;
  291. let INDEX_REPLAY = 3;
  292. let INDEX_DATA = 4;
  293. let INDEX_MUSIC = 5;
  294. let INDEX_OPTION = 6;
  295. let INDEX_MANUAL = 7;
  296. let INDEX_QUIT = 8;
  297. selectIndex = 0;
  298.  
  299. let X = 250;
  300. let Y = 300;
  301. let elementCount = 9;
  302.  
  303. let i = 0;
  304. let angleT = -30;
  305. loop(9){
  306. TMenuItem(i, X, Y, 1, 1, angleT);
  307. i ++;
  308. angleT += 60/8;
  309. }
  310.  
  311. wait(20);
  312.  
  313. while(GetVirtualKeyState(VK_OK) != KEY_FREE){yield;}
  314.  
  315. let frameKeyHold = 0;
  316. while(TitleIndex == 1){
  317. if(GetVirtualKeyState(VK_OK) == KEY_PUSH){
  318. ok0(40);
  319. if(selectIndex == INDEX_START){
  320. TitleIndex = 2;
  321. titleSceneIndex ++;
  322. DifficultyMenu;
  323. break;
  324. }else if(selectIndex == INDEX_QUIT){
  325. ClosePackage();
  326. }
  327. }
  328.  
  329. if(GetVirtualKeyState(VK_CANCEL) == KEY_PUSH){
  330. selectIndex = INDEX_QUIT;
  331. cancel0(35);
  332. }
  333.  
  334. if(GetVirtualKeyState(VK_UP) == KEY_PUSH){
  335. select0(30);
  336. selectIndex--;
  337. if(selectIndex == 1 && GetCommonData("Extra", 0) == 0){
  338. selectIndex --;
  339. }
  340. }else if(GetVirtualKeyState(VK_DOWN) == KEY_PUSH){
  341. select0(30);
  342. selectIndex++;
  343. if(selectIndex == 1 && GetCommonData("Extra", 0) == 0){
  344. selectIndex ++;
  345. }
  346. }else if(GetVirtualKeyState(VK_UP) == KEY_HOLD){
  347. frameKeyHold++;
  348. if(frameKeyHold == 30 || (frameKeyHold > 30 && (frameKeyHold % 10 == 0))){
  349. select0(30);
  350. selectIndex--;
  351. if(selectIndex == 1 && GetCommonData("Extra", 0) == 0){
  352. selectIndex --;
  353. }
  354. }
  355. }else if(GetVirtualKeyState(VK_DOWN) == KEY_HOLD){
  356. frameKeyHold++;
  357. if(frameKeyHold == 30 || (frameKeyHold > 30 && (frameKeyHold % 10 == 0))){
  358. select0(30);
  359. selectIndex++;
  360. if(selectIndex == 1 && GetCommonData("Extra", 0) == 0){
  361. selectIndex ++;
  362. }
  363. }
  364. }else{
  365. frameKeyHold = 0;
  366. }
  367.  
  368. if(0 > selectIndex){
  369. selectIndex = elementCount - 1;
  370. }else{
  371. selectIndex %= elementCount;
  372. }
  373.  
  374. yield;
  375. }
  376. }
  377.  
  378. task DifficultyMenu{
  379. let Easy = 0;
  380. let Normal = 1;
  381. let Hard = 2;
  382. let Lunatic = 3;
  383. let Back = 4;
  384. selectIndex = 1;
  385.  
  386. let diffText = ["Easy", "Normal", "Hard", "Lunatic", "Back"];
  387. let elementCount = length(diffText);
  388.  
  389. let X = 450;
  390. let Y = 240;
  391.  
  392. ascent(i in 0..elementCount){
  393. TMenuItem1(i, X, Y, diffText[i], 2, 2);
  394. Y += 40;
  395. }
  396.  
  397. while(GetVirtualKeyState(VK_OK) != KEY_FREE){yield;}
  398.  
  399. let frameKeyHold = 0;
  400. CreateCommonDataArea("Difficulty");
  401. SaveCommonDataAreaA2("Difficulty", "./CDarea.dnh");
  402. while(TitleIndex == 2){
  403. if(GetVirtualKeyState(VK_OK) == KEY_PUSH && 4 > selectIndex){
  404. if(selectIndex == 0){
  405. SetAreaCommonData("Difficulty", "diff", 0);
  406. SaveCommonDataAreaA2("Difficulty", "./CDarea.dnh");
  407. }else if(selectIndex == 1){
  408. SetAreaCommonData("Difficulty", "diff", 1);
  409. SaveCommonDataAreaA2("Difficulty", "./CDarea.dnh");
  410. }else if(selectIndex == 2){
  411. SetAreaCommonData("Difficulty", "diff", 2);
  412. SaveCommonDataAreaA2("Difficulty", "./CDarea.dnh");
  413. }else if(selectIndex == 3){
  414. SetAreaCommonData("Difficulty", "diff", 3);
  415. SaveCommonDataAreaA2("Difficulty", "./CDarea.dnh");
  416. }
  417. TStageScene("");
  418. TitleIndex = 0;
  419. Obj_Delete(titleImg);
  420. Obj_Delete(titleImg1);
  421. Obj_Delete(objTitleText);
  422. Obj_Delete(k1);
  423. Obj_Delete(k2);
  424. Obj_Delete(k3);
  425. Obj_Delete(k4);
  426. Obj_Delete(k5);
  427. Obj_Delete(line);
  428. Obj_Delete(line1);
  429. Obj_Delete(mask);
  430. Obj_Delete(Reimu);
  431. Obj_Delete(canvas);
  432. }
  433.  
  434. if(GetVirtualKeyState(VK_OK) == KEY_PUSH){
  435. if(selectIndex == 4){
  436. titleSceneIndex = 1;
  437. TitleIndex = 1;
  438. MainMenu;
  439. }
  440. }
  441.  
  442. if(GetVirtualKeyState(VK_CANCEL) == KEY_PUSH){
  443. selectIndex = 4;
  444. }
  445.  
  446. if(GetVirtualKeyState(VK_UP) == KEY_PUSH){
  447. selectIndex--;
  448. }else if(GetVirtualKeyState(VK_DOWN) == KEY_PUSH){
  449. selectIndex++;
  450. }else if(GetVirtualKeyState(VK_UP) == KEY_HOLD){
  451. frameKeyHold++;
  452. if(frameKeyHold == 30 || (frameKeyHold > 30 && (frameKeyHold % 10 == 0))){
  453. selectIndex--;
  454. }
  455. }else if(GetVirtualKeyState(VK_DOWN) == KEY_HOLD){
  456. frameKeyHold++;
  457. if(frameKeyHold == 30 || (frameKeyHold > 30 && (frameKeyHold % 10 == 0))){
  458. selectIndex++;
  459. }
  460. }else{
  461. frameKeyHold = 0;
  462. }
  463.  
  464. if(0 > selectIndex){
  465. selectIndex = elementCount - 1;
  466. }else{
  467. selectIndex %= elementCount;
  468. }
  469. yield;
  470. }
  471. }
  472.  
  473. function RenderSceneToTransitionTexture(){
  474. let textureName = GetTransitionRenderTargetName();
  475. RenderToTextureA1(textureName, 0, 100, true);
  476. }
  477.  
  478. task TTransition{
  479. let textureName = GetTransitionRenderTargetName();
  480.  
  481. let objImage = ObjPrim_Create(OBJ_SPRITE_2D);
  482. Obj_SetRenderPriorityI(objImage, 100);
  483. ObjPrim_SetTexture(objImage, textureName);
  484. ObjSprite2D_SetSourceRect(objImage, 0, 0, 640, 480);
  485. ObjSprite2D_SetDestRect(objImage, 0, 0, 640, 480);
  486.  
  487. let alpha = 255;
  488. while(alpha > 0){
  489. ObjRender_SetAlpha(objImage, alpha);
  490. alpha -= 16;
  491. yield;
  492. }
  493. Obj_Delete(objImage);
  494. }
  495.  
  496. function ObjMask_Create(texture_name, layer_min, layer_max){
  497. // Set up render target
  498. CreateRenderTarget(texture_name);
  499.  
  500. // Set up shader
  501. let obj = ObjShader_Create();
  502. ObjShader_SetShaderF(obj, GetCurrentScriptDirectory() ~ "SamplePS02_HLSL.dnh");
  503. ObjShader_SetTechnique(obj, "TecMask");
  504. ObjShader_SetTexture(obj, "textureMask_", texture_name);
  505. SetShaderI(obj, layer_min, layer_max);
  506.  
  507. Obj_SetValue(obj, "MASK_CONTENTS", []);
  508.  
  509. task run(){
  510. while(!Obj_IsDeleted(obj)){
  511. let contents = Obj_GetValueD(obj, "MASK_CONTENTS", []);
  512. // Remove any deleted objects from list
  513. contents = remove_deleted_objs(contents);
  514.  
  515. ascent(i in 0..length(contents)){
  516. // Make visible when drawing to render target
  517. //Obj_SetVisible(contents[i], true);
  518. Obj_SetVisible(contents[i], false);
  519. RenderToTextureB1(texture_name, contents[i], (i==0));
  520. // Otherwise invisible
  521. //Obj_SetVisible(contents[i], false);
  522. }
  523.  
  524. Obj_SetValue(obj, "MASK_CONTENTS", contents);
  525. yield;
  526. }
  527.  
  528. let contents = Obj_GetValueD(obj, "MASK_CONTENTS", []);
  529. ascent(i in 0..length(contents)){ Obj_Delete(contents[i]); }
  530. RemoveTexture(texture_name);
  531. }
  532. run();
  533.  
  534. return obj;
  535.  
  536. function remove_deleted_objs(a){
  537. let res = [0][0..0]; // typed array
  538. let slices = [];
  539. let prev = 0;
  540. ascent(i in 0..length(a)){
  541. if(Obj_IsDeleted(a[i])){
  542. slices = slices ~ [[prev, i]];
  543. prev = i+1;
  544. }
  545. }
  546. // if unchanged, return
  547. if(length(slices) == 0 && prev == 0){ return a; }
  548. // last slice
  549. slices = slices ~ [[prev, length(a)]];
  550. // join slices
  551. ascent(j in 0..length(slices)){
  552. res = res ~ a[slices[j][0]..slices[j][1]];
  553. }
  554. return res;
  555. }
  556. }
  557.  
  558. function ObjMask_AddSource(obj, src){
  559. Obj_SetValue(obj, "MASK_CONTENTS", Obj_GetValueD(obj, "MASK_CONTENTS", []) ~ [src]);
  560. }
  561.  
  562. task Shader{
  563. let title = ObjPrim_Create(OBJ_SPRITE_2D);
  564. let alpha = 255;
  565.  
  566. ObjPrim_SetTexture(title, GetCurrentScriptDirectory() ~ "images/TitleNameMask.png");
  567. ObjSprite2D_SetSourceRect(title, 0, 0, 1024, 1024);
  568. ObjRender_SetPosition(title, 200, 200, 0);
  569. ObjSprite2D_SetDestCenter(title);
  570. ObjRender_SetBlendType(title, BLEND_SUBTRACT);
  571. ObjMask_AddSource(mask, title);
  572. ObjRender_SetScaleXYZ(title, 0.35, 0.35, 0);
  573. }
Advertisement
Add Comment
Please, Sign In to add comment