home *** CD-ROM | disk | FTP | other *** search
/ Game Level Design / GLDesign.bin / Software / UnrealEngine2Runtime / UE2Runtime-22262001_Demo.exe / GUI / Classes / GUISlider.uc < prev    next >
Text File  |  2003-06-30  |  4KB  |  172 lines

  1. // ====================================================================
  2. //  Class:  GUI.GUISlider
  3. //
  4. //  Written by Joe Wilcox
  5. //  (c) 2002, Epic Games, Inc.  All Rights Reserved
  6. // ====================================================================
  7.  
  8. class GUISlider extends GUIComponent
  9.         Native;
  10.  
  11. cpptext
  12. {
  13.         void Draw(UCanvas* Canvas);
  14. }
  15.  
  16. var(Menu)    float         MinValue, MaxValue;
  17. var(Menu)    string        CaptionStyleName;
  18. var            float        Value;
  19. var            float        Step;
  20. var            GUIStyles    CaptionStyle;
  21. var            bool        bIntSlider;
  22.  
  23. delegate string OnDrawCaption()
  24. {
  25.     if (bIntSlider)
  26.         return "("$int(Value)$")";
  27.     else
  28.         return "("$Value$")";
  29. }
  30.  
  31. function SetValue(float NewValue)
  32. {
  33.     if (NewValue<MinValue) NewValue=MinValue;
  34.     if (NewValue>MaxValue) NewValue=MaxValue;
  35.  
  36.     if (bIntSlider)
  37.         Value = int(NewValue);
  38.     else
  39.         Value = NewValue;
  40. }
  41.  
  42. function InitComponent(GUIController MyController, GUIComponent MyOwner)
  43. {
  44.     Super.Initcomponent(MyController, MyOwner);
  45.     OnCapturedMouseMove=InternalCapturedMouseMove;
  46.     OnKeyEvent=InternalOnKeyEvent;
  47.     OnClick=InternalOnClick;
  48.     OnMousePressed=InternalOnMousePressed;
  49.     OnXControllerEvent = InternalOnXControllerEvent;
  50.  
  51.     CaptionStyle = Controller.GetStyle(CaptionStyleName);
  52. }
  53.  
  54.  
  55. function bool InternalCapturedMouseMove(float deltaX, float deltaY)
  56. {
  57.     local float Perc, OldValue;
  58.  
  59.     OldValue = Value;
  60.  
  61.     if ( (Controller.MouseX >= Bounds[0]) && (Controller.MouseX<=Bounds[2]) )
  62.     {
  63.         Perc = ( Controller.MouseX - ActualLeft()) / ActualWidth();
  64.         Perc = FClamp(Perc,0.0,1.0);
  65.         Value = ( (MaxValue - MinValue) * Perc) + MinValue;
  66.         if (bIntSlider)
  67.             Value = int(Value);
  68.     }
  69.     else if (Controller.MouseX < Bounds[0])
  70.         Value = MinValue;
  71.     else if (Controller.MouseX > Bounds[2])
  72.         Value = MaxValue;
  73.  
  74.     Value = FClamp(Value,MinValue,MaxValue);
  75.  
  76.     return true;
  77. }
  78.  
  79. function bool InternalOnKeyEvent(out byte Key, out byte State, float delta)
  80. {
  81.     if ( (Key==0x25 || Key==0x64) && (State==1) )    // Left
  82.     {
  83.         if (bIntSlider)
  84.             Adjust(-1);
  85.         else
  86.             Adjust(-0.01);
  87.         return true;
  88.     }
  89.  
  90.     if ( (Key==0x27 || Key==0x66) && (State==1) ) // Right
  91.     {
  92.         if (bIntSlider)
  93.             Adjust(1);
  94.         else
  95.             Adjust(0.01);
  96.         return true;
  97.     }
  98.  
  99.  
  100.     return false;
  101. }
  102.  
  103. function bool InternalOnXControllerEvent(byte Id, eXControllerCodes iCode)
  104. {
  105.      if (iCode == XC_Left || iCode == XC_PadLeft || iCode == XC_X)
  106.     {
  107.         Adjust(Step*-1);
  108.         return true;
  109.     }
  110.  
  111.     else if (iCode == XC_Right || iCode == XC_PadRight || iCode == XC_Y)
  112.     {
  113.         Adjust(Step);
  114.         return true;
  115.     }
  116.  
  117.     return false;
  118.  
  119. }
  120.  
  121.  
  122. function Adjust(float amount)
  123. {
  124.     local float Perc;
  125.     Perc = (Value-MinValue) / (MaxValue-MinValue);
  126.     Perc += amount;
  127.     Perc = FClamp(Perc,0.0,1.0);
  128.     Value = ( (MaxValue - MinValue) * Perc) + MinValue;
  129.     FClamp(Value,MinValue, MaxValue);
  130.     OnChange(self);
  131. }
  132.  
  133. function string LoadINI()
  134. {    local string s;
  135.  
  136.     s = Super.LoadINI();
  137.     if (s!="")
  138.         Value = float(s);
  139.  
  140.     return s;
  141. }
  142.  
  143. function SaveINI(string V)
  144. {
  145.     Super.SaveINI(""$V);
  146. }
  147.  
  148. function bool InternalOnClick(GUIComponent Sender)
  149. {
  150.     OnChange(self);
  151.     return true;
  152. }
  153.  
  154. function InternalOnMousePressed(GUIComponent Sender,bool RepeatClick)
  155. {
  156.     InternalCapturedMouseMove(0,0);
  157. }
  158.  
  159. defaultproperties
  160. {
  161.     StyleName="RoundButton"
  162.     bAcceptsInput=true
  163.     bCaptureMouse=True
  164.     bNeverFocus=false;
  165.     bTabStop=true
  166.     WinHeight=0.03
  167.     bRequireReleaseClick=true
  168.     CaptionStyleName="SliderCaption"
  169.     bIntSlider=false;
  170.     OnClickSound=CS_Click
  171.     Step=1;
  172. }