[Various] Bringing up to speed with latest local changes
- FreeSO version update - Desktop UCP wip - New loading graphic - Fix CAS carousel being rather sticky on desktop. - Add missing neighbors on neighborhood load (for cc npcs, first runs) - Support showing load errors when objects on a lot are missing - PersonGeneratorHelper for getting info from people by spawning them in a dummy VM and running init. - Add support for Simantics AOT
1
.gitignore
vendored
|
@ -242,3 +242,4 @@ ModelManifest.xml
|
|||
.fake/
|
||||
|
||||
Client/Simitone/Simitone/
|
||||
Client/Simitone/TS1.Scripts
|
After Width: | Height: | Size: 6.5 KiB |
BIN
Client/Simitone/Simitone.Client/Content/Textures/roof/r1__h.png
Normal file
After Width: | Height: | Size: 982 B |
BIN
Client/Simitone/Simitone.Client/Content/Textures/roof/r1__n.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
Client/Simitone/Simitone.Client/Content/Textures/roof/r2__h.png
Normal file
After Width: | Height: | Size: 934 B |
BIN
Client/Simitone/Simitone.Client/Content/Textures/roof/r2__n.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
Client/Simitone/Simitone.Client/Content/Textures/roof/r3_.png
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
Client/Simitone/Simitone.Client/Content/Textures/roof/r3__n.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
Client/Simitone/Simitone.Client/Content/Textures/roof/r4__h.png
Normal file
After Width: | Height: | Size: 872 B |
BIN
Client/Simitone/Simitone.Client/Content/Textures/roof/r4__n.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 769 B |
After Width: | Height: | Size: 708 B |
After Width: | Height: | Size: 704 B |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 9.2 KiB |
After Width: | Height: | Size: 843 B |
After Width: | Height: | Size: 842 B |
After Width: | Height: | Size: 276 B |
After Width: | Height: | Size: 331 B |
After Width: | Height: | Size: 383 B |
After Width: | Height: | Size: 209 B |
After Width: | Height: | Size: 508 B |
After Width: | Height: | Size: 499 B |
After Width: | Height: | Size: 532 B |
After Width: | Height: | Size: 444 B |
After Width: | Height: | Size: 771 B |
After Width: | Height: | Size: 808 B |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 6 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 5.3 KiB |
|
@ -64,6 +64,7 @@
|
|||
<Compile Include="UI\Panels\CAS\UIFamilyCASItem.cs" />
|
||||
<Compile Include="UI\Panels\CAS\UIFamilyCASPanel.cs" />
|
||||
<Compile Include="UI\Panels\CAS\UISimCASPanel.cs" />
|
||||
<Compile Include="UI\Panels\Desktop\UIDesktopUCP.cs" />
|
||||
<Compile Include="UI\Panels\LiveSubpanels\Catalog\UICatalogItem.cs" />
|
||||
<Compile Include="UI\Panels\LiveSubpanels\UIButtonSubpanel.cs" />
|
||||
<Compile Include="UI\Panels\LiveSubpanels\UIBuyBrowsePanel.cs" />
|
||||
|
@ -102,6 +103,7 @@
|
|||
<Compile Include="UI\Screens\LoadingGameScreen.cs" />
|
||||
<Compile Include="UI\Screens\TS1CASScreen.cs" />
|
||||
<Compile Include="UI\Screens\TS1GameScreen.cs" />
|
||||
<Compile Include="Utils\PersonGeneratorHelper.cs" />
|
||||
<Compile Include="Utils\SimitoneNeighOBJExporter.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
@ -114,6 +116,10 @@
|
|||
<Name>MonoGame.Framework.Windows</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\FreeSO\Other\libs\MSDFData\MSDFData.csproj">
|
||||
<Project>{eabea510-3e53-4f19-9f0b-75c5ca9dfa3b}</Project>
|
||||
<Name>MSDFData</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\FreeSO\TSOClient\FSO.UI\FSO.UI.csproj">
|
||||
<Project>{73e2ad5b-720b-4ef3-9b7c-55931d0ec693}</Project>
|
||||
<Name>FSO.UI</Name>
|
||||
|
@ -221,6 +227,66 @@
|
|||
<Content Include="Content\uigraphics\common\circle10px.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_bg.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_build.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_buy.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_floordown.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_floorup.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_friend.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_live.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_opt.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_rotccw.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_rotcw.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_speed1.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_speed2.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_speed3.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_speed4.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_w1.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_w2.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_w3.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_w4.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_zoomm.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\desktop\d_live_zoomp.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Content\uigraphics\dialog\ngbh_outline.png">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
|
|
|
@ -20,6 +20,7 @@ using FSO.HIT.Model;
|
|||
using FSO.Client;
|
||||
using FSO.Files;
|
||||
using FSO.SimAntics;
|
||||
using MSDFData;
|
||||
|
||||
namespace Simitone.Client
|
||||
{
|
||||
|
@ -35,6 +36,7 @@ namespace Simitone.Client
|
|||
public SimitoneGame() : base()
|
||||
{
|
||||
GameFacade.Game = this;
|
||||
GameThread.Game = Thread.CurrentThread;
|
||||
if (GameFacade.DirectX) TimedReferenceController.SetMode(CacheType.PERMANENT);
|
||||
Content.RootDirectory = FSOEnvironment.GFXContentDir;
|
||||
|
||||
|
@ -101,7 +103,8 @@ namespace Simitone.Client
|
|||
SmoothZoom = settings.SmoothZoom,
|
||||
SurroundingLots = settings.SurroundingLotMode,
|
||||
AA = settings.AntiAlias,
|
||||
Directional = settings.DirectionalLight3D
|
||||
Directional = settings.DirectionalLight3D,
|
||||
Complex = true
|
||||
};
|
||||
|
||||
OperatingSystem os = Environment.OSVersion;
|
||||
|
@ -204,17 +207,25 @@ namespace Simitone.Client
|
|||
try
|
||||
{
|
||||
GameFacade.MainFont = new FSO.Client.UI.Framework.Font();
|
||||
GameFacade.MainFont.AddSize(12, Content.Load<SpriteFont>("Fonts/Mobile_15px"));
|
||||
GameFacade.MainFont.AddSize(15, Content.Load<SpriteFont>("Fonts/Mobile_20px"));
|
||||
GameFacade.MainFont.AddSize(19, Content.Load<SpriteFont>("Fonts/Mobile_25px"));
|
||||
GameFacade.MainFont.AddSize(37, Content.Load<SpriteFont>("Fonts/Mobile_50px"));
|
||||
//GameFacade.MainFont.AddSize(12, Content.Load<SpriteFont>("Fonts/Mobile_15px"));
|
||||
//GameFacade.MainFont.AddSize(15, Content.Load<SpriteFont>("Fonts/Mobile_20px"));
|
||||
//GameFacade.MainFont.AddSize(19, Content.Load<SpriteFont>("Fonts/Mobile_25px"));
|
||||
//GameFacade.MainFont.AddSize(37, Content.Load<SpriteFont>("Fonts/Mobile_50px"));
|
||||
|
||||
GameFacade.EdithFont = new FSO.Client.UI.Framework.Font();
|
||||
GameFacade.EdithFont.AddSize(12, Content.Load<SpriteFont>("Fonts/Trebuchet_12px"));
|
||||
GameFacade.EdithFont.AddSize(14, Content.Load<SpriteFont>("Fonts/Trebuchet_14px"));
|
||||
//GameFacade.EdithFont.AddSize(12, Content.Load<SpriteFont>("Fonts/Trebuchet_12px"));
|
||||
//GameFacade.EdithFont.AddSize(14, Content.Load<SpriteFont>("Fonts/Trebuchet_14px"));
|
||||
|
||||
GameFacade.VectorFont = new FSO.UI.Framework.MSDFFont(Content.Load<FieldFont>("../Fonts/mobile"));
|
||||
GameFacade.EdithVectorFont = new FSO.UI.Framework.MSDFFont(Content.Load<FieldFont>("../Fonts/trebuchet"));
|
||||
GameFacade.EdithVectorFont.VectorScale = 0.366f;
|
||||
GameFacade.EdithVectorFont.Height = 15;
|
||||
GameFacade.EdithVectorFont.YOff = 11;
|
||||
|
||||
FSO.UI.Framework.MSDFFont.MSDFEffect = Content.Load<Effect>("Effects/MSDFFont");
|
||||
|
||||
vitaboyEffect = Content.Load<Effect>("Effects/Vitaboy"+((FSOEnvironment.SoftwareDepth)?"iOS":""));
|
||||
uiLayer = new UILayer(this, Content.Load<SpriteFont>("Fonts/FreeSO_12px"), Content.Load<SpriteFont>("Fonts/FreeSO_16px"));
|
||||
uiLayer = new UILayer(this);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
|
@ -18,6 +18,7 @@ namespace Simitone.Client.UI.Controls
|
|||
public Color HoverColor = Color.Lerp(UIStyle.Current.BtnNormal, UIStyle.Current.BtnActive, 0.5f);
|
||||
public Color DisabledColor = new Color(128, 128, 128, 255);
|
||||
public bool Shadow;
|
||||
public Vector3 ShadowParam = new Vector3(3, 3, 0.25f);
|
||||
public float Alpha { get; set; }
|
||||
|
||||
public UIStencilButton(Texture2D tex) : base(tex)
|
||||
|
@ -54,7 +55,7 @@ namespace Simitone.Client.UI.Controls
|
|||
color = Color; break;
|
||||
}
|
||||
if (Shadow)
|
||||
DrawLocalTexture(SBatch, Texture, null, new Vector2(3f, 3f), Vector2.One, Color.Black * 0.25f * Alpha);
|
||||
DrawLocalTexture(SBatch, Texture, null, new Vector2(ShadowParam.X, ShadowParam.Y), Vector2.One, Color.Black * ShadowParam.Z * Alpha);
|
||||
DrawLocalTexture(SBatch, Texture, null, Vector2.Zero, Vector2.One, color * Alpha);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ namespace Simitone.Client.UI.Model
|
|||
HeadCamera.Target = pos2;
|
||||
HeadCamera.ProjectionOrigin = new Vector2(74/2, 74/2);
|
||||
|
||||
var HeadScene = new _3DTargetScene(GameFacade.GraphicsDevice, HeadCamera, new Point(74, 74), (GlobalSettings.Default.AntiAlias) ? 8 : 0);
|
||||
var HeadScene = new _3DTargetScene(GameFacade.GraphicsDevice, HeadCamera, new Point(74, 74), (GlobalSettings.Default.AntiAlias > 0) ? 8 : 0);
|
||||
HeadScene.ID = "UIPieMenuHead";
|
||||
|
||||
m_Head.Scene = HeadScene;
|
||||
|
|
|
@ -0,0 +1,489 @@
|
|||
using FSO.Client;
|
||||
using FSO.Client.UI.Controls;
|
||||
using FSO.Client.UI.Framework;
|
||||
using FSO.Client.UI.Model;
|
||||
using FSO.Common;
|
||||
using FSO.Common.Rendering.Framework.Model;
|
||||
using FSO.Common.Utils;
|
||||
using FSO.Content;
|
||||
using FSO.HIT;
|
||||
using FSO.LotView.RC;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using Simitone.Client.UI.Controls;
|
||||
using Simitone.Client.UI.Model;
|
||||
using Simitone.Client.UI.Screens;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Simitone.Client.UI.Panels.Desktop
|
||||
{
|
||||
public class UIDesktopUCP : UICachedContainer
|
||||
{
|
||||
public UIImage Background;
|
||||
public UIImage FriendIcon;
|
||||
|
||||
public UIButton LiveButton;
|
||||
public UIButton BuyButton;
|
||||
public UIButton BuildButton;
|
||||
public UIButton OptionsButton;
|
||||
|
||||
public UILabel MoneyLabel;
|
||||
public UILabel TimeLabel;
|
||||
public UILabel TimeLabelShadow;
|
||||
public UILabel FriendsLabel;
|
||||
public UILabel FriendsLabelShadow;
|
||||
public UILabel FloorLabel;
|
||||
public UILabel FloorLabelShadow;
|
||||
|
||||
public UIButton RoofButton;
|
||||
public UIButton WallsUpButton;
|
||||
public UIButton WallsCutButton;
|
||||
public UIButton WallsDownButton;
|
||||
|
||||
public UIButton FloorUpButton;
|
||||
public UIButton FloorDownButton;
|
||||
|
||||
public UIButton ZoomInButton;
|
||||
public UIButton ZoomOutButton;
|
||||
public UIButton RotateCWButton;
|
||||
public UIButton RotateCCWButton;
|
||||
|
||||
public UIButton[] SpeedButtons;
|
||||
|
||||
private TS1GameScreen Game;
|
||||
|
||||
public Func<UIMainPanelMode, bool> OnModeClick;
|
||||
|
||||
public string[] FloorNames = new string[]
|
||||
{
|
||||
"1st",
|
||||
"2nd",
|
||||
"3rd",
|
||||
"4th",
|
||||
"5th"
|
||||
};
|
||||
|
||||
public static Dictionary<int, int> RemapSpeed = new Dictionary<int, int>()
|
||||
{
|
||||
{0, 4}, //pause
|
||||
{1, 1}, //1 speed
|
||||
{3, 2}, //2 speed
|
||||
{10, 3}, //3 speed
|
||||
};
|
||||
|
||||
public static Dictionary<int, int> ReverseRemap = RemapSpeed.ToDictionary(x => x.Value, x => x.Key);
|
||||
|
||||
public UIDesktopUCP(TS1GameScreen screen)
|
||||
{
|
||||
Game = screen;
|
||||
var ui = Content.Get().CustomUI;
|
||||
var gd = GameFacade.GraphicsDevice;
|
||||
var sDir = new Vector3(0, 2, 0.5f);
|
||||
|
||||
Background = new UIImage(ui.Get("d_live_bg.png").Get(gd));
|
||||
Add(Background);
|
||||
|
||||
FriendIcon = new UIImage(ui.Get("d_live_friend.png").Get(gd)) { Position = new Vector2(156, 186) };
|
||||
Add(FriendIcon);
|
||||
|
||||
Add(LiveButton = new UIButton(ui.Get("d_live_live.png").Get(gd)) { Position = new Vector2(15, 2) });
|
||||
Add(BuyButton = new UIButton(ui.Get("d_live_buy.png").Get(gd)) { Position = new Vector2(107, 27) });
|
||||
Add(BuildButton = new UIButton(ui.Get("d_live_build.png").Get(gd)) { Position = new Vector2(179, 80) });
|
||||
Add(OptionsButton = new UIButton(ui.Get("d_live_opt.png").Get(gd)) { Position = new Vector2(242, 165) });
|
||||
|
||||
Add(FloorUpButton = new UIStencilButton(ui.Get("d_live_floorup.png").Get(gd)) { Position = new Vector2(16, 150), Shadow = true, ShadowParam = sDir });
|
||||
Add(FloorDownButton = new UIStencilButton(ui.Get("d_live_floordown.png").Get(gd)) { Position = new Vector2(16, 192), Shadow = true, ShadowParam = sDir });
|
||||
|
||||
Add(RoofButton = new UIStencilButton(ui.Get("d_live_w1.png").Get(gd)) { Position = new Vector2(15, 111), Shadow = true, ShadowParam = sDir });
|
||||
Add(WallsUpButton = new UIStencilButton(ui.Get("d_live_w2.png").Get(gd)) { Position = new Vector2(50, 107), Shadow = true, ShadowParam = sDir });
|
||||
Add(WallsCutButton = new UIStencilButton(ui.Get("d_live_w3.png").Get(gd)) { Position = new Vector2(86, 112), Shadow = true, ShadowParam = sDir });
|
||||
Add(WallsDownButton = new UIStencilButton(ui.Get("d_live_w4.png").Get(gd)) { Position = new Vector2(117, 122), Shadow = true, ShadowParam = sDir });
|
||||
|
||||
Add(ZoomInButton = new UIStencilButton(ui.Get("d_live_zoomp.png").Get(gd)) { Position = new Vector2(87, 154) });
|
||||
Add(ZoomOutButton = new UIStencilButton(ui.Get("d_live_zoomm.png").Get(gd)) { Position = new Vector2(87, 196) });
|
||||
Add(RotateCWButton = new UIStencilButton(ui.Get("d_live_rotcw.png").Get(gd)) { Position = new Vector2(62, 175) });
|
||||
Add(RotateCCWButton = new UIStencilButton(ui.Get("d_live_rotccw.png").Get(gd)) { Position = new Vector2(114, 175) });
|
||||
|
||||
SpeedButtons = new UIButton[4];
|
||||
for (int i=0; i<4; i++)
|
||||
{
|
||||
Add(SpeedButtons[i] = new UIStencilButton(ui.Get($"d_live_speed{i+1}.png").Get(gd))
|
||||
{
|
||||
Position = new Vector2(158 + 30 * i, 246),
|
||||
Shadow = true,
|
||||
ShadowParam = sDir
|
||||
});
|
||||
var speed = i + 1;
|
||||
SpeedButtons[i].OnButtonClick += (btn) =>
|
||||
{
|
||||
SwitchSpeed(speed);
|
||||
};
|
||||
}
|
||||
|
||||
var largeStyle = TextStyle.DefaultLabel.Clone();
|
||||
largeStyle.Size = 15;
|
||||
largeStyle.Color = UIStyle.Current.DialogTitle;
|
||||
|
||||
var whiteStyle = TextStyle.DefaultLabel.Clone();
|
||||
whiteStyle.Size = 12;
|
||||
whiteStyle.Color = UIStyle.Current.Text;
|
||||
|
||||
var shadowStyle = TextStyle.DefaultLabel.Clone();
|
||||
shadowStyle.Size = 12;
|
||||
shadowStyle.Color = Color.Black * 0.5f;
|
||||
|
||||
var friendStyle = TextStyle.DefaultLabel.Clone();
|
||||
friendStyle.Size = 12;
|
||||
friendStyle.Color = UIStyle.Current.SecondaryText;
|
||||
|
||||
Add(MoneyLabel = new UILabel()
|
||||
{
|
||||
Position = new Vector2(7, 241),
|
||||
Size = new Vector2(138, 30),
|
||||
Alignment = TextAlignment.Middle | TextAlignment.Center,
|
||||
Caption = "$0",
|
||||
CaptionStyle = largeStyle
|
||||
});
|
||||
|
||||
Add(TimeLabelShadow = new UILabel()
|
||||
{
|
||||
Position = new Vector2(157, 221+2),
|
||||
Size = new Vector2(114, 16),
|
||||
Alignment = TextAlignment.Middle | TextAlignment.Center,
|
||||
Caption = "12:00AM",
|
||||
CaptionStyle = shadowStyle
|
||||
});
|
||||
|
||||
Add(TimeLabel = new UILabel()
|
||||
{
|
||||
Position = new Vector2(157, 221),
|
||||
Size = new Vector2(114, 16),
|
||||
Alignment = TextAlignment.Middle | TextAlignment.Center,
|
||||
Caption = "12:00AM",
|
||||
CaptionStyle = whiteStyle
|
||||
});
|
||||
|
||||
Add(FriendsLabelShadow = new UILabel()
|
||||
{
|
||||
Position = new Vector2(176, 184+2),
|
||||
Alignment = TextAlignment.Top | TextAlignment.Left,
|
||||
Caption = "0",
|
||||
CaptionStyle = shadowStyle
|
||||
});
|
||||
|
||||
Add(FriendsLabel = new UILabel()
|
||||
{
|
||||
Position = new Vector2(176, 184),
|
||||
Alignment = TextAlignment.Top | TextAlignment.Left,
|
||||
Caption = "0",
|
||||
CaptionStyle = friendStyle
|
||||
});
|
||||
|
||||
Add(FloorLabelShadow = new UILabel()
|
||||
{
|
||||
Position = new Vector2(22, 184+2),
|
||||
Size = new Vector2(24, 15),
|
||||
Alignment = TextAlignment.Center | TextAlignment.Middle,
|
||||
Caption = "1st",
|
||||
CaptionStyle = shadowStyle
|
||||
});
|
||||
|
||||
Add(FloorLabel = new UILabel()
|
||||
{
|
||||
Position = new Vector2(22, 184),
|
||||
Size = new Vector2(24, 15),
|
||||
Alignment = TextAlignment.Center | TextAlignment.Middle,
|
||||
Caption = "1st",
|
||||
CaptionStyle = whiteStyle
|
||||
});
|
||||
|
||||
RoofButton.OnButtonClick += (btn) => SetCut(3);
|
||||
WallsUpButton.OnButtonClick += (btn) => SetCut(2);
|
||||
WallsCutButton.OnButtonClick += (btn) => SetCut(1);
|
||||
WallsDownButton.OnButtonClick += (btn) => SetCut(0);
|
||||
|
||||
LiveButton.OnButtonClick += (btn) => OnModeClick?.Invoke(UIMainPanelMode.LIVE);
|
||||
BuyButton.OnButtonClick += (btn) => OnModeClick?.Invoke(UIMainPanelMode.BUY);
|
||||
BuildButton.OnButtonClick += (btn) => OnModeClick?.Invoke(UIMainPanelMode.BUILD);
|
||||
OptionsButton.OnButtonClick += (btn) => OnModeClick?.Invoke(UIMainPanelMode.OPTIONS);
|
||||
|
||||
ZoomInButton.OnButtonClick += ZoomControl;
|
||||
ZoomOutButton.OnButtonClick += ZoomControl;
|
||||
RotateCWButton.OnButtonClick += RotateClockwise;
|
||||
RotateCCWButton.OnButtonClick += RotateCounterClockwise;
|
||||
|
||||
FloorUpButton.OnButtonClick += (b) => { if (Game.Level < 5) Game.Level++; };
|
||||
FloorDownButton.OnButtonClick += (b) => { if (Game.Level > 1) Game.Level--; };
|
||||
|
||||
Size = new Vector2(Background.Width, Background.Height);
|
||||
|
||||
UpdateBuildBuy();
|
||||
UpdateMoneyDisplay();
|
||||
UpdateZoomButton();
|
||||
}
|
||||
|
||||
private void ZoomControl(UIElement button)
|
||||
{
|
||||
if (FSOEnvironment.Enable3D) return;
|
||||
Game.ZoomLevel = (Game.ZoomLevel + ((button == ZoomInButton) ? -1 : 1));
|
||||
}
|
||||
|
||||
private void RotateCounterClockwise(UIElement button)
|
||||
{
|
||||
if (FSOEnvironment.Enable3D) return;
|
||||
var newRot = (Game.Rotation - 1);
|
||||
if (newRot < 0) newRot = 3;
|
||||
Game.Rotation = newRot;
|
||||
}
|
||||
|
||||
private void RotateClockwise(UIElement button)
|
||||
{
|
||||
if (FSOEnvironment.Enable3D) return;
|
||||
Game.Rotation = (Game.Rotation + 1) % 4;
|
||||
}
|
||||
|
||||
private string LastClock = "";
|
||||
private int LastSpeed = -1;
|
||||
private int LastCut;
|
||||
private int LastMoney = 0;
|
||||
private sbyte LastFloor = 0;
|
||||
private int LastZoom;
|
||||
public override void Update(UpdateState state)
|
||||
{
|
||||
var vm = Game.vm;
|
||||
var min = vm.Context.Clock.Minutes;
|
||||
var hour = vm.Context.Clock.Hours;
|
||||
|
||||
string suffix = (hour > 11) ? "PM" : "AM";
|
||||
hour %= 12;
|
||||
if (hour == 0) hour = 12;
|
||||
|
||||
var text = hour.ToString() + ":" + min.ToString().PadLeft(2, '0') + " " + suffix;
|
||||
|
||||
if (text != LastClock)
|
||||
{
|
||||
LastClock = text;
|
||||
TimeLabel.Caption = text;
|
||||
TimeLabelShadow.Caption = text;
|
||||
}
|
||||
|
||||
if (Game.Level != LastFloor)
|
||||
{
|
||||
LastFloor = Game.Level;
|
||||
FloorLabel.Caption = FloorNames[LastFloor - 1];
|
||||
FloorLabelShadow.Caption = FloorNames[LastFloor - 1];
|
||||
FloorDownButton.Disabled = LastFloor == 1;
|
||||
FloorUpButton.Disabled = LastFloor == 5;
|
||||
}
|
||||
|
||||
var speed = RemapSpeed[Math.Max(0, vm.SpeedMultiplier)];
|
||||
if (speed != LastSpeed)
|
||||
{
|
||||
/*
|
||||
if (speed == 4) InnerBg.Texture = Content.Get().CustomUI.Get("clockinbg_pause.png").Get(GameFacade.GraphicsDevice);
|
||||
else if (LastSpeed == 4) InnerBg.Texture = Content.Get().CustomUI.Get("clockinbg.png").Get(GameFacade.GraphicsDevice);
|
||||
*/
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
SpeedButtons[i].Selected = (i + 1 == speed);
|
||||
}
|
||||
LastSpeed = speed;
|
||||
}
|
||||
|
||||
if (LastCut != Game.LotControl.WallsMode)
|
||||
{
|
||||
LastCut = Game.LotControl.WallsMode;
|
||||
var ui = Content.Get().CustomUI;
|
||||
|
||||
RoofButton.Selected = LastCut == 3;
|
||||
WallsUpButton.Selected = LastCut == 2;
|
||||
WallsCutButton.Selected = LastCut == 1;
|
||||
WallsDownButton.Selected = LastCut == 0;
|
||||
}
|
||||
|
||||
var money = GetMoney();
|
||||
if (LastMoney != money)
|
||||
{
|
||||
DisplayChange(money - LastMoney);
|
||||
LastMoney = money;
|
||||
UpdateMoneyDisplay();
|
||||
}
|
||||
|
||||
if (LastZoom != Game.ZoomLevel) UpdateZoomButton();
|
||||
|
||||
base.Update(state);
|
||||
|
||||
//KEY SHORTCUTS
|
||||
var keys = state.NewKeys;
|
||||
var nofocus = true;
|
||||
if (Game.InLot)
|
||||
{
|
||||
if (keys.Contains(Keys.F1) && !LiveButton.Disabled) OnModeClick?.Invoke(UIMainPanelMode.LIVE);
|
||||
if (keys.Contains(Keys.F2) && !BuyButton.Disabled) OnModeClick?.Invoke(UIMainPanelMode.BUY);
|
||||
if (keys.Contains(Keys.F3) && !BuildButton.Disabled) OnModeClick?.Invoke(UIMainPanelMode.BUILD);
|
||||
if (keys.Contains(Keys.F4)) OnModeClick?.Invoke(UIMainPanelMode.OPTIONS); // Options Panel
|
||||
|
||||
if (nofocus)
|
||||
{
|
||||
if (FSOEnvironment.Enable3D)
|
||||
{
|
||||
//if the zoom or rotation buttons are down, gradually change their values.
|
||||
if (RotateCWButton.IsDown || state.KeyboardState.IsKeyDown(Keys.OemPeriod)) ((WorldStateRC)Game.vm.Context.World.State).RotationX += 2f / FSOEnvironment.RefreshRate;
|
||||
if (RotateCCWButton.IsDown || state.KeyboardState.IsKeyDown(Keys.OemComma)) ((WorldStateRC)Game.vm.Context.World.State).RotationX -= 2f / FSOEnvironment.RefreshRate;
|
||||
if (ZoomInButton.IsDown || (state.KeyboardState.IsKeyDown(Keys.OemPlus) && !state.CtrlDown)) Game.LotControl.TargetZoom = Math.Max(0.25f, Math.Min(Game.LotControl.TargetZoom + 1f / FSOEnvironment.RefreshRate, 2));
|
||||
if (ZoomOutButton.IsDown || (state.KeyboardState.IsKeyDown(Keys.OemMinus) && !state.CtrlDown)) Game.LotControl.TargetZoom = Math.Max(0.25f, Math.Min(Game.LotControl.TargetZoom - 1f / FSOEnvironment.RefreshRate, 2));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (keys.Contains(Keys.OemPlus) && !state.CtrlDown && !ZoomInButton.Disabled) { Game.ZoomLevel -= 1; UpdateZoomButton(); }
|
||||
if (keys.Contains(Keys.OemMinus) && !state.CtrlDown && !ZoomOutButton.Disabled) { Game.ZoomLevel += 1; UpdateZoomButton(); }
|
||||
if (keys.Contains(Keys.OemComma)) RotateCounterClockwise(null);
|
||||
if (keys.Contains(Keys.OemPeriod)) RotateClockwise(null);
|
||||
}
|
||||
if (keys.Contains(Keys.PageDown)) { if (Game.Level > 1) Game.Level--; }
|
||||
if (keys.Contains(Keys.PageUp)) { if (Game.Level < 5) Game.Level++; }
|
||||
if (keys.Contains(Keys.Home)) UpdateWallsViewKeyHandler(1);
|
||||
if (keys.Contains(Keys.End)) UpdateWallsViewKeyHandler(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateWallsViewKeyHandler(int type)
|
||||
{
|
||||
var mode = Game.LotControl.WallsMode;
|
||||
switch (type)
|
||||
{
|
||||
case 0:
|
||||
if (mode > 0) Game.LotControl.WallsMode -= 1;
|
||||
break;
|
||||
case 1:
|
||||
if (mode < 3) Game.LotControl.WallsMode += 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateZoomButton()
|
||||
{
|
||||
ZoomInButton.Disabled = (!Game.InLot) || (!FSOEnvironment.Enable3D && (Game.ZoomLevel == 1));
|
||||
ZoomOutButton.Disabled = (!FSOEnvironment.Enable3D && (Game.ZoomLevel == 3));
|
||||
LastZoom = Game.ZoomLevel;
|
||||
}
|
||||
|
||||
public void SetMode(UIMainPanelMode mode)
|
||||
{
|
||||
LiveButton.Selected = mode == UIMainPanelMode.LIVE;
|
||||
BuyButton.Selected = mode == UIMainPanelMode.BUY;
|
||||
BuildButton.Selected = mode == UIMainPanelMode.BUILD;
|
||||
OptionsButton.Selected = mode == UIMainPanelMode.OPTIONS;
|
||||
}
|
||||
|
||||
public void DisplayChange(int change)
|
||||
{
|
||||
var newLabel = new UILabel();
|
||||
newLabel.Position = MoneyLabel.Position;
|
||||
newLabel.Y += -20f;
|
||||
newLabel.CaptionStyle = MoneyLabel.CaptionStyle.Clone();
|
||||
newLabel.CaptionStyle.Size = 15;
|
||||
newLabel.CaptionStyle.Color = (change > 0) ? UIStyle.Current.Text : UIStyle.Current.NegMoney;
|
||||
newLabel.Alignment = FSO.Client.UI.Framework.TextAlignment.Right | FSO.Client.UI.Framework.TextAlignment.Middle;
|
||||
newLabel.Size = MoneyLabel.Size;
|
||||
|
||||
newLabel.Caption = ((change > 0) ? "+" : "-") + "§" + Math.Abs(change);
|
||||
DynamicOverlay.Add(newLabel);
|
||||
|
||||
GameFacade.Screens.Tween.To(newLabel, 1.5f, new Dictionary<string, float>() { { "Y", newLabel.Y-30 }, { "Opacity", 0 } });
|
||||
GameThread.SetTimeout(() => { Remove(newLabel); }, 1500);
|
||||
}
|
||||
|
||||
private void UpdateMoneyDisplay()
|
||||
{
|
||||
MoneyLabel.Caption = "§" + LastMoney.ToString("##,#0");
|
||||
MoneyLabel.Visible = Game.vm.GetGlobalValue(32) == 0;
|
||||
}
|
||||
|
||||
private int GetMoney()
|
||||
{
|
||||
return Game.ActiveFamily?.Budget ?? 0;
|
||||
}
|
||||
|
||||
public void UpdateBuildBuy()
|
||||
{
|
||||
var bbEnable = Game.vm.Context.Architecture.BuildBuyEnabled;
|
||||
BuyButton.Disabled = !bbEnable;
|
||||
BuildButton.Disabled = !bbEnable;
|
||||
LiveButton.Disabled = Game.vm.GetGlobalValue(32) != 0;
|
||||
}
|
||||
|
||||
public void SetCut(int cut)
|
||||
{
|
||||
Game.LotControl.World.State.DrawRoofs = (cut == 3);
|
||||
Game.LotControl.WallsMode = cut;
|
||||
}
|
||||
|
||||
public void SwitchSpeed(int speed)
|
||||
{
|
||||
var vm = Game.vm;
|
||||
if (vm.SpeedMultiplier == -1) return;
|
||||
switch (vm.SpeedMultiplier)
|
||||
{
|
||||
case 0:
|
||||
switch (speed)
|
||||
{
|
||||
case 1:
|
||||
HITVM.Get().PlaySoundEvent(UISounds.SpeedPTo1); break;
|
||||
case 2:
|
||||
HITVM.Get().PlaySoundEvent(UISounds.SpeedPTo2); break;
|
||||
case 3:
|
||||
HITVM.Get().PlaySoundEvent(UISounds.SpeedPTo3); break;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
switch (speed)
|
||||
{
|
||||
case 4:
|
||||
HITVM.Get().PlaySoundEvent(UISounds.Speed1ToP); break;
|
||||
case 2:
|
||||
HITVM.Get().PlaySoundEvent(UISounds.Speed1To2); break;
|
||||
case 3:
|
||||
HITVM.Get().PlaySoundEvent(UISounds.Speed1To3); break;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
switch (speed)
|
||||
{
|
||||
case 4:
|
||||
HITVM.Get().PlaySoundEvent(UISounds.Speed2ToP); break;
|
||||
case 1:
|
||||
HITVM.Get().PlaySoundEvent(UISounds.Speed2To1); break;
|
||||
case 3:
|
||||
HITVM.Get().PlaySoundEvent(UISounds.Speed2To3); break;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
switch (speed)
|
||||
{
|
||||
case 4:
|
||||
HITVM.Get().PlaySoundEvent(UISounds.Speed3ToP); break;
|
||||
case 1:
|
||||
HITVM.Get().PlaySoundEvent(UISounds.Speed3To1); break;
|
||||
case 2:
|
||||
HITVM.Get().PlaySoundEvent(UISounds.Speed3To2); break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
switch (speed)
|
||||
{
|
||||
case 4: vm.SpeedMultiplier = 0; break;
|
||||
case 1: vm.SpeedMultiplier = 1; break;
|
||||
case 2: vm.SpeedMultiplier = 3; break;
|
||||
case 3: vm.SpeedMultiplier = 10; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -777,9 +777,9 @@ namespace Simitone.Client.UI.Panels.LiveSubpanels
|
|||
|
||||
public override void GameResized()
|
||||
{
|
||||
CatContainer.Size = new Vector2(UIScreen.Current.ScreenWidth - 342, 128);
|
||||
if (ChoosingSub) Reset();
|
||||
base.GameResized();
|
||||
CatContainer.Size = new Vector2(Size.X, 128);
|
||||
if (ChoosingSub) Reset();
|
||||
}
|
||||
|
||||
public override void Update(UpdateState state)
|
||||
|
|
|
@ -19,7 +19,7 @@ namespace Simitone.Client.UI.Panels.LiveSubpanels
|
|||
{
|
||||
Opacity = 0;
|
||||
var screenWidth = GameFacade.Screens.CurrentUIScreen.ScreenWidth;
|
||||
Size = new Vector2(screenWidth-342, 128);
|
||||
Size = new Vector2(screenWidth - (342 + (game.Desktop?100:0)), 128);
|
||||
GameFacade.Screens.Tween.To(this, 0.3f, new Dictionary<string, float>() { { "Opacity", 1f } });
|
||||
Game = game;
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ namespace Simitone.Client.UI.Panels.LiveSubpanels
|
|||
public override void GameResized()
|
||||
{
|
||||
var screenWidth = UIScreen.Current.ScreenWidth;
|
||||
Size = new Vector2(screenWidth - 342, 128);
|
||||
Size = new Vector2(screenWidth - (342 + (Game.Desktop ? 100 : 0)), 128);
|
||||
base.GameResized();
|
||||
}
|
||||
|
||||
|
|
|
@ -126,7 +126,7 @@ namespace Simitone.Client.UI.Panels.LotControls
|
|||
}
|
||||
Camera = new BasicCamera(GameFacade.GraphicsDevice, new Vector3(5, 1, 0), new Vector3(0, 0, 0), new Vector3(0, 1, 0));
|
||||
Camera.NearPlane = 0.001f;
|
||||
Scene = new _3DTargetScene(GameFacade.GraphicsDevice, Camera, new Point(1030, 500), GlobalSettings.Default.AntiAlias?8:0);
|
||||
Scene = new _3DTargetScene(GameFacade.GraphicsDevice, Camera, new Point(1030, 500), (GlobalSettings.Default.AntiAlias > 0)?8:0);
|
||||
Scene.Initialize(GameFacade.Scenes);
|
||||
|
||||
InitializeLot();
|
||||
|
|
|
@ -17,6 +17,20 @@ namespace Simitone.Client.UI.Panels
|
|||
{
|
||||
public int[] Divisors = new int[]
|
||||
{
|
||||
237,
|
||||
328,
|
||||
398,
|
||||
456,
|
||||
507,
|
||||
556,
|
||||
609,
|
||||
680,
|
||||
731,
|
||||
781,
|
||||
832,
|
||||
920
|
||||
|
||||
/*
|
||||
140,
|
||||
243,
|
||||
278,
|
||||
|
@ -30,6 +44,7 @@ namespace Simitone.Client.UI.Panels
|
|||
723,
|
||||
814,
|
||||
884
|
||||
*/
|
||||
};
|
||||
|
||||
public float OddTransition { get; set; }
|
||||
|
|
|
@ -327,13 +327,12 @@ namespace Simitone.Client.UI.Panels
|
|||
|
||||
private void DialogResponse(byte code)
|
||||
{
|
||||
if (BlockingDialog == null || !(BlockingDialog is UIMobileAlert) || ActiveEntity == null) return;
|
||||
if (BlockingDialog == null || !(BlockingDialog is UIMobileAlert)) return;
|
||||
BlockingDialog.Close();
|
||||
var ma = (UIMobileAlert)BlockingDialog;
|
||||
LastDialogID = 0;
|
||||
vm.SendCommand(new VMNetDialogResponseCmd
|
||||
{
|
||||
ActorUID = ActiveEntity.PersistID,
|
||||
ResponseCode = code,
|
||||
ResponseText = (ma.ResponseText == null) ? "" : ma.ResponseText
|
||||
});
|
||||
|
@ -671,6 +670,20 @@ namespace Simitone.Client.UI.Panels
|
|||
//MouseCutRect = new Rectangle(0,0,0,0);
|
||||
}
|
||||
|
||||
public void SetTargetZoom(WorldZoom zoom)
|
||||
{
|
||||
switch (zoom)
|
||||
{
|
||||
case WorldZoom.Near:
|
||||
TargetZoom = 1f; break;
|
||||
case WorldZoom.Medium:
|
||||
TargetZoom = 0.5f; break;
|
||||
case WorldZoom.Far:
|
||||
TargetZoom = 0.25f; break;
|
||||
}
|
||||
LastZoom = World.State.Zoom;
|
||||
}
|
||||
|
||||
public override void Draw(UISpriteBatch batch)
|
||||
{
|
||||
//DrawLocalTexture(batch, World.State.Light.LightMap, new Rectangle(0,0, World.State.Light.LightMap.Width/3, World.State.Light.LightMap.Height/2), new Vector2());
|
||||
|
@ -681,6 +694,7 @@ namespace Simitone.Client.UI.Panels
|
|||
base.Draw(batch);
|
||||
}
|
||||
|
||||
private WorldZoom LastZoom;
|
||||
public override void Update(UpdateState state)
|
||||
{
|
||||
base.Update(state);
|
||||
|
@ -695,6 +709,13 @@ namespace Simitone.Client.UI.Panels
|
|||
}
|
||||
else
|
||||
{
|
||||
if (World.State.Zoom != LastZoom)
|
||||
{
|
||||
//zoom has been changed by something else. inherit the value
|
||||
SetTargetZoom(World.State.Zoom);
|
||||
LastZoom = World.State.Zoom;
|
||||
}
|
||||
|
||||
float BaseScale;
|
||||
WorldZoom targetZoom;
|
||||
if (TargetZoom < 0.5f)
|
||||
|
|
|
@ -110,32 +110,39 @@ namespace Simitone.Client.UI.Panels
|
|||
var ui = Content.Get().CustomUI;
|
||||
Div = ui.Get("panel_div.png").Get(GameFacade.GraphicsDevice);
|
||||
|
||||
FloorUpBtn = new UIStencilButton(ui.Get("level_up.png").Get(GameFacade.GraphicsDevice));
|
||||
FloorUpBtn.Position = new Vector2(80, 10);
|
||||
FloorUpBtn.OnButtonClick += (b) => { if (Game.Level < 5) Game.Level++; };
|
||||
Add(FloorUpBtn);
|
||||
if (!Game.Desktop)
|
||||
{
|
||||
FloorUpBtn = new UIStencilButton(ui.Get("level_up.png").Get(GameFacade.GraphicsDevice));
|
||||
FloorUpBtn.Position = new Vector2(80, 10);
|
||||
FloorUpBtn.OnButtonClick += (b) => { if (Game.Level < 5) Game.Level++; };
|
||||
Add(FloorUpBtn);
|
||||
|
||||
FloorDownBtn = new UIStencilButton(ui.Get("level_down.png").Get(GameFacade.GraphicsDevice));
|
||||
FloorDownBtn.Position = new Vector2(80, 68);
|
||||
FloorDownBtn.OnButtonClick += (b) => { if (Game.Level > 1) Game.Level--; };
|
||||
Add(FloorDownBtn);
|
||||
FloorDownBtn = new UIStencilButton(ui.Get("level_down.png").Get(GameFacade.GraphicsDevice));
|
||||
FloorDownBtn.Position = new Vector2(80, 68);
|
||||
FloorDownBtn.OnButtonClick += (b) => { if (Game.Level > 1) Game.Level--; };
|
||||
Add(FloorDownBtn);
|
||||
|
||||
FloorLabel = new UILabel();
|
||||
FloorLabel.CaptionStyle = FloorLabel.CaptionStyle.Clone();
|
||||
FloorLabel.CaptionStyle.Size = 15;
|
||||
FloorLabel.CaptionStyle.Color = UIStyle.Current.Text;
|
||||
FloorLabel.Alignment = TextAlignment.Middle | TextAlignment.Center;
|
||||
FloorLabel.Position = new Vector2(80, 64);
|
||||
FloorLabel.Size = new Vector2(51, 18);
|
||||
FloorLabel = new UILabel();
|
||||
FloorLabel.CaptionStyle = FloorLabel.CaptionStyle.Clone();
|
||||
FloorLabel.CaptionStyle.Size = 15;
|
||||
FloorLabel.CaptionStyle.Color = UIStyle.Current.Text;
|
||||
FloorLabel.Alignment = TextAlignment.Middle | TextAlignment.Center;
|
||||
FloorLabel.Position = new Vector2(80, 64);
|
||||
FloorLabel.Size = new Vector2(51, 18);
|
||||
|
||||
FloorLabelShadow = new UILabel();
|
||||
FloorLabelShadow.CaptionStyle = FloorLabel.CaptionStyle.Clone();
|
||||
FloorLabelShadow.Alignment = TextAlignment.Middle | TextAlignment.Center;
|
||||
FloorLabelShadow.Position = new Vector2(83, 67);
|
||||
FloorLabelShadow.Size = new Vector2(51, 18);
|
||||
FloorLabelShadow.CaptionStyle.Color = Color.Black * 0.5f;
|
||||
Add(FloorLabelShadow);
|
||||
Add(FloorLabel);
|
||||
FloorLabelShadow = new UILabel();
|
||||
FloorLabelShadow.CaptionStyle = FloorLabel.CaptionStyle.Clone();
|
||||
FloorLabelShadow.Alignment = TextAlignment.Middle | TextAlignment.Center;
|
||||
FloorLabelShadow.Position = new Vector2(83, 67);
|
||||
FloorLabelShadow.Size = new Vector2(51, 18);
|
||||
FloorLabelShadow.CaptionStyle.Color = Color.Black * 0.5f;
|
||||
Add(FloorLabelShadow);
|
||||
Add(FloorLabel);
|
||||
|
||||
Divider = new UIImage(ui.Get("divider.png").Get(GameFacade.GraphicsDevice));
|
||||
Divider.Position = new Vector2(146, 29);
|
||||
Add(Divider);
|
||||
}
|
||||
|
||||
HideButton = new UIStencilButton(ui.Get("panel_hide.png").Get(GameFacade.GraphicsDevice));
|
||||
HideButton.X = Game.ScreenWidth - (50 + 64 + 15);
|
||||
|
@ -143,12 +150,8 @@ namespace Simitone.Client.UI.Panels
|
|||
HideButton.OnButtonClick += (b) => { Close(); };
|
||||
Add(HideButton);
|
||||
|
||||
Divider = new UIImage(ui.Get("divider.png").Get(GameFacade.GraphicsDevice));
|
||||
Divider.Position = new Vector2(146, 29);
|
||||
Add(Divider);
|
||||
|
||||
Switcher = new UICategorySwitcher();
|
||||
Switcher.Position = new Vector2(164, 0);
|
||||
Switcher.Position = new Vector2(164 - (Game.Desktop ? 16 : 0), 0);
|
||||
Switcher.InitCategories(LiveCategories);
|
||||
Switcher.OnCategorySelect += Switcher_OnCategorySelect;
|
||||
Switcher.OnOpen += Switcher_OnOpen;
|
||||
|
@ -159,7 +162,7 @@ namespace Simitone.Client.UI.Panels
|
|||
fade.Opacity = 0;
|
||||
}
|
||||
|
||||
Game.LotControl.QueryPanel.Position = new Vector2(53, -5);
|
||||
Game.LotControl.QueryPanel.Position = new Vector2(53 + (Game.Desktop ? 25 : 0), -5);
|
||||
Add(Game.LotControl.QueryPanel);
|
||||
Game.LotControl.PickupPanel.Opacity = 0;
|
||||
Add(Game.LotControl.PickupPanel);
|
||||
|
@ -312,8 +315,18 @@ namespace Simitone.Client.UI.Panels
|
|||
|
||||
public UIElement[] GetFadeables()
|
||||
{
|
||||
return new UIElement[]
|
||||
if (Game.Desktop)
|
||||
{
|
||||
return new UIElement[]
|
||||
{
|
||||
Switcher.MainButton,
|
||||
HideButton
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
return new UIElement[]
|
||||
{
|
||||
FloorUpBtn,
|
||||
FloorDownBtn,
|
||||
FloorLabel,
|
||||
|
@ -321,7 +334,8 @@ namespace Simitone.Client.UI.Panels
|
|||
Switcher.MainButton,
|
||||
Divider,
|
||||
HideButton
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public override void Draw(UISpriteBatch batch)
|
||||
|
@ -347,13 +361,16 @@ namespace Simitone.Client.UI.Panels
|
|||
base.Update(state);
|
||||
Visible = _CurWidth > 0;
|
||||
|
||||
if (Game.Level != LastFloor)
|
||||
if (!Game.Desktop)
|
||||
{
|
||||
LastFloor = Game.Level;
|
||||
FloorLabel.Caption = FloorNames[LastFloor - 1];
|
||||
FloorLabelShadow.Caption = FloorNames[LastFloor - 1];
|
||||
FloorDownBtn.Disabled = LastFloor == 1;
|
||||
FloorUpBtn.Disabled = LastFloor == 5;
|
||||
if (Game.Level != LastFloor)
|
||||
{
|
||||
LastFloor = Game.Level;
|
||||
FloorLabel.Caption = FloorNames[LastFloor - 1];
|
||||
FloorLabelShadow.Caption = FloorNames[LastFloor - 1];
|
||||
FloorDownBtn.Disabled = LastFloor == 1;
|
||||
FloorUpBtn.Disabled = LastFloor == 5;
|
||||
}
|
||||
}
|
||||
|
||||
Game.LotControl.PickupPanel.Visible = Game.LotControl.PickupPanel.Opacity > 0;
|
||||
|
@ -370,7 +387,7 @@ namespace Simitone.Client.UI.Panels
|
|||
public void Open()
|
||||
{
|
||||
Visible = true;
|
||||
GameFacade.Screens.Tween.To(this, 0.5f, new Dictionary<string, float>() { { "CurWidth", GameFacade.Screens.CurrentUIScreen.ScreenWidth-(64+15)} }, TweenQuad.EaseOut);
|
||||
GameFacade.Screens.Tween.To(this, 0.5f, new Dictionary<string, float>() { { "CurWidth", GameFacade.Screens.CurrentUIScreen.ScreenWidth-X} }, TweenQuad.EaseOut);
|
||||
foreach (var fade in GetFadeables())
|
||||
{
|
||||
GameFacade.Screens.Tween.To(fade, 0.3f, new Dictionary<string, float>() { { "Opacity", 1f } });
|
||||
|
@ -420,8 +437,8 @@ namespace Simitone.Client.UI.Panels
|
|||
public override void GameResized()
|
||||
{
|
||||
base.GameResized();
|
||||
if (PanelActive) CurWidth = Game.ScreenWidth - (64 + 15);
|
||||
HideButton.X = Game.ScreenWidth - (50 + 64 + 15);
|
||||
if (PanelActive) CurWidth = Game.ScreenWidth - X;
|
||||
HideButton.X = Game.ScreenWidth - (50 + X);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ namespace Simitone.Client.UI.Panels
|
|||
for (int i = 0; i < Group.Objects.Count; i++)
|
||||
{
|
||||
var target = Group.Objects[i];
|
||||
target.SetRoom(65534);
|
||||
target.SetRoom(65535);
|
||||
if (target is VMGameObject) ((ObjectComponent)target.WorldUI).ForceDynamic = true;
|
||||
CursorTiles[i] = vm.Context.CreateObjectInstance(0x00000437, new LotTilePos(target.Position), FSO.LotView.Model.Direction.NORTH, true).Objects[0];
|
||||
CursorTiles[i].SetPosition(target.Position, Direction.NORTH, vm.Context);
|
||||
|
|
|
@ -60,6 +60,7 @@ namespace Simitone.Client.UI.Panels
|
|||
this.ButtonStyle = new TextStyle
|
||||
{
|
||||
Font = GameFacade.MainFont,
|
||||
VFont = GameFacade.VectorFont,
|
||||
Size = 12,
|
||||
Color = new Color(0xA5, 0xC3, 0xD6),
|
||||
SelectedColor = new Color(0x00, 0xFF, 0xFF),
|
||||
|
@ -133,7 +134,7 @@ namespace Simitone.Client.UI.Panels
|
|||
HeadCamera.Position = new Vector3(0, pos2.Y, 12.5f);
|
||||
HeadCamera.Target = pos2;
|
||||
|
||||
HeadScene = new _3DTargetScene(GameFacade.GraphicsDevice, HeadCamera, new Point((int)(200 * TrueScale), (int)(200 * TrueScale)), (GlobalSettings.Default.AntiAlias) ? 8 : 0);
|
||||
HeadScene = new _3DTargetScene(GameFacade.GraphicsDevice, HeadCamera, new Point((int)(200 * TrueScale), (int)(200 * TrueScale)), (GlobalSettings.Default.AntiAlias > 0) ? 8 : 0);
|
||||
HeadScene.ID = "UIPieMenuHead";
|
||||
|
||||
m_Head.Scene = HeadScene;
|
||||
|
|
|
@ -16,6 +16,7 @@ using Microsoft.Xna.Framework.Input;
|
|||
using FSO.SimAntics;
|
||||
using FSO.SimAntics.NetPlay.Model.Commands;
|
||||
using FSO.HIT;
|
||||
using Simitone.Client.UI.Panels.Desktop;
|
||||
|
||||
namespace Simitone.Client.UI.Panels
|
||||
{
|
||||
|
@ -29,6 +30,7 @@ namespace Simitone.Client.UI.Panels
|
|||
public UIMainPanel MainPanel;
|
||||
public UIStencilButton ExtendPanelBtn;
|
||||
public UIModeSwitcher ModeSwitcher;
|
||||
public UIDesktopUCP DesktopUCP;
|
||||
|
||||
public bool PanelActive;
|
||||
public int LastCut = 0;
|
||||
|
@ -36,48 +38,62 @@ namespace Simitone.Client.UI.Panels
|
|||
public UISimitoneFrontend(TS1GameScreen screen)
|
||||
{
|
||||
var ui = Content.Get().CustomUI;
|
||||
|
||||
CutBtn = new UITwoStateButton(ui.Get("cut_btn_down.png").Get(GameFacade.GraphicsDevice));
|
||||
CutBtn.X = screen.ScreenWidth - (256 + 15);
|
||||
CutBtn.Y = 15;
|
||||
CutBtn.OnButtonClick += CutButton;
|
||||
Add(CutBtn);
|
||||
|
||||
Clock = new UIClockPanel(screen.vm);
|
||||
Clock.X = screen.ScreenWidth - (334 + 15);
|
||||
Clock.Y = 15;
|
||||
Game = screen;
|
||||
Add(Clock);
|
||||
|
||||
Money = new UIMoneyPanel(screen);
|
||||
Money.Position = new Vector2(15, screen.ScreenHeight - 172);
|
||||
Add(Money);
|
||||
if (!Game.Desktop)
|
||||
{
|
||||
CutBtn = new UITwoStateButton(ui.Get("cut_btn_down.png").Get(GameFacade.GraphicsDevice));
|
||||
CutBtn.X = screen.ScreenWidth - (256 + 15);
|
||||
CutBtn.Y = 15;
|
||||
CutBtn.OnButtonClick += CutButton;
|
||||
Add(CutBtn);
|
||||
|
||||
Clock = new UIClockPanel(screen.vm);
|
||||
Clock.X = screen.ScreenWidth - (334 + 15);
|
||||
Clock.Y = 15;
|
||||
Add(Clock);
|
||||
|
||||
Money = new UIMoneyPanel(screen);
|
||||
Money.Position = new Vector2(15, screen.ScreenHeight - 172);
|
||||
Add(Money);
|
||||
|
||||
ExtendPanelBtn = new UIStencilButton(ui.Get("panel_expand.png").Get(GameFacade.GraphicsDevice));
|
||||
ExtendPanelBtn.OnButtonClick += ExpandClicked;
|
||||
Add(ExtendPanelBtn);
|
||||
}
|
||||
|
||||
MainPanel = new UIMainPanel(screen);
|
||||
MainPanel.OnEndSelect += OnEndSelect;
|
||||
MainPanel.ModeChanged += ModeChanged;
|
||||
Add(MainPanel);
|
||||
|
||||
ExtendPanelBtn = new UIStencilButton(ui.Get("panel_expand.png").Get(GameFacade.GraphicsDevice));
|
||||
ExtendPanelBtn.OnButtonClick += ExpandClicked;
|
||||
Add(ExtendPanelBtn);
|
||||
|
||||
var mode = new UIModeSwitcher(screen);
|
||||
mode.Position = new Vector2(64 + 15, screen.ScreenHeight - (64 + 15));
|
||||
mode.OnModeClick += LiveButtonClicked;
|
||||
Add(mode);
|
||||
ModeSwitcher = mode;
|
||||
|
||||
ExtendPanelBtn.Position = new Vector2(mode.X + 54, mode.Y - 50);
|
||||
if (Game.Desktop)
|
||||
{
|
||||
DesktopUCP = new UIDesktopUCP(screen);
|
||||
DesktopUCP.Position = new Vector2(15, screen.ScreenHeight - (278 + 15));
|
||||
DesktopUCP.OnModeClick += LiveButtonClicked;
|
||||
Add(DesktopUCP);
|
||||
}
|
||||
else
|
||||
{
|
||||
var mode = new UIModeSwitcher(screen);
|
||||
mode.Position = new Vector2(64 + 15, screen.ScreenHeight - (64 + 15));
|
||||
mode.OnModeClick += LiveButtonClicked;
|
||||
Add(mode);
|
||||
ModeSwitcher = mode;
|
||||
ExtendPanelBtn.Position = new Vector2(mode.X + 54, mode.Y - 50);
|
||||
}
|
||||
|
||||
MainPanel.X = 64 + 15;
|
||||
MainPanel.Y = mode.Y - 64;
|
||||
if (Game.Desktop) MainPanel.X += 100;
|
||||
MainPanel.GameResized();
|
||||
MainPanel.Y = screen.ScreenHeight - (128 + 15);
|
||||
MainPanel.Visible = false;
|
||||
|
||||
if (Game.vm.GetGlobalValue(32) > 0)
|
||||
{
|
||||
MainPanel.SetMode(UIMainPanelMode.BUY);
|
||||
ModeSwitcher.EndSwitch(MainPanel.Mode);
|
||||
ModeSwitcher?.EndSwitch(MainPanel.Mode);
|
||||
MainPanel.Open();
|
||||
} else
|
||||
{
|
||||
|
@ -87,7 +103,8 @@ namespace Simitone.Client.UI.Panels
|
|||
|
||||
private void ModeChanged(UIMainPanelMode obj)
|
||||
{
|
||||
Clock.SetHidden(obj != UIMainPanelMode.LIVE);
|
||||
Clock?.SetHidden(obj != UIMainPanelMode.LIVE);
|
||||
DesktopUCP?.SetMode(obj);
|
||||
var lotType = MainPanel.GetLotType(true);
|
||||
var hit = FSO.HIT.HITVM.Get();
|
||||
switch (obj)
|
||||
|
@ -140,13 +157,15 @@ namespace Simitone.Client.UI.Panels
|
|||
|
||||
private bool LiveButtonClicked(UIMainPanelMode mode)
|
||||
{
|
||||
if (MainPanel.PanelActive)
|
||||
var deskAuto = Game.Desktop && (mode != UIMainPanelMode.LIVE || MainPanel.Mode != UIMainPanelMode.LIVE);
|
||||
if (MainPanel.PanelActive || deskAuto)
|
||||
{
|
||||
if (MainPanel.ShowingSelect)
|
||||
if (MainPanel.ShowingSelect || deskAuto)
|
||||
{
|
||||
if (!MainPanel.PanelActive) MainPanel.Open();
|
||||
//switch to the target mode
|
||||
MainPanel.SetMode(mode);
|
||||
MainPanel.SwitchAvatar.Kill();
|
||||
MainPanel.SwitchAvatar?.Kill();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
|
@ -169,7 +188,7 @@ namespace Simitone.Client.UI.Panels
|
|||
|
||||
private void OnEndSelect()
|
||||
{
|
||||
ModeSwitcher.EndSwitch(MainPanel.Mode);
|
||||
ModeSwitcher?.EndSwitch(MainPanel.Mode);
|
||||
}
|
||||
|
||||
private void CutButton(UIElement button)
|
||||
|
@ -219,45 +238,54 @@ namespace Simitone.Client.UI.Panels
|
|||
}
|
||||
|
||||
base.Update(state);
|
||||
if (LastCut != Game.LotControl.WallsMode)
|
||||
if (!Game.Desktop)
|
||||
{
|
||||
LastCut = Game.LotControl.WallsMode;
|
||||
var ui = Content.Get().CustomUI;
|
||||
string cutImg = "cut_btn_down.png";
|
||||
switch (LastCut)
|
||||
if (LastCut != Game.LotControl.WallsMode)
|
||||
{
|
||||
case 1:
|
||||
cutImg = "cut_btn_away.png"; break;
|
||||
case 2:
|
||||
cutImg = "cut_btn_up.png"; break;
|
||||
case 3:
|
||||
cutImg = "cut_btn_roof.png"; break;
|
||||
LastCut = Game.LotControl.WallsMode;
|
||||
var ui = Content.Get().CustomUI;
|
||||
string cutImg = "cut_btn_down.png";
|
||||
switch (LastCut)
|
||||
{
|
||||
case 1:
|
||||
cutImg = "cut_btn_away.png"; break;
|
||||
case 2:
|
||||
cutImg = "cut_btn_up.png"; break;
|
||||
case 3:
|
||||
cutImg = "cut_btn_roof.png"; break;
|
||||
}
|
||||
CutBtn.Texture = ui.Get(cutImg).Get(GameFacade.GraphicsDevice);
|
||||
}
|
||||
CutBtn.Texture = ui.Get(cutImg).Get(GameFacade.GraphicsDevice);
|
||||
if (Clock.TweenHook != ClockTween)
|
||||
{
|
||||
ClockTween = Clock.TweenHook;
|
||||
CutBtn.X = Game.ScreenWidth - (256 + (138f * ClockTween) + 15);
|
||||
if (CutPanel != null) CutPanel.X = CutBtn.X - 39;
|
||||
}
|
||||
ModeSwitcher.LiveButton.Switching = MainPanel.ShowingSelect;
|
||||
ExtendPanelBtn.Visible = !MainPanel.PanelActive;
|
||||
}
|
||||
if (Clock.TweenHook != ClockTween)
|
||||
{
|
||||
ClockTween = Clock.TweenHook;
|
||||
CutBtn.X = Game.ScreenWidth - (256 + (138f * ClockTween) + 15);
|
||||
if (CutPanel != null) CutPanel.X = CutBtn.X - 39;
|
||||
}
|
||||
ModeSwitcher.LiveButton.Switching = MainPanel.ShowingSelect;
|
||||
ExtendPanelBtn.Visible = !MainPanel.PanelActive;
|
||||
}
|
||||
|
||||
public override void GameResized()
|
||||
{
|
||||
base.GameResized();
|
||||
CutBtn.X = Game.ScreenWidth - (256 + (138f * ClockTween) + 15);
|
||||
if (CutPanel != null) CutPanel.X = CutBtn.X - 39;
|
||||
Clock.X = Game.ScreenWidth - (334 + 15);
|
||||
Clock.Y = 15;
|
||||
|
||||
Money.Position = new Vector2(15, Game.ScreenHeight - 172);
|
||||
var mode = ModeSwitcher;
|
||||
mode.Position = new Vector2(64 + 15, Game.ScreenHeight - (64 + 15));
|
||||
ExtendPanelBtn.Position = new Vector2(mode.X + 54, mode.Y - 50);
|
||||
MainPanel.Y = mode.Y - 64;
|
||||
if (!Game.Desktop)
|
||||
{
|
||||
CutBtn.X = Game.ScreenWidth - (256 + (138f * ClockTween) + 15);
|
||||
if (CutPanel != null) CutPanel.X = CutBtn.X - 39;
|
||||
Clock.X = Game.ScreenWidth - (334 + 15);
|
||||
Clock.Y = 15;
|
||||
Money.Position = new Vector2(15, Game.ScreenHeight - 172);
|
||||
var mode = ModeSwitcher;
|
||||
mode.Position = new Vector2(64 + 15, Game.ScreenHeight - (64 + 15));
|
||||
ExtendPanelBtn.Position = new Vector2(mode.X + 54, mode.Y - 50);
|
||||
}
|
||||
else
|
||||
{
|
||||
DesktopUCP.Position = new Vector2(15, Game.ScreenHeight - (278 + 15));
|
||||
}
|
||||
MainPanel.Y = Game.ScreenHeight - (128 + 15);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -183,18 +183,6 @@ namespace Simitone.Client.UI.Panels.WorldUI
|
|||
batch.Draw(Cross, new Vector2(Texture.Width / 2 - Cross.Width / 2, Texture.Height / 2 - Cross.Height / 4), Color.White);
|
||||
}
|
||||
|
||||
if (DrawSkill)
|
||||
{
|
||||
batch.Draw(WhitePx, new Rectangle(88, 4, 71, 41), new Color(92, 92, 92));
|
||||
var font = GameFacade.MainFont.GetNearest(14).Font;
|
||||
|
||||
Vector2 fontOrigin = font.MeasureString(SkillString) / 2;
|
||||
batch.DrawString(font, SkillString, new Vector2(88 + 35, 15) - fontOrigin * 0.60f, new Color(255, 249, 157), 0, new Vector2(), 0.60f, SpriteEffects.None, 0);
|
||||
|
||||
fontOrigin = font.MeasureString(SpeedString) / 2;
|
||||
batch.DrawString(font, SpeedString, new Vector2(88 + 35, 34) - fontOrigin * 0.60f, new Color(255, 249, 157), 0, new Vector2(), 0.60f, SpriteEffects.None, 0);
|
||||
}
|
||||
|
||||
batch.End();
|
||||
GD.SetRenderTarget(null);
|
||||
Invalidated = false;
|
||||
|
|
|
@ -59,8 +59,10 @@ namespace Simitone.Client.UI.Panels.WorldUI
|
|||
batch.Draw(MoneyBG, new Vector2(MoneyTarget.Width-9.6f, Headline.Duration / 2), new Rectangle(24, 0, 12, 24), Model.UIStyle.Current.Bg * opacity,
|
||||
0, Vector2.Zero, new Vector2(0.8f, 0.8f), SpriteEffects.None, 0);
|
||||
Style.Color.A = (byte)(opacity*255);
|
||||
batch.DrawString(Style.SpriteFont, Text, new Vector2(5, Headline.Duration/2), Style.Color);
|
||||
|
||||
batch.End();
|
||||
Style.VFont.Draw(GD, Text, new Vector2(5, 1), Style.Color, new Vector2(Style.Scale), null);
|
||||
|
||||
GD.SetRenderTarget(null);
|
||||
}
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ namespace Simitone.Client.UI.Screens
|
|||
public UISimitoneLogo Logo;
|
||||
public UISimitoneLoadLabel LastLabel;
|
||||
public bool LoadingComplete;
|
||||
public UITweenInstance LogoTween;
|
||||
|
||||
private bool Closing = false;
|
||||
private float _i;
|
||||
|
@ -83,19 +84,19 @@ namespace Simitone.Client.UI.Screens
|
|||
GameFacade.Screens.Tween.To(this, 0.5f, new Dictionary<string, float>() { { "InterpolatedAnimation", 1f } }, TweenQuad.EaseOut);
|
||||
|
||||
LoadProgress = new UILoadProgress();
|
||||
LoadProgress.Position = (new Vector2(ScreenWidth, ScreenHeight) - new Vector2(938, 112))/2;
|
||||
LoadProgress.Position = (new Vector2(ScreenWidth, ScreenHeight) - new Vector2(1012, 128))/2;
|
||||
Add(LoadProgress);
|
||||
|
||||
Logo = new UISimitoneLogo();
|
||||
Logo.Position = new Vector2(ScreenWidth, ScreenHeight) / 2;
|
||||
Add(Logo);
|
||||
GameFacade.Screens.Tween.To(Logo, 1f, new Dictionary<string, float>() { { "Y", ScreenHeight/4 }, { "ScaleX", 0.5f }, { "ScaleY", 0.5f } }, TweenQuad.EaseOut);
|
||||
LogoTween = GameFacade.Screens.Tween.To(Logo, 1f, new Dictionary<string, float>() { { "Y", ScreenHeight/4 }, { "ScaleX", 0.5f }, { "ScaleY", 0.5f } }, TweenQuad.EaseOut);
|
||||
|
||||
InterpolatedAnimation = InterpolatedAnimation;
|
||||
|
||||
(new Thread(() => {
|
||||
FSO.Content.Content.Init(GlobalSettings.Default.StartupPath, GameFacade.GraphicsDevice);
|
||||
VMContext.InitVMConfig();
|
||||
VMContext.InitVMConfig(true);
|
||||
lock (this)
|
||||
{
|
||||
LoadingComplete = true;
|
||||
|
@ -125,6 +126,20 @@ namespace Simitone.Client.UI.Screens
|
|||
}, 750);
|
||||
}
|
||||
|
||||
public override void GameResized()
|
||||
{
|
||||
base.GameResized();
|
||||
GameFacade.Screens.Tween.Stop(LogoTween, true);
|
||||
Bg.Position = (new Vector2(ScreenWidth, ScreenHeight)) / 2;
|
||||
ProgressDiag.Position = new Vector2(0, ScreenHeight / 2 - 75);
|
||||
TextDiag.Position = new Vector2(0, ScreenHeight * 0.75f - 37);
|
||||
LoadProgress.Position = (new Vector2(ScreenWidth, ScreenHeight) - new Vector2(1012, 128)) / 2;
|
||||
Logo.Position = new Vector2(ScreenWidth, ScreenHeight/2) / 2;
|
||||
if (LastLabel != null) LastLabel.Position = new Vector2(ScreenWidth / 2, ScreenHeight * 0.75f);
|
||||
|
||||
InterpolatedAnimation = InterpolatedAnimation;
|
||||
}
|
||||
|
||||
public ContentLoadingProgress LastProgress = ContentLoadingProgress.Invalid;
|
||||
|
||||
public override void Update(UpdateState state)
|
||||
|
|
|
@ -249,7 +249,7 @@ namespace Simitone.Client.UI.Screens
|
|||
|
||||
var moving = 0;
|
||||
|
||||
if (state.MouseStates.Count > 0)
|
||||
if (state.MouseStates.Count(x => x.MouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed) > 0)
|
||||
{
|
||||
if (XLast == -1)
|
||||
{
|
||||
|
@ -699,11 +699,6 @@ namespace Simitone.Client.UI.Screens
|
|||
vm.Context.Clock.Minutes = 0;
|
||||
vm.Context.Clock.Hours = 12;
|
||||
|
||||
if (state.NewKeys.Contains(Microsoft.Xna.Framework.Input.Keys.LeftControl))
|
||||
{
|
||||
SetMode(UICASMode.SimEdit);
|
||||
}
|
||||
|
||||
var disableAccept = false;
|
||||
switch (Mode)
|
||||
{
|
||||
|
|
|
@ -28,6 +28,7 @@ using Microsoft.Xna.Framework.Input;
|
|||
using Simitone.Client.UI.Controls;
|
||||
using Simitone.Client.UI.Panels;
|
||||
using Simitone.Client.UI.Panels.WorldUI;
|
||||
using Simitone.Client.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
@ -41,6 +42,7 @@ namespace Simitone.Client.UI.Screens
|
|||
{
|
||||
public UIContainer WindowContainer;
|
||||
public bool Downtown;
|
||||
public bool Desktop = !FSOEnvironment.SoftwareKeyboard;
|
||||
|
||||
public UILotControl LotControl { get; set; }
|
||||
public UISimitoneFrontend Frontend { get; set; }
|
||||
|
@ -87,6 +89,7 @@ namespace Simitone.Client.UI.Screens
|
|||
Bg.Visible = false;
|
||||
World.Visible = true;
|
||||
//ucp.SetMode(UIUCP.UCPMode.LotMode);
|
||||
LotControl.SetTargetZoom(targ);
|
||||
if (m_ZoomLevel != value) vm.Context.World.InitiateSmoothZoom(targ);
|
||||
vm.Context.World.State.Zoom = targ;
|
||||
m_ZoomLevel = value;
|
||||
|
@ -191,6 +194,8 @@ namespace Simitone.Client.UI.Screens
|
|||
|
||||
public void NeighSelection(NeighSelectionMode mode)
|
||||
{
|
||||
Content.Get().Neighborhood.PreparePersonDataFromObject = PersonGeneratorHelper.PreparePersonDataFromObject;
|
||||
Content.Get().Neighborhood.AddMissingNeighbors();
|
||||
var nbd = (ushort)((mode == NeighSelectionMode.MoveInMagic) ? 7 : 4);
|
||||
TS1NeighPanel = new UINeighborhoodSelectionPanel(nbd);
|
||||
var switcher = new UINeighbourhoodSwitcher(TS1NeighPanel, nbd, mode != NeighSelectionMode.Normal);
|
||||
|
@ -233,6 +238,7 @@ namespace Simitone.Client.UI.Screens
|
|||
|
||||
public void MoveInAndPlay(short house, int family, UIElement switcher)
|
||||
{
|
||||
MoveInFamily = null;
|
||||
var neigh = Content.Get().Neighborhood;
|
||||
var fami = neigh.GetFamily((ushort)family);
|
||||
neigh.SetFamilyForHouse(house, fami, true);
|
||||
|
@ -343,6 +349,25 @@ namespace Simitone.Client.UI.Screens
|
|||
if (state.NewKeys.Contains(Keys.D3)) ChangeSpeedTo(3);
|
||||
if (state.NewKeys.Contains(Keys.P)) ChangeSpeedTo(0);
|
||||
|
||||
if (state.NewKeys.Contains(Keys.F12))
|
||||
{
|
||||
ChangeSpeedTo(1);
|
||||
//running 10000 ticks
|
||||
var timer = new System.Diagnostics.Stopwatch();
|
||||
timer.Start();
|
||||
|
||||
for (int i=0; i<10000; i++)
|
||||
{
|
||||
vm.Tick();
|
||||
}
|
||||
|
||||
timer.Stop();
|
||||
UIScreen.GlobalShowDialog(new UIMobileAlert(new UIAlertOptions() {
|
||||
Title = "Benchmark",
|
||||
Message = "10000 ticks took " + timer.ElapsedMilliseconds + "ms."
|
||||
}), true);
|
||||
}
|
||||
|
||||
if (World != null)
|
||||
{
|
||||
//stub smooth zoom?
|
||||
|
@ -454,7 +479,7 @@ namespace Simitone.Client.UI.Screens
|
|||
public void InitializeLot(VMMarshal marshal)
|
||||
{
|
||||
InitializeLot();
|
||||
vm.MyUID = uint.MaxValue;
|
||||
vm.MyUID = 1;
|
||||
vm.Load(marshal);
|
||||
|
||||
vm.TS1State.ActivateFamily(vm, ActiveFamily);
|
||||
|
@ -462,7 +487,7 @@ namespace Simitone.Client.UI.Screens
|
|||
var settings = GlobalSettings.Default;
|
||||
var myClient = new VMNetClient
|
||||
{
|
||||
PersistID = uint.MaxValue,
|
||||
PersistID = 1,
|
||||
RemoteIP = "local",
|
||||
AvatarState = new VMNetAvatarPersistState()
|
||||
{
|
||||
|
@ -470,7 +495,7 @@ namespace Simitone.Client.UI.Screens
|
|||
DefaultSuits = new VMAvatarDefaultSuits(settings.DebugGender),
|
||||
BodyOutfit = settings.DebugBody,
|
||||
HeadOutfit = settings.DebugHead,
|
||||
PersistID = uint.MaxValue,
|
||||
PersistID = 1,
|
||||
SkinTone = (byte)settings.DebugSkin,
|
||||
Gender = (short)(settings.DebugGender ? 1 : 0),
|
||||
Permissions = FSO.SimAntics.Model.TSOPlatform.VMTSOAvatarPermissions.Admin,
|
||||
|
@ -489,6 +514,44 @@ namespace Simitone.Client.UI.Screens
|
|||
this.Add(Frontend);
|
||||
}
|
||||
|
||||
public void ShowLoadErrors(List<VMLoadError> errors, bool verbose)
|
||||
{
|
||||
var errorMsg = GameFacade.Strings.GetString("153", "16");
|
||||
|
||||
if (verbose)
|
||||
{
|
||||
errorMsg += "\n";
|
||||
foreach (var error in errors)
|
||||
{
|
||||
errorMsg += "\n" + error.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
//signal thru the VM so we can stop time appropriately
|
||||
vm.LastSpeedMultiplier = vm.SpeedMultiplier;
|
||||
vm.SpeedMultiplier = 0;
|
||||
vm.SignalDialog(new VMDialogInfo
|
||||
{
|
||||
Block = true,
|
||||
Caller = null,
|
||||
Yes = "OK",
|
||||
DialogID = 0,
|
||||
Title = GameFacade.Strings.GetString("153", "17"),
|
||||
Message = errorMsg,
|
||||
});
|
||||
|
||||
/*
|
||||
CloseAlert = new UIMobileAlert(new FSO.Client.UI.Controls.UIAlertOptions
|
||||
{
|
||||
Title = GameFacade.Strings.GetString("153", "17"), //missing objects!
|
||||
Message = errorMsg,
|
||||
Buttons = UIAlertButton.Ok(
|
||||
(b) => { CloseAlert.Close(); CloseAlert = null; }
|
||||
)
|
||||
});
|
||||
*/
|
||||
}
|
||||
|
||||
public void InitializeLot(string lotName, bool external)
|
||||
{
|
||||
if (lotName == "" || lotName[0] == '!') return;
|
||||
|
@ -503,11 +566,13 @@ namespace Simitone.Client.UI.Screens
|
|||
}
|
||||
BlueprintReset(lotName, null);
|
||||
|
||||
vm.MyUID = uint.MaxValue;
|
||||
if (vm.LoadErrors.Count > 0) GameThread.NextUpdate((state) => ShowLoadErrors(vm.LoadErrors, true));
|
||||
|
||||
vm.MyUID = 1;
|
||||
var settings = GlobalSettings.Default;
|
||||
var myClient = new VMNetClient
|
||||
{
|
||||
PersistID = uint.MaxValue,
|
||||
PersistID = 1,
|
||||
RemoteIP = "local",
|
||||
AvatarState = new VMNetAvatarPersistState()
|
||||
{
|
||||
|
@ -515,7 +580,7 @@ namespace Simitone.Client.UI.Screens
|
|||
DefaultSuits = new VMAvatarDefaultSuits(settings.DebugGender),
|
||||
BodyOutfit = settings.DebugBody,
|
||||
HeadOutfit = settings.DebugHead,
|
||||
PersistID = uint.MaxValue,
|
||||
PersistID = 1,
|
||||
SkinTone = (byte)settings.DebugSkin,
|
||||
Gender = (short)(settings.DebugGender ? 1 : 0),
|
||||
Permissions = FSO.SimAntics.Model.TSOPlatform.VMTSOAvatarPermissions.Admin,
|
||||
|
@ -557,7 +622,7 @@ namespace Simitone.Client.UI.Screens
|
|||
public void LoadSurrounding(short houseID)
|
||||
{
|
||||
return;
|
||||
var surrounding = new NBHm(new OBJ(File.OpenRead(@"C:\Users\Rhys\Desktop\nb2.obj")));
|
||||
var surrounding = new NBHm(new OBJ(File.OpenRead(@"C:\Users\Rhys\Desktop\fso 2018\nb4.obj")));
|
||||
NBHmHouse myH = null;
|
||||
var myHeight = vm.Context.Blueprint.InterpAltitude(new Vector3(0, 0, 0));
|
||||
if (!surrounding.Houses.TryGetValue(houseID, out myH)) return;
|
||||
|
@ -653,7 +718,8 @@ namespace Simitone.Client.UI.Screens
|
|||
switch (type)
|
||||
{
|
||||
case VMEventType.TS1BuildBuyChange:
|
||||
Frontend.ModeSwitcher.UpdateBuildBuy();
|
||||
Frontend?.ModeSwitcher?.UpdateBuildBuy();
|
||||
Frontend?.DesktopUCP?.UpdateBuildBuy();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -803,6 +869,8 @@ namespace Simitone.Client.UI.Screens
|
|||
{
|
||||
CleanupLastWorld();
|
||||
NeighSelection(NeighSelectionMode.Normal);
|
||||
Downtown = false;
|
||||
SavedLot = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
using FSO.Client;
|
||||
using FSO.LotView;
|
||||
using FSO.LotView.Model;
|
||||
using FSO.SimAntics;
|
||||
using FSO.SimAntics.Engine.TSOTransaction;
|
||||
using FSO.SimAntics.Model;
|
||||
using FSO.SimAntics.NetPlay.Drivers;
|
||||
using Microsoft.Xna.Framework;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Simitone.Client.Utils
|
||||
{
|
||||
public static class PersonGeneratorHelper
|
||||
{
|
||||
private static VM TempVM;
|
||||
private static void InitVM()
|
||||
{
|
||||
var world = new World(GameFacade.GraphicsDevice);
|
||||
world.Initialize(GameFacade.Scenes);
|
||||
var context = new VMContext(world);
|
||||
|
||||
TempVM = new VM(context, new VMServerDriver(new VMTSOGlobalLinkStub()), new VMNullHeadlineProvider());
|
||||
TempVM.Init();
|
||||
|
||||
var blueprint = new Blueprint(3, 3);
|
||||
world.InitBlueprint(blueprint);
|
||||
context.Blueprint = blueprint;
|
||||
context.Architecture = new VMArchitecture(3, 3, blueprint, TempVM.Context);
|
||||
blueprint.Terrain = new FSO.LotView.Components.TerrainComponent(new Rectangle(0, 0, 3, 3), blueprint);
|
||||
TempVM.Tick();
|
||||
}
|
||||
|
||||
public static short[] PreparePersonDataFromObject(uint guid)
|
||||
{
|
||||
if (TempVM == null) InitVM();
|
||||
|
||||
var obj = TempVM.Context.CreateObjectInstance(guid, LotTilePos.OUT_OF_WORLD, Direction.NORTH)?.BaseObject as VMAvatar;
|
||||
|
||||
if (obj == null) return new short[88];
|
||||
var result = obj.GetPersonDataClone();
|
||||
obj.Delete(true, TempVM.Context);
|
||||
|
||||
return result.Take(88).ToArray();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -30,10 +30,10 @@ namespace Simitone.Windows
|
|||
var useDX = true;
|
||||
var path = gameLocator.FindTheSimsOnline();
|
||||
|
||||
if (useDX) GlobalSettings.Default.AntiAlias = false;
|
||||
|
||||
FSOEnvironment.Enable3D = false;
|
||||
bool ide = false;
|
||||
bool aa = false;
|
||||
bool jit = false;
|
||||
#region User resolution parmeters
|
||||
|
||||
foreach (var arg in args)
|
||||
|
@ -57,6 +57,12 @@ namespace Simitone.Windows
|
|||
case "3d":
|
||||
FSOEnvironment.Enable3D = true;
|
||||
break;
|
||||
case "aa":
|
||||
aa = true;
|
||||
break;
|
||||
case "jit":
|
||||
jit = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -87,13 +93,19 @@ namespace Simitone.Windows
|
|||
GlobalSettings.Default.TS1HybridPath = gameLocator.FindTheSims1();
|
||||
GlobalSettings.Default.ClientVersion = "0";
|
||||
GlobalSettings.Default.LightingMode = 3;
|
||||
GlobalSettings.Default.AntiAlias = true;
|
||||
GlobalSettings.Default.AntiAlias = aa ? 2 : 0;
|
||||
GlobalSettings.Default.ComplexShaders = true;
|
||||
|
||||
GameFacade.DirectX = useDX;
|
||||
World.DirectX = useDX;
|
||||
|
||||
if (ide) new FSO.IDE.VolcanicStartProxy().InitVolcanic();
|
||||
|
||||
var assemblies = new FSO.SimAntics.JIT.Runtime.AssemblyStore();
|
||||
//var globals = new TS1.Scripts.Dummy(); //make sure scripts assembly is loaded
|
||||
if (jit) assemblies.InitAOT();
|
||||
FSO.SimAntics.Engine.VMTranslator.INSTANCE = new FSO.SimAntics.JIT.Runtime.VMAOTTranslator(assemblies);
|
||||
|
||||
SimitoneGame game = new SimitoneGame();
|
||||
var form = (Form)Form.FromHandle(game.Window.Handle);
|
||||
if (form != null) form.FormClosing += Form_FormClosing;
|
||||
|
|
|
@ -74,6 +74,10 @@
|
|||
<Project>{5deb20eb-1eb7-48f9-922c-463abae56e63}</Project>
|
||||
<Name>FSO.IDE</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\FreeSO\TSOClient\FSO.SimAntics.JIT\FSO.SimAntics.JIT.csproj">
|
||||
<Project>{b8ab3711-7b4f-4126-9bf3-4ddde9475b74}</Project>
|
||||
<Name>FSO.SimAntics.JIT</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\FreeSO\TSOClient\FSO.UI\FSO.UI.csproj">
|
||||
<Project>{73e2ad5b-720b-4ef3-9b7c-55931d0ec693}</Project>
|
||||
<Name>FSO.UI</Name>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27703.2035
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Simitone.iOS", "Simitone\Simitone.iOS.csproj", "{F0BFC685-A357-4E5A-B502-1B5A35970E63}"
|
||||
EndProject
|
||||
|
@ -51,6 +51,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FSO.IDE", "..\..\FreeSO\TSO
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimplePaletteQuantizer", "..\..\FreeSO\Other\libs\ColorQuantizer\SimplePaletteQuantizer\SimplePaletteQuantizer.csproj", "{37812A22-91F3-4220-891E-5C26DA64A975}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSDFData", "..\..\FreeSO\Other\libs\MSDFData\MSDFData.csproj", "{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSDFExtension", "..\..\FreeSO\Other\libs\MSDFExtension\MSDFExtension.csproj", "{EBF08DC7-916D-4133-BADE-38C31E29F18A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FSO.SimAntics.JIT", "..\..\FreeSO\TSOClient\FSO.SimAntics.JIT\FSO.SimAntics.JIT.csproj", "{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TS1.Scripts", "TS1.Scripts\TS1.Scripts.csproj", "{E5391443-CF1E-4A61-8415-B0E51F23748B}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
|
@ -789,8 +797,137 @@ Global
|
|||
{37812A22-91F3-4220-891E-5C26DA64A975}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{37812A22-91F3-4220-891E-5C26DA64A975}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{37812A22-91F3-4220-891E-5C26DA64A975}.Release|x86.Build.0 = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{EABEA510-3E53-4F19-9F0B-75C5CA9DFA3B}.Release|x86.Build.0 = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{EBF08DC7-916D-4133-BADE-38C31E29F18A}.Release|x86.Build.0 = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{B8AB3711-7B4F-4126-9BF3-4DDDE9475B74}.Release|x86.Build.0 = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{E5391443-CF1E-4A61-8415-B0E51F23748B}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {F2FD9699-EAC6-4F94-8505-2B0ECD1E5D59}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|