Guest User

Untitled

a guest
Sep 29th, 2016
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.64 KB | None | 0 0
  1. class UIMsg
  2. {
  3.     var string text;
  4.     var string font;
  5.     var string soundOnStart;//wavename
  6.     var int msgView; //zCView*
  7.     var int Line1View; //zCViewText*
  8.     var int Line2View; //zCViewText*
  9.     var int durTicks; //tick = 0.125 (decrased by PoisonTrigger)
  10.     var int color; //zCColor
  11.     var int next;        //UIMsg*
  12. };
  13. var string msgArray[20];
  14. var int msgColorArray[20];
  15. var int msgTimeArray[20];
  16. var int GlobalArray_PutMsg;
  17.  
  18. const int Msg_PosY = 35 * 82;//82 -one percent 2870
  19. const int Msg_PosX = 11 * 82;
  20. const int MsgBox_SizeY = 55;//in px
  21. const int MsgBox_SizeX = 250;
  22. const int MsgBox_SizeX_2 = 370;
  23. const int maxCharsInline = 20;
  24.  
  25. func int CalcPixelPosX(var int x)
  26. {
  27.     var int pos; pos = fracf(8196,Print_Screen[PS_X]);
  28.     pos = mulf(pos,mkf(x));
  29.     return truncf(pos);
  30. };
  31. func int CalcPixelPosY(var int y)
  32. {
  33.     var int pos; pos = fracf(8196,Print_Screen[PS_Y]);
  34.     pos = mulf(pos,mkf(y));
  35.     return truncf(pos);
  36. };  
  37.  
  38. instance UIMsg@(UIMsg);
  39.  
  40. func int Msg_AddText(var int viewptr,var int x, var int y, var string text)
  41. {
  42.     CALL_zStringPtrParam(text);//zcview
  43.     CALL_IntParam(y);//zcview
  44.     CALL_IntParam(x);//x pixel
  45.     CALL__thiscall (getptr(viewptr),8037040);
  46.     return CALL_RetValAsInt();
  47. };
  48.  
  49. func void Msg_Create(var string text,var int color, var int time)
  50. {
  51.     var int hndl; hndl = new(UIMsg@);
  52.     var UIMsg msg; msg = get(hndl);
  53.     //Make View
  54.     var int x;  x       =   CalcPixelPosY(MsgBox_SizeX-60)-70;
  55.     var int y;  y       =   CalcPixelPosY(MsgBox_SizeY);
  56.    
  57.     msg.msgView=View_CreateCenter(Msg_PosX,Msg_PosY-y,CalcPixelPosX(250),y);
  58.     View_SetTexture(msg.msgView,"UI_MSG_BG.tga");
  59.     View_Open(msg.msgView);
  60.     const int xStartOfWindow = 5;
  61.     var int yStartOf1Line; yStartOf1Line = 1584 - CalcPixelPosY(8)/2;
  62.     var int yStartOf2Line; yStartOf2Line = 3850 - CalcPixelPosY(8)/2;
  63.     var int yStartOfOneLine; yStartOfOneLine = 2800 - CalcPixelPosY(8)/2;//4096 = 100%
  64.    
  65.     var int secondLine; var int splitPos;
  66.     var string Line1;var string Line2;
  67.     var int label;
  68.     secondLine = false;
  69.     Line1 = ""; Line2 = "";
  70.    
  71.     if(Str_Len(text)>=maxCharsInline)
  72.     {
  73.         secondLine = true;
  74.         splitPos = maxCharsInline; 
  75.        
  76.         MEM_InitLabels ();
  77.         label = MEM_StackPos.position;
  78.         if(Hlp_StrCmp(STR_SubStr(text,splitPos,1)," "))
  79.         {  
  80.         }
  81.         else if(splitPos>0)
  82.         {
  83.             splitPos-=1;
  84.             MEM_StackPos.position = label;
  85.         };
  86.  
  87.         if(splitPos==0)//if no space fouded, divide at last char
  88.         {
  89.             splitPos=maxCharsInline;
  90.         };     
  91.        
  92.     Line1 = STR_SubStr (text,0,splitPos);
  93.     Line2 = STR_SubStr (text,splitPos+1,Str_Len(text));
  94.     };
  95.    
  96.     if(!secondLine)
  97.     {
  98.          Msg.Line1View  = Msg_AddText(msg.msgView,Msg_PosX+xStartOfWindow,yStartOfOneLine,text);
  99.     }
  100.     else
  101.     {
  102.         Msg.Line1View = Msg_AddText(msg.msgView,Msg_PosX+xStartOfWindow,yStartOf1Line,Line1);
  103.         Msg.Line2View = Msg_AddText(msg.msgView,Msg_PosX+xStartOfWindow,yStartOf2Line,Line2);
  104.     }; 
  105.    
  106.         var zCViewText t;           t   = _^(msg.Line1View);
  107.         t.color     =   color;
  108.         if(secondLine)
  109.         {
  110.             var zCViewText t2;      t2  = _^(msg.Line2View);
  111.             t2.color        =   color; 
  112.         };
  113.  
  114.  
  115.     var int Box_Moving;
  116.     Anim8_RemoveIfEmpty    (Box_Moving, true);
  117.     Anim8_RemoveDataIfEmpty(Box_Moving, true);
  118.     /******************************************/
  119.     Box_Moving = Anim8_NewExt(Msg_PosY-y, UIMsg_SetPositon, msg.msgView, false);//ew. hndl
  120.     Anim8 (Box_Moving, 3064, 8*15, A8_SlowStart);//50
  121.     Anim8q (Box_Moving, 3064, time*120, A8_Wait);
  122.     Anim8q(Box_Moving,3675,8*15,A8_SlowStart);
  123. };
  124.  
  125. func void PutMsg_Manager_Add(var string msg, var int color, var int time)
  126. {
  127.         MEM_WriteStatStringArr(msgArray,GlobalArray_PutMsg,msg);
  128.         MEM_WriteStatArr (msgColorArray,GlobalArray_PutMsg,color);
  129.         MEM_WriteStatArr (msgTimeArray,GlobalArray_PutMsg,time);
  130. };
  131.  
  132.  
  133. func void PutMsg(var string text, var int color, var int dur)
  134. {
  135.     if(GlobalArray_PutMsg>19){return;};
  136.  
  137.     if(!GlobalArray_PutMsg)
  138.     {
  139.         GlobalArray_PutMsg +=1;
  140.         Msg_Create(text, color, dur);
  141.     }
  142.     else
  143.     {
  144.         PutMsg_Manager_Add(text,color,dur);
  145.     };
  146.  
  147. };
  148. func void RemovePutMsgFromArray(var int arr)
  149. {
  150.         GlobalArray_PutMsg -= 1;
  151.    
  152.     PutMsg(MEM_ReadStatStringArr(msgArray,arr),MEM_ReadStatArr (msgColorArray,arr),MEM_ReadStatArr (msgTimeArray,arr));
  153.    
  154.     MEM_WriteStatArr (msgColorArray,arr,0);
  155.     MEM_WriteStatArr (msgTimeArray,arr,0);
  156.     MEM_WriteStatStringArr(msgArray,arr,"");
  157. };
  158.  
  159. func void UIMsg_SetPositon(var int hndl, var int value)
  160. {
  161.     var zCView view; view = get(hndl);
  162.     View_MoveTo(hndl, view.vposx, value);
  163.    
  164.     var int vh; vh = new(UIMsg@);
  165.     var UIMsg msg; msg = get(vh);
  166.     var int box; box = msg.msgView;
  167.    
  168.     if(view.vposy==3675) // Fade out
  169.     {
  170.         if(box)
  171.         {
  172.             //View_Delete(box);
  173.             RemovePutMsgFromArray(GlobalArray_PutMsg);
  174.             box = 0;
  175.         };
  176.     };
  177.    
  178. };
Advertisement
Add Comment
Please, Sign In to add comment