diff --git a/CastleEngineManifest.xml b/CastleEngineManifest.xml
index cee819b..1fb8fa0 100644
--- a/CastleEngineManifest.xml
+++ b/CastleEngineManifest.xml
@@ -57,4 +57,6 @@ See https://castle-engine.io/project_manifest for documentation of this file.
+
+
diff --git a/code/gameviewcredits.pas b/code/gameviewcredits.pas
index 3b40d7f..ff69de7 100644
--- a/code/gameviewcredits.pas
+++ b/code/gameviewcredits.pas
@@ -1,5 +1,7 @@
unit GameViewCredits;
+{$mode delphi}
+
interface
uses
@@ -11,15 +13,21 @@ interface
type
TViewCredits = class(TCastleView)
published
- ButtonMenu, ButtonCastle, ButtonAuthor: TCastleButton;
+ ButtonMenu, ButtonCredits, ButtonRules, ButtonKeys, ButtonWeapon,
+ ButtonCastle, ButtonAuthor, ButtonItch, ButtonDiscord, ButtonWeb: TCastleButton;
+ GroupCredits, GroupRules, GroupKeys, GroupWeapon: TCastleUserInterface;
public
constructor Create(AOwner: TComponent); override;
procedure Start; override;
function Press(const Event: TInputPressRelease): Boolean; override;
private
procedure ButtonMenuClick(Sender: TObject);
+ procedure ButtonPanelClick(Sender: TObject);
procedure ButtonCastleClick(Sender: TObject);
procedure ButtonAuthorClick(Sender: TObject);
+ procedure ButtonItchClick(Sender: TObject);
+ procedure ButtonDiscordClick(Sender: TObject);
+ procedure ButtonWebClick(Sender: TObject);
end;
var
@@ -31,7 +39,7 @@ implementation
// System
SysUtils,
// Castle
- castlewindow, CastleOpenDocument,
+ castlewindow, CastleOpenDocument, CastleApplicationProperties,
// Own
gameviewmain;
@@ -44,9 +52,18 @@ constructor TViewCredits.Create(AOwner: TComponent);
procedure TViewCredits.Start;
begin
inherited;
- ButtonMenu.OnClick := @ButtonMenuClick;
- ButtonCastle.OnClick := @ButtonCastleClick;
- ButtonAuthor.OnClick := @ButtonAuthorClick;
+ ButtonMenu.OnClick := ButtonMenuClick;
+ ButtonCredits.OnClick := ButtonPanelClick;
+ ButtonRules.OnClick := ButtonPanelClick;
+ ButtonKeys.OnClick := ButtonPanelClick;
+ ButtonWeapon.OnClick := ButtonPanelClick;
+ ButtonCastle.OnClick := ButtonCastleClick;
+ ButtonAuthor.OnClick := ButtonAuthorClick;
+ ButtonItch.OnClick := ButtonItchClick;
+ ButtonDiscord.OnClick := ButtonDiscordClick;
+ ButtonWeb.OnClick := ButtonWebClick;
+
+ ButtonKeys.Exists := ApplicationProperties.ShowUserInterfaceToQuit {$IFDEF WASI} or True {$ENDIF};
end;
function TViewCredits.Press(const Event: TInputPressRelease): Boolean;
@@ -74,6 +91,33 @@ procedure TViewCredits.ButtonCastleClick(Sender: TObject);
procedure TViewCredits.ButtonAuthorClick(Sender: TObject);
begin
OpenURL('https://github.com/phomm/Towerfight');
-end;
+end;
+
+procedure TViewCredits.ButtonItchClick(Sender: TObject);
+begin
+ OpenURL('https://phomm.itch.io/tower-fight');
+end;
+
+procedure TViewCredits.ButtonDiscordClick(Sender: TObject);
+begin
+ OpenURL('https://discord.gg/fz7bbM3dr3');
+end;
+
+procedure TViewCredits.ButtonWebClick(Sender: TObject);
+begin
+ OpenURL('https://ephyre.ru');
+end;
+
+procedure TViewCredits.ButtonPanelClick(Sender: TObject);
+begin
+ GroupCredits.Exists := Sender = ButtonCredits;
+ GroupRules.Exists := Sender = ButtonRules;
+ GroupKeys.Exists := Sender = ButtonKeys;
+ GroupWeapon.Exists := Sender = ButtonWeapon;
+ ButtonCredits.Pressed := Sender = ButtonCredits;
+ ButtonRules.Pressed := Sender = ButtonRules;
+ ButtonKeys.Pressed := Sender = ButtonKeys;
+ ButtonWeapon.Pressed := Sender = ButtonWeapon;
+end;
end.
diff --git a/code/gameviewformula.pas b/code/gameviewformula.pas
index 3e1ec4f..d6692d1 100644
--- a/code/gameviewformula.pas
+++ b/code/gameviewformula.pas
@@ -21,6 +21,8 @@ TViewFormula = class(TCastleView)
These fields will be automatically initialized at Start. }
ButtonGo: TCastleButton;
GroupElements: TCastleHorizontalGroup;
+ ImageEnemy: TCastleImageControl;
+ LabelHeroLevel: TCastleLabel;
public
RoomComponent: TRoomComponent;
constructor Create(AOwner: TComponent); override;
@@ -83,7 +85,7 @@ procedure TViewFormula.Resume;
if AMarked then
begin
LButton.ImageScale := 0.2;
- LButton.Image.Url := 'castle-data:/resources/' + WeaponFileNames[Weapon];
+ LButton.Image.Url := 'castle-data:/resources/' + WeaponFileNames[Weapon];
end
else
begin
@@ -102,6 +104,8 @@ procedure TViewFormula.Resume;
inherited;
Weapon := TMap.Map.Hero.Weapon;
LActor := TMap.Map.GetRoomByIndex(RoomComponent.Tag).Actors[0];
+ ImageEnemy.Url := LActor.AssetId;
+ LabelHeroLevel.Caption := TMap.Map.Hero.Visual;
Formula := LActor.Visual;
GroupElements.ClearControls();
SetLength(FPositions, Length(Formula) + 1);
diff --git a/code/gameviewgame.pas b/code/gameviewgame.pas
index 5957dd9..2ad475c 100644
--- a/code/gameviewgame.pas
+++ b/code/gameviewgame.pas
@@ -24,7 +24,7 @@ TViewGame = class(TCastleView)
BloodSplash0, BloodSplash1, BloodSplash2: TCastleScene;
Viewport1: TCastleViewport;
ImageWeapon: TCastleImageControl;
- TimerGame, TimerHint: TCastleTimer;
+ TimerBlood, TimerGame, TimerHint: TCastleTimer;
function GetMap(): TMap;
property Map: TMap read GetMap;
protected
@@ -46,7 +46,6 @@ TViewGame = class(TCastleView)
FPosFrom, FPosTo: TVector2;
FAnimateWeaponTicks, FGameTicks: Integer;
FRoomFight: TRoomComponent;
- FBloodTime: Single;
procedure ButtonDefeatClick(Sender: TObject);
procedure ButtonRoomClick(Sender: TObject);
procedure ButtonWeaponClick(Sender: TObject);
@@ -54,7 +53,7 @@ TViewGame = class(TCastleView)
procedure AnimationStopped(const AScene: TCastleSceneCore; const ATimeSensorNode: TTimeSensorNode);
function RandomBloodSplash(): TCastleScene;
procedure DefeatQuestionYes(Sender: TObject);
- procedure TimerBloodTrigger();
+ procedure TimerBloodTick(ASender: TObject);
procedure TimerGameTick(ASender: TObject);
procedure TimerHintTick(ASender: TObject);
procedure WeaponHint(ADoShow: Boolean; AWeapon: NHeroWeapon = hwNo);
@@ -148,7 +147,9 @@ procedure TViewGame.Start();
FWeapons[1] := WeaponPlus;
FWeapons[2] := WeaponMinus;
FWeapons[3] := WeaponMultiply;
- WeaponNo.DoClick();
+ WeaponNo.DoClick();
+ TimerBlood.Exists := False;
+ TimerBlood.OnTimer := TimerBloodTick;
TimerHint.OnTimer := TimerHintTick;
TimerGame.OnTimer := TimerGameTick;
TimerGame.IntervalSeconds := 1;
@@ -208,7 +209,7 @@ procedure TViewGame.ButtonWeaponClick(Sender: TObject);
LWeaponButton := Sender as TCastleButton;
for i := 0 to High(FWeapons) do
begin
- LIsWeapon := FWeapons[i] = LWeaponButton;
+ LIsWeapon := FWeapons[i] = LWeaponButton;
if LIsWeapon then
begin
if not FInternalWeaponSwitch then
@@ -237,7 +238,8 @@ procedure TViewGame.Stop();
begin
inherited;
TMap.Die();
- FPreviousRoom := nil;
+ FPreviousRoom := nil;
+ FPause := True;
end;
procedure TViewGame.ButtonDefeatClick(Sender: TObject);
@@ -268,20 +270,11 @@ procedure TViewGame.Update(const SecondsPassed: Single; var HandleInput: boolean
begin
ImageWeapon.Url := '';
WeaponClick(hwNo);
- end;
+ end;
end;
if not FPause and (Map.Hero.Weapon <> hwNo) then
with FPreviousRoom.ImageHeroWeapon do
Rotation := Rotation + 4 * SecondsPassed;
- if not FPause and (FBloodTime > 0) then
- begin
- FBloodTime := FBloodTime - SecondsPassed;
- if FBloodTime <= 0 then
- begin
- TimerBloodTrigger();
- FBloodTime := 0;
- end;
- end;
end;
function TViewGame.Press(const Event: TInputPressRelease): Boolean;
@@ -306,7 +299,7 @@ function TViewGame.Press(const Event: TInputPressRelease): Boolean;
if Result then Exit; // allow the ancestor to handle keys
if FPause then Exit;
- if Event.IsKey(keyEscape) or Event.IsKey(keyBackSpace) then
+ if Event.IsKey(keyEscape) or Event.IsKey(keyBackSpace) or Event.IsKey(keyEnter) then
begin
ButtonDefeat.DoClick();
Exit(True); // key was handled
@@ -317,20 +310,20 @@ function TViewGame.Press(const Event: TInputPressRelease): Boolean;
W := Ord(Map.Hero.Weapon);
repeat
W := (W + 1) mod Length(FWeapons);
- until FWeapons[W].Enabled;
- WeaponClick(NHeroWeapon(W), True);
+ until FWeapons[W].Enabled;
+ WeaponClick(NHeroWeapon(W), True);
Exit(True); // key was handled
end;
if Event.Key in [key1, key2, key3, key4] then
begin
- WeaponClick(NHeroWeapon(Ord(Event.Key) - Ord(key1)), True);
+ WeaponClick(NHeroWeapon(Ord(Event.Key) - Ord(key1)), True);
Exit(True); // key was handled
end;
if Event.Key in [keyNumpad1, keyNumpad2, keyNumpad3, keyNumpad4] then
begin
- WeaponClick(NHeroWeapon(Ord(Event.Key) - Ord(keyNumpad1)), True);
+ WeaponClick(NHeroWeapon(Ord(Event.Key) - Ord(keyNumpad1)), True);
Exit(True); // key was handled
end;
@@ -366,11 +359,11 @@ procedure TViewGame.ButtonRoomClick(Sender: TObject);
begin
FPreviousRoom.LabelLeft.Caption := '';
FPreviousRoom.ImageLeft.Url := '';
- FPreviousRoom.ImageHeroWeapon.Url := '';
+ FPreviousRoom.ImageHeroWeapon.Url := '';
end;
// Show image on currently clicked button
- FPreviousRoom := LRoom;
+ FPreviousRoom := LRoom;
LRoom.ImageLeft.Url := Map.Hero.AssetId;
LRoom.LabelLeft.Caption := Map.Hero.Visual;
SwitchHeroWeaponImage();
@@ -411,7 +404,7 @@ procedure TViewGame.RoomFight(ARoom: TRoomComponent);
SwitchHeroWeaponImage(True);
FSkip := True;
- FBloodTime := 1;
+ TimerBlood.Exists := True;
FRoomFight := ARoom;
end;
@@ -422,7 +415,7 @@ function TViewGame.RandomBloodSplash(): TCastleScene;
1: Result := BloodSplash1;
2: Result := BloodSplash2;
end;
-end;
+end;
procedure TViewGame.RunAnimation(AScene: TCastleScene; ARoom: TCastleUserInterface);
var
@@ -446,10 +439,12 @@ procedure TViewGame.AnimationStopped(const AScene: TCastleSceneCore; const ATime
AScene.Exists := False;
end;
-procedure TViewGame.TimerBloodTrigger();
+procedure TViewGame.TimerBloodTick(ASender: TObject);
var
LWeapon: NHeroWeapon;
begin
+ TimerBlood.Exists := False;
+
if Map.Hero.Dead then
Container.View := ViewDefeat
else
@@ -479,7 +474,7 @@ procedure TViewGame.TimerBloodTrigger();
Container.View := ViewWin;
end;
end;
- FSkip := False;
+ FSkip := False;
end;
procedure TViewGame.TimerHintTick(ASender: TObject);
diff --git a/code/gameviewmain.pas b/code/gameviewmain.pas
index 6ea763f..ba90669 100644
--- a/code/gameviewmain.pas
+++ b/code/gameviewmain.pas
@@ -23,7 +23,7 @@ TViewMain = class(TCastleView)
GroupOptions: TCastleUserInterface;
SliderMusic, SliderFullscreen, SliderUseTimer: TCastleIntegerSlider;
FactoryButton: TCastleComponentFactory;
- ImageRoomRoof3: TCastleImageControl;
+ ImageRoomRoof2, ImageRoomRoof3: TCastleImageControl;
public
constructor Create(AOwner: TComponent); override;
procedure Start(); override;
@@ -92,6 +92,7 @@ procedure TViewMain.Start();
ButtonExit.Exists := ApplicationProperties.ShowUserInterfaceToQuit;
ImageRoomRoof3.Exists := ApplicationProperties.ShowUserInterfaceToQuit;
SliderFullScreen.Exists := ApplicationProperties.ShowUserInterfaceToQuit;
+
for LButton in Buttons do
LButton.OnMotion := ButtonMotion;
diff --git a/code/gameviewwin.pas b/code/gameviewwin.pas
index e692f0b..cf1bd43 100644
--- a/code/gameviewwin.pas
+++ b/code/gameviewwin.pas
@@ -17,6 +17,7 @@ TViewWin = class(TCastleView)
LabelScore: TCastleLabel;
EditName: TCastleEdit;
PanelNotifications: TCastleNotifications;
+ ImageControl1: TCastleImageControl;
public
Score: Integer;
constructor Create(AOwner: TComponent); override;
diff --git a/code/models.pas b/code/models.pas
index 234a2c6..d86a54d 100644
--- a/code/models.pas
+++ b/code/models.pas
@@ -92,6 +92,7 @@ procedure TSubmitLeader.CalcHash();
begin
FHash := Format(HashTemplate, [Difficulty, IIF(Guid = '', '', ':Guid='+ Guid), Name, Salt, Score]);
//WriteLnLog('ForHash ' + FHash);
+ // TODO : remove this when WEB platform supports http requests
FHash := TSHA2_256.Create().ComputeString(FHash, TEncoding.UTF8).ToString();
end;
diff --git a/data/gameviewcredits.castle-user-interface b/data/gameviewcredits.castle-user-interface
index 13b9415..fdad52b 100644
--- a/data/gameviewcredits.castle-user-interface
+++ b/data/gameviewcredits.castle-user-interface
@@ -25,139 +25,6 @@
"VerticalAnchorParent" : "vpTop",
"VerticalAnchorSelf" : "vpTop"
},
- {
- "$$ClassName" : "TCastleLabel",
- "Alignment" : "hpMiddle",
- "ColorPersistent" : {
- "$$ClassName" : "TCastleColorPersistent",
- "Blue" : 1.0000000000000000E+000,
- "Green" : 9.0196079015731812E-001
- },
- "FontSize" : 5.5000000000000000E+001,
- "HorizontalAnchorParent" : "hpMiddle",
- "HorizontalAnchorSelf" : "hpMiddle",
- "Name" : "LabelRules",
- "Outline" : 1,
- "Text" : [
- "Japan is captured by Dragon and Demons",
- "Fight them in the Towers, Brave Samurai!",
- "WASD/Arrows/Mouse: move into Room ",
- "Leave: Esc/Backspace, Enter(menu): start",
- "",
- "Calculate enemy Level to Fight in Room",
- "You Win if your Level >= Enemy Level ",
- "and gain more Levels, otherwise Lose",
- "In First tower Fight gives you +Level ",
- "same as Enemy Level, each next gives ",
- "you 1/(2N - 2) fraction of enemy Level",
- "",
- "1234/E/Mouse before Fight: select weapon",
- "Shuriken(+) Kunai(-) Star(*), E/Mouse in ",
- "Formula dialog to re-math enemy formula",
- "Weapons less-to-none effective on bosses"
- ]
- },
- {
- "$$ClassName" : "TCastleButton",
- "Border" : {
- "$$ClassName" : "TBorder",
- "Bottom" : 4.0000000000000000E+000
- },
- "BorderColorPersistent" : {
- "$$ClassName" : "TCastleColorPersistent",
- "Alpha" : 1.0000000000000000E+000,
- "Blue" : 7.0196080207824707E-001
- },
- "Caption" : "author : phomm",
- "Cursor" : "mcHand",
- "CustomBackground" : true,
- "CustomBackgroundDisabled" : {
- "$$ClassName" : "TCastleImagePersistent"
- },
- "CustomBackgroundFocused" : {
- "$$ClassName" : "TCastleImagePersistent"
- },
- "CustomBackgroundNormal" : {
- "$$ClassName" : "TCastleImagePersistent"
- },
- "CustomBackgroundPressed" : {
- "$$ClassName" : "TCastleImagePersistent"
- },
- "CustomTextColorPersistent" : {
- "$$ClassName" : "TCastleColorPersistent",
- "Blue" : 7.0196080207824707E-001
- },
- "CustomTextColorUse" : true,
- "FontSize" : 1.0000000000000000E+002,
- "HorizontalAnchorParent" : "hpMiddle",
- "HorizontalAnchorSelf" : "hpMiddle",
- "Html" : true,
- "Image" : {
- "$$ClassName" : "TCastleImagePersistent"
- },
- "Name" : "ButtonAuthor",
- "Outline" : 1,
- "OutlineColorPersistent" : {
- "$$ClassName" : "TCastleColorPersistent",
- "Blue" : 1.0000000000000000E+000,
- "Green" : 4.3921568989753723E-001
- },
- "VerticalAnchorParent" : "vpTop",
- "VerticalAnchorSelf" : "vpTop"
- },
- {
- "$$ClassName" : "TCastleButton",
- "Border" : {
- "$$ClassName" : "TBorder",
- "Bottom" : 4.0000000000000000E+000
- },
- "BorderColorPersistent" : {
- "$$ClassName" : "TCastleColorPersistent",
- "Alpha" : 1.0000000000000000E+000,
- "Blue" : 7.0196080207824707E-001
- },
- "Caption" : "made with castle-engine",
- "Cursor" : "mcHand",
- "CustomBackground" : true,
- "CustomBackgroundDisabled" : {
- "$$ClassName" : "TCastleImagePersistent"
- },
- "CustomBackgroundFocused" : {
- "$$ClassName" : "TCastleImagePersistent"
- },
- "CustomBackgroundNormal" : {
- "$$ClassName" : "TCastleImagePersistent"
- },
- "CustomBackgroundPressed" : {
- "$$ClassName" : "TCastleImagePersistent"
- },
- "CustomTextColorPersistent" : {
- "$$ClassName" : "TCastleColorPersistent",
- "Blue" : 1.0000000000000000E+000,
- "Green" : 4.9019607901573181E-001
- },
- "CustomTextColorUse" : true,
- "FontSize" : 1.0000000000000000E+002,
- "HorizontalAnchorParent" : "hpMiddle",
- "HorizontalAnchorSelf" : "hpMiddle",
- "Html" : true,
- "Image" : {
- "$$ClassName" : "TCastleImagePersistent"
- },
- "Name" : "ButtonCastle",
- "Outline" : 1,
- "OutlineColorPersistent" : {
- "$$ClassName" : "TCastleColorPersistent",
- "Blue" : 1.0000000000000000E+000,
- "Green" : 8.4313726425170898E-001
- },
- "TranslationPersistent" : {
- "$$ClassName" : "TCastleVector2Persistent",
- "Y" : -1.0000000000000000E+002
- },
- "VerticalAnchorParent" : "vpTop",
- "VerticalAnchorSelf" : "vpTop"
- },
{
"$$ClassName" : "TCastleButton",
"Caption" : "Menu",
@@ -184,6 +51,726 @@
"PaddingVertical" : 2.0000000000000000E+001,
"VerticalAnchorParent" : "vpTop",
"VerticalAnchorSelf" : "vpTop"
+ },
+ {
+ "$$ClassName" : "TCastleImageControl",
+ "Content" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/formulaback.png"
+ },
+ "HeightFraction" : 8.5000002384185791E-001,
+ "HorizontalAnchorParent" : "hpRight",
+ "HorizontalAnchorSelf" : "hpRight",
+ "Name" : "ImageControl1",
+ "Stretch" : true,
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle",
+ "WidthFraction" : 8.3999997377395630E-001,
+ "$Children" : [
+ {
+ "$$ClassName" : "TCastleVerticalGroup",
+ "Alignment" : "hpMiddle",
+ "Exists" : false,
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Name" : "GroupCredits",
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle",
+ "$Children" : [
+ {
+ "$$ClassName" : "TCastleButton",
+ "Border" : {
+ "$$ClassName" : "TBorder",
+ "Bottom" : 4.0000000000000000E+000
+ },
+ "BorderColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Alpha" : 1.0000000000000000E+000,
+ "Blue" : 7.0196080207824707E-001
+ },
+ "Caption" : "github: towerfight",
+ "Cursor" : "mcHand",
+ "CustomBackground" : true,
+ "CustomBackgroundDisabled" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundFocused" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundNormal" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundPressed" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomTextColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 7.0196080207824707E-001
+ },
+ "CustomTextColorUse" : true,
+ "FontSize" : 6.0000000000000000E+001,
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Html" : true,
+ "Image" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "Name" : "ButtonAuthor",
+ "Outline" : 1,
+ "OutlineColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 1.0000000000000000E+000,
+ "Green" : 4.3921568989753723E-001
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop"
+ },
+ {
+ "$$ClassName" : "TCastleButton",
+ "Border" : {
+ "$$ClassName" : "TBorder",
+ "Bottom" : 4.0000000000000000E+000
+ },
+ "BorderColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Alpha" : 1.0000000000000000E+000,
+ "Blue" : 7.0196080207824707E-001
+ },
+ "Caption" : "Itch: ephyre-towerfight",
+ "Cursor" : "mcHand",
+ "CustomBackground" : true,
+ "CustomBackgroundDisabled" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundFocused" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundNormal" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundPressed" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomTextColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 7.0196080207824707E-001
+ },
+ "CustomTextColorUse" : true,
+ "FontSize" : 6.0000000000000000E+001,
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Html" : true,
+ "Image" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "Name" : "ButtonItch",
+ "Outline" : 1,
+ "OutlineColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 1.0000000000000000E+000,
+ "Green" : 4.3921568989753723E-001
+ },
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "Y" : -7.3948730468750000E+001
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop"
+ },
+ {
+ "$$ClassName" : "TCastleButton",
+ "Border" : {
+ "$$ClassName" : "TBorder",
+ "Bottom" : 4.0000000000000000E+000
+ },
+ "BorderColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Alpha" : 1.0000000000000000E+000,
+ "Blue" : 7.0196080207824707E-001
+ },
+ "Caption" : "www: ephyre team",
+ "Cursor" : "mcHand",
+ "CustomBackground" : true,
+ "CustomBackgroundDisabled" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundFocused" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundNormal" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundPressed" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomTextColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 7.0196080207824707E-001
+ },
+ "CustomTextColorUse" : true,
+ "FontSize" : 6.0000000000000000E+001,
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Html" : true,
+ "Image" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "Name" : "ButtonWeb",
+ "Outline" : 1,
+ "OutlineColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 1.0000000000000000E+000,
+ "Green" : 4.3921568989753723E-001
+ },
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "Y" : -1.4789746093750000E+002
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop"
+ },
+ {
+ "$$ClassName" : "TCastleButton",
+ "Border" : {
+ "$$ClassName" : "TBorder",
+ "Bottom" : 4.0000000000000000E+000
+ },
+ "BorderColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Alpha" : 1.0000000000000000E+000,
+ "Blue" : 7.0196080207824707E-001
+ },
+ "Caption" : "discord: ephyre",
+ "Cursor" : "mcHand",
+ "CustomBackground" : true,
+ "CustomBackgroundDisabled" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundFocused" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundNormal" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundPressed" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomTextColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 7.0196080207824707E-001
+ },
+ "CustomTextColorUse" : true,
+ "FontSize" : 6.0000000000000000E+001,
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Html" : true,
+ "Image" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "Name" : "ButtonDiscord",
+ "Outline" : 1,
+ "OutlineColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 1.0000000000000000E+000,
+ "Green" : 4.3921568989753723E-001
+ },
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "Y" : -2.2184619140625000E+002
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop"
+ },
+ {
+ "$$ClassName" : "TCastleButton",
+ "Border" : {
+ "$$ClassName" : "TBorder",
+ "Bottom" : 4.0000000000000000E+000
+ },
+ "BorderColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Alpha" : 1.0000000000000000E+000,
+ "Blue" : 7.0196080207824707E-001
+ },
+ "Caption" : "made with castle",
+ "Cursor" : "mcHand",
+ "CustomBackground" : true,
+ "CustomBackgroundDisabled" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundFocused" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundNormal" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundPressed" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomTextColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 1.0000000000000000E+000,
+ "Green" : 4.9019607901573181E-001
+ },
+ "CustomTextColorUse" : true,
+ "FontSize" : 6.0000000000000000E+001,
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Html" : true,
+ "Image" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/cge_logo.png"
+ },
+ "ImageLayout" : "ilTop",
+ "ImageScale" : 5.0000000000000000E-001,
+ "Name" : "ButtonCastle",
+ "Outline" : 1,
+ "OutlineColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 1.0000000000000000E+000,
+ "Green" : 8.4313726425170898E-001
+ },
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "Y" : -2.9579492187500000E+002
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop"
+ }
+ ]
+ },
+ {
+ "$$ClassName" : "TCastleHorizontalGroup",
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Name" : "GroupRules",
+ "Padding" : 1.0000000000000000E+002,
+ "Spacing" : 1.0000000000000000E+001,
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle",
+ "$Children" : [
+ {
+ "$$ClassName" : "TCastleLabel",
+ "Alignment" : "hpMiddle",
+ "ColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 1.0000000000000000E+000,
+ "Green" : 9.0196079015731812E-001
+ },
+ "FontSize" : 5.5000000000000000E+001,
+ "Html" : true,
+ "Name" : "LabelRules",
+ "Outline" : 1,
+ "Text" : [
+ "Edo is captured by Evil forces",
+ "Fight them, Brave Samurai !",
+ "Tap open Rooms to attack them",
+ "Each win opens new ways to you",
+ "Kill the Dragon and regain peace",
+ "",
+ "Enemy Level (EL) is a formula,",
+ "Solve and Win if Your Level >= EL ",
+ "and gain Levelups, otherwise Lose",
+ "In First tower you gain +Level ",
+ "same as EL, with every next tower",
+ "you get 1/(2T - 2) fraction of EL"
+ ],
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "X" : 1.0000000000000000E+002
+ },
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle"
+ },
+ {
+ "$$ClassName" : "TCastleVerticalGroup",
+ "Name" : "VerticalGroup2",
+ "Spacing" : 7.0000000000000000E+001,
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "X" : 1.0422080078125000E+003
+ },
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle",
+ "$Children" : [
+ {
+ "$$ClassName" : "TCastleHorizontalGroup",
+ "Name" : "HorizontalGroup1",
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop",
+ "$Children" : [
+ {
+ "$$ClassName" : "TCastleImageControl",
+ "Content" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/hero-samurai.png"
+ },
+ "Name" : "ImageControl2",
+ "Stretch" : true,
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle"
+ },
+ {
+ "$$ClassName" : "TCastleImageControl",
+ "Content" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/dragon.png"
+ },
+ "Name" : "ImageControl4",
+ "Stretch" : true,
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "X" : 1.0000000000000000E+002
+ },
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle"
+ }
+ ]
+ },
+ {
+ "$$ClassName" : "TCastleImageControl",
+ "Content" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/tf-levels.png"
+ },
+ "Name" : "ImageControl3",
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "Y" : -1.7000000000000000E+002
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "$$ClassName" : "TCastleVerticalGroup",
+ "Alignment" : "hpMiddle",
+ "Exists" : false,
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Name" : "GroupWeapon",
+ "Spacing" : 1.0000000000000000E+001,
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle",
+ "$Children" : [
+ {
+ "$$ClassName" : "TCastleUserInterface",
+ "AutoSizeToChildren" : true,
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Name" : "Group2",
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop",
+ "$Children" : [
+ {
+ "$$ClassName" : "TCastleImageControl",
+ "Content" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/tf-weapons.png"
+ },
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Name" : "ImageControl8",
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop"
+ }
+ ]
+ },
+ {
+ "$$ClassName" : "TCastleLabel",
+ "Alignment" : "hpMiddle",
+ "ColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 1.0000000000000000E+000,
+ "Green" : 9.0196079015731812E-001
+ },
+ "FontSize" : 5.5000000000000000E+001,
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Html" : true,
+ "Name" : "LabelWeapon",
+ "Outline" : 1,
+ "Text" : [
+ "You're weak? pick a weapon before Fight",
+ "Shuriken(+) Kunai(-) Star(*), Enter Room,",
+ "You'll see Enemy formula and your weapon",
+ "Select underlined Sign or Digit to override",
+ "Press go - New Formula makes Enemy level ",
+ "weaker or stronger, and your levelup also",
+ "Bosses on Towertops - only sign can be hit",
+ "Dragon can't be hit by weapon at all"
+ ],
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "Y" : -1.3000000000000000E+002
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop"
+ },
+ {
+ "$$ClassName" : "TCastleUserInterface",
+ "AutoSizeToChildren" : true,
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Name" : "Group1",
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "Y" : -5.0806481933593750E+002
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop",
+ "$Children" : [
+ {
+ "$$ClassName" : "TCastleHorizontalGroup",
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Name" : "HorizontalGroup2",
+ "Spacing" : 2.0000000000000000E+001,
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle",
+ "$Children" : [
+ {
+ "$$ClassName" : "TCastleImageControl",
+ "Content" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/tf-levels.png"
+ },
+ "Height" : 1.5000000000000000E+002,
+ "Name" : "ImageControl5",
+ "Stretch" : true,
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle",
+ "Width" : 1.5000000000000000E+002
+ },
+ {
+ "$$ClassName" : "TCastleImageControl",
+ "Content" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/tf-enter-room.png"
+ },
+ "Name" : "ImageControl9",
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "X" : 1.7000000000000000E+002
+ },
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle"
+ },
+ {
+ "$$ClassName" : "TCastleImageControl",
+ "Content" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/tf-battle.png"
+ },
+ "Name" : "ImageControl7",
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "X" : 3.3900000000000000E+002
+ },
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle"
+ },
+ {
+ "$$ClassName" : "TCastleImageControl",
+ "Content" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/tf-after-battle.png"
+ },
+ "Name" : "ImageControl6",
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "X" : 5.7100000000000000E+002
+ },
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "$$ClassName" : "TCastleUserInterface",
+ "AutoSizeToChildren" : true,
+ "Exists" : false,
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "Name" : "GroupKeys",
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle",
+ "$Children" : [
+ {
+ "$$ClassName" : "TCastleLabel",
+ "Alignment" : "hpMiddle",
+ "ColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Blue" : 1.0000000000000000E+000,
+ "Green" : 9.0196079015731812E-001
+ },
+ "FontSize" : 5.5000000000000000E+001,
+ "HorizontalAnchorParent" : "hpMiddle",
+ "HorizontalAnchorSelf" : "hpMiddle",
+ "LineSpacing" : 6.0000000000000000E+000,
+ "Name" : "LabelKeys",
+ "Outline" : 1,
+ "Text" : [
+ "Keyboard controls available:",
+ "Enter (in menu) - start fight",
+ "Esc/Backspace - close any menu or scene",
+ "Enter or Esc/Backspace - answer dialog",
+ "Arrow keys or WASD - move in game",
+ "1-4 or E (before fight) - select weapon",
+ "E (in Formula dialog) - pick weapon slot",
+ "Press Enter 4 times - fast battle restart"
+ ],
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "$$ClassName" : "TCastleVerticalGroup",
+ "Name" : "VerticalGroup1",
+ "Spacing" : 1.0000000000000000E+001,
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle",
+ "$Children" : [
+ {
+ "$$ClassName" : "TCastleButton",
+ "Caption" : "Rules",
+ "CustomBackground" : true,
+ "CustomBackgroundDisabled" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundFocused" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundNormal" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/cell-old-disabled.png"
+ },
+ "CustomBackgroundPressed" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/cell-old.png"
+ },
+ "FontSize" : 7.0000000000000000E+001,
+ "Image" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "Name" : "ButtonRules",
+ "PaddingHorizontal" : 2.0000000000000000E+001,
+ "PaddingVertical" : 2.0000000000000000E+001,
+ "Pressed" : true,
+ "Toggle" : true,
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop"
+ },
+ {
+ "$$ClassName" : "TCastleButton",
+ "Caption" : "Weapon",
+ "CustomBackground" : true,
+ "CustomBackgroundDisabled" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundFocused" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundNormal" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/cell-old-disabled.png"
+ },
+ "CustomBackgroundPressed" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/cell-old.png"
+ },
+ "FontSize" : 7.0000000000000000E+001,
+ "Image" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "Name" : "ButtonWeapon",
+ "PaddingHorizontal" : 2.0000000000000000E+001,
+ "PaddingVertical" : 2.0000000000000000E+001,
+ "Toggle" : true,
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "Y" : -1.0214999389648438E+002
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop"
+ },
+ {
+ "$$ClassName" : "TCastleButton",
+ "Caption" : "Keys",
+ "CustomBackground" : true,
+ "CustomBackgroundDisabled" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundFocused" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundNormal" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/cell-old-disabled.png"
+ },
+ "CustomBackgroundPressed" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/cell-old.png"
+ },
+ "FontSize" : 7.0000000000000000E+001,
+ "Image" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "Name" : "ButtonKeys",
+ "PaddingHorizontal" : 2.0000000000000000E+001,
+ "PaddingVertical" : 2.0000000000000000E+001,
+ "Toggle" : true,
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "Y" : -2.0429998779296875E+002
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop"
+ },
+ {
+ "$$ClassName" : "TCastleButton",
+ "Caption" : "Credits",
+ "CustomBackground" : true,
+ "CustomBackgroundDisabled" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundFocused" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "CustomBackgroundNormal" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/cell-old-disabled.png"
+ },
+ "CustomBackgroundPressed" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/cell-old.png"
+ },
+ "FontSize" : 7.0000000000000000E+001,
+ "Image" : {
+ "$$ClassName" : "TCastleImagePersistent"
+ },
+ "Name" : "ButtonCredits",
+ "PaddingHorizontal" : 2.0000000000000000E+001,
+ "PaddingVertical" : 2.0000000000000000E+001,
+ "Toggle" : true,
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "Y" : -3.0644998168945312E+002
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop"
+ }
+ ]
}
]
}
\ No newline at end of file
diff --git a/data/gameviewformula.castle-user-interface b/data/gameviewformula.castle-user-interface
index 3a78f22..005ca56 100644
--- a/data/gameviewformula.castle-user-interface
+++ b/data/gameviewformula.castle-user-interface
@@ -62,6 +62,66 @@
},
"VerticalAnchorParent" : "vpMiddle",
"VerticalAnchorSelf" : "vpMiddle"
+ },
+ {
+ "$$ClassName" : "TCastleHorizontalGroup",
+ "Name" : "GroupHero",
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "X" : 1.2000000000000000E+002,
+ "Y" : -5.0000000000000000E+001
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop",
+ "$Children" : [
+ {
+ "$$ClassName" : "TCastleImageControl",
+ "Content" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/hero-samurai.png"
+ },
+ "Height" : 8.0000000000000000E+001,
+ "Name" : "ImageHero",
+ "Stretch" : true,
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle",
+ "Width" : 8.0000000000000000E+001
+ },
+ {
+ "$$ClassName" : "TCastleLabel",
+ "FontSize" : 6.0000000000000000E+001,
+ "Name" : "LabelHeroLevel",
+ "Text" : [
+ "Level"
+ ],
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "X" : 8.0000000000000000E+001
+ },
+ "VerticalAnchorParent" : "vpMiddle",
+ "VerticalAnchorSelf" : "vpMiddle"
+ }
+ ]
+ },
+ {
+ "$$ClassName" : "TCastleImageControl",
+ "Content" : {
+ "$$ClassName" : "TCastleImagePersistent",
+ "Url" : "castle-data:/resources/dragon.png"
+ },
+ "Height" : 8.0000000000000000E+001,
+ "HorizontalAnchorParent" : "hpRight",
+ "HorizontalAnchorSelf" : "hpRight",
+ "Name" : "ImageEnemy",
+ "Stretch" : true,
+ "TranslationPersistent" : {
+ "$$ClassName" : "TCastleVector2Persistent",
+ "X" : -1.2000000000000000E+002,
+ "Y" : -5.0000000000000000E+001
+ },
+ "VerticalAnchorParent" : "vpTop",
+ "VerticalAnchorSelf" : "vpTop",
+ "Width" : 8.0000000000000000E+001
}
]
}
diff --git a/data/gameviewgame.castle-user-interface b/data/gameviewgame.castle-user-interface
index df232e0..be909f5 100644
--- a/data/gameviewgame.castle-user-interface
+++ b/data/gameviewgame.castle-user-interface
@@ -261,7 +261,7 @@
"Name" : "ImageWeaponsBack",
"TranslationPersistent" : {
"$$ClassName" : "TCastleVector2Persistent",
- "Y" : -1.2200000000000000E+002
+ "Y" : -1.2200000762939453E+002
},
"VerticalAnchorParent" : "vpTop",
"VerticalAnchorSelf" : "vpTop",
@@ -336,7 +336,7 @@
"Name" : "Group2",
"TranslationPersistent" : {
"$$ClassName" : "TCastleVector2Persistent",
- "X" : 1.5800000000000000E+002
+ "X" : 1.5799998474121094E+002
},
"VerticalAnchorParent" : "vpMiddle",
"VerticalAnchorSelf" : "vpMiddle",
@@ -399,7 +399,7 @@
"Name" : "Group3",
"TranslationPersistent" : {
"$$ClassName" : "TCastleVector2Persistent",
- "X" : 3.0472000122070312E+002
+ "X" : 3.0471997070312500E+002
},
"VerticalAnchorParent" : "vpMiddle",
"VerticalAnchorSelf" : "vpMiddle",
@@ -463,7 +463,7 @@
"Name" : "Group4",
"TranslationPersistent" : {
"$$ClassName" : "TCastleVector2Persistent",
- "X" : 4.7444000244140625E+002
+ "X" : 4.7443997192382812E+002
},
"VerticalAnchorParent" : "vpMiddle",
"VerticalAnchorSelf" : "vpMiddle",
@@ -536,6 +536,11 @@
"Stretch" : true,
"Width" : 6.4000000000000000E+001
},
+ {
+ "$$ClassName" : "TCastleTimer",
+ "IntervalSeconds" : 1.0000000000000000E+000,
+ "Name" : "TimerBlood"
+ },
{
"$$ClassName" : "TCastleTimer",
"IntervalSeconds" : 1.0000000000000000E+000,
diff --git a/data/gameviewmain.castle-user-interface b/data/gameviewmain.castle-user-interface
index e7c6f03..4ab3750 100644
--- a/data/gameviewmain.castle-user-interface
+++ b/data/gameviewmain.castle-user-interface
@@ -112,7 +112,7 @@
{
"$$ClassName" : "TCastleButton",
"AutoSize" : false,
- "Caption" : "Options",
+ "Caption" : "What a?",
"CustomBackground" : true,
"CustomBackgroundDisabled" : {
"$$ClassName" : "TCastleImagePersistent"
@@ -136,7 +136,7 @@
"Url" : "castle-data:/resources/samurai-mask.png"
},
"ImageScale" : 0.0000000000000000E+000,
- "Name" : "ButtonOptions",
+ "Name" : "ButtonCredits",
"TextAlignment" : "hpRight",
"TranslationPersistent" : {
"$$ClassName" : "TCastleVector2Persistent",
@@ -224,7 +224,7 @@
{
"$$ClassName" : "TCastleButton",
"AutoSize" : false,
- "Caption" : "About",
+ "Caption" : "Options",
"CustomBackground" : true,
"CustomBackgroundDisabled" : {
"$$ClassName" : "TCastleImagePersistent"
@@ -248,7 +248,7 @@
"Url" : "castle-data:/resources/samurai-mask.png"
},
"ImageScale" : 0.0000000000000000E+000,
- "Name" : "ButtonCredits",
+ "Name" : "ButtonOptions",
"TextAlignment" : "hpRight",
"TranslationPersistent" : {
"$$ClassName" : "TCastleVector2Persistent",
diff --git a/data/gameviewwin.castle-user-interface b/data/gameviewwin.castle-user-interface
index 2f68530..dd23b2a 100644
--- a/data/gameviewwin.castle-user-interface
+++ b/data/gameviewwin.castle-user-interface
@@ -65,10 +65,14 @@
"AutoSizeToChildren" : true,
"Content" : {
"$$ClassName" : "TCastleImagePersistent",
+ "ColorPersistent" : {
+ "$$ClassName" : "TCastleColorPersistent",
+ "Alpha" : 6.2745100259780884E-001
+ },
"Url" : "castle-data:/resources/formulaback.png"
},
- "HorizontalAnchorParent" : "hpMiddle",
- "HorizontalAnchorSelf" : "hpMiddle",
+ "HorizontalAnchorParent" : "hpRight",
+ "HorizontalAnchorSelf" : "hpRight",
"Name" : "ImageControl1",
"Stretch" : true,
"VerticalAnchorParent" : "vpMiddle",
diff --git a/data/resources/tf-after-battle.png b/data/resources/tf-after-battle.png
new file mode 100644
index 0000000..55e8b62
Binary files /dev/null and b/data/resources/tf-after-battle.png differ
diff --git a/data/resources/tf-battle.png b/data/resources/tf-battle.png
new file mode 100644
index 0000000..462214d
Binary files /dev/null and b/data/resources/tf-battle.png differ
diff --git a/data/resources/tf-enter-room.png b/data/resources/tf-enter-room.png
new file mode 100644
index 0000000..0b03e5b
Binary files /dev/null and b/data/resources/tf-enter-room.png differ
diff --git a/data/resources/tf-levels.png b/data/resources/tf-levels.png
new file mode 100644
index 0000000..9cba529
Binary files /dev/null and b/data/resources/tf-levels.png differ
diff --git a/data/resources/tf-weapons.png b/data/resources/tf-weapons.png
new file mode 100644
index 0000000..41012a6
Binary files /dev/null and b/data/resources/tf-weapons.png differ