From 21438b7ca8862ef5b9f789e138efdbab15939a40 Mon Sep 17 00:00:00 2001 From: k-m_schindler 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(-) 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