diff options
Diffstat (limited to '')
-rw-r--r-- | Game/Code/Menu/UMenuText.pas | 98 |
1 files changed, 47 insertions, 51 deletions
diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index 69acd4eb..2955263a 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -10,7 +10,8 @@ interface uses TextGL, UTexture, - gl, + gl, + math, SysUtils, SDL; @@ -18,17 +19,17 @@ type TText = class private SelectBool: boolean; - TextString: String; - TextTiles: Array of String; + TextString: string; + TextTiles: array of string; STicks: Cardinal; - SelectBlink: Boolean; + SelectBlink: boolean; public X: real; Y: real; - MoveX: real; //Some Modifier for X - Position that don't Affect the Real Y - MoveY: real; //Some Modifier for Y - Position that don't Affect the Real Y - W: real; // if text is wider than W then it is breaked + MoveX: real; //Some Modifier for X - Position that don't affect the real Y + MoveY: real; //Some Modifier for Y - Position that don't affect the real Y + W: real; //text wider than W is broken // H: real; Size: real; ColR: real; @@ -41,21 +42,21 @@ type Align: integer; // 0 = left, 1 = center, 2 = right //Reflection - Reflection: boolean;
- ReflectionSpacing: Real; + Reflection: boolean; + ReflectionSpacing: real; - procedure SetSelect(Value: Boolean); - property Selected: Boolean read SelectBool write SetSelect; + procedure SetSelect(Value: boolean); + property Selected: boolean read SelectBool write SetSelect; - procedure SetText(Value: String); - property Text: String read TextString write SetText; + procedure SetText(Value: string); + property Text: string read TextString write SetText; procedure DeleteLastL; //Procedure to Delete Last Letter procedure Draw; constructor Create; overload; constructor Create(X, Y: real; Tekst: string); overload; - constructor Create(ParX, ParY, ParW: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string; ParReflection: Boolean; ParReflectionSpacing: Real); overload; + constructor Create(ParX, ParY, ParW: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string; ParReflection: boolean; ParReflectionSpacing: real); overload; end; implementation @@ -64,10 +65,11 @@ uses UGraphic, StrUtils; {$IFDEF DARWIN} -function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer; +{ Why is this needed? Is PosEx from StrUtils different? +function PosEx(const SubStr, S: string; Offset: Cardinal = 1): integer; var - I,X: Integer; - Len, LenSubStr: Integer; + I, X: integer; + Len, LenSubStr: integer; begin if Offset = 1 then Result := Pos(SubStr, S) @@ -94,9 +96,10 @@ begin Result := 0; end; end; +} {$ENDIF} -procedure TText.SetSelect(Value: Boolean); +procedure TText.SetSelect(Value: boolean); begin SelectBool := Value; @@ -105,23 +108,16 @@ begin STicks := SDL_GetTicks() div 550; end; -procedure TText.SetText(Value: String); +procedure TText.SetText(Value: string); var - NextPos: Cardinal; //NextPos of a Space etc. - LastPos: Cardinal; //LastPos " + NextPos: Cardinal; //NextPos of a Space etc. + LastPos: Cardinal; //LastPos " LastBreak: Cardinal; //Last Break - isBreak: Boolean; //True if the Break is not Caused because the Text is out of the area + isBreak: boolean; //True if the Break is not Caused because the Text is out of the area FirstWord: Word; //Is First Word after Break? Len: Word; //Length of the Tiles Array - Function Smallest(const A, B: Cardinal):Cardinal; - begin - if (A < B) then - Result := A - else - Result := B; - end; - Function GetNextPos: Boolean; + function GetNextPos: boolean; var T1, T2, T3: Cardinal; begin @@ -146,7 +142,7 @@ var T3 := Length(Value); //Get Nearest Pos - NextPos := Smallest(T1, T3{Smallest(T2, T3)}); + NextPos := min(T1, T3{min(T2, T3)}); if (LastPos = Length(Value)) then NextPos := 0; @@ -154,6 +150,7 @@ var isBreak := (NextPos = T3) AND (NextPos <> Length(Value)); Result := (NextPos <> 0); end; + procedure AddBreak(const From, bTo: Cardinal); begin if (isBreak) OR (bTo - From >= 1) then @@ -169,6 +166,7 @@ var FirstWord := 0; end; end; + begin //Set TExtstring TextString := Value; @@ -178,7 +176,7 @@ begin STicks := SDL_GetTicks() div 550; //Exit if there is no Need to Create Tiles - If (W <= 0) and (Pos('\n', Value) = 0) then + if (W <= 0) and (Pos('\n', Value) = 0) then begin SetLength (TextTiles, 1); TextTiles[0] := Value; @@ -196,16 +194,15 @@ begin LastBreak := 1; FirstWord := 1; - if (W > 0) then begin - //Set Font Propertys + //Set Font Properties SetFontStyle(Style); SetFontSize(Size); end; //go Through Text - While (GetNextPos) do + while (GetNextPos) do begin //Break in Text if isBreak then @@ -217,7 +214,7 @@ begin //Not the First word after Break, so we don't have to break within a word if (FirstWord > 1) then begin - //Add Break before actual Position, because there the Text fits the Area + //Add Break before actual Position, because there the Text fits the Area AddBreak(LastBreak, LastPos); end else //First Word after Break Break within the Word @@ -253,10 +250,10 @@ begin AddBreak(LastBreak, Length(Value)+1); end; -Procedure TText.DeleteLastL; +procedure TText.DeleteLastL; var - S: String; - L: Integer; + S: string; + L: integer; begin S := TextString; L := Length(S); @@ -268,9 +265,9 @@ end; procedure TText.Draw; var - X2, Y2: real; + X2, Y2: real; Text2: string; - I: Integer; + I: integer; begin if Visible then begin @@ -281,12 +278,12 @@ begin glColor4f(ColR*Int, ColG*Int, ColB*Int, Alpha); //Reflection - if Reflection = true then
- SetFontReflection(true,ReflectionSpacing)
- else
+ if Reflection = true then + SetFontReflection(true, ReflectionSpacing) + else SetFontReflection(false,0); - //If Selected Set Blink... + //if selected set blink... if SelectBool then begin I := SDL_GetTicks() div 550; @@ -297,7 +294,7 @@ begin end; end; - {if (False) then //No Width set Draw as one Long String + {if (False) then //no width set draw as one long string begin if not (SelectBool AND SelectBlink) then Text2 := Text @@ -316,12 +313,12 @@ begin end else begin} - //Now Use allways: - //Draw Text as Many Strings + //now use allways: + //draw text as many strings Y2 := Y + MoveY; for I := 0 to high(TextTiles) do begin - if (not (SelectBool AND SelectBlink)) OR (I <> high(TextTiles)) then + if (not (SelectBool and SelectBlink)) or (I <> high(TextTiles)) then Text2 := TextTiles[I] else Text2 := TextTiles[I] + '|'; @@ -359,7 +356,7 @@ begin Create(X, Y, 0, 0, 10, 0, 0, 0, 0, Tekst, false, 0); end; -constructor TText.Create(ParX, ParY, ParW: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string; ParReflection: Boolean; ParReflectionSpacing: Real); +constructor TText.Create(ParX, ParY, ParW: real; ParStyle: integer; ParSize, ParColR, ParColG, ParColB: real; ParAlign: integer; ParTekst: string; ParReflection: boolean; ParReflectionSpacing: real); begin inherited Create; Alpha := 1; @@ -380,5 +377,4 @@ begin ReflectionSpacing:= ParReflectionSpacing; end; - end. |