Exemple #1
0
        /// <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;
        }
Exemple #2
0
        /// <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
            });
Exemple #3
0
        /// <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),
            };
Exemple #4
0
 /// <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)));
 }
Exemple #5
0
 /// <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);
            }
        }
Exemple #8
0
        /// <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();
                    }
                }),
            });
Exemple #9
0
 public void Clean()
 {
     CurrentStatusItem = null;
     Processed         = false;
 }
Exemple #10
0
        /// <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();
                    }
                }),
            });
Exemple #11
0
        /// <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();
                    }
                }),
            });
Exemple #12
0
 public bool CanRetweet(StatusItem item)
 {
     return(item.Account.Equals(this._account) || !item.User.IsProtected);
 }
Exemple #13
0
    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);
    }
Exemple #14
0
        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();
        }
Exemple #15
0
        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());
 }
Exemple #17
0
        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);
            };
        }
Exemple #18
0
        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);
                }
            });
        }
Exemple #19
0
        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);
        }
Exemple #21
0
        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);
        }
Exemple #22
0
        /// <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
            });
Exemple #23
0
        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);
        }
Exemple #24
0
 /// <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)));
 }
Exemple #25
0
 public IActionResult UnStage([FromBody] StatusItem statusItem)
 {
     statusService.Unstage(statusItem);
     return(Ok());
 }
Exemple #26
0
        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;
        }
Exemple #27
0
 public IActionResult DiscardChanges([FromBody] StatusItem statusItem)
 {
     statusService.DiscardChanges(statusItem);
     return(Ok());
 }
Exemple #28
0
        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);
            });
        }
Exemple #29
0
        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);
            }
Exemple #32
0
        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);
            });
        }
Exemple #33
0
        /// <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;
        }