From 21438b7ca8862ef5b9f789e138efdbab15939a40 Mon Sep 17 00:00:00 2001
From: k-m_schindler <k-m_schindler@b956fd51-792f-4845-bead-9b4dfca2ff2c>
Date: Sun, 3 Jan 2016 19:41:52 +0000
Subject: fix compilation

git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@3177 b956fd51-792f-4845-bead-9b4dfca2ff2c
---
 src/base/UTexture.pas      |   9 ++++
 src/base/UUnicodeUtils.pas |  12 ++++-
 src/menu/UMenu.pas         | 106 ++++++++++++++++++++++++++++++++++++++++++---
 3 files changed, 118 insertions(+), 9 deletions(-)

(limited to 'src')

diff --git a/src/base/UTexture.pas b/src/base/UTexture.pas
index 6edcc46f..2da7625c 100644
--- a/src/base/UTexture.pas
+++ b/src/base/UTexture.pas
@@ -56,6 +56,8 @@ type
     ScaleW:   real; // for dynamic scalling while leaving width constant
     ScaleH:   real; // for dynamic scalling while leaving height constant
     Rot:      real; // 0 - 2*pi
+    RightScale: real; //
+    LeftScale:  real; //
     Int:      real; // intensity
     ColR:     real;
     ColG:     real;
@@ -311,6 +313,7 @@ begin
 
   glBindTexture(GL_TEXTURE_2D, ActTex);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
 
@@ -360,6 +363,9 @@ begin
     TexX2 := 1;
     TexY2 := 1;
 
+    RightScale := 1;
+    LeftScale := 1;
+
     Name := Identifier;
   end;
 
@@ -466,6 +472,9 @@ begin
   Result.TexX2 := 1;
   Result.TexY2 := 1;
 
+  Result.RightScale := 1;
+  Result.LeftScale := 1;
+
   Result.Name := Name;
 end;
 
diff --git a/src/base/UUnicodeUtils.pas b/src/base/UUnicodeUtils.pas
index 52e40847..2fb87467 100644
--- a/src/base/UUnicodeUtils.pas
+++ b/src/base/UUnicodeUtils.pas
@@ -667,25 +667,33 @@ begin
   end;
 end;
 
-function AnsiToAscii(const s:AnsiString):AnsiString;
+function AnsiToAscii(const s :AnsiString): AnsiString;
 begin
   Result := s;
 
   if Result <> '' then
   begin
     UniqueString(Result);
+{$IFDEF Windows}
     CharToOem(Pchar(Result), Pchar(Result));
+{$ELSE}
+// todo
+{$ENDIF}
   end;
 end;
 
-function AsciiToAnsi(const s:AnsiString):AnsiString;
+function AsciiToAnsi(const s: AnsiString): AnsiString;
 begin
   Result := s;
 
   if Result <> '' then
   begin
     UniqueString(Result);
+{$IFDEF Windows}
     OemToChar(Pchar(Result), Pchar(Result));
+{$ELSE}
+// todo
+{$ENDIF}
   end;
 end;
 
diff --git a/src/menu/UMenu.pas b/src/menu/UMenu.pas
index 756ef237..a290ee51 100644
--- a/src/menu/UMenu.pas
+++ b/src/menu/UMenu.pas
@@ -69,6 +69,7 @@ type
     public
       Text:       array of TText;
       Statics:     array of TStatic;
+      StaticsList: array of TStatic;
       mX:         integer; // mouse X
       mY:         integer; // mouse Y
 
@@ -104,12 +105,21 @@ type
       function AddStatic(X, Y, W, H: real; ColR, ColG, ColB: real; const TexName: IPath; Typ: TTextureType; Color: integer): integer; overload;
       function AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; const TexName: IPath; Typ: TTextureType; Color: integer): integer; overload;
       function AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; TexX1, TexY1, TexX2, TexY2: real; const TexName: IPath; Typ: TTextureType; Color: integer; Reflection: boolean; ReflectionSpacing: real): integer; overload;
+{ for later additions
+      function AddStatic(X, Y, W, H, Z: real; ColR, ColG, ColB: real; TexX1, TexY1, TexX2, TexY2: real; Alpha: real; const TexName: IPath; Typ: TTextureType; Color: integer; Reflection: boolean; ReflectionSpacing: real): integer; overload;
+
+      // list
+      function AddListItem(X, Y, W, H, Z: real; ColR, ColG, ColB: real; DColR, DColG, DColB: real; const TexName: IPath; const DTexName: IPath; Typ: TTextureType; Reflection: boolean; ReflectionSpacing: real): integer;
+}
 
       // text
       function AddText(ThemeText: TThemeText): integer; overload;
       function AddText(X, Y: real; const Text_: UTF8String): integer; overload;
       function AddText(X, Y: real; Style: integer; Size, ColR, ColG, ColB: real; const Text: UTF8String): integer; overload;
       function AddText(X, Y, W: real; Style: integer; Size, ColR, ColG, ColB: real; Align: integer; const Text_: UTF8String; Reflection_: boolean; ReflectionSpacing_: real; Z : real): integer; overload;
+{ for later additions
+      function AddText(X, Y, W: real; Style: integer; Size, ColR, ColG, ColB: real; Align: integer; const Text_: UTF8String; Reflection_: boolean; ReflectionSpacing_: real; Z : real; Writable: boolean): integer; overload;
+}
 
       // button
       procedure SetButtonLength(Length: cardinal); //Function that Set Length of Button Array in one Step instead of register new Memory for every Button
@@ -148,6 +158,8 @@ type
       function ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown : boolean): boolean; virtual;
       function ParseMouse(MouseButton: integer; BtnDown: boolean; X, Y: integer): boolean; virtual;
       function InRegion(X, Y: real; A: TMouseOverRect): boolean;
+      function InRegionX(X: real; A: TMouseOverRect): boolean;
+      function InRegionY(Y: real; A: TMouseOverRect): boolean;
       function InteractAt(X, Y: real): integer;
       function CollectionAt(X, Y: real): integer;
       procedure OnShow; virtual;
@@ -157,7 +169,7 @@ type
       procedure SetAnimationProgress(Progress: real); virtual;
 
       function IsSelectable(Int: cardinal): boolean;
-    
+
       procedure InteractNext; virtual;
       procedure InteractCustom(CustomSwitch: integer); virtual;
       procedure InteractPrev; virtual;
@@ -603,6 +615,8 @@ begin
   Result := AddStatic(ThemeStatic.X, ThemeStatic.Y, ThemeStatic.W, ThemeStatic.H, ThemeStatic.Z,
     ThemeStatic.ColR, ThemeStatic.ColG, ThemeStatic.ColB,
     ThemeStatic.TexX1, ThemeStatic.TexY1, ThemeStatic.TexX2, ThemeStatic.TexY2,
+//  add when using alpha
+//    ThemeStatic.TexX1, ThemeStatic.TexY1, ThemeStatic.TexX2, ThemeStatic.TexY2, ThemeStatic.Alpha,
     Skin.GetTextureFileName(ThemeStatic.Tex),
     ThemeStatic.Typ, $FFFFFF, ThemeStatic.Reflection, ThemeStatic.Reflectionspacing);
 end;
@@ -664,11 +678,13 @@ function TMenu.AddStatic(X, Y, W, H, Z: real;
 			 Color: integer): integer;
 begin
   Result := AddStatic(X, Y, W, H, Z, ColR, ColG, ColB, 0, 0, 1, 1, TexName, Typ, Color, false, 0);
+//  Result := AddStatic(X, Y, W, H, Z, ColR, ColG, ColB, 0, 0, 1, 1, 1, TexName, Typ, Color, false, 0);
 end;
 
 function TMenu.AddStatic(X, Y, W, H, Z: real;
                          ColR, ColG, ColB: real;
 			 TexX1, TexY1, TexX2, TexY2: real;
+//			 TexX1, TexY1, TexX2, TexY2: real; Alpha: real;
 			 const TexName: IPath;
 			 Typ: TTextureType;
 			 Color: integer;
@@ -691,7 +707,7 @@ begin
   begin
     Statics[StatNum] := TStatic.Create(Texture.GetTexture(TexName, Typ, Color)); // new skin
   end;
-                     
+
   // configures static
   Statics[StatNum].Texture.X := X;
   Statics[StatNum].Texture.Y := Y;
@@ -719,6 +735,8 @@ begin
   Statics[StatNum].Texture.TexX2 := TexX2;
   Statics[StatNum].Texture.TexY2 := TexY2;
   Statics[StatNum].Texture.Alpha := 1;
+// add with alpha
+//  Statics[StatNum].Texture.Alpha := Alpha;
   Statics[StatNum].Visible := true;
 
   //ReflectionMod
@@ -727,11 +745,66 @@ begin
 
   Result := StatNum;
 end;
+{ for later addition
+function TMenu.AddListItem(X, Y, W, H, Z: real;
+       ColR, ColG, ColB: real;
+       DColR, DColG, DColB: real;
+			 const TexName: IPath;
+			 const DTexName: IPath;
+			 Typ: TTextureType;
+			 Reflection: boolean;
+			 ReflectionSpacing: real): integer;
+var
+  StatNum: integer;
+begin
+  // adds static
+  StatNum := Length(StaticsList);
+  SetLength(StaticsList, StatNum + 1);
+
+  StaticsList[StatNum] := TStatic.Create(Texture.GetTexture(TexName, Typ, RGBFloatToInt(ColR, ColG, ColB)));
+  StaticsList[StatNum].TextureSelect := Texture.GetTexture(TexName, Typ, RGBFloatToInt(ColR, ColG, ColB));
+  StaticsList[StatNum].TextureDeselect := Texture.GetTexture(DTexName, Typ, RGBFloatToInt(DColR, DColG, DColB));
+
+  // configures static
+  StaticsList[StatNum].Texture.X := X;
+  StaticsList[StatNum].Texture.Y := Y;
+
+  //Set height and width via sprite size if omitted
+  if(H = 0) then
+    StaticsList[StatNum].Texture.H := StaticsList[StatNum].Texture.H
+  else
+    StaticsList[StatNum].Texture.H := H;
+
+  if(W = 0) then
+    StaticsList[StatNum].Texture.W := StaticsList[StatNum].Texture.W
+  else
+    StaticsList[StatNum].Texture.W := W;
+
+  StaticsList[StatNum].Texture.Z := Z;
+  if (Typ <> TEXTURE_TYPE_COLORIZED) then
+  begin
+    StaticsList[StatNum].Texture.ColR := ColR;
+    StaticsList[StatNum].Texture.ColG := ColG;
+    StaticsList[StatNum].Texture.ColB := ColB;
+  end;
+
+  StaticsList[StatNum].Texture.Alpha := 1;
+  StaticsList[StatNum].Visible := true;
+
+  //ReflectionMod
+  StaticsList[StatNum].Reflection := Reflection;
+  StaticsList[StatNum].ReflectionSpacing := ReflectionSpacing;
+
+  Result := StatNum;
+end;
+}
 
 function TMenu.AddText(ThemeText: TThemeText): integer;
 begin
   Result := AddText(ThemeText.X, ThemeText.Y, ThemeText.W, ThemeText.Font, ThemeText.Size,
     ThemeText.ColR, ThemeText.ColG, ThemeText.ColB, ThemeText.Align, ThemeText.Text, ThemeText.Reflection, ThemeText.ReflectionSpacing, ThemeText.Z);
+// add later when writable is available
+//    ThemeText.ColR, ThemeText.ColG, ThemeText.ColB, ThemeText.Align, ThemeText.Text, ThemeText.Reflection, ThemeText.ReflectionSpacing, ThemeText.Z, ThemeText.Writable);
 end;
 
 function TMenu.AddText(X, Y: real; const Text_: UTF8String): integer;
@@ -751,6 +824,8 @@ function TMenu.AddText(X, Y: real;
                       const Text: UTF8String): integer;
 begin
   Result := AddText(X, Y, 0, Style, Size, ColR, ColG, ColB, 0, Text, false, 0, 0);
+// add with writable
+//  Result := AddText(X, Y, 0, Style, Size, ColR, ColG, ColB, 0, Text, false, 0, 0, false);
 end;
 
 function TMenu.AddText(X, Y, W: real;
@@ -760,7 +835,8 @@ function TMenu.AddText(X, Y, W: real;
                        const Text_: UTF8String;
                        Reflection_: boolean;
                        ReflectionSpacing_: real;
-                       Z : real): integer;
+                       Z : real{;  add writable
+                       Writable: boolean}): integer;
 var
   TextNum: integer;
 begin
@@ -768,6 +844,9 @@ begin
   TextNum := Length(Text);
   SetLength(Text, TextNum + 1);
   Text[TextNum] := TText.Create(X, Y, W, Style, Size, ColR, ColG, ColB, Align, Text_, Reflection_, ReflectionSpacing_, Z);
+{ add with writable
+  Text[TextNum] := TText.Create(X, Y, W, Style, Size, ColR, ColG, ColB, Align, Text_, Reflection_, ReflectionSpacing_, Z, Writable);
+}
   Result := TextNum;
 end;
 
@@ -1048,7 +1127,7 @@ begin
 // usually start a second row when there are more than 4 buttons
   Int := Interaction;
 
-  Int := Int - ceil(Length(Interactions) / 2);
+  Int := Int - 4;//ceil(Length(Interactions) / 2);
 
   //Set Interaction
   if ((Int < 0) or (Int > Length(Interactions) - 1)) then
@@ -1063,7 +1142,7 @@ var
 begin
   Int := Interaction;
 
-  Int := Int + ceil(Length(Interactions) / 2);
+  Int := Int + 4; //ceil(Length(Interactions) / 2);
 
   //Set Interaction
   if ((Int < 0) or (Int > Length(Interactions) - 1)) then
@@ -1292,7 +1371,8 @@ begin
     AddSelectSlideOption(Values[SO]);
 
   SelectsS[High(SelectsS)].Text.Size := ThemeSelectS.TextSize;
-
+  SelectsS[High(SelectsS)].Text.Y := ThemeSelectS.Y + (ThemeSelectS.H /2 ) - (ThemeSelectS.TextSize / 2);
+  
   SelectsS[High(SelectsS)].Texture.Z := ThemeSelectS.Z;
   SelectsS[High(SelectsS)].TextureSBG.Z := ThemeSelectS.Z;
   SelectsS[High(SelectsS)].Tex_SelectS_ArrowL.Z := ThemeSelectS.Z;
@@ -1745,6 +1825,18 @@ begin
   Result := (X >= A.X) and (X <= A.X + A.W) and (Y >= A.Y) and (Y <= A.Y + A.H);
 end;
 
+function TMenu.InRegionX(X: real; A: TMouseOverRect): boolean;
+begin
+  // check whether A contains X
+  Result := (X >= A.X) and (X <= A.X + A.W);
+end;
+
+function TMenu.InRegionY(Y: real; A: TMouseOverRect): boolean;
+begin
+  // check whether A contains Y
+  Result := (Y >= A.Y) and (Y <= A.Y + A.H);
+end;
+
 //takes x,y coordinates and returns the interaction number
 //of the control at this position
 function TMenu.InteractAt(X, Y: real): integer;
@@ -1757,7 +1849,7 @@ begin
     case Interactions[i].Typ of
       iButton:
         if InRegion(X, Y, Button[Interactions[i].Num].GetMouseOverArea) and
-           Button[Interactions[i].Num].Visible then
+           Button[Interactions[i].Num].Visible and Button[Interactions[i].Num].Selectable then
         begin
           Result:=i;
           exit;
-- 
cgit v1.2.3