Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class UIMsg
- {
- var string text;
- var string font;
- var string soundOnStart;//wavename
- var int msgView; //zCView*
- var int Line1View; //zCViewText*
- var int Line2View; //zCViewText*
- var int durTicks; //tick = 0.125 (decrased by PoisonTrigger)
- var int color; //zCColor
- var int next; //UIMsg*
- };
- var string msgArray[20];
- var int msgColorArray[20];
- var int msgTimeArray[20];
- var int GlobalArray_PutMsg;
- const int Msg_PosY = 35 * 82;//82 -one percent 2870
- const int Msg_PosX = 11 * 82;
- const int MsgBox_SizeY = 55;//in px
- const int MsgBox_SizeX = 250;
- const int MsgBox_SizeX_2 = 370;
- const int maxCharsInline = 20;
- func int CalcPixelPosX(var int x)
- {
- var int pos; pos = fracf(8196,Print_Screen[PS_X]);
- pos = mulf(pos,mkf(x));
- return truncf(pos);
- };
- func int CalcPixelPosY(var int y)
- {
- var int pos; pos = fracf(8196,Print_Screen[PS_Y]);
- pos = mulf(pos,mkf(y));
- return truncf(pos);
- };
- instance UIMsg@(UIMsg);
- func int Msg_AddText(var int viewptr,var int x, var int y, var string text)
- {
- CALL_zStringPtrParam(text);//zcview
- CALL_IntParam(y);//zcview
- CALL_IntParam(x);//x pixel
- CALL__thiscall (getptr(viewptr),8037040);
- return CALL_RetValAsInt();
- };
- func void Msg_Create(var string text,var int color, var int time)
- {
- var int hndl; hndl = new(UIMsg@);
- var UIMsg msg; msg = get(hndl);
- //Make View
- var int x; x = CalcPixelPosY(MsgBox_SizeX-60)-70;
- var int y; y = CalcPixelPosY(MsgBox_SizeY);
- msg.msgView=View_CreateCenter(Msg_PosX,Msg_PosY-y,CalcPixelPosX(250),y);
- View_SetTexture(msg.msgView,"UI_MSG_BG.tga");
- View_Open(msg.msgView);
- const int xStartOfWindow = 5;
- var int yStartOf1Line; yStartOf1Line = 1584 - CalcPixelPosY(8)/2;
- var int yStartOf2Line; yStartOf2Line = 3850 - CalcPixelPosY(8)/2;
- var int yStartOfOneLine; yStartOfOneLine = 2800 - CalcPixelPosY(8)/2;//4096 = 100%
- var int secondLine; var int splitPos;
- var string Line1;var string Line2;
- var int label;
- secondLine = false;
- Line1 = ""; Line2 = "";
- if(Str_Len(text)>=maxCharsInline)
- {
- secondLine = true;
- splitPos = maxCharsInline;
- MEM_InitLabels ();
- label = MEM_StackPos.position;
- if(Hlp_StrCmp(STR_SubStr(text,splitPos,1)," "))
- {
- }
- else if(splitPos>0)
- {
- splitPos-=1;
- MEM_StackPos.position = label;
- };
- if(splitPos==0)//if no space fouded, divide at last char
- {
- splitPos=maxCharsInline;
- };
- Line1 = STR_SubStr (text,0,splitPos);
- Line2 = STR_SubStr (text,splitPos+1,Str_Len(text));
- };
- if(!secondLine)
- {
- Msg.Line1View = Msg_AddText(msg.msgView,Msg_PosX+xStartOfWindow,yStartOfOneLine,text);
- }
- else
- {
- Msg.Line1View = Msg_AddText(msg.msgView,Msg_PosX+xStartOfWindow,yStartOf1Line,Line1);
- Msg.Line2View = Msg_AddText(msg.msgView,Msg_PosX+xStartOfWindow,yStartOf2Line,Line2);
- };
- var zCViewText t; t = _^(msg.Line1View);
- t.color = color;
- if(secondLine)
- {
- var zCViewText t2; t2 = _^(msg.Line2View);
- t2.color = color;
- };
- var int Box_Moving;
- Anim8_RemoveIfEmpty (Box_Moving, true);
- Anim8_RemoveDataIfEmpty(Box_Moving, true);
- /******************************************/
- Box_Moving = Anim8_NewExt(Msg_PosY-y, UIMsg_SetPositon, msg.msgView, false);//ew. hndl
- Anim8 (Box_Moving, 3064, 8*15, A8_SlowStart);//50
- Anim8q (Box_Moving, 3064, time*120, A8_Wait);
- Anim8q(Box_Moving,3675,8*15,A8_SlowStart);
- };
- func void PutMsg_Manager_Add(var string msg, var int color, var int time)
- {
- MEM_WriteStatStringArr(msgArray,GlobalArray_PutMsg,msg);
- MEM_WriteStatArr (msgColorArray,GlobalArray_PutMsg,color);
- MEM_WriteStatArr (msgTimeArray,GlobalArray_PutMsg,time);
- };
- func void PutMsg(var string text, var int color, var int dur)
- {
- if(GlobalArray_PutMsg>19){return;};
- if(!GlobalArray_PutMsg)
- {
- GlobalArray_PutMsg +=1;
- Msg_Create(text, color, dur);
- }
- else
- {
- PutMsg_Manager_Add(text,color,dur);
- };
- };
- func void RemovePutMsgFromArray(var int arr)
- {
- GlobalArray_PutMsg -= 1;
- PutMsg(MEM_ReadStatStringArr(msgArray,arr),MEM_ReadStatArr (msgColorArray,arr),MEM_ReadStatArr (msgTimeArray,arr));
- MEM_WriteStatArr (msgColorArray,arr,0);
- MEM_WriteStatArr (msgTimeArray,arr,0);
- MEM_WriteStatStringArr(msgArray,arr,"");
- };
- func void UIMsg_SetPositon(var int hndl, var int value)
- {
- var zCView view; view = get(hndl);
- View_MoveTo(hndl, view.vposx, value);
- var int vh; vh = new(UIMsg@);
- var UIMsg msg; msg = get(vh);
- var int box; box = msg.msgView;
- if(view.vposy==3675) // Fade out
- {
- if(box)
- {
- //View_Delete(box);
- RemovePutMsgFromArray(GlobalArray_PutMsg);
- box = 0;
- };
- };
- };
Advertisement
Add Comment
Please, Sign In to add comment