/// <summary> /// Check and convert native type supported from Redis. /// </summary> /// <param name="value"></param> /// <param name="type"></param> /// <returns></returns> internal static object ConvertRedisValueToObject(StackExchange.Redis.RedisValue value, Type type, StatusItem statusItem) { object result = null; if (typeof(String) == type) { if ((statusItem & StatusItem.Compressed) == StatusItem.Compressed) { byte[] tmp = Utility.Deflate((Byte[])value, System.IO.Compression.CompressionMode.Decompress); result = System.Text.Encoding.UTF8.GetString(tmp); } else { result = (String)value; } } else if (typeof(Int16) == type) { result = (Int16)value; } else if (typeof(Int32) == type) { result = (Int32)value; } else if (typeof(Int64) == type) { result = (Int64)value; } else if (typeof(Boolean) == type) { result = (Boolean)value; } else if (typeof(Single) == type) { result = (Single)value; } else if (typeof(Double) == type) { result = (Double)value; } else { result = (Byte[])value; if ((statusItem & StatusItem.Compressed) == StatusItem.Compressed) { result = Utility.Deflate((Byte[])result, System.IO.Compression.CompressionMode.Decompress); } if ((statusItem & StatusItem.Serialized) == StatusItem.Serialized) { result = Utility.DeSerialize((Byte[])result); //If not supported De-Serialize Object... } } return result; }
/// <summary> /// Create all controls. This gets called once and the controls remain with their state between Sceanrio runs. /// </summary> private static void Setup() { StringBuilder aboutMessage = new StringBuilder(); aboutMessage.AppendLine("UI Catalog is a comprehensive sample library for Terminal.Gui"); aboutMessage.AppendLine(""); aboutMessage.AppendLine($"Version: {typeof(UICatalogApp).Assembly.GetName ().Version}"); aboutMessage.AppendLine($"Using Terminal.Gui Version: {typeof (Terminal.Gui.Application).Assembly.GetName ().Version}"); aboutMessage.AppendLine(""); void HandleSysConsoleMenuChange() { _useSystemConsole = !_useSystemConsole; _sysConsoleMenu.Title = $"[{(_useSystemConsole ? 'x' : ' ')}] _Use System Console"; } _sysConsoleMenu = new MenuItem($"[{(_useSystemConsole ? 'x' : ' ')}] _Use System Console", "", () => HandleSysConsoleMenuChange()); _menu = new MenuBar(new MenuBarItem [] { new MenuBarItem("_File", new MenuItem [] { new MenuItem("_Quit", "", () => Application.RequestStop()) }), new MenuBarItem("_Settings", new MenuItem [] { _sysConsoleMenu }), new MenuBarItem("_About...", "About this app", () => MessageBox.Query("About UI Catalog", aboutMessage.ToString(), "Ok")), }); _leftPane = new Window("Categories") { X = 0, Y = 1, // for menu Width = 25, Height = Dim.Fill(), CanFocus = false, }; _categories = Scenario.GetAllCategories().OrderBy(c => c).ToList(); _categoryListView = new ListView(_categories) { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; _categoryListView.OpenSelectedItem += (o, a) => { _top.SetFocus(_rightPane); }; _categoryListView.SelectedChanged += CategoryListView_SelectedChanged; _leftPane.Add(_categoryListView); _rightPane = new Window("Scenarios") { X = 25, Y = 1, // for menu Width = Dim.Fill(), Height = Dim.Fill(), CanFocus = false, }; _nameColumnWidth = Scenario.ScenarioMetadata.GetName(_scenarios.OrderByDescending(t => Scenario.ScenarioMetadata.GetName(t).Length).FirstOrDefault()).Length; _scenarioListView = new ListView() { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; _scenarioListView.OpenSelectedItem += _scenarioListView_OpenSelectedItem; _rightPane.Add(_scenarioListView); _categoryListView.SelectedItem = 0; _categoryListView.OnSelectedChanged(); _capslock = new StatusItem(Key.CharMask, "Capslock", null); _numlock = new StatusItem(Key.CharMask, "Numlock", null); _scrolllock = new StatusItem(Key.CharMask, "Scrolllock", null); _statusBar = new StatusBar(new StatusItem [] { new StatusItem(Key.ControlQ, "~CTRL-Q~ Quit", () => { if (_runningScenario is null) { // This causes GetScenarioToRun to return null _runningScenario = null; Application.RequestStop(); } else { _runningScenario.RequestStop(); } }), _capslock, _numlock, _scrolllock });
/// <summary> /// This shows the selection UI. Each time it is run, it calls Application.Init to reset everything. /// </summary> /// <returns></returns> private static Scenario GetScenarioToRun() { Application.UseSystemConsole = _useSystemConsole; Application.Init(); Application.HeightAsBuffer = _heightAsBuffer; Application.AlwaysSetPosition = _alwaysSetPosition; // Set this here because not initialized until driver is loaded _baseColorScheme = Colors.Base; StringBuilder aboutMessage = new StringBuilder(); aboutMessage.AppendLine("UI Catalog is a comprehensive sample library for Terminal.Gui"); aboutMessage.AppendLine(@" _ "); aboutMessage.AppendLine(@" __ _ _ _(_) ___ ___ "); aboutMessage.AppendLine(@" / _` | | | | | / __/ __|"); aboutMessage.AppendLine(@"| (_| | |_| | || (__\__ \"); aboutMessage.AppendLine(@" \__, |\__,_|_(_)___|___/"); aboutMessage.AppendLine(@" |___/ "); aboutMessage.AppendLine(""); aboutMessage.AppendLine($"Version: {typeof (UICatalogApp).Assembly.GetName ().Version}"); aboutMessage.AppendLine($"Using Terminal.Gui Version: {FileVersionInfo.GetVersionInfo (typeof (Terminal.Gui.Application).Assembly.Location).ProductVersion}"); aboutMessage.AppendLine(""); _menu = new MenuBar(new MenuBarItem [] { new MenuBarItem("_File", new MenuItem [] { new MenuItem("_Quit", "", () => Application.RequestStop(), null, null, Key.Q | Key.CtrlMask) }), new MenuBarItem("_Color Scheme", CreateColorSchemeMenuItems()), new MenuBarItem("Diag_nostics", CreateDiagnosticMenuItems()), new MenuBarItem("_Help", new MenuItem [] { new MenuItem("_gui.cs API Overview", "", () => OpenUrl("https://migueldeicaza.github.io/gui.cs/articles/overview.html"), null, null, Key.F1), new MenuItem("gui.cs _README", "", () => OpenUrl("https://github.com/migueldeicaza/gui.cs"), null, null, Key.F2), new MenuItem("_About...", "About this app", () => MessageBox.Query("About UI Catalog", aboutMessage.ToString(), "_Ok"), null, null, Key.CtrlMask | Key.A), }) }); _leftPane = new FrameView("Categories") { X = 0, Y = 1, // for menu Width = 25, Height = Dim.Fill(1), CanFocus = false, Shortcut = Key.CtrlMask | Key.C }; _leftPane.Title = $"{_leftPane.Title} ({_leftPane.ShortcutTag})"; _leftPane.ShortcutAction = () => _leftPane.SetFocus(); _categories = Scenario.GetAllCategories().OrderBy(c => c).ToList(); _categoryListView = new ListView(_categories) { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; _categoryListView.OpenSelectedItem += (a) => { _rightPane.SetFocus(); }; _categoryListView.SelectedItemChanged += CategoryListView_SelectedChanged; _leftPane.Add(_categoryListView); _rightPane = new FrameView("Scenarios") { X = 25, Y = 1, // for menu Width = Dim.Fill(), Height = Dim.Fill(1), CanFocus = true, Shortcut = Key.CtrlMask | Key.S }; _rightPane.Title = $"{_rightPane.Title} ({_rightPane.ShortcutTag})"; _rightPane.ShortcutAction = () => _rightPane.SetFocus(); _nameColumnWidth = Scenario.ScenarioMetadata.GetName(_scenarios.OrderByDescending(t => Scenario.ScenarioMetadata.GetName(t).Length).FirstOrDefault()).Length; _scenarioListView = new ListView() { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; _scenarioListView.OpenSelectedItem += _scenarioListView_OpenSelectedItem; _rightPane.Add(_scenarioListView); _categoryListView.SelectedItem = _categoryListViewItem; _categoryListView.OnSelectedChanged(); _capslock = new StatusItem(Key.CharMask, "Caps", null); _numlock = new StatusItem(Key.CharMask, "Num", null); _scrolllock = new StatusItem(Key.CharMask, "Scroll", null); _statusBar = new StatusBar() { Visible = true, }; _statusBar.Items = new StatusItem [] { _capslock, _numlock, _scrolllock, new StatusItem(Key.Q | Key.CtrlMask, "~CTRL-Q~ Quit", () => { if (_runningScenario is null) { // This causes GetScenarioToRun to return null _runningScenario = null; Application.RequestStop(); } else { _runningScenario.RequestStop(); } }), new StatusItem(Key.F10, "~F10~ Hide/Show Status Bar", () => { _statusBar.Visible = !_statusBar.Visible; _leftPane.Height = Dim.Fill(_statusBar.Visible ? 1 : 0); _rightPane.Height = Dim.Fill(_statusBar.Visible ? 1 : 0); _top.LayoutSubviews(); _top.SetChildNeedsDisplay(); }), new StatusItem(Key.CharMask, Application.Driver.GetType().Name, null), };
/// <summary> /// トゥートに対して「お気に入り」を行う。 /// </summary> /// <param name="status">「お気に入り」を行うトゥート</param> public Task Favorite(StatusItem status) { return(this._account.Api.Statuses.Favourite(status.Id) .ContinueWithRan(s => status.Reaction.Set(isFavorited: s.Favourited ?? true))); }
/// <summary> /// Add an item to the status list /// </summary> /// <param name="statusText"></param> public void AddStatus(string statusText) { var statusItem = new StatusItem(statusText); //string textWithTime = DateTime.Now.ToString() + ": " + statusText; lock (_lockStatus) { _status.Add(statusItem); } }
public bool CanFavorite(StatusItem item) => true;
public static PartyMember ResolvePartyMemberFromBytes(byte[] source, ActorItem actorItem = null) { if (actorItem != null) { var entry = new PartyMember { X = actorItem.X, Y = actorItem.Y, Z = actorItem.Z, Coordinate = actorItem.Coordinate, ID = actorItem.ID, UUID = actorItem.UUID, Name = actorItem.Name, Job = actorItem.Job, Level = actorItem.Level, HPCurrent = actorItem.HPCurrent, HPMax = actorItem.HPMax, MPCurrent = actorItem.MPCurrent, MPMax = actorItem.MPMax, HitBoxRadius = actorItem.HitBoxRadius, }; entry.StatusItems.AddRange(actorItem.StatusItems); CleanXPValue(ref entry); return(entry); } else { var defaultStatusEffectOffset = MemoryHandler.Instance.Structures.PartyMember.DefaultStatusEffectOffset; var entry = new PartyMember(); try { entry.X = BitConverter.TryToSingle(source, MemoryHandler.Instance.Structures.PartyMember.X); entry.Z = BitConverter.TryToSingle(source, MemoryHandler.Instance.Structures.PartyMember.Z); entry.Y = BitConverter.TryToSingle(source, MemoryHandler.Instance.Structures.PartyMember.Y); entry.Coordinate = new Coordinate(entry.X, entry.Z, entry.Z); entry.ID = BitConverter.TryToUInt32(source, MemoryHandler.Instance.Structures.PartyMember.ID); entry.UUID = Guid.NewGuid().ToString(); entry.Name = MemoryHandler.Instance.GetStringFromBytes(source, MemoryHandler.Instance.Structures.PartyMember.Name); entry.JobID = source[MemoryHandler.Instance.Structures.PartyMember.Job]; entry.Job = (Actor.Job)entry.JobID; entry.HitBoxRadius = 0.5f; entry.Level = source[MemoryHandler.Instance.Structures.PartyMember.Level]; entry.HPCurrent = BitConverter.TryToInt32(source, MemoryHandler.Instance.Structures.PartyMember.HPCurrent); entry.HPMax = BitConverter.TryToInt32(source, MemoryHandler.Instance.Structures.PartyMember.HPMax); entry.MPCurrent = BitConverter.TryToInt16(source, MemoryHandler.Instance.Structures.PartyMember.MPCurrent); entry.MPMax = BitConverter.TryToInt16(source, MemoryHandler.Instance.Structures.PartyMember.MPMax); const int limit = 15; int statusSize = MemoryHandler.Instance.Structures.StatusItem.SourceSize; byte[] statusesSource = new byte[limit * statusSize]; List <StatusItem> foundStatuses = new List <StatusItem>(); Buffer.BlockCopy(source, defaultStatusEffectOffset, statusesSource, 0, limit * statusSize); for (var i = 0; i < limit; i++) { bool isNewStatus = false; byte[] statusSource = new byte[statusSize]; Buffer.BlockCopy(statusesSource, i * statusSize, statusSource, 0, statusSize); short StatusID = BitConverter.TryToInt16(statusSource, MemoryHandler.Instance.Structures.StatusItem.StatusID); uint CasterID = BitConverter.TryToUInt32(statusSource, MemoryHandler.Instance.Structures.StatusItem.CasterID); var statusEntry = entry.StatusItems.FirstOrDefault(x => x.CasterID == CasterID && x.StatusID == StatusID); if (statusEntry == null) { statusEntry = new StatusItem(); isNewStatus = true; } statusEntry.TargetEntity = null; statusEntry.TargetName = entry.Name; statusEntry.StatusID = StatusID; statusEntry.Stacks = statusSource[MemoryHandler.Instance.Structures.StatusItem.Stacks]; statusEntry.Duration = BitConverter.TryToSingle(statusSource, MemoryHandler.Instance.Structures.StatusItem.Duration); statusEntry.CasterID = CasterID; foundStatuses.Add(statusEntry); try { ActorItem pc = PCWorkerDelegate.GetActorItem(statusEntry.CasterID); ActorItem npc = NPCWorkerDelegate.GetActorItem(statusEntry.CasterID); ActorItem monster = MonsterWorkerDelegate.GetActorItem(statusEntry.CasterID); statusEntry.SourceEntity = (pc ?? npc) ?? monster; } catch (Exception ex) { MemoryHandler.Instance.RaiseException(Logger, ex, true); } try { if (statusEntry.StatusID > 0) { Models.XIVDatabase.StatusItem statusInfo = StatusEffectLookup.GetStatusInfo((uint)statusEntry.StatusID); statusEntry.IsCompanyAction = statusInfo.CompanyAction; var statusKey = statusInfo.Name.English; switch (MemoryHandler.Instance.GameLanguage) { case "French": statusKey = statusInfo.Name.French; break; case "Japanese": statusKey = statusInfo.Name.Japanese; break; case "German": statusKey = statusInfo.Name.German; break; case "Chinese": statusKey = statusInfo.Name.Chinese; break; case "Korean": statusKey = statusInfo.Name.Korean; break; } statusEntry.StatusName = statusKey; } } catch (Exception) { statusEntry.StatusName = "UNKNOWN"; } if (statusEntry.IsValid()) { if (isNewStatus) { entry.StatusItems.Add(statusEntry); } foundStatuses.Add(statusEntry); } } entry.StatusItems.RemoveAll(x => !foundStatuses.Contains(x)); } catch (Exception ex) { MemoryHandler.Instance.RaiseException(Logger, ex, true); } CleanXPValue(ref entry); return(entry); } }
/// <summary> /// Create all controls. This gets called once and the controls remain with their state between Sceanrio runs. /// </summary> private static void Setup() { // Set this here because not initilzied until driver is loaded _baseColorScheme = Colors.Base; StringBuilder aboutMessage = new StringBuilder(); aboutMessage.AppendLine(); aboutMessage.AppendLine(GetAppTitle()); aboutMessage.AppendLine(); aboutMessage.AppendLine("SmartThings Terminal - a terminal for the SmartThings REST API"); aboutMessage.AppendLine(); aboutMessage.AppendLine("SmartThings REST API: https://smartthings.developer.samsung.com/docs/api-ref/st-api.html"); aboutMessage.AppendLine(); aboutMessage.AppendLine($"Version: {typeof(Program).Assembly.GetName().Version}"); aboutMessage.AppendLine($"Using Terminal.Gui Version: {typeof(Terminal.Gui.Application).Assembly.GetName().Version}"); aboutMessage.AppendLine(); _menu = new MenuBar(new MenuBarItem[] { new MenuBarItem("_File", new MenuItem [] { new MenuItem("_Quit", "", () => Application.RequestStop()) }), new MenuBarItem("_Color Scheme", CreateColorSchemeMenuItems()), //new MenuBarItem ("_Diagostics", CreateDiagnosticMenuItems()), new MenuBarItem("_About...", "About this app", () => MessageBox.Query("About SmartThings Terminal", aboutMessage.ToString(), "Ok")), }); _leftPane = new FrameView("API") { X = 0, Y = 1, // for menu Width = 40, Height = Dim.Fill(1), CanFocus = false, }; _categories = Scenario.GetAllCategories().OrderBy(c => c).ToList(); _categoryListView = new ListView(_categories) { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; _categoryListView.OpenSelectedItem += (a) => { _top.SetFocus(_rightPane); }; _categoryListView.SelectedItemChanged += CategoryListView_SelectedChanged; _leftPane.Add(_categoryListView); Label appNameView = new Label() { X = 0, Y = 0, Height = Dim.Fill(), Width = Dim.Fill() }; StringBuilder sbTitle = new StringBuilder(); appNameView.Text = GetAppTitle(); _appTitlePane = new FrameView() { X = 25, Y = 1, // for menu Width = Dim.Fill(), Height = 9, CanFocus = false }; _appTitlePane.Add(appNameView); _rightPane = new FrameView("API Description") { X = 25, //Y = 1, // for menu Y = Pos.Bottom(_appTitlePane), Width = Dim.Fill(), Height = Dim.Fill(1), CanFocus = true, }; _nameColumnWidth = Scenario.ScenarioMetadata.GetName(_scenarios.OrderByDescending(t => Scenario.ScenarioMetadata.GetName(t).Length).FirstOrDefault()).Length; _scenarioListView = new ListView() { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; _scenarioListView.OpenSelectedItem += _scenarioListView_OpenSelectedItem; _rightPane.Add(_scenarioListView); _categoryListView.SelectedItem = 0; _categoryListView.OnSelectedChanged(); _capslock = new StatusItem(Key.CharMask, "Caps", null); _numlock = new StatusItem(Key.CharMask, "Num", null); _scrolllock = new StatusItem(Key.CharMask, "Scroll", null); _statusBar = new StatusBar(new StatusItem[] { _capslock, _numlock, _scrolllock, new StatusItem(Key.ControlR, "~CTRL-R~ Refresh Data", () => { _stClient.ResetData(); }), new StatusItem(Key.ControlQ, "~CTRL-Q~ Back/Quit", () => { if (_runningScenario is null) { // This causes GetScenarioToRun to return null _runningScenario = null; Application.RequestStop(); } else { _runningScenario.RequestStop(); } }), });
public void Clean() { CurrentStatusItem = null; Processed = false; }
/// <summary> /// This shows the selection UI. Each time it is run, it calls Application.Init to reset everything. /// </summary> /// <returns></returns> private static Scenario GetScenarioToRun() { Application.UseSystemConsole = false; Application.Init(); // Set this here because not initilzied until driver is loaded _baseColorScheme = Colors.Base; _menu = MenuHelper.GetStandardMenuBar(_baseColorScheme); _leftPane = new FrameView("API") { X = 0, Y = 1, // for menu Width = 30, Height = Dim.Fill(1), CanFocus = true, }; _categories = Scenario.GetAllCategories().OrderBy(c => c).ToList(); _categoryListView = new ListView(_categories) { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true }; _categoryListView.OpenSelectedItem += (a) => { _rightPane.SetFocus(); }; _categoryListView.SelectedItemChanged += CategoryListView_SelectedChanged; _leftPane.Add(_categoryListView); Label appNameView = new Label() { X = 0, Y = 0, Height = Dim.Fill(), Width = Dim.Fill(), CanFocus = false, Text = MenuHelper.GetAppTitle() }; _appTitlePane = new FrameView() { X = 30, Y = 1, // for menu Width = Dim.Fill(), Height = 9, CanFocus = false, }; _appTitlePane.Add(appNameView); _rightPane = new FrameView("API Description") { X = 30, //Y = 1, // for menu Y = Pos.Bottom(_appTitlePane), Width = Dim.Fill(), Height = Dim.Fill(1), CanFocus = true, }; _nameColumnWidth = Scenario.ScenarioMetadata.GetName(_scenarios.OrderByDescending(t => Scenario.ScenarioMetadata.GetName(t).Length).FirstOrDefault()).Length; _scenarioListView = new ListView() { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; _scenarioListView.OpenSelectedItem += _scenarioListView_OpenSelectedItem; _rightPane.Add(_scenarioListView); //_categoryListView.SelectedItem = _categoryListViewItem; _categoryListView.OnSelectedChanged(); _capslock = new StatusItem(Key.CharMask, "Caps", null); _numlock = new StatusItem(Key.CharMask, "Num", null); _scrolllock = new StatusItem(Key.CharMask, "Scroll", null); _statusBar = new StatusBar(new StatusItem[] { _capslock, _numlock, _scrolllock, new StatusItem(Key.F5, "~F5~ Refresh Data", () => { _stClient.ResetData(); }), new StatusItem(Key.F9, "~F9~ Menu", () => { _stClient.ResetData(); }), new StatusItem(Key.Q | Key.CtrlMask, "~CTRL-Q~ Quit", () => { if (_runningScenario is null) { // This causes GetScenarioToRun to return null _runningScenario = null; Application.RequestStop(); } else { _runningScenario.RequestStop(); } }), });
/// <summary> /// This shows the selection UI. Each time it is run, it calls Application.Init to reset everything. /// </summary> /// <returns></returns> private static Scenario GetScenarioToRun() { Application.UseSystemConsole = false; Application.Init(); // Set this here because not initialized until driver is loaded _baseColorScheme = Colors.Base; StringBuilder aboutMessage = new StringBuilder(); aboutMessage.AppendLine("UI Catalog is a comprehensive sample library for Terminal.Gui"); aboutMessage.AppendLine(@" _ "); aboutMessage.AppendLine(@" __ _ _ _(_) ___ ___ "); aboutMessage.AppendLine(@" / _` | | | | | / __/ __|"); aboutMessage.AppendLine(@"| (_| | |_| | || (__\__ \"); aboutMessage.AppendLine(@" \__, |\__,_|_(_)___|___/"); aboutMessage.AppendLine(@" |___/ "); aboutMessage.AppendLine(""); aboutMessage.AppendLine($"Version: {typeof (UICatalogApp).Assembly.GetName ().Version}"); aboutMessage.AppendLine($"Using Terminal.Gui Version: {typeof (Terminal.Gui.Application).Assembly.GetName ().Version}"); aboutMessage.AppendLine(""); _menu = new MenuBar(new MenuBarItem [] { new MenuBarItem("_File", new MenuItem [] { new MenuItem("_Quit", "", () => Application.RequestStop()) }), new MenuBarItem("_Color Scheme", CreateColorSchemeMenuItems()), new MenuBarItem("_Diagostics", CreateDiagnosticMenuItems()), new MenuBarItem("_About...", "About this app", () => MessageBox.Query("About UI Catalog", aboutMessage.ToString(), "_Ok")), }); _leftPane = new FrameView("Categories") { X = 0, Y = 1, // for menu Width = 25, Height = Dim.Fill(1), CanFocus = false, }; _categories = Scenario.GetAllCategories().OrderBy(c => c).ToList(); _categoryListView = new ListView(_categories) { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; _categoryListView.OpenSelectedItem += (a) => { _top.SetFocus(_rightPane); }; _categoryListView.SelectedItemChanged += CategoryListView_SelectedChanged; _leftPane.Add(_categoryListView); _rightPane = new FrameView("Scenarios") { X = 25, Y = 1, // for menu Width = Dim.Fill(), Height = Dim.Fill(1), CanFocus = true, }; _nameColumnWidth = Scenario.ScenarioMetadata.GetName(_scenarios.OrderByDescending(t => Scenario.ScenarioMetadata.GetName(t).Length).FirstOrDefault()).Length; _scenarioListView = new ListView() { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; _scenarioListView.OpenSelectedItem += _scenarioListView_OpenSelectedItem; _rightPane.Add(_scenarioListView); _categoryListView.SelectedItem = _categoryListViewItem; _categoryListView.OnSelectedChanged(); _capslock = new StatusItem(Key.CharMask, "Caps", null); _numlock = new StatusItem(Key.CharMask, "Num", null); _scrolllock = new StatusItem(Key.CharMask, "Scroll", null); _statusBar = new StatusBar(new StatusItem [] { _capslock, _numlock, _scrolllock, new StatusItem(Key.ControlQ, "~CTRL-Q~ Quit", () => { if (_runningScenario is null) { // This causes GetScenarioToRun to return null _runningScenario = null; Application.RequestStop(); } else { _runningScenario.RequestStop(); } }), });
public bool CanRetweet(StatusItem item) { return(item.Account.Equals(this._account) || !item.User.IsProtected); }
protected void OnActiveChanged(object data) { StatusItem status_item = (!((Operational)data).IsActive) ? Db.Get().BuildingStatusItems.GeneratorOffline : Db.Get().BuildingStatusItems.Wattage; GetComponent <KSelectable>().SetStatusItem(Db.Get().StatusItemCategories.Power, status_item, this); }
private static void AddStrings() { Strings.Add(DuplicantLifecycleStrings.AgingYouthKey + ".NAME", DuplicantLifecycleStrings.AgingYouthName); Strings.Add(DuplicantLifecycleStrings.AgingYouthKey + ".TOOLTIP", DuplicantLifecycleStrings.AgingYouthTooltip); Strings.Add(DuplicantLifecycleStrings.AgingMiddleKey + ".NAME", DuplicantLifecycleStrings.AgingMiddleName); Strings.Add(DuplicantLifecycleStrings.AgingMiddleKey + ".TOOLTIP", DuplicantLifecycleStrings.AgingMiddleTooltip); Strings.Add(DuplicantLifecycleStrings.AgingElderlyKey + ".NAME", DuplicantLifecycleStrings.AgingElderlyName); Strings.Add(DuplicantLifecycleStrings.AgingElderlyKey + ".TOOLTIP", DuplicantLifecycleStrings.AgingElderlyTooltip); Strings.Add(DuplicantLifecycleStrings.AgingDyingKey + ".NAME", DuplicantLifecycleStrings.AgingDyingName); Strings.Add(DuplicantLifecycleStrings.AgingDyingKey + ".TOOLTIP", DuplicantLifecycleStrings.AgingDyingTooltip); Strings.Add(DuplicantLifecycleStrings.ImmortalKey + ".NAME", DuplicantLifecycleStrings.ImmortalName); Strings.Add(DuplicantLifecycleStrings.ImmortalKey + ".TOOLTIP", DuplicantLifecycleStrings.ImmortalTooltip); DuplicantLifecycleStrings.AgingYouth = (StatusItem)Traverse.Create(Db.Get().DuplicantStatusItems).Method("CreateStatusItem", new object[] { "AgingYouth", "DUPLICANTS", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 2 } ).GetValue(); DuplicantLifecycleStrings.AgingMiddle = (StatusItem)Traverse.Create(Db.Get().DuplicantStatusItems).Method("CreateStatusItem", new object[] { "AgingMiddle", "DUPLICANTS", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 2 } ).GetValue(); DuplicantLifecycleStrings.AgingElderly = (StatusItem)Traverse.Create(Db.Get().DuplicantStatusItems).Method("CreateStatusItem", new object[] { "AgingElderly", "DUPLICANTS", string.Empty, StatusItem.IconType.Exclamation, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 2 } ).GetValue(); DuplicantLifecycleStrings.AgingDying = (StatusItem)Traverse.Create(Db.Get().DuplicantStatusItems).Method("CreateStatusItem", new object[] { "AgingDying", "DUPLICANTS", string.Empty, StatusItem.IconType.Exclamation, NotificationType.DuplicantThreatening, false, OverlayModes.None.ID, true, 2 } ).GetValue(); DuplicantLifecycleStrings.Immortal = (StatusItem)Traverse.Create(Db.Get().DuplicantStatusItems).Method("CreateStatusItem", new object[] { "Immortal", "DUPLICANTS", string.Empty, StatusItem.IconType.Info, NotificationType.Good, false, OverlayModes.None.ID, true, 2 } ).GetValue(); }
public Obj(ref ComparisonCoupleElement comparisonCoupleElement, Document document) { _level = "None"; _doc = document; IsSelected = false; ObjActions = new ObservableCollection <StatusItem>(); StatusItem pull = new StatusItem("PUSH"); StatusItem push = new StatusItem("PULL"); StatusItem none = new StatusItem("NONE"); StatusItem disconnect = new StatusItem("DISCONNECT"); ObjActions.Add(pull); ObjActions.Add(push); ObjActions.Add(none); ObjActions.Add(disconnect); _comparisonCoupleElement = comparisonCoupleElement; Implement(_comparisonCoupleElement); SolidColorBrush greenBrush = new SolidColorBrush(); greenBrush.Color = Colors.Green; SolidColorBrush redBrush = new SolidColorBrush(); redBrush.Color = Colors.Red; SolidColorBrush purpleBrush = new SolidColorBrush(); redBrush.Color = Colors.Purple; SolidColorBrush yelowBrush = new SolidColorBrush(); yelowBrush.Color = Colors.Orange; SolidColorBrush blueBrush = new SolidColorBrush(); blueBrush.Color = Colors.Blue; if (_comparisonCoupleElement.Action != OpeningClient.Model.Action.DISCONNECT) { if (_comparisonCoupleElement.LocalGeometry != null && _comparisonCoupleElement.ServerGeometry != null) { if (!_comparisonCoupleElement.IsSameShapeAndLocation()) { if (ElementVersionCurent == ElementVersionLastest) { _comparisonCoupleElement.Action = OpeningClient.Model.Action.PUSH; Status = "Edit by Curent User"; } else { _comparisonCoupleElement.Action = OpeningClient.Model.Action.PULL; Status = "Edit by Another User"; } _colorStatus = yelowBrush; } else { _comparisonCoupleElement.Action = OpeningClient.Model.Action.NONE; Status = "Nomal"; _colorStatus = greenBrush; } } else { if (_comparisonCoupleElement.ServerStatus != "Disconnect") { if (_comparisonCoupleElement.LocalGeometry == null) { _comparisonCoupleElement.Action = OpeningClient.Model.Action.NONE; if (_comparisonCoupleElement.LocalStatus == "Deleted") { Status = "Deleting"; _colorStatus = redBrush; } else { Status = "New Opening From Server"; _colorStatus = blueBrush; } } else if (_comparisonCoupleElement.ServerGeometry == null) { _comparisonCoupleElement.Action = OpeningClient.Model.Action.NONE; if (_comparisonCoupleElement.ServerStatus == "PendingDelete") { Status = "Pending Delete"; _colorStatus = redBrush; } else { Status = "New Opening From Drawing"; _colorStatus = blueBrush; } } } else { if (_comparisonCoupleElement.LocalGeometry == null) { _comparisonCoupleElement.Action = OpeningClient.Model.Action.DISCONNECT; Status = "Deleting"; _colorStatus = redBrush; } else if (_comparisonCoupleElement.ServerGeometry == null) { _comparisonCoupleElement.Action = OpeningClient.Model.Action.DISCONNECT; Status = "Pending Delete"; _colorStatus = redBrush; } else if (_comparisonCoupleElement.LocalGeometry == null && _comparisonCoupleElement.ServerGeometry == null) { _comparisonCoupleElement.Action = OpeningClient.Model.Action.DISCONNECT; Status = "Deleted"; _colorStatus = redBrush; } } } } else if (_comparisonCoupleElement.Action == OpeningClient.Model.Action.DISCONNECT) { _colorStatus = purpleBrush; Status = "Disconect"; } OnPropertyChanged(new PropertyChangedEventArgs(nameof(ColorStatus))); OpeningClient.Model.Action action = _comparisonCoupleElement.Action; switch (action) { case OpeningClient.Model.Action.PUSH: CurrentAction = ObjActions[0]; //.Where(x => x.Name == "PUSH") as StatusItem; break; case OpeningClient.Model.Action.PULL: CurrentAction = ObjActions.Where(x => x.Name == "PULL").First() as StatusItem; break; case OpeningClient.Model.Action.NONE: CurrentAction = ObjActions.Where(x => x.Name == "NONE").First() as StatusItem; break; case OpeningClient.Model.Action.DISCONNECT: CurrentAction = ObjActions.Where(x => x.Name == "DISCONNECT").First() as StatusItem; break; } Level level = GetlevelFromOpening(); if (_comparisonCoupleElement.LocalGeometry != null) { XYZ curentLocation = GetOriginalFromJson(_comparisonCoupleElement.LocalGeometry.Original); if (level != null) { _level = level.Name; } else { _level = "None"; } Grid grid1 = GetNearestGridInLevel(level, curentLocation, out Grid seconLocalGr); if (grid1 != null) { _markLocationCurent = grid1.Name; } if (seconLocalGr != null) { _markLocationCurent += ("-" + seconLocalGr.Name); } } if (_comparisonCoupleElement.LocalGeometry == null && _comparisonCoupleElement.ServerGeometry != null) { XYZ lastestLocation = GetOriginalFromJson(_comparisonCoupleElement.ServerGeometry.Original); _level = level.Name; Grid grid = GetNearestGridInLevel(level, lastestLocation, out Grid seconSeverGr); if (grid != null) { _markLocationLastest = grid.Name; } if (seconSeverGr != null) { _markLocationLastest += ("-" + seconSeverGr.Name); } } if (_level == "") { _level = "NULL"; } if (_markLocationLastest == null || _markLocationLastest == "") { _markLocationLastest = "NULL"; } if (_markLocationCurent == null || _markLocationCurent == "") { _markLocationCurent = "NULL"; } if (/*_comparisonCoupleElement.LocalGeometry == null && */ _comparisonCoupleElement.ServerGeometry != null) { if (DimentionLastest.Contains("Cylynder")) { ElementName += "Cylynder_"; } else { ElementName += "Rectangle_"; } if (DirectionLastest.Contains("0/0/1")) { ElementName += "Floor/"; } else { ElementName += "Window/"; } } else if (_comparisonCoupleElement.LocalGeometry != null /*&& _comparisonCoupleElement.ServerGeometry == null*/) { if (DimentionCurent.Contains("Cylynder")) { ElementName += "Cylynder_"; } else { ElementName += "Rectangle_"; } if (DirectionCurent.Contains("0/0/1")) { ElementName += "Floor_"; } else { ElementName += "Window_"; } } ElementName += Level + "/"; if (_markLocationCurent != "NULL") { ElementName += _markLocationCurent + "/"; } if (_markLocationLastest != "NULL") { ElementName += _markLocationLastest + "/"; } if (OpeningName != null && OpeningName != "") { ElementName += OpeningName; } }
private static bool ShouldShowIconSub(StatusItem statusItem, GameObject gameObject) { return(gameObject.GetComponent <StatusItemsSuppressedComp>()?.ShouldShowIcon(statusItem) ?? statusItem.ShouldShowIcon()); }
private void CreateStatusItems() { Hot = new StatusItem("Hot", "CREATURES", string.Empty, StatusItem.IconType.Exclamation, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 129022); Hot.resolveStringCallback = delegate(string str, object data) { TemperatureVulnerable temperatureVulnerable4 = (TemperatureVulnerable)data; return(string.Format(str, GameUtil.GetFormattedTemperature(temperatureVulnerable4.internalTemperatureWarning_Low, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false), GameUtil.GetFormattedTemperature(temperatureVulnerable4.internalTemperatureWarning_High, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false))); }; Hot_Crop = new StatusItem("Hot_Crop", "CREATURES", "status_item_plant_temperature", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 129022); Hot_Crop.resolveStringCallback = delegate(string str, object data) { TemperatureVulnerable temperatureVulnerable3 = (TemperatureVulnerable)data; str = str.Replace("{low_temperature}", GameUtil.GetFormattedTemperature(temperatureVulnerable3.internalTemperatureWarning_Low, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); str = str.Replace("{high_temperature}", GameUtil.GetFormattedTemperature(temperatureVulnerable3.internalTemperatureWarning_High, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); return(str); }; Scalding = new StatusItem("Scalding", "CREATURES", string.Empty, StatusItem.IconType.Exclamation, NotificationType.DuplicantThreatening, true, OverlayModes.None.ID, true, 129022); Scalding.resolveTooltipCallback = delegate(string str, object data) { float averageExternalTemperature = ((ExternalTemperatureMonitor.Instance)data).AverageExternalTemperature; float scaldingThreshold = ((ExternalTemperatureMonitor.Instance)data).GetScaldingThreshold(); str = str.Replace("{ExternalTemperature}", GameUtil.GetFormattedTemperature(averageExternalTemperature, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); str = str.Replace("{TargetTemperature}", GameUtil.GetFormattedTemperature(scaldingThreshold, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); return(str); }; Scalding.AddNotification(null, null, null, 0f); Cold = new StatusItem("Cold", "CREATURES", string.Empty, StatusItem.IconType.Exclamation, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 129022); Cold.resolveStringCallback = delegate(string str, object data) { TemperatureVulnerable temperatureVulnerable2 = (TemperatureVulnerable)data; return(string.Format(str, GameUtil.GetFormattedTemperature(temperatureVulnerable2.internalTemperatureWarning_Low, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false), GameUtil.GetFormattedTemperature(temperatureVulnerable2.internalTemperatureWarning_High, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false))); }; Cold_Crop = new StatusItem("Cold_Crop", "CREATURES", "status_item_plant_temperature", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 129022); Cold_Crop.resolveStringCallback = delegate(string str, object data) { TemperatureVulnerable temperatureVulnerable = (TemperatureVulnerable)data; str = str.Replace("low_temperature", GameUtil.GetFormattedTemperature(temperatureVulnerable.internalTemperatureWarning_Low, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); str = str.Replace("high_temperature", GameUtil.GetFormattedTemperature(temperatureVulnerable.internalTemperatureWarning_High, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); return(str); }; Crop_Too_Dark = new StatusItem("Crop_Too_Dark", "CREATURES", "status_item_plant_light", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 129022); Crop_Too_Dark.resolveStringCallback = ((string str, object data) => str); Crop_Too_Bright = new StatusItem("Crop_Too_Bright", "CREATURES", "status_item_plant_light", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 129022); Crop_Too_Bright.resolveStringCallback = ((string str, object data) => str); Hyperthermia = new StatusItem("Hyperthermia", "CREATURES", string.Empty, StatusItem.IconType.Exclamation, NotificationType.Bad, false, OverlayModes.None.ID, true, 129022); Hyperthermia.resolveTooltipCallback = delegate(string str, object data) { float value2 = ((TemperatureMonitor.Instance)data).temperature.value; float hyperthermiaThreshold = ((TemperatureMonitor.Instance)data).HyperthermiaThreshold; str = str.Replace("{InternalTemperature}", GameUtil.GetFormattedTemperature(value2, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); str = str.Replace("{TargetTemperature}", GameUtil.GetFormattedTemperature(hyperthermiaThreshold, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); return(str); }; Hypothermia = new StatusItem("Hypothermia", "CREATURES", string.Empty, StatusItem.IconType.Exclamation, NotificationType.Bad, false, OverlayModes.None.ID, true, 129022); Hypothermia.resolveTooltipCallback = delegate(string str, object data) { float value = ((TemperatureMonitor.Instance)data).temperature.value; float hypothermiaThreshold = ((TemperatureMonitor.Instance)data).HypothermiaThreshold; str = str.Replace("{InternalTemperature}", GameUtil.GetFormattedTemperature(value, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); str = str.Replace("{TargetTemperature}", GameUtil.GetFormattedTemperature(hypothermiaThreshold, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); return(str); }; Suffocating = new StatusItem("Suffocating", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); Hatching = new StatusItem("Hatching", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); Incubating = new StatusItem("Incubating", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); Drowning = new StatusItem("Drowning", "CREATURES", "status_item_flooded", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); Drowning.resolveStringCallback = ((string str, object data) => str); Saturated = new StatusItem("Saturated", "CREATURES", "status_item_flooded", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); Saturated.resolveStringCallback = ((string str, object data) => str); DryingOut = new StatusItem("DryingOut", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 1026); DryingOut.resolveStringCallback = ((string str, object data) => str); ReadyForHarvest = new StatusItem("ReadyForHarvest", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 1026); Growing = new StatusItem("Growing", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 1026); Growing.resolveStringCallback = delegate(string str, object data) { Crop component = ((Growing)data).GetComponent <Crop>(); if ((UnityEngine.Object)component != (UnityEngine.Object)null) { float seconds = ((Growing)data).TimeUntilNextHarvest(); str = str.Replace("{TimeUntilNextHarvest}", GameUtil.GetFormattedCycles(seconds, "F1")); } float val = 100f * ((Growing)data).PercentGrown(); str = str.Replace("{PercentGrow}", Math.Floor((double)Math.Max(val, 0f)).ToString("F0")); return(str); }; CropSleeping = new StatusItem("Crop_Sleeping", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 1026); CropSleeping.resolveStringCallback = delegate(string str, object data) { CropSleepingMonitor.Instance instance8 = (CropSleepingMonitor.Instance)data; return(str.Replace("{REASON}", (!instance8.def.prefersDarkness) ? CREATURES.STATUSITEMS.CROP_SLEEPING.REASON_TOO_DARK : CREATURES.STATUSITEMS.CROP_SLEEPING.REASON_TOO_BRIGHT)); }; CropSleeping.resolveTooltipCallback = delegate(string str, object data) { CropSleepingMonitor.Instance instance7 = (CropSleepingMonitor.Instance)data; string newValue4 = string.Format(CREATURES.STATUSITEMS.CROP_SLEEPING.REQUIREMENT_LUMINANCE, instance7.def.lightIntensityThreshold); return(str.Replace("{REQUIREMENTS}", newValue4)); }; EnvironmentTooWarm = new StatusItem("EnvironmentTooWarm", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); EnvironmentTooWarm.resolveStringCallback = delegate(string str, object data) { float temp3 = Grid.Temperature[Grid.PosToCell(((TemperatureVulnerable)data).gameObject)]; float temp4 = ((TemperatureVulnerable)data).internalTemperatureLethal_High - 1f; str = str.Replace("{ExternalTemperature}", GameUtil.GetFormattedTemperature(temp3, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); str = str.Replace("{TargetTemperature}", GameUtil.GetFormattedTemperature(temp4, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); return(str); }; EnvironmentTooCold = new StatusItem("EnvironmentTooCold", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); EnvironmentTooCold.resolveStringCallback = delegate(string str, object data) { float temp = Grid.Temperature[Grid.PosToCell(((TemperatureVulnerable)data).gameObject)]; float temp2 = ((TemperatureVulnerable)data).internalTemperatureLethal_Low + 1f; str = str.Replace("{ExternalTemperature}", GameUtil.GetFormattedTemperature(temp, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); str = str.Replace("{TargetTemperature}", GameUtil.GetFormattedTemperature(temp2, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false)); return(str); }; Entombed = new StatusItem("Entombed", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); Entombed.resolveStringCallback = ((string str, object go) => str); Entombed.resolveTooltipCallback = delegate(string str, object go) { GameObject go2 = go as GameObject; return(string.Format(str, GameUtil.GetIdentityDescriptor(go2))); }; Wilting = new StatusItem("Wilting", "CREATURES", "status_item_need_plant", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 1026); Wilting.resolveStringCallback = delegate(string str, object data) { if (data is Growing && data != null) { str = str.Replace("{TimeUntilNextHarvest}", GameUtil.GetFormattedCycles(Mathf.Min(((Growing)data).growthTime, ((Growing)data).TimeUntilNextHarvest()), "F1")); } str = str.Replace("{Reasons}", (data as KMonoBehaviour).GetComponent <WiltCondition>().WiltCausesString()); return(str); }; WiltingDomestic = new StatusItem("WiltingDomestic", "CREATURES", "status_item_need_plant", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 1026); WiltingDomestic.resolveStringCallback = delegate(string str, object data) { if (data is Growing && data != null) { str = str.Replace("{TimeUntilNextHarvest}", GameUtil.GetFormattedCycles(Mathf.Min(((Growing)data).growthTime, ((Growing)data).TimeUntilNextHarvest()), "F1")); } str = str.Replace("{Reasons}", (data as KMonoBehaviour).GetComponent <WiltCondition>().WiltCausesString()); return(str); }; WiltingNonGrowing = new StatusItem("WiltingNonGrowing", "CREATURES", "status_item_need_plant", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 1026); WiltingNonGrowing.resolveStringCallback = delegate(string str, object data) { str = CREATURES.STATUSITEMS.WILTING_NON_GROWING_PLANT.NAME; str = str.Replace("{Reasons}", (data as WiltCondition).WiltCausesString()); return(str); }; WiltingNonGrowingDomestic = new StatusItem("WiltingNonGrowing", "CREATURES", "status_item_need_plant", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 1026); WiltingNonGrowingDomestic.resolveStringCallback = delegate(string str, object data) { str = CREATURES.STATUSITEMS.WILTING_NON_GROWING_PLANT.NAME; str = str.Replace("{Reasons}", (data as WiltCondition).WiltCausesString()); return(str); }; WrongAtmosphere = new StatusItem("WrongAtmosphere", "CREATURES", "status_item_plant_atmosphere", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 129022); WrongAtmosphere.resolveStringCallback = delegate(string str, object data) { string text = string.Empty; foreach (Element safe_atmosphere in (data as PressureVulnerable).safe_atmospheres) { text = text + "\n • " + safe_atmosphere.name; } str = str.Replace("{elements}", text); return(str); }; AtmosphericPressureTooLow = new StatusItem("AtmosphericPressureTooLow", "CREATURES", "status_item_plant_atmosphere", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 129022); AtmosphericPressureTooLow.resolveStringCallback = delegate(string str, object data) { PressureVulnerable pressureVulnerable2 = (PressureVulnerable)data; str = str.Replace("{low_mass}", GameUtil.GetFormattedMass(pressureVulnerable2.pressureWarning_Low, GameUtil.TimeSlice.None, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}")); str = str.Replace("{high_mass}", GameUtil.GetFormattedMass(pressureVulnerable2.pressureWarning_High, GameUtil.TimeSlice.None, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}")); return(str); }; AtmosphericPressureTooHigh = new StatusItem("AtmosphericPressureTooHigh", "CREATURES", "status_item_plant_atmosphere", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 129022); AtmosphericPressureTooHigh.resolveStringCallback = delegate(string str, object data) { PressureVulnerable pressureVulnerable = (PressureVulnerable)data; str = str.Replace("{low_mass}", GameUtil.GetFormattedMass(pressureVulnerable.pressureWarning_Low, GameUtil.TimeSlice.None, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}")); str = str.Replace("{high_mass}", GameUtil.GetFormattedMass(pressureVulnerable.pressureWarning_High, GameUtil.TimeSlice.None, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}")); return(str); }; HealthStatus = new StatusItem("HealthStatus", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); HealthStatus.resolveStringCallback = delegate(string str, object data) { string newValue3 = string.Empty; switch ((Health.HealthState)data) { case Health.HealthState.Perfect: newValue3 = MISC.STATUSITEMS.HEALTHSTATUS.PERFECT.NAME; break; case Health.HealthState.Scuffed: newValue3 = MISC.STATUSITEMS.HEALTHSTATUS.SCUFFED.NAME; break; case Health.HealthState.Injured: newValue3 = MISC.STATUSITEMS.HEALTHSTATUS.INJURED.NAME; break; case Health.HealthState.Critical: newValue3 = MISC.STATUSITEMS.HEALTHSTATUS.CRITICAL.NAME; break; case Health.HealthState.Incapacitated: newValue3 = MISC.STATUSITEMS.HEALTHSTATUS.INCAPACITATED.NAME; break; case Health.HealthState.Dead: newValue3 = MISC.STATUSITEMS.HEALTHSTATUS.DEAD.NAME; break; } str = str.Replace("{healthState}", newValue3); return(str); }; HealthStatus.resolveTooltipCallback = delegate(string str, object data) { string newValue2 = string.Empty; switch ((Health.HealthState)data) { case Health.HealthState.Perfect: newValue2 = MISC.STATUSITEMS.HEALTHSTATUS.PERFECT.TOOLTIP; break; case Health.HealthState.Scuffed: newValue2 = MISC.STATUSITEMS.HEALTHSTATUS.SCUFFED.TOOLTIP; break; case Health.HealthState.Injured: newValue2 = MISC.STATUSITEMS.HEALTHSTATUS.INJURED.TOOLTIP; break; case Health.HealthState.Critical: newValue2 = MISC.STATUSITEMS.HEALTHSTATUS.CRITICAL.TOOLTIP; break; case Health.HealthState.Incapacitated: newValue2 = MISC.STATUSITEMS.HEALTHSTATUS.INCAPACITATED.TOOLTIP; break; case Health.HealthState.Dead: newValue2 = MISC.STATUSITEMS.HEALTHSTATUS.DEAD.TOOLTIP; break; } str = str.Replace("{healthState}", newValue2); return(str); }; Barren = new StatusItem("Barren", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); NeedsFertilizer = new StatusItem("NeedsFertilizer", "CREATURES", "status_item_plant_solid", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 129022); Func <string, object, string> resolveStringCallback = (string str, object data) => str; NeedsFertilizer.resolveStringCallback = resolveStringCallback; NeedsIrrigation = new StatusItem("NeedsIrrigation", "CREATURES", "status_item_plant_liquid", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, false, 129022); Func <string, object, string> resolveStringCallback2 = (string str, object data) => str; NeedsIrrigation.resolveStringCallback = resolveStringCallback2; WrongFertilizer = new StatusItem("WrongFertilizer", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); Func <string, object, string> resolveStringCallback3 = (string str, object data) => str; WrongFertilizer.resolveStringCallback = resolveStringCallback3; WrongFertilizerMajor = new StatusItem("WrongFertilizerMajor", "CREATURES", "status_item_fabricator_empty", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); WrongFertilizerMajor.resolveStringCallback = resolveStringCallback3; WrongIrrigation = new StatusItem("WrongIrrigation", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); Func <string, object, string> resolveStringCallback4 = (string str, object data) => str; WrongIrrigation.resolveStringCallback = resolveStringCallback4; WrongIrrigationMajor = new StatusItem("WrongIrrigationMajor", "CREATURES", "status_item_fabricator_empty", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); WrongIrrigationMajor.resolveStringCallback = resolveStringCallback4; CantAcceptFertilizer = new StatusItem("CantAcceptFertilizer", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); Rotting = new StatusItem("Rotting", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); Rotting.resolveStringCallback = ((string str, object data) => str.Replace("{RotTemperature}", GameUtil.GetFormattedTemperature(277.15f, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false))); Fresh = new StatusItem("Fresh", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); Fresh.resolveStringCallback = delegate(string str, object data) { Rottable.Instance instance6 = (Rottable.Instance)data; return(str.Replace("{RotPercentage}", "(" + Util.FormatWholeNumber(instance6.RotConstitutionPercentage * 100f) + "%)")); }; Fresh.resolveTooltipCallback = delegate(string str, object data) { Rottable.Instance instance5 = (Rottable.Instance)data; return(str.Replace("{RotTooltip}", instance5.GetToolTip())); }; Stale = new StatusItem("Stale", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); Stale.resolveStringCallback = delegate(string str, object data) { Rottable.Instance instance4 = (Rottable.Instance)data; return(str.Replace("{RotPercentage}", "(" + Util.FormatWholeNumber(instance4.RotConstitutionPercentage * 100f) + "%)")); }; Stale.resolveTooltipCallback = delegate(string str, object data) { Rottable.Instance instance3 = (Rottable.Instance)data; return(str.Replace("{RotTooltip}", instance3.GetToolTip())); }; Spoiled = new StatusItem("Spoiled", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); Refrigerated = new StatusItem("Refrigerated", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); Unrefrigerated = new StatusItem("Unrefrigerated", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); Unrefrigerated.resolveStringCallback = ((string str, object data) => str.Replace("{RotTemperature}", GameUtil.GetFormattedTemperature(277.15f, GameUtil.TimeSlice.None, GameUtil.TemperatureInterpretation.Absolute, true, false))); SterilizingAtmosphere = new StatusItem("SterilizingAtmosphere", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); ContaminatedAtmosphere = new StatusItem("ContaminatedAtmosphere", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); Old = new StatusItem("Old", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.BadMinor, false, OverlayModes.None.ID, true, 129022); Old.resolveTooltipCallback = delegate(string str, object data) { AgeMonitor.Instance instance2 = (AgeMonitor.Instance)data; return(str.Replace("{TimeUntilDeath}", GameUtil.GetFormattedCycles(instance2.CyclesUntilDeath * 600f, "F1"))); }; ExchangingElementConsume = new StatusItem("ExchangingElementConsume", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); ExchangingElementConsume.resolveStringCallback = delegate(string str, object data) { EntityElementExchanger.StatesInstance statesInstance4 = (EntityElementExchanger.StatesInstance)data; str = str.Replace("{ConsumeElement}", ElementLoader.FindElementByHash(statesInstance4.master.consumedElement).tag.ProperName()); str = str.Replace("{ConsumeRate}", GameUtil.GetFormattedMass(statesInstance4.master.consumeRate, GameUtil.TimeSlice.PerSecond, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}")); return(str); }; ExchangingElementConsume.resolveTooltipCallback = delegate(string str, object data) { EntityElementExchanger.StatesInstance statesInstance3 = (EntityElementExchanger.StatesInstance)data; str = str.Replace("{ConsumeElement}", ElementLoader.FindElementByHash(statesInstance3.master.consumedElement).tag.ProperName()); str = str.Replace("{ConsumeRate}", GameUtil.GetFormattedMass(statesInstance3.master.consumeRate, GameUtil.TimeSlice.PerSecond, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}")); return(str); }; ExchangingElementOutput = new StatusItem("ExchangingElementOutput", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); ExchangingElementOutput.resolveStringCallback = delegate(string str, object data) { EntityElementExchanger.StatesInstance statesInstance2 = (EntityElementExchanger.StatesInstance)data; str = str.Replace("{OutputElement}", ElementLoader.FindElementByHash(statesInstance2.master.emittedElement).tag.ProperName()); str = str.Replace("{OutputRate}", GameUtil.GetFormattedMass(statesInstance2.master.consumeRate * statesInstance2.master.exchangeRatio, GameUtil.TimeSlice.PerSecond, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}")); return(str); }; ExchangingElementOutput.resolveTooltipCallback = delegate(string str, object data) { EntityElementExchanger.StatesInstance statesInstance = (EntityElementExchanger.StatesInstance)data; str = str.Replace("{OutputElement}", ElementLoader.FindElementByHash(statesInstance.master.emittedElement).tag.ProperName()); str = str.Replace("{OutputRate}", GameUtil.GetFormattedMass(statesInstance.master.consumeRate * statesInstance.master.exchangeRatio, GameUtil.TimeSlice.PerSecond, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}")); return(str); }; Hungry = new StatusItem("Hungry", "CREATURES", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022); Hungry.resolveTooltipCallback = delegate(string str, object data) { CreatureCalorieMonitor.Instance instance = (CreatureCalorieMonitor.Instance)data; CreatureCalorieMonitor.Def def = instance.master.gameObject.GetDef <CreatureCalorieMonitor.Def>(); Diet diet = def.diet; if (diet.consumedTags.Count > 0) { string[] array = (from t in diet.consumedTags select t.Key.ProperName()).ToArray(); if (array.Length > 3) { string[] array2 = new string[4] { array[0], array[1], array[2], "..." }; array = array2; } string newValue = string.Join(", ", array); return(str + "\n" + UI.BUILDINGEFFECTS.DIET_CONSUMED.text.Replace("{Foodlist}", newValue)); } return(str); }; }
private static void AttachStatus() { _cpuUsage = new CpuUsage(Process.GetCurrentProcess()); Core.Status.Attach(() => { using (var process = Process.GetCurrentProcess()) { var sItem = new StatusItem { Name = "Application Information" }; sItem.Values.Add("Command Line", Environment.CommandLine); sItem.Values.Add("Current Directory", Directory.GetCurrentDirectory()); sItem.Values.Add("Operating System", new StatusItemValueItem(nameof(Factory.PlatformType), Factory.PlatformType), new StatusItemValueItem(nameof(Factory.RunningAsContainer), Factory.RunningAsContainer), new StatusItemValueItem(nameof(Environment.ProcessorCount), Environment.ProcessorCount), new StatusItemValueItem(nameof(Environment.OSVersion), Environment.OSVersion), new StatusItemValueItem(nameof(RuntimeInformation.OSArchitecture), RuntimeInformation.OSArchitecture), new StatusItemValueItem(nameof(RuntimeInformation.OSDescription), RuntimeInformation.OSDescription) ); sItem.Values.Add("User", new StatusItemValueItem(nameof(Environment.MachineName), Environment.MachineName), new StatusItemValueItem(nameof(Environment.UserName), Environment.UserName) ); sItem.Values.Add("Process Information", new StatusItemValueItem(nameof(process.Id), process.Id), new StatusItemValueItem(nameof(RuntimeInformation.ProcessArchitecture), RuntimeInformation.ProcessArchitecture), new StatusItemValueItem(nameof(process.ProcessName), process.ProcessName), new StatusItemValueItem(nameof(process.Threads), process.Threads.Count, true), new StatusItemValueItem("Handles", process.HandleCount, true), new StatusItemValueItem(nameof(RuntimeInformation.FrameworkDescription), RuntimeInformation.FrameworkDescription) ); sItem.Values.Add("Process Times", new StatusItemValueItem(nameof(process.StartTime), process.StartTime), new StatusItemValueItem("RunningTime", Core.Now - process.StartTime), new StatusItemValueItem(nameof(process.UserProcessorTime), process.UserProcessorTime), new StatusItemValueItem(nameof(process.PrivilegedProcessorTime), process.PrivilegedProcessorTime), new StatusItemValueItem(nameof(process.TotalProcessorTime), process.TotalProcessorTime) ); sItem.Values.Add("Process Usages", new StatusItemValueItem("30 Seconds Usage in %", _cpuUsage.Last30Seconds, true), new StatusItemValueItem("1 Minute Usage in %", _cpuUsage.LastMinute, true), new StatusItemValueItem("10 Minutes Usage in %", _cpuUsage.Last10Minutes, true), new StatusItemValueItem("30 Minutes Usage in %", _cpuUsage.Last30Minutes, true)); sItem.Values.Add("Process Memory", new StatusItemValueItem(nameof(Environment.WorkingSet) + " (MB)", Environment.WorkingSet.ToMegabytes(), true), new StatusItemValueItem(nameof(process.PrivateMemorySize64) + " (MB)", process.PrivateMemorySize64.ToMegabytes(), true), new StatusItemValueItem(nameof(process.PagedMemorySize64) + " (MB)", process.PagedMemorySize64.ToMegabytes(), true), new StatusItemValueItem(nameof(process.NonpagedSystemMemorySize64) + " (MB)", process.NonpagedSystemMemorySize64.ToMegabytes(), true), new StatusItemValueItem(nameof(process.VirtualMemorySize64) + " (MB)", process.VirtualMemorySize64.ToMegabytes(), true) ); var maxGen = GC.MaxGeneration; var lstGc = new List <StatusItemValueItem>(); for (var i = 0; i <= maxGen; i++) { lstGc.Add(new StatusItemValueItem("Collection Count Gen " + i, GC.CollectionCount(i), true)); } lstGc.Add(new StatusItemValueItem("Memory allocated (MB)", GC.GetTotalMemory(false).ToMegabytes(), true)); lstGc.Add(new StatusItemValueItem("Is Server GC", GCSettings.IsServerGC)); lstGc.Add(new StatusItemValueItem("Latency Mode", GCSettings.LatencyMode)); sItem.Values.Add("Garbage Collector", lstGc.ToArray()); sItem.Values.Add("Core Framework", new StatusItemValueItem("Version", Core.FrameworkVersion), new StatusItemValueItem("Debug Mode", Core.DebugMode), new StatusItemValueItem("Environment", Core.EnvironmentName), new StatusItemValueItem("MachineName", Core.MachineName), new StatusItemValueItem("InstanceId", Core.InstanceId), new StatusItemValueItem("ApplicationName", Core.ApplicationName), new StatusItemValueItem("ApplicationDisplayName", Core.ApplicationDisplayName) ); return(sItem); } }); }
public static void Init(Factories factories) { if (_initialized) { return; } _initialized = true; UpdateLocalUtc(); Factory.SetFactories(factories); Status = Factory.CreateStatusEngine(); Log = Factory.CreateLogEngine(); Trace = Factory.CreateTraceEngine(); factories.Init(); GlobalSettings.ReloadSettings(); DebugMode = DebugMode || GlobalSettings.DebugMode; if (DebugMode) { Log.InfoBasic("Core Init - Platform: {0} - OS: {1}", Factory.PlatformType, RuntimeInformation.OSDescription); Log.InfoBasic("Directory: {0}", Directory.GetCurrentDirectory()); } AssemblyResolverManager.RegisterDomain(); if (ServiceContainer.HasConsole) { Log.AddConsoleStorage(); } if (Injector?.Settings != null && Injector.Settings.Interfaces.Count > 0) { //Init Log Log.LibDebug("Loading log engine configuration"); var logStorages = Injector.GetNames <ILogStorage>(); if (logStorages?.Any() == true) { foreach (var name in logStorages) { if (!Settings[$"Core.Log.Storage.{name}.Enabled"].ParseTo(false)) { continue; } Log.LibDebug("Loading log storage: {0}", name); var lSto = Injector.New <ILogStorage>(name); if (lSto == null) { Log.Warning("The Injection for \"{0}\" with name \"{1}\" is null.", typeof(ILogStorage).Name, name); continue; } if (lSto.GetType() == typeof(ConsoleLogStorage)) { Log.LibDebug("Console log storage already added, ignoring."); continue; } Log.Storage.Add(lSto, Settings[$"Core.Log.Storage.{name}.LogLevel"].ParseTo(LogLevel.Error | LogLevel.Warning)); } } var logStorage = Log.Storage.Get(typeof(ConsoleLogStorage)); if (!Settings["Core.Log.Storage.Console.Enabled"].ParseTo(true)) { Log.Storage.Remove(logStorage); } Log.Storage.ChangeStorageLogLevel(logStorage, Settings["Core.Log.Storage.Console.LogLevel"].ParseTo(LogStorageCollection.AllLevels)); Log.MaxLogLevel = (LogLevel)GlobalSettings.LogMaxLogLevel; Log.Enabled = GlobalSettings.LogEnabled; //Init Trace Log.LibDebug("Loading trace engine configuration"); var traceStorages = Injector.GetNames <ITraceStorage>(); if (traceStorages?.Any() == true) { foreach (var name in traceStorages) { if (!Settings[$"Core.Trace.Storage.{name}.Enabled"].ParseTo(false)) { continue; } Log.LibDebug("Loading trace storage: {0}", name); var lTrace = Injector.New <ITraceStorage>(name); if (lTrace == null) { Log.Warning("The Injection for \"{0}\" with name \"{1}\" is null.", typeof(ITraceStorage).Name, name); continue; } Trace.Storage.Add(lTrace); } } Trace.Enabled = GlobalSettings.TraceEnabled; //Init Status Log.LibDebug("Loading status engine configuration"); var statusTransports = Injector.GetNames <IStatusTransport>(); if (statusTransports?.Any() == true) { foreach (var name in statusTransports) { if (!Settings[$"Core.Status.Transport.{name}.Enabled"].ParseTo(false)) { continue; } Log.LibDebug("Loading status transport: {0}", name); var sTransport = Injector.New <IStatusTransport>(name); if (sTransport == null) { Log.Warning("The Injection for \"{0}\" with name \"{1}\" is null.", typeof(IStatusTransport).Name, name); continue; } Status.Transports.Add(sTransport); } } Status.Enabled = GlobalSettings.StatusEnabled; } try { var allAssemblies = Factory.GetAllAssemblies(); var types = allAssemblies.SelectMany(a => { try { return(a.DefinedTypes); } catch { // ignored } return(new TypeInfo[0]); }).Where(t => !t.IsAbstract && t.IsClass && t.ImplementedInterfaces.Contains(typeof(ICoreStart))).ToArray(); if (types?.Any() == true) { foreach (var type in types) { try { var instance = (ICoreStart)Activator.CreateInstance(type.AsType()); Log.LibDebug("Loading CoreStart from: {0}", instance); instance.CoreInit(factories); } catch (Exception ex) { Log.Write(ex); } } } } catch (Exception ex) { Log.Write(ex); } Status.Attach(() => { if (Settings == null) { return(null); } var sItem = new StatusItem { Name = "Application Information\\Settings" }; Settings.OrderBy(i => i.Key).Each(i => sItem.Values.Add(i.Key, i.Value)); return(sItem); }); var onError = false; lock (OninitActions) { while (OninitActions.Count > 0) { try { OninitActions.Dequeue()(); } catch (Exception ex) { Log.Write(ex); onError = true; } } } Log.Start(); Task.Delay(25).WaitAsync(); var dlog = (Log as DefaultLogEngine); dlog?.LogDoneTask.WaitAsync(); if (onError) { throw new Exception("Error initializing the application."); } Log.LibDebug("Core has been initialized."); }
private void GetStates() { StatusItems = new ObservableCollection <StatusItem>(); StatusItem statusItem; statusItem = new StatusItem(); statusItem.Title = "Ejecutando"; statusItem.State = "state_e"; statusItem.StateColor = StatusColor.Green; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Finalizado"; statusItem.State = "state_f"; statusItem.StateColor = StatusColor.Blue; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Finalizado con error"; statusItem.State = "state_f"; statusItem.StateColor = StatusColor.Red; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Esperando Dependencia"; statusItem.State = "state_ed"; statusItem.StateColor = StatusColor.Yellow; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Esperando Interfaz de Entrada"; statusItem.State = "state_ei"; statusItem.StateColor = StatusColor.Yellow; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Esperando Recurso"; statusItem.State = "state_er"; statusItem.StateColor = StatusColor.Yellow; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Esperando Puerto"; statusItem.State = "state_ep"; statusItem.StateColor = StatusColor.Yellow; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Error de Recurso"; statusItem.State = "state_er"; statusItem.StateColor = StatusColor.Red; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Error"; statusItem.State = "state_e"; statusItem.StateColor = StatusColor.Red; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Error de Dependencia"; statusItem.State = "state_ed"; statusItem.StateColor = StatusColor.Orange; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Error de Interfaz de Entrada"; statusItem.State = "state_ei"; statusItem.StateColor = StatusColor.Red; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Error de Puerto"; statusItem.State = "state_ep"; statusItem.StateColor = StatusColor.Red; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Planificado"; statusItem.State = "state_p"; statusItem.StateColor = StatusColor.Grey; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Detenido"; statusItem.State = "state_d"; statusItem.StateColor = StatusColor.Red; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Abortado"; statusItem.State = "state_ab"; statusItem.StateColor = StatusColor.Purple; StatusItems.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Omitido"; statusItem.State = "state_om"; statusItem.StateColor = StatusColor.White; StatusItems.Add(statusItem); }
private void GetStates() { StatusItemsInstance = new ObservableCollection <StatusItem>(); StatusItem statusItem; statusItem = new StatusItem(); statusItem.Title = "No Ininiciada"; statusItem.State = ""; statusItem.StateColor = StatusColor.White; StatusItemsInstance.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "En Ejecución"; statusItem.State = ""; statusItem.StateColor = StatusColor.Green; StatusItemsInstance.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Mensaje"; statusItem.State = ""; statusItem.StateColor = StatusColor.Yellow; StatusItemsInstance.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Detenida"; statusItem.State = ""; statusItem.StateColor = StatusColor.Orange; StatusItemsInstance.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Finalizada"; statusItem.State = ""; statusItem.StateColor = StatusColor.Blue; StatusItemsInstance.Add(statusItem); statusItem = new StatusItem(); statusItem.Title = "Finalizada con Errores"; statusItem.State = ""; statusItem.StateColor = StatusColor.Red; StatusItemsInstance.Add(statusItem); StatusItemsProcess = new ObservableCollection <StatusItem>(); StatusItem statusItemProcess; statusItemProcess = new StatusItem(); statusItemProcess.Title = "No Ejecutado"; statusItemProcess.State = ""; statusItemProcess.StateColor = StatusColor.White; StatusItemsProcess.Add(statusItemProcess); statusItemProcess = new StatusItem(); statusItemProcess.Title = "Ejecutando"; statusItemProcess.State = ""; statusItemProcess.StateColor = StatusColor.Green; StatusItemsProcess.Add(statusItemProcess); statusItemProcess = new StatusItem(); statusItemProcess.Title = "Finalizado correctamente"; statusItemProcess.State = ""; statusItemProcess.StateColor = StatusColor.Blue; StatusItemsProcess.Add(statusItemProcess); statusItemProcess = new StatusItem(); statusItemProcess.Title = "Esperando Dependencia"; statusItemProcess.State = ""; statusItemProcess.StateColor = StatusColor.Yellow; StatusItemsProcess.Add(statusItemProcess); statusItemProcess = new StatusItem(); statusItemProcess.Title = "Error de Dependencia"; statusItemProcess.State = ""; statusItemProcess.StateColor = StatusColor.Orange; StatusItemsProcess.Add(statusItemProcess); statusItemProcess = new StatusItem(); statusItemProcess.Title = "Finalizado con Errores"; statusItemProcess.State = ""; statusItemProcess.StateColor = StatusColor.Red; StatusItemsProcess.Add(statusItemProcess); statusItemProcess = new StatusItem(); statusItemProcess.Title = "Abortado por el Usuario"; statusItemProcess.State = ""; statusItemProcess.StateColor = StatusColor.Purple; StatusItemsProcess.Add(statusItemProcess); }
/// <summary> /// Create all controls. This gets called once and the controls remain with their state between Sceanrio runs. /// </summary> private static void Setup() { _menu = new MenuBar(new MenuBarItem [] { new MenuBarItem("_File", new MenuItem [] { new MenuItem("_Quit", "", () => Application.RequestStop()) }), new MenuBarItem("_About...", "About this app", () => MessageBox.Query(50, 10, "About UI Catalog", "UI Catalog is a comprehensive sample library for Terminal.Gui", "Ok")), }); _leftPane = new Window("Categories") { X = 0, Y = 1, // for menu Width = 25, Height = Dim.Fill(), CanFocus = false, }; _categories = Scenario.GetAllCategories().OrderBy(c => c).ToList(); _categoryListView = new ListView(_categories) { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; _categoryListView.OpenSelectedItem += (o, a) => { _top.SetFocus(_rightPane); }; _categoryListView.SelectedChanged += CategoryListView_SelectedChanged; _leftPane.Add(_categoryListView); _rightPane = new Window("Scenarios") { X = 25, Y = 1, // for menu Width = Dim.Fill(), Height = Dim.Fill(), CanFocus = false, }; _nameColumnWidth = Scenario.ScenarioMetadata.GetName(_scenarios.OrderByDescending(t => Scenario.ScenarioMetadata.GetName(t).Length).FirstOrDefault()).Length; _scenarioListView = new ListView() { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; //_scenarioListView.OnKeyPress += (KeyEvent ke) => { // if (_top.MostFocused == _scenarioListView && ke.Key == Key.Enter) { // _scenarioListView_OpenSelectedItem (null, null); // } //}; _scenarioListView.OpenSelectedItem += _scenarioListView_OpenSelectedItem; _rightPane.Add(_scenarioListView); _categoryListView.SelectedItem = 0; _categoryListView.OnSelectedChanged(); _capslock = new StatusItem(Key.CharMask, "CapslockOff", null); _numlock = new StatusItem(Key.CharMask, "NumlockOff", null); _scrolllock = new StatusItem(Key.CharMask, "ScrolllockOff", null); _statusBar = new StatusBar(new StatusItem [] { //new StatusItem(Key.F1, "~F1~ Help", () => Help()), new StatusItem(Key.ControlQ, "~CTRL-Q~ Quit", () => { if (_runningScenario is null) { // This causes GetScenarioToRun to return null _runningScenario = null; Application.RequestStop(); } else { _runningScenario.RequestStop(); } }), _capslock, _numlock, _scrolllock });
public static ActorItem ResolveActorFromBytes(byte[] source, bool isCurrentUser = false, ActorItem entry = null) { entry = entry ?? new ActorItem(); var defaultBaseOffset = MemoryHandler.Instance.Structures.ActorItem.DefaultBaseOffset; var defaultStatOffset = MemoryHandler.Instance.Structures.ActorItem.DefaultStatOffset; var defaultStatusEffectOffset = MemoryHandler.Instance.Structures.ActorItem.DefaultStatusEffectOffset; try { entry.MapTerritory = 0; entry.MapIndex = 0; entry.MapID = 0; entry.TargetID = 0; entry.Name = MemoryHandler.Instance.GetStringFromBytes(source, MemoryHandler.Instance.Structures.ActorItem.Name); entry.ID = BitConverter.TryToUInt32(source, MemoryHandler.Instance.Structures.ActorItem.ID); entry.UUID = string.IsNullOrEmpty(entry.UUID) ? Guid.NewGuid().ToString() : entry.UUID; entry.NPCID1 = BitConverter.TryToUInt32(source, MemoryHandler.Instance.Structures.ActorItem.NPCID1); entry.NPCID2 = BitConverter.TryToUInt32(source, MemoryHandler.Instance.Structures.ActorItem.NPCID2); entry.OwnerID = BitConverter.TryToUInt32(source, MemoryHandler.Instance.Structures.ActorItem.OwnerID); entry.TypeID = source[MemoryHandler.Instance.Structures.ActorItem.Type]; entry.Type = (Actor.Type)entry.TypeID; entry.TargetTypeID = source[MemoryHandler.Instance.Structures.ActorItem.TargetType]; entry.TargetType = (Actor.TargetType)entry.TargetTypeID; entry.GatheringStatus = source[MemoryHandler.Instance.Structures.ActorItem.GatheringStatus]; entry.Distance = source[MemoryHandler.Instance.Structures.ActorItem.Distance]; entry.X = BitConverter.TryToSingle(source, MemoryHandler.Instance.Structures.ActorItem.X + defaultBaseOffset); entry.Z = BitConverter.TryToSingle(source, MemoryHandler.Instance.Structures.ActorItem.Z + defaultBaseOffset); entry.Y = BitConverter.TryToSingle(source, MemoryHandler.Instance.Structures.ActorItem.Y + defaultBaseOffset); entry.Heading = BitConverter.TryToSingle(source, MemoryHandler.Instance.Structures.ActorItem.Heading + defaultBaseOffset); entry.HitBoxRadius = BitConverter.TryToSingle(source, MemoryHandler.Instance.Structures.ActorItem.HitBoxRadius + defaultBaseOffset); entry.Fate = BitConverter.TryToUInt32(source, MemoryHandler.Instance.Structures.ActorItem.Fate + defaultBaseOffset); // ?? entry.TargetFlags = source[MemoryHandler.Instance.Structures.ActorItem.TargetFlags]; // ?? entry.GatheringInvisible = source[MemoryHandler.Instance.Structures.ActorItem.GatheringInvisible]; // ?? entry.ModelID = BitConverter.TryToUInt32(source, MemoryHandler.Instance.Structures.ActorItem.ModelID); entry.ActionStatusID = source[MemoryHandler.Instance.Structures.ActorItem.ActionStatus]; entry.ActionStatus = (Actor.ActionStatus)entry.ActionStatusID; // 0x17D - 0 = Green name, 4 = non-agro (yellow name) entry.IsGM = BitConverter.TryToBoolean(source, MemoryHandler.Instance.Structures.ActorItem.IsGM); // ? entry.IconID = source[MemoryHandler.Instance.Structures.ActorItem.Icon]; entry.Icon = (Actor.Icon)entry.IconID; entry.StatusID = source[MemoryHandler.Instance.Structures.ActorItem.Status]; entry.Status = (Actor.Status)entry.StatusID; entry.ClaimedByID = BitConverter.TryToUInt32(source, MemoryHandler.Instance.Structures.ActorItem.ClaimedByID); var targetID = BitConverter.TryToUInt32(source, MemoryHandler.Instance.Structures.ActorItem.TargetID); var pcTargetID = targetID; entry.JobID = source[MemoryHandler.Instance.Structures.ActorItem.Job + defaultStatOffset]; entry.Job = (Actor.Job)entry.JobID; entry.Level = source[MemoryHandler.Instance.Structures.ActorItem.Level + defaultStatOffset]; entry.GrandCompany = source[MemoryHandler.Instance.Structures.ActorItem.GrandCompany + defaultStatOffset]; entry.GrandCompanyRank = source[MemoryHandler.Instance.Structures.ActorItem.GrandCompanyRank + defaultStatOffset]; entry.Title = source[MemoryHandler.Instance.Structures.ActorItem.Title + defaultStatOffset]; entry.HPCurrent = BitConverter.TryToInt32(source, MemoryHandler.Instance.Structures.ActorItem.HPCurrent + defaultStatOffset); entry.HPMax = BitConverter.TryToInt32(source, MemoryHandler.Instance.Structures.ActorItem.HPMax + defaultStatOffset); entry.MPCurrent = BitConverter.TryToInt32(source, MemoryHandler.Instance.Structures.ActorItem.MPCurrent + defaultStatOffset); entry.MPMax = 10000; entry.TPCurrent = BitConverter.TryToInt16(source, MemoryHandler.Instance.Structures.ActorItem.TPCurrent + defaultStatOffset); entry.TPMax = 1000; entry.GPCurrent = BitConverter.TryToInt16(source, MemoryHandler.Instance.Structures.ActorItem.GPCurrent + defaultStatOffset); entry.GPMax = BitConverter.TryToInt16(source, MemoryHandler.Instance.Structures.ActorItem.GPMax + defaultStatOffset); entry.CPCurrent = BitConverter.TryToInt16(source, MemoryHandler.Instance.Structures.ActorItem.CPCurrent + defaultStatOffset); entry.CPMax = BitConverter.TryToInt16(source, MemoryHandler.Instance.Structures.ActorItem.CPMax + defaultStatOffset); // entry.Race = source[0x2578]; // ?? // entry.Sex = (Actor.Sex) source[0x2579]; //? entry.AgroFlags = source[MemoryHandler.Instance.Structures.ActorItem.AgroFlags]; entry.CombatFlags = source[MemoryHandler.Instance.Structures.ActorItem.CombatFlags]; entry.DifficultyRank = source[MemoryHandler.Instance.Structures.ActorItem.DifficultyRank]; entry.CastingID = BitConverter.TryToInt16(source, MemoryHandler.Instance.Structures.ActorItem.CastingID); // 0x2C94); entry.CastingTargetID = BitConverter.TryToUInt32(source, MemoryHandler.Instance.Structures.ActorItem.CastingTargetID); // 0x2CA0); entry.CastingProgress = BitConverter.TryToSingle(source, MemoryHandler.Instance.Structures.ActorItem.CastingProgress); // 0x2CC4); entry.CastingTime = BitConverter.TryToSingle(source, MemoryHandler.Instance.Structures.ActorItem.CastingTime); // 0x2DA8); entry.Coordinate = new Coordinate(entry.X, entry.Z, entry.Y); if (targetID > 0) { entry.TargetID = (int)targetID; } else { if (pcTargetID > 0) { entry.TargetID = (int)pcTargetID; } } if (entry.CastingTargetID == 3758096384) { entry.CastingTargetID = 0; } entry.MapIndex = 0; var limit = 60; switch (entry.Type) { case Actor.Type.PC: limit = 30; break; } int statusSize = MemoryHandler.Instance.Structures.StatusItem.SourceSize; byte[] statusesSource = new byte[limit * statusSize]; List <StatusItem> foundStatuses = new List <StatusItem>(); Buffer.BlockCopy(source, defaultStatusEffectOffset, statusesSource, 0, limit * statusSize); for (var i = 0; i < limit; i++) { bool isNewStatus = false; byte[] statusSource = new byte[statusSize]; Buffer.BlockCopy(statusesSource, i * statusSize, statusSource, 0, statusSize); short StatusID = BitConverter.TryToInt16(statusSource, MemoryHandler.Instance.Structures.StatusItem.StatusID); uint CasterID = BitConverter.TryToUInt32(statusSource, MemoryHandler.Instance.Structures.StatusItem.CasterID); var statusEntry = entry.StatusItems.FirstOrDefault(x => x.CasterID == CasterID && x.StatusID == StatusID); if (statusEntry == null) { statusEntry = new StatusItem(); isNewStatus = true; } statusEntry.TargetEntity = entry; statusEntry.TargetName = entry.Name; statusEntry.StatusID = StatusID; statusEntry.Stacks = statusSource[MemoryHandler.Instance.Structures.StatusItem.Stacks]; statusEntry.Duration = BitConverter.TryToSingle(statusSource, MemoryHandler.Instance.Structures.StatusItem.Duration); statusEntry.CasterID = CasterID; try { ActorItem pc = PCWorkerDelegate.GetActorItem(statusEntry.CasterID); ActorItem npc = NPCWorkerDelegate.GetActorItem(statusEntry.CasterID); ActorItem monster = MonsterWorkerDelegate.GetActorItem(statusEntry.CasterID); statusEntry.SourceEntity = (pc ?? npc) ?? monster; } catch (Exception ex) { MemoryHandler.Instance.RaiseException(Logger, ex, true); } try { Models.XIVDatabase.StatusItem statusInfo = StatusEffectLookup.GetStatusInfo((uint)statusEntry.StatusID); if (statusInfo != null) { statusEntry.IsCompanyAction = statusInfo.CompanyAction; var statusKey = statusInfo.Name.English; switch (MemoryHandler.Instance.GameLanguage) { case "French": statusKey = statusInfo.Name.French; break; case "Japanese": statusKey = statusInfo.Name.Japanese; break; case "German": statusKey = statusInfo.Name.German; break; case "Chinese": statusKey = statusInfo.Name.Chinese; break; case "Korean": statusKey = statusInfo.Name.Korean; break; } statusEntry.StatusName = statusKey; } } catch (Exception) { statusEntry.StatusName = "UNKNOWN"; } if (statusEntry.IsValid()) { if (isNewStatus) { entry.StatusItems.Add(statusEntry); } foundStatuses.Add(statusEntry); } } entry.StatusItems.RemoveAll(x => !foundStatuses.Contains(x)); // handle empty names if (string.IsNullOrEmpty(entry.Name)) { if (entry.Type == Actor.Type.EventObject) { entry.Name = $"{nameof(entry.EventObjectTypeID)}: {entry.EventObjectTypeID}"; } else { entry.Name = $"{nameof(entry.TypeID)}: {entry.TypeID}"; } } } catch (Exception ex) { MemoryHandler.Instance.RaiseException(Logger, ex, true); } CleanXPValue(ref entry); if (isCurrentUser) { PCWorkerDelegate.CurrentUser = entry; } return(entry); }
/// <summary> /// トゥートに対するブーストを削除する。 /// </summary> /// <param name="status">削除するブースト または ブーストを解除するトゥート</param> public Task Unreblog(StatusItem status) { return(this._account.Api.Statuses.Unreblog(status.Id) .ContinueWithRan(s => status.Reaction.Set(isRetweeted: s.Reblogged ?? false))); }
public IActionResult UnStage([FromBody] StatusItem statusItem) { statusService.Unstage(statusItem); return(Ok()); }
private void MainView(View view) { //view = Application.Top; //Application.UseSystemConsole = _useSystemConsole; //Application.Init(); // Set this here because not initialized until driver is loaded //_baseColorScheme = Colors.Base; StringBuilder aboutMessage = new StringBuilder(); aboutMessage.AppendLine("Cross Platform Telegram Console UI using .NET and GUI.cs"); aboutMessage.AppendLine(@" _ "); aboutMessage.AppendLine(@" __ _ _ _(_) ___ ___ "); aboutMessage.AppendLine(@" / _` | | | | | / __/ __|"); aboutMessage.AppendLine(@"| (_| | |_| | || (__\__ \"); aboutMessage.AppendLine(@" \__, |\__,_|_(_)___|___/"); aboutMessage.AppendLine(@" |___/ "); aboutMessage.AppendLine(""); aboutMessage.AppendLine($"Version: {typeof(TelegramTerminalClientWindow).Assembly.GetName().Version}"); aboutMessage.AppendLine($"Using Terminal.Gui Version: {typeof(Terminal.Gui.Application).Assembly.GetName().Version}"); aboutMessage.AppendLine(""); // Creates a menubar, the item "New" has a help menu. var menu = new MenuBar(new MenuBarItem[] { new MenuBarItem("_File2", new[] { new MenuItem("_New", "Creates new file", NewFile), new MenuItem("_Close", "", Close), new MenuItem("_Quit", "", () => { if (Quit()) { this.Running = false; } }, null, null, Key.Q | Key.CtrlMask) //top.Running => this.Running }), new MenuBarItem("_Edit", new[] { new MenuItem("_Copy", "", null), new MenuItem("C_ut", "", null), new MenuItem("_Paste", "", null) }), //new MenuBarItem ("_Color Scheme", CreateColorSchemeMenuItems()), //new MenuBarItem ("Diag_nostics", CreateDiagnosticMenuItems()), new MenuBarItem("_Help", new MenuItem [] { //new MenuItem ("_gui.cs API Overview", "", () => OpenUrl ("https://migueldeicaza.github.io/gui.cs/articles/overview.html"), null, null, Key.F1), //new MenuItem ("gui.cs _README", "", () => OpenUrl ("https://github.com/migueldeicaza/gui.cs"), null, null, Key.F2), new MenuItem("_About...", "About this app", () => MessageBox.Query("About UI Catalog", aboutMessage.ToString(), "_Ok"), null, null, Key.CtrlMask | Key.A), }), }); var _leftPane = new FrameView("Contacts") { X = 0, Y = 0, // for menu Width = 25, Height = Dim.Fill(), CanFocus = false, Shortcut = Key.CtrlMask | Key.C }; _leftPane.Added += _leftPane_Added; _leftPane.Title = $"{_leftPane.Title} ({_leftPane.ShortcutTag})"; _leftPane.ShortcutAction = () => _leftPane.SetFocus(); var _topRightPane = new FrameView("Chat Window") { X = Pos.Right(_leftPane), Y = Pos.Top(_leftPane), // for menu Width = Dim.Fill(), Height = Dim.Fill(10), CanFocus = true, Shortcut = Key.CtrlMask | Key.S }; _topRightPane.Title = $"{_topRightPane.Title} ({_topRightPane.ShortcutTag})"; _topRightPane.ShortcutAction = () => _topRightPane.SetFocus(); var _bottomRightPane = new FrameView("Input") { X = Pos.Left(_topRightPane), Y = Pos.Bottom(_topRightPane), // for menu Width = Dim.Fill(), Height = Dim.Fill(), CanFocus = true, Shortcut = Key.CtrlMask | Key.S }; _bottomRightPane.Title = $"{_bottomRightPane.Title} ({_bottomRightPane.ShortcutTag})"; _bottomRightPane.ShortcutAction = () => _bottomRightPane.SetFocus(); var _categories = new List <string>() { }; //_categories = Scenario.GetAllCategories().OrderBy(c => c).ToList(); var _categoryListView = new ListView(_categories) { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; _categoryListView.OpenSelectedItem += (a) => { _topRightPane.SetFocus(); }; _categoryListView.SelectedItemChanged += CategoryListView_SelectedChanged; _leftPane.Add(_categoryListView); //_nameColumnWidth = Scenario.ScenarioMetadata.GetName(_scenarios.OrderByDescending(t => Scenario.ScenarioMetadata.GetName(t).Length).FirstOrDefault()).Length; var _scenarioListView = new ListView() { X = 0, Y = 0, Width = Dim.Fill(0), Height = Dim.Fill(0), AllowsMarking = false, CanFocus = true, }; _scenarioListView.OpenSelectedItem += _scenarioListView_OpenSelectedItem; _topRightPane.Add(_scenarioListView); var _categoryListViewItem = -1; _categoryListView.SelectedItem = _categoryListViewItem; _categoryListView.OnSelectedChanged(); var _capslock = new StatusItem(Key.CharMask, "Caps", null); var _numlock = new StatusItem(Key.CharMask, "Num", null); var _scrolllock = new StatusItem(Key.CharMask, "Scroll", null); var _statusBar = new StatusBar() { Visible = true, }; _statusBar.Items = new StatusItem[] { _capslock, _numlock, _scrolllock, new StatusItem(Key.Q | Key.CtrlMask, "~CTRL-Q~ Quit", () => { // if (_runningScenario is null){ //// This causes GetScenarioToRun to return null //_runningScenario = null; Application.RequestStop(); // } else { // _runningScenario.RequestStop(); // } }), new StatusItem(Key.F10, "~F10~ Hide/Show Status Bar", () => { _statusBar.Visible = !_statusBar.Visible; //_leftPane.Height = Dim.Fill(_statusBar.Visible ? 1 : 0); //_bottomRightPane.Height = Dim.Fill(_statusBar.Visible ? 1 : 0); this.Height = Dim.Fill(_statusBar.Visible ? 1 : 0); //_top.LayoutSubviews(); //_top.SetChildNeedsDisplay(); this.LayoutSubviews(); this.SetChildNeedsDisplay(); }), }; //SetColorScheme(); //var _top = Application.Top; view.RemoveAll(); //_top.KeyDown += KeyDownHandler; //view.Add(menu); view.Add(_leftPane); view.Add(_topRightPane); view.Add(_bottomRightPane); //view.Add(_statusBar); Application.Top.Add(menu, _statusBar); //((TelegramTerminalClientWindow)view).StatusBar = _statusBar; //this.StatusBar = _statusBar; //_top.Loaded += () => //{ //if (_runningScenario != null) //{ // _runningScenario = null; //} //Console.WriteLine("NOT IMPLEMENTED: _top.Loaded"); //throw new NotImplementedException(); //}; //this.Add(_top); //Application.Run(_top); //return _runningScenario; }
public IActionResult DiscardChanges([FromBody] StatusItem statusItem) { statusService.DiscardChanges(statusItem); return(Ok()); }
private static void AddStrings() { Strings.Add(SideButtonKey + ".TITLE", SideButtonTitle); Strings.Add(SideButtonKey + ".TEXT", SideButtonText); Strings.Add(SideButtonKey + ".TOOLTIP", SideButtonTooltip); Strings.Add(SideButtonKey + ".STATUS", SideButtonStatus); Strings.Add(UserMenuButtonKey + ".TITLE", UserMenuButtonTitle); Strings.Add(UserMenuButtonKey + ".TOOLTIP", UserMenuButtonTooltip); Strings.Add(CheckboxKey + ".TITLE", CheckboxTitle); Strings.Add(CheckboxKey + ".LABEL", CheckboxLabel); Strings.Add(CheckboxKey + ".TOOLTIP", CheckboxTooltip); Strings.Add(SliderKey + ".TITLE", SliderTitle); Strings.Add(SliderKey + ".TOOLTIP", SliderTooltip); Strings.Add(SliderKey + ".UNITS", SliderUnits); Strings.Add(StatusKey + ".NAME", StatusName); Strings.Add(StatusKey + ".TOOLTIP", StatusTooltip); Strings.Add(ReservoirStatusKey + ".NAME", ReservoirStatusName); Strings.Add(ReservoirStatusKey + ".TOOLTIP", ReservoirStatusTooltip); TrashcansStrings.TrashcanStatus = (StatusItem)Traverse.Create(Db.Get().BuildingStatusItems).Method("CreateStatusItem", new object[] { "Trashcan", "BUILDING", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022 }).GetValue(); TrashcansStrings.TrashcanStatus.resolveStringCallback = (Func <string, object, string>)((str, data) => { Trashcan trashcan = (Trashcan)data; if ((UnityEngine.Object)trashcan == (UnityEngine.Object)null) { return(str); } if (str.Contains("{Total}")) { if (!trashcan.AutoTrash) { str = str.Replace("{Remaining}", "<b>not Empty</b>"); str = str.Replace("{Total}", ""); } else { str = str.Replace("{Remaining}", "empty in <b>" + (trashcan.WaitTime - trashcan.CurrentTime).ToString() + "s</b> "); str = str.Replace("{Total}", "from an increment of <b>" + trashcan.WaitTime + "s</b>"); } } else if (!trashcan.AutoTrash) { str = str.Replace("{Remaining}", "Disabled"); } else { str = str.Replace("{Remaining}", (trashcan.WaitTime - trashcan.CurrentTime).ToString() + "s"); } return(str); }); TrashcansStrings.ReservoirCapacityStatus = (StatusItem)Traverse.Create(Db.Get().BuildingStatusItems).Method("CreateStatusItem", new object[] { "ReservoirCapacity", "BUILDING", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022 }).GetValue(); TrashcansStrings.ReservoirCapacityStatus.resolveStringCallback = (Func <string, object, string>)((str, data) => { Storage storage = (Storage)data; float amountStored = storage.MassStored(); float capacity = storage.capacityKg; string stored = Util.FormatWholeNumber((double)amountStored <= (double)capacity - (double)storage.storageFullMargin || (double)amountStored >= (double)capacity ? Mathf.Floor(amountStored) : capacity); str = str.Replace("{Stored}", stored); str = str.Replace("{Capacity}", Util.FormatWholeNumber(capacity)); str = str.Replace("{Units}", " Kg"); return(str); }); }
public void AddControls() { MusicView = new ListView(musicFiles); PlayListView = new ListView(playList); MusicView.Width = Dim.Fill() - 1; MusicView.Height = Dim.Fill(); PlayListView.Width = Dim.Fill() - 1; PlayListView.Height = Dim.Fill(); Button playButton = new Button(1, 8, "Play"); Button set_button = new Button(5, 5, "Ok"); Button set_url_button = new Button(5, 5, "Ok"); Button bookMarkButton = new Button(30, 8, "Bookmark"); Button skipButton = new Button(20, 8, "Skip"); skipButton.Clicked += () => { if(playList.Count > 0) nextTrack(); }; dirText = new Label(new Rect(1, 1, 256, 20), "Current Directory"); var sItemPause = new StatusItem(Key.Space, "SPACE - Pause/Resume", ()=> { if(mp.IsPlaying) { mp.SetPause(true); pauseButton.Text = "Resume"; } else { mp.SetPause(false); pauseButton.Text = "Pause"; } }); var sItemFastForward = new StatusItem(Key.ControlF, "Ctrl + F - Fast Forward", () => { mp.Position += 0.01F; }); var sItemSkipTrack = new StatusItem(Key.ControlS, "Ctrl + S - Skip Track", () => { nextTrack(); }); StatusItem[] statusItems = {sItemPause, sItemFastForward, sItemSkipTrack}; var statusBar = new StatusBar(statusItems); playButton.Clicked += () => { if(playList.Count > 0) playTrack(); else MessageBox.ErrorQuery("Playlist Empty", "Press Escape to continue"); }; bookMarkButton.Clicked += () => { mp.SetPause(true); lastPlayedTrack.write(playListTable, mp.Time, currentTrack, musicDir); }; pauseButton.Clicked += () => { if(pauseButton.Text == "Resume") { mp.SetPause(false); pauseButton.Text = "Pause"; } else { mp.SetPause(true); pauseButton.Text = "Resume"; } }; MusicView.OpenSelectedItem += openDialogClicked; MusicView.SelectedItemChanged += musicViewSelect; PlayListView.OpenSelectedItem += playListClicked; dialog = new Terminal.Gui.Dialog("Enter Music Directory", 50, 10, set_button); url_dialog = new Terminal.Gui.Dialog("Enter URL", 50, 10, set_url_button); url_dialog.Visible = false; entry = new TextField() { X = 1, Y = 1, Width = Dim.Fill(), Height = 1 }; var url_entry = new TextField() { X = 1, Y = 1, Width = Dim.Fill(), Height = 1 }; url_dialog.Add(url_entry); dialog.Add(entry); var menu = new MenuBar(new MenuBarItem[] { new MenuBarItem ("_File", new MenuItem [] { new MenuItem ("_Open Music DIR", "", () => { dialog.Visible = true; entry.SetFocus(); }), new MenuItem ("_Add All", "", () => { foreach(string filename in filelist) { playList.Add(Path.GetFileName(filename)); var track = new Track(); track.title = Path.GetFileName(filename); track.directory = filename; playListTable.Add(track); } PlayListView.SetSource(playList); }), new MenuItem ("_Open URL", "", () => { url_dialog.Visible = true; url_entry.SetFocus(); }), new MenuItem ("_Exit","", () => { mp.SetPause(true); lastPlayedTrack.write(playListTable, mp.Time, currentTrack, musicDir); top.Running = false; cleanUp(); }) }), new MenuBarItem ("_Playlist", new MenuItem [] { new MenuItem ("_Play","", () => { if(playList.Count >= 1 && PlayListView.SelectedItem > 0) { currentTrack = PlayListView.SelectedItem; } else { currentTrack = 0; } if(playList.Count != 0) playTrack(); }), new MenuItem("_Clear","", () => { mp.Stop(); playList.Clear(); playListTable.Clear(); PlayListView.SetSource(playList); currentTrack = 0; }), }), new MenuBarItem ("_Mode", new MenuItem [] { new MenuItem ("_Shuffle","", () => { shuffle = true; modeText.Text = modes[1].ToString(); nextTrack(); }), new MenuItem("_Continuous","", () => { shuffle = false; modeText.Text = modes[0].ToString(); }), }), }); top.Add(menu); set_button.Clicked += buttonClicked; set_url_button.Clicked += () => { if(url_entry.Text.Length <= 0) { url_dialog.Visible = false; MessageBox.ErrorQuery("Invalid URL", "Press Escape to continue"); PlayListView.SetFocus(); return; } playList.Add(url_entry.Text.ToString()); var track = new Track(); track.title = url_entry.Text.ToString(); track.directory = url_entry.Text.ToString(); playListTable.Add(track); url_dialog.Visible = false; }; if(!dirSet) { dialog.Visible = false; listDirContents(); } trackPlaying = new FrameView("Current Track") { X = 0, Y = 1, Height = Dim.Percent(40, true), Width = Dim.Percent(48, true) }; var PlayListWindow = new FrameView("PlayList") { X = 0, Y = Pos.Bottom(trackPlaying), Height = Dim.Percent(80, true), Width = Dim.Percent(48, true) }; var progressFrame = new FrameView() { X = 0, Y = 5, Width = Dim.Fill(), Height = 3, CanFocus = false }; progress = new ProgressBar() { X = 0, Y = 0, Width = Dim.Fill() + 1, Height = 1, }; progress.Fraction = 0F; PlayListWindow.Add(PlayListView); progressFrame.Add(progress); trackPlaying.Add( selectedTrackTitle, selectedTrackArtist, timerText, modeText ); var win = new FrameView("Music Files") { X = Pos.Right(trackPlaying), Y = 1, Width = Dim.Fill(), Height = Dim.Percent(88, true) }; win.Add( MusicView ); var currentDirWindow = new FrameView("Currently Browsing") { X = 0, Y = Pos.Bottom(win), Width = Dim.Percent(100, true), Height = Dim.Percent(90, true) }; entry.SetFocus(); top.Add(trackPlaying); top.Add(win); top.Add(PlayListWindow, dialog, statusBar, url_dialog); trackPlaying.Add(bookMarkButton, progressFrame, playButton, pauseButton, skipButton); timerText.Text = ""; currentDirWindow.Add(dirText); top.Add(currentDirWindow); top.Width = Dim.Percent(100, true); top.Height = Dim.Percent(100, true); lastPlayedTrack.load(); if(lastPlayedTrack.playlist_exists) { playList.Clear(); playListTable = lastPlayedTrack.getPlayListFiles(); foreach(Track t in playListTable) { playList.Add(t.title); } PlayListView.SetSource(playList); if(playList.Count > 0) { currentTrack = lastPlayedTrack.getPlaylistPosition(); playTrack(); mp.Time = lastPlayedTrack.getTrackTime(); } if(lastPlayedTrack.file_exists) musicDir = lastPlayedTrack.getLastDirectory(); listDirContents(); } Application.Resized += windowResized; Application.Run(); }
protected override void UpdateSwitchStatus() { StatusItem status_item = (!switchedOn) ? Db.Get().BuildingStatusItems.LogicSensorStatusInactive : Db.Get().BuildingStatusItems.LogicSensorStatusActive; GetComponent <KSelectable>().SetStatusItem(Db.Get().StatusItemCategories.Power, status_item, null); }
public override void InitializeStates(out BaseState default_state) { if (waitingForCoolantStatus == null) { waitingForCoolantStatus = new StatusItem("waitingForCoolantStatus", BUILDING.STATUSITEMS.ENOUGH_COOLANT.NAME, BUILDING.STATUSITEMS.ENOUGH_COOLANT.TOOLTIP, "status_item_no_liquid_to_pump", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID) { resolveStringCallback = delegate(string str, object obj) { var lcfr = (LiquidCooledFueledRefinery)obj; return(string.Format(str, lcfr.coolantTag.ProperName(), GameUtil.GetFormattedMass(lcfr.minCoolantMass, GameUtil.TimeSlice.None, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}"))); } }; } if (waitingForFuelStatus == null) { waitingForFuelStatus = new StatusItem("waitingForFuelStatus", BUILDING.STATUSITEMS.ENOUGH_FUEL.NAME, BUILDING.STATUSITEMS.ENOUGH_FUEL.TOOLTIP, "status_item_resource_unavailable", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID) { resolveStringCallback = delegate(string str, object obj) { var lcfr = (LiquidCooledFueledRefinery)obj; return(string.Format(str, lcfr.fuelTag.ProperName(), GameUtil.GetFormattedMass(SmelterConfig.START_FUEL_MASS, GameUtil.TimeSlice.None, GameUtil.MetricMassFormat.UseThreshold, true, "{0:0.#}"))); } }; } if (waitingForEmptyingStatus == null) { waitingForEmptyingStatus = new StatusItem("waitingForEmptying", STRINGS.BUILDINGS.STATUSITEMS.SMELTERNEEDSEMPTYING.NAME, STRINGS.BUILDINGS.STATUSITEMS.SMELTERNEEDSEMPTYING.TOOLTIP, "status_item_empty_pipe", StatusItem.IconType.Custom, NotificationType.BadMinor, false, OverlayModes.None.ID); } default_state = waiting; // у нас нет выходной трубы, однако воспользуемся готовым флагом для обработки нехватки топлива // внимание! если событие OnStorageChange (или иное событие) // прилетело из глубины недр ComplexFabricator в процессе выполнения рецепта // то попытка манипулировать флагами operational.SetFlag // приводит к хитровыебанному вылету в недрах ComplexFabricator // поэтому выключать флаг нужно только в проверке IsOutOfFuel (прилетает от ElementConverter) // или в проверках выполняемых не во время выполнения рецепта root .OnSignal(coolant_too_hot, needsEmptying); waiting .Enter((StatesInstance smi) => smi.UpdateStates()) .EventHandler(GameHashes.OnStorageChange, (StatesInstance smi) => smi.UpdateStates()); waiting.for_coolant .ToggleStatusItem(waitingForCoolantStatus, (StatesInstance smi) => smi.master); waiting.for_fuel .ToggleStatusItem(waitingForFuelStatus, (StatesInstance smi) => smi.master); waiting.for_coolant_and_fuel .ToggleStatusItem(waitingForCoolantStatus, (StatesInstance smi) => smi.master) .ToggleStatusItem(waitingForFuelStatus, (StatesInstance smi) => smi.master); ready .Enter((StatesInstance smi) => { smi.master.SetQueueDirty(); smi.master.operational.SetFlag(coolantOutputPipeEmpty, true); }) .EventTransition(GameHashes.OnStorageChange, waiting, (StatesInstance smi) => !smi.master.HasEnoughCoolant() || smi.master.IsOutOfFuel()); needsEmptying .Enter((StatesInstance smi) => { smi.master.operational.SetFlag(coolantOutputPipeEmpty, false); smi.master.SetQueueDirty(); smi.Trigger((int)GameHashes.DroppedAll); // обработчик в ComplexFabricator очищает и обновляет очередь задач. должно помочь предотвратить сбои smi.CreateEmptyChore(); }) .Exit((StatesInstance smi) => smi.CancelEmptyChore()) .EventTransition(GameHashes.OnStorageChange, waiting, (StatesInstance smi) => smi.master.IsHotCoolantIsRemoved()) .ToggleStatusItem(waitingForEmptyingStatus); }
private static void AddStrings() { Strings.Add(CustomDebugStatusKey + ".NAME", CustomDebugStatusName); Strings.Add(CustomDebugStatusKey + ".TOOLTIP", CustomDebugStatusTooltip); Strings.Add(BatteryLevelStatusKey + ".NAME", BatteryLevelStatusName); Strings.Add(BatteryLevelStatusKey + ".TOOLTIP", BatteryLevelStatusTooltip); Strings.Add(StorageStatusKey + ".NAME", StorageStatusName); Strings.Add(StorageStatusKey + ".TOOLTIP", StorageStatusTooltip); Strings.Add(SideScreenKey + ".TITLE", SideScreenTitleText); Strings.Add(MoveSpeedTitleKey + ".NAME", MoveSpeedTitleName); Strings.Add(MoveSpeedTitleKey + ".TOOLTIP", MoveSpeedTitleTooltip); Strings.Add(ProbingRadiusTitleKey + ".NAME", ProbingRadiusTitleName); Strings.Add(ProbingRadiusTitleKey + ".TOOLTIP", ProbingRadiusTitleTooltip); Strings.Add(FindSweepyButtonKey + ".TEXT", FindSweepyButtonText); Strings.Add(FindSweepyButtonKey + ".TOOLTIP", FindSweepyButtonTooltip); Strings.Add(ResetSweepyButtonKey + ".TEXT", ResetSweepyButtonText); Strings.Add(ResetSweepyButtonKey + ".TOOLTIP", ResetSweepyButtonTooltip); CustomDebugStatus = (StatusItem)Traverse.Create(Db.Get().BuildingStatusItems).Method("CreateStatusItem", new object[] { "SweepyDebug", "BUILDING", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022 }).GetValue(); CustomDebugStatus.resolveStringCallback = (Func <string, object, string>)((str, data) => { GameObject sweepBot = (GameObject)data; if ((UnityEngine.Object)sweepBot == (UnityEngine.Object)null) { return(str); } Navigator nav = sweepBot.GetComponent <Navigator>(); if ((UnityEngine.Object)nav == (UnityEngine.Object)null) { return(str); } int distanceTravelled = 0; nav.distanceTravelledByNavType.TryGetValue(nav.CurrentNavType, out distanceTravelled); float probingRadius = nav.maxProbingRadius; float moveSpeed = nav.defaultSpeed; float currentBatteryDelta = sweepBot.GetAmounts().Get(Db.Get().Amounts.InternalBattery.Id).GetDelta(); str = str.Replace("{Settings}", "\n\tMove Speed: " + moveSpeed + "\n\tMax Distance From Station: " + probingRadius + "\n\tBattery Delta: " + currentBatteryDelta + "\n\tDistance Travelled: " + distanceTravelled); return(str); }); BatteryLevelStatus = (StatusItem)Traverse.Create(Db.Get().BuildingStatusItems).Method("CreateStatusItem", new object[] { "SweepyBatteryLevel", "BUILDING", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022 }).GetValue(); BatteryLevelStatus.resolveStringCallback = (Func <string, object, string>)((str, data) => { GameObject sweepBot = (GameObject)data; if ((UnityEngine.Object)sweepBot == (UnityEngine.Object)null) { return(str); } float currentLevel = sweepBot.GetAmounts().GetValue(Db.Get().Amounts.InternalBattery.Id); float maxBattery = sweepBot.GetAmounts().Get(Db.Get().Amounts.InternalBattery.Id).GetMax(); int percentageLevel = Mathf.RoundToInt(currentLevel / maxBattery * 100); str = str.Replace("{Percentage}", percentageLevel + "%"); str = str.Replace("{Remaining}", currentLevel.ToString()); str = str.Replace("{Total}", maxBattery.ToString()); return(str); }); StorageStatus = (StatusItem)Traverse.Create(Db.Get().BuildingStatusItems).Method("CreateStatusItem", new object[] { "SweepyStorageCapacity", "BUILDING", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID, true, 129022 }).GetValue(); StorageStatus.resolveStringCallback = (Func <string, object, string>)((str, data) => { Storage storage = (Storage)data; float amountStored = storage.MassStored(); float capacity = storage.capacityKg; string stored = Util.FormatWholeNumber((double)amountStored <= (double)capacity - (double)storage.storageFullMargin || (double)amountStored >= (double)capacity ? Mathf.Floor(amountStored) : capacity); str = str.Replace("{Stored}", stored); str = str.Replace("{Capacity}", Util.FormatWholeNumber(capacity)); str = str.Replace("{Units}", " Kg"); return(str); }); }
/// <summary> /// Check and convert native type supported from Redis. /// </summary> /// <param name="value"></param> /// <returns></returns> internal static StackExchange.Redis.RedisValue ConvertObjToRedisValue(object value, out StatusItem statusItem) { statusItem = StatusItem.None; StackExchange.Redis.RedisValue result = StackExchange.Redis.RedisValue.Null; if (typeof(Byte[]) == value.GetType()) { if (Properties.Settings.Default.UseCompression) { result = Utility.Deflate((Byte[])value, System.IO.Compression.CompressionMode.Compress); statusItem = StatusItem.Compressed; } else { result = (Byte[])value; } } else if (typeof(String) == value.GetType()) { if (Properties.Settings.Default.UseCompression) //&& ((String)value).Length > 512 { byte[] tmp = System.Text.Encoding.UTF8.GetBytes((String)value); result = Utility.Deflate(tmp, System.IO.Compression.CompressionMode.Compress); statusItem = StatusItem.Compressed; } else { result = (String)value; } } else if (typeof(Int16) == value.GetType()) { result = (Int16)value; } else if (typeof(Int32) == value.GetType()) { result = (Int32)value; } else if (typeof(Int64) == value.GetType()) { result = (Int64)value; } else if (typeof(Boolean) == value.GetType()) { result = (Boolean)value; } else if (typeof(Single) == value.GetType()) { result = (Single)value; } else if (typeof(Double) == value.GetType()) { result = (Double)value; } else { if (Properties.Settings.Default.UseCompression) { byte[] tmp = Utility.Serialize(value); //If not supported Serialize Object... result = Utility.Deflate(tmp, System.IO.Compression.CompressionMode.Compress); statusItem = StatusItem.Compressed | StatusItem.Serialized; } else { result = Utility.Serialize(value); //If not supported Serialize Object... statusItem = StatusItem.Serialized; } } return result; }