Advertisement
Trickysticks

Untitled

Mar 21st, 2015
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.76 KB | None | 0 0
  1. let EventObjList_Left = [];
  2. let EventObjAlpha_Left = [];
  3. let EventCharTalking_Left = [];
  4. let EventCharPresent_Left = [];
  5. let EventObjList_Right = [];
  6. let EventObjAlpha_Right = [];
  7. let EventCharTalking_Right = [];
  8. let EventCharPresent_Right = [];
  9. let EventRTN = "Event Render Target Name";
  10. let EventCDFlag = "Event Active?";
  11. let EventStep = "Event Step";
  12.  
  13. let pathSystem_Speech = "./sprites/speech.png";
  14.  
  15. function CreateSprite ( let texture, let priorityInt, let rects, let center ) {
  16. // rects = 1-dimensional, size 4
  17. let obj = ObjPrim_Create(OBJ_SPRITE_2D);
  18. ObjPrim_SetTexture(obj, texture);
  19. Obj_SetRenderPriorityI(obj, priorityInt);
  20. ObjSprite2D_SetSourceRect(obj, rects[0], rects[1], rects[2], rects[3]);
  21. ObjSprite2D_SetDestRect(obj, -center[0], -center[1], rects[2]-rects[0]-center[0], rects[3]-rects[1]-center[1]);
  22. return obj;
  23. }
  24.  
  25.  
  26.  
  27. function InitializeEvent(let numLeft, let numRight) {
  28. SetForbidPlayerShot(true); SetForbidPlayerSpell(true);
  29. SetCommonData(EventCDFlag, true);
  30. SetCommonData(EventStep, 0);
  31. CreateRenderTarget(EventRTN);
  32. loop(numLeft) {
  33. let obj = CreateSprite("", 85, [0, 0, 1023, 1023], [512, 512]);
  34. //ObjPrim_SetTexture(obj, talk);
  35. ObjRender_SetPosition(obj, GetStgFrameLeft+320-256-192, GetStgFrameTop+GetStgFrameHeight+32, 0);
  36. EventObjList_Left = EventObjList_Left ~ [ obj ];
  37. EventCharTalking_Left = EventCharTalking_Left ~ [ false ];
  38. EventCharPresent_Left = EventCharPresent_Left ~ [ false ];
  39. EventObjAlpha_Left = EventObjAlpha_Left ~ [ 0 ];
  40. }
  41. loop(numRight) {
  42. let obj = CreateSprite("", 85, [0, 0, 1023, 1023], [512, 512]);
  43. //ObjPrim_SetTexture(obj, talk);
  44. ObjRender_SetPosition(obj, GetStgFrameLeft+320+256+192, GetStgFrameTop+GetStgFrameHeight+32, 0);
  45. EventObjList_Right = EventObjList_Right ~ [ obj ];
  46. EventCharTalking_Right = EventCharTalking_Right ~ [ false ];
  47. EventCharPresent_Right = EventCharPresent_Right ~ [ false ];
  48. EventObjAlpha_Right = EventObjAlpha_Right ~ [ 0 ];
  49. }
  50. HandleEventLogic;
  51. }
  52.  
  53. function FinalizeEvent {
  54. ascent(i in 0..length(EventObjList_Left)) {
  55. Obj_Delete(EventObjList_Left[i]);
  56. }
  57. EventObjList_Left = []; EventCharTalking_Left = []; EventCharPresent_Left = [];
  58. ascent(i in 0..length(EventObjList_Right)) {
  59. Obj_Delete(EventObjList_Right[i]);
  60. }
  61. EventObjList_Right = []; EventCharTalking_Right = []; EventCharPresent_Right = [];
  62. RemoveTexture(EventRTN);
  63. SetCommonData(EventCDFlag, false);
  64. SetCommonData(EventStep, 0);
  65. SetForbidPlayerShot(false); SetForbidPlayerSpell(false);
  66. }
  67.  
  68. task HandleEventLogic {
  69. while(OnEventEx) {
  70. ascent(i in 0..length(EventObjList_Left)) {
  71. let obj = EventObjList_Left[i];
  72. let talking = EventCharTalking_Left[i];
  73. let here = EventCharPresent_Left[i];
  74. ObjRender_SetPosition(obj, ObjRender_GetX(obj)+(320-256+[-192, [0, 64][talking]][here]-ObjRender_GetX(obj))/4, ObjRender_GetY(obj)+(GetStgFrameHeight+32-[0, [48, 96][talking]][here]-ObjRender_GetY(obj))/4, 0);
  75. Obj_SetRenderPriorityI(obj, 84+[0, 1][talking]);
  76. EventObjAlpha_Left[i] = EventObjAlpha_Left[i] + ([0, [128, 255][talking]][here] - EventObjAlpha_Left[i])/4;
  77. let alpha = EventObjAlpha_Left[i];
  78. ObjRender_SetAlpha(obj, alpha);
  79. }
  80. ascent(i in 0..length(EventObjList_Right)) {
  81. let obj = EventObjList_Right[i];
  82. let talking = EventCharTalking_Right[i];
  83. let here = EventCharPresent_Right[i];
  84. ObjRender_SetPosition(obj, ObjRender_GetX(obj)+(320+256+[192, [0, -64][talking]][here]-ObjRender_GetX(obj))/4, ObjRender_GetY(obj)+(GetStgFrameHeight+32-[0, [48, 96][talking]][here]-ObjRender_GetY(obj))/4, 0);
  85. Obj_SetRenderPriorityI(obj, 84+[0, 1][talking]);
  86. EventObjAlpha_Right[i] = EventObjAlpha_Right[i] + ([0, [128, 255][talking]][here] - EventObjAlpha_Right[i])/4;
  87. let alpha = EventObjAlpha_Right[i];
  88. ObjRender_SetAlpha(obj, alpha);
  89. }
  90. yield;
  91. }
  92. }
  93.  
  94. task SetEventStepEx(let num) {
  95. SetCommonData(EventStep, num);
  96. }
  97. function GetEventStepEx {
  98. return GetCommonData(EventStep, 0);
  99. }
  100. function OnEventEx {
  101. return GetCommonData(EventCDFlag, false);
  102. }
  103. function SetCutinGraphic(let LeftRight, let charID, let type, let dispX, let dispY) {
  104. let obj = [EventObjList_Left, EventObjList_Right][LeftRight][charID];
  105. ObjPrim_SetTexture(obj, type);
  106. ObjSprite2D_SetSourceRect(obj, 0, 0, 1023, 1023);
  107. ObjSprite2D_SetDestRect(obj, -256-dispX, -256-dispY, 256-dispX, 256-dispY);
  108. }
  109. function SetCharStatusTalking(let LeftRight, let charID, let talking) {
  110. alternative(LeftRight)
  111. case(0) {
  112. EventCharTalking_Left[charID] = talking;
  113. }
  114. case(1) {
  115. EventCharTalking_Right[charID] = talking;
  116. }
  117. }
  118. function SetCharStatusPresent(let LeftRight, let charID, let talking) {
  119. alternative(LeftRight)
  120. case(0) {
  121. EventCharPresent_Left[charID] = talking;
  122. }
  123. case(1) {
  124. EventCharPresent_Right[charID] = talking;
  125. }
  126. }
  127.  
  128. function SetEventText(let LeftRight, let bubbletype, let linetext, let time) {
  129.  
  130. let h = [48, 64, 56, 56, 64, 80, 72, 72][bubbletype];
  131. let y = [0, 48, 112, 168, 224, 288, 368, 440][bubbletype];
  132. let linelength = 0;
  133.  
  134. let objText = ObjText_Create();
  135. ObjText_SetText(objText, linetext);
  136.  
  137. ObjText_SetFontType(objText, "Corbel");
  138. ObjText_SetFontSize(objText, 22);
  139. ObjRender_SetY(objText, 20);
  140. ObjText_SetLinePitch(objText, -6);
  141.  
  142. Obj_SetRenderPriorityI(objText, 80);
  143. ObjText_SetFontColorTop(objText, 0, 0, 0);
  144. ObjText_SetFontColorBottom(objText, 0, 0, 0);
  145. ObjText_SetAutoTransCenter(objText, false);
  146.  
  147. linelength = ObjText_GetTotalWidth(objText);
  148.  
  149. ObjRender_SetX(objText, 32+(linelength)*LeftRight);
  150. ObjRender_SetScaleX(objText, ((-1)^LeftRight));
  151.  
  152. let obj = ObjPrim_Create(OBJ_PRIMITIVE_2D);
  153. Obj_SetRenderPriorityI(obj, 80);
  154. ObjPrim_SetVertexCount(obj, 6 * ( ceil((linelength-16)/16) + 2 ) );
  155. ObjPrim_SetPrimitiveType(obj, PRIMITIVE_TRIANGLELIST);
  156. ObjPrim_SetTexture(obj, pathSystem_Speech);
  157. //ObjRender_SetPosition(obj, 320-(160*((-1)^LeftRight)), GetStgFrameHeight-160, 0);
  158. //ObjRender_SetPosition(objText, 320-(160*((-1)^LeftRight)) + 32, GetStgFrameHeight-160 + 20, 0);
  159. let len = 0;
  160. ObjPrim_SetVertexUVT(obj, 0, 0, y+0);
  161. ObjPrim_SetVertexUVT(obj, 1, 48, y+0);
  162. ObjPrim_SetVertexUVT(obj, 2, 0, y+h);
  163. ObjPrim_SetVertexUVT(obj, 3, 48, y+h);
  164. ObjPrim_SetVertexUVT(obj, 4, 48, y+0);
  165. ObjPrim_SetVertexUVT(obj, 5, 0, y+h);
  166. ObjPrim_SetVertexPosition(obj, 0, 0, 0, 0);
  167. ObjPrim_SetVertexPosition(obj, 1, 48, 0, 0);
  168. ObjPrim_SetVertexPosition(obj, 2, 0, h, 0);
  169. ObjPrim_SetVertexPosition(obj, 3, 48, h, 0);
  170. ObjPrim_SetVertexPosition(obj, 4, 48, 0, 0);
  171. ObjPrim_SetVertexPosition(obj, 5, 0, h, 0);
  172. len+=48;
  173. ascent(i in 0..ceil((linelength-16)/16)) {
  174. ObjPrim_SetVertexUVT(obj, 12+i*6, 48, y+0);
  175. ObjPrim_SetVertexUVT(obj, 13+i*6, 64, y+0);
  176. ObjPrim_SetVertexUVT(obj, 14+i*6, 48, y+h);
  177. ObjPrim_SetVertexUVT(obj, 15+i*6, 64, y+h);
  178. ObjPrim_SetVertexUVT(obj, 16+i*6, 64, y+0);
  179. ObjPrim_SetVertexUVT(obj, 17+i*6, 48, y+h);
  180. ObjPrim_SetVertexPosition(obj, 12+i*6, len+0, 0, 0);
  181. ObjPrim_SetVertexPosition(obj, 13+i*6, len+16, 0, 0);
  182. ObjPrim_SetVertexPosition(obj, 14+i*6, len+0, h, 0);
  183. ObjPrim_SetVertexPosition(obj, 15+i*6, len+16, h, 0);
  184. ObjPrim_SetVertexPosition(obj, 16+i*6, len+16, 0, 0);
  185. ObjPrim_SetVertexPosition(obj, 17+i*6, len+0, h, 0);
  186. len+=16;
  187. }
  188. ObjPrim_SetVertexUVT(obj, 6, 64, y+0);
  189. ObjPrim_SetVertexUVT(obj, 7, 96, y+0);
  190. ObjPrim_SetVertexUVT(obj, 8, 64, y+h);
  191. ObjPrim_SetVertexUVT(obj, 9, 96, y+h);
  192. ObjPrim_SetVertexUVT(obj, 10, 96, y+0);
  193. ObjPrim_SetVertexUVT(obj, 11, 64, y+h);
  194. ObjPrim_SetVertexPosition(obj, 6, len+0, 0, 0);
  195. ObjPrim_SetVertexPosition(obj, 7, len+32, 0, 0);
  196. ObjPrim_SetVertexPosition(obj, 8, len+0, h, 0);
  197. ObjPrim_SetVertexPosition(obj, 9, len+32, h, 0);
  198. ObjPrim_SetVertexPosition(obj, 10, len+32, 0, 0);
  199. ObjPrim_SetVertexPosition(obj, 11, len+0, h, 0);
  200. RenderToTextureB1(EventRTN, obj, true);
  201. RenderToTextureB1(EventRTN, objText, false);
  202. Obj_Delete(obj);
  203. Obj_Delete(objText);
  204.  
  205. let objBalloon = CreateSprite(EventRTN, 85, [0, 0, ceil((linelength-16)/16)*16 + 80, h], [0, 0]);
  206. ObjRender_SetPosition(objBalloon, 320-(160*((-1)^LeftRight)), GetStgFrameHeight-160, 0);
  207. let scale = 15; let fin = true; let t = (|time|);
  208. while(fin) {
  209. ObjRender_SetScaleXYZ(objBalloon, ((-1)^LeftRight)*cos(scale*90/15), 1, 0);
  210. if(scale > 0) { scale--; }
  211. if(time == 0) {
  212. if(scale == 0 && GetVirtualKeyState(VK_SHOT)==KEY_PUSH) { fin = false; }
  213. if(scale < 12 && GetVirtualKeyState(VK_USER1)!=KEY_FREE) { fin= false; }
  214. } else if(time > 0) {
  215. if(scale == 0) { t--; if(t == 0) { fin = false; } }
  216. } else if(time < 0) {
  217. if(scale == 0) { t--; if(t == 0 && (GetVirtualKeyState(VK_SHOT)==KEY_PUSH || GetVirtualKeyState(VK_USER1)!=KEY_FREE)) { fin = false; } }
  218. }
  219. yield;
  220. }
  221.  
  222. Obj_Delete(objBalloon);
  223. yield;
  224. }
  225.  
  226. function Talking ( which ) {
  227. SetCharStatusTalking(0, 0, which == 0);
  228. SetCharStatusTalking(1, 0, which == 1);
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement