Core.Object | +--GUI.GUI | +--GUI.GUIComponent | +--GUI.GUIButton | +--XIDInterf.XIIIGUIButton
Color
WhiteColor
bool
bDrawArrows
bMouseEntered
float
fRatioX,fRatioY
sound
hMenuCurseur
XIIIRootWindow
myRoot
Texture
tArrow
void
DrawStretchedTexture(Canvas C, float X, float Y, float W, float H, Texture Tex)
InitComponent(GUIController MyController, GUIComponent MyOwner)
InternalOnDraw(Canvas C)
InternalOnKeyEvent(out byte, out byte, float delta)
MouseEnter()
MouseLeave()
00001 class XIIIGUIButton extends GUIButton; 00002 00003 var XIIIRootWindow myRoot; 00004 var sound hMenuCurseur; 00005 var bool bMouseEntered; 00006 00007 var float fRatioX,fRatioY; 00008 var Color WhiteColor; 00009 var Texture tArrow; 00010 var bool bDrawArrows; 00011 00012 function InitComponent(GUIController MyController, GUIComponent MyOwner) 00013 { 00014 Super.InitComponent(MyController, MyOwner); 00015 OnActivate = MouseEnter; 00016 OnDeActivate = MouseLeave; 00017 if (XIIIWindow(MenuOwner) != none) 00018 myRoot = XIIIWindow(MenuOwner).myRoot; 00019 00020 OnDraw = InternalOnDraw; 00021 if (WinWidth<1) 00022 { 00023 WinWidth *= 640; 00024 WinHeight *= 480; 00025 WinTop *= 480; 00026 WinLeft *= 640; 00027 } 00028 } 00029 00030 function MouseEnter() 00031 { 00032 if (myRoot == none && XIIIWindow(MenuOwner) != none) 00033 myRoot = XIIIWindow(MenuOwner).myRoot; 00034 bMouseEntered = true; 00035 if (myRoot != none) 00036 myRoot.GetPlayerOwner().PlayMenu(hMenuCurseur); 00037 SetFocus(Self); 00038 } 00039 00040 function bool InternalOnKeyEvent(out byte Key, out byte State, float delta) 00041 { 00042 if (key==0x0D && State==1) // ENTER Pressed 00043 { 00044 if (myRoot == none && XIIIWindow(MenuOwner) != none) 00045 myRoot = XIIIWindow(MenuOwner).myRoot; 00046 myRoot.GetPlayerOwner().PlayMenu(hMenuCurseur); 00047 } 00048 return super.InternalOnKeyEvent(Key, State, delta); 00049 } 00050 00051 final function DrawStretchedTexture( Canvas C, float X, float Y, float W, float H, texture Tex) 00052 { 00053 local float OrgX, OrgY, ClipX, ClipY, nx, ny; 00054 00055 if (W <= 1) W = W*640*fRatioX; 00056 if (H <= 1) H = H*480*fRatioY; 00057 OrgX = C.OrgX; OrgY = C.OrgY; 00058 ClipX = C.ClipX; ClipY = C.ClipY; 00059 nx = WinLeft*640*fRatioX; 00060 ny = WinTop*480*fRatioY; 00061 if (myRoot.bMapMenu || XIIIWindow(MenuOwner).bCenterInGame) 00062 { 00063 if (C.ClipX > 800) 00064 nx = WinLeft*640*fRatioX + (C.ClipX-800)/2; 00065 if (C.ClipY > 600) 00066 ny = WinTop*480*fRatioY + (C.ClipY-600)/2; 00067 C.SetOrigin(nx, ny); 00068 } 00069 else 00070 C.SetOrigin(WinLeft*640*fRatioX, WinTop*480*fRatioY); 00071 //C.SetClip(WinWidth*ClipX, WinHeight*ClipY); 00072 log("Test "$Tex.USize); 00073 C.SetPos(X, Y); 00074 C.DrawTileClipped( Tex, W, H, 0, 0, Tex.USize, Tex.VSize); 00075 C.SetClip(ClipX, ClipY); 00076 C.SetOrigin(OrgX, OrgY); 00077 } 00078 00079 function bool InternalOnDraw(Canvas C) 00080 { 00081 /* 00082 local int X,Y; 00083 fRatioX = XIIIWindow(MenuOwner).fRatioX; 00084 fRatioY = XIIIWindow(MenuOwner).fRatioY; 00085 X = 10; 00086 Y = 10; 00087 if (myRoot == none && XIIIWindow(MenuOwner) != none) 00088 myRoot = XIIIWindow(MenuOwner).myRoot; 00089 00090 log("Test "$fRatioY$" "$WinWidth$" "$WinHeight$" "$Tex.USize); 00091 //DrawStretchedTexture(C, 0, 0, FirstBoxWidth - 32*fRatioX, WinHeight*480*fRatioY, myRoot.FondMenu); 00092 DrawStretchedTexture(C, X - 16*fRatioX, Y, 16*fRatioX, WinHeight*480*fRatioY, myRoot.FondMenu); 00093 DrawStretchedTexture(C, 0, 0, 64, 64, myRoot.FondMenu); 00094 return true; 00095 */ 00096 local float OrgX, OrgY, ClipX, ClipY, nx, ny; 00097 00098 if (!bDrawArrows) 00099 return false; 00100 00101 if (MenuState != MSAT_Focused) 00102 return false; 00103 00104 fRatioX = 1;//XIIIWindow(MenuOwner).fRatioX; 00105 fRatioY = 1;//XIIIWindow(MenuOwner).fRatioY; 00106 00107 OrgX = C.OrgX; OrgY = C.OrgY; 00108 ClipX = C.ClipX; ClipY = C.ClipY; 00109 nx = WinLeft*640*fRatioX; 00110 ny = WinTop*480*fRatioY; 00111 00112 C.SetOrigin(0/*WinLeft*fRatioX*/, 0/*WinTop*fRatioY*/); 00113 00114 //C.BorderColor = DarkColor; 00115 C.DrawColor = WhiteColor; 00116 00117 //C.DrawLine( 0,0,500,500, WhiteColor ); 00118 C.SetPos(WinLeft*fRatioX-28, WinTop*fRatioY+2); 00119 C.DrawTile( tArrow, 24, WinHeight*fRatioY-4, 0, 0, -tArrow.USize, tArrow.VSize); 00120 00121 C.SetPos((WinLeft+WinWidth)*fRatioX+4, WinTop*fRatioY+2); 00122 C.DrawTile( tArrow, 24, WinHeight*fRatioY-4, 0, 0, tArrow.USize, tArrow.VSize); 00123 //DrawStretchedTexture(C, 0, 0, 64, 64, myRoot.FondMenu); 00124 //DrawStretchedTexture(C, nx - 16*fRatioX, ny, 16*fRatioX, WinHeight*480*fRatioY, myRoot.FondMenu); 00125 00126 C.SetOrigin(OrgX, OrgY); 00127 return true; 00128 } 00129 00130 function MouseLeave() 00131 { 00132 bMouseEntered = false; 00133 } 00134 00135 00136 00137 defaultproperties 00138 { 00139 hMenuCurseur=Sound'XIIIsound.Interface.MnCurseur' 00140 WhiteColor=(B=255,G=255,R=255,A=255) 00141 tArrow=Texture'XIIIMenuStart.Interface_LoadGame.fleches' 00142 StyleName="SquareButton" 00143 }