示例#1
0
        private void GridView_DragDrop(object sender, DragEventArgs e)
        {
            DataGridView grid        = (DataGridView)sender;
            Point        clientPoint = grid.PointToClient(new Point(e.X, e.Y));

            rowIndexOfItemUnderMouseToDrop = grid.HitTest(clientPoint.X, clientPoint.Y).RowIndex;

            if (rowIndexOfItemUnderMouseToDrop == -1)
            {
                return;
            }

            if (e.Effect == DragDropEffects.Move)
            {
                DataGridViewRow rowToMove = e.Data.GetData(typeof(DataGridViewRow)) as DataGridViewRow;

                if (rowIndexOfItemUnderMouseToDrop >= (grid.RowCount - 1))                 // Blocca il drag fuori dalle celle salvate
                {
                    return;
                }

                if (rowIndexFromMouseDown >= (grid.RowCount - 1))                 // Blocca il drag di una cella non salvata
                {
                    return;
                }

                grid.Rows.RemoveAt(rowIndexFromMouseDown);
                grid.Rows.Insert(rowIndexOfItemUnderMouseToDrop, rowToMove);
                switch (grid.Name)
                {
                case "autolootdataGridView":
                    AutoLoot.CopyTable();
                    break;

                case "scavengerdataGridView":
                    Scavenger.CopyTable();
                    break;

                case "organizerdataGridView":
                    Organizer.CopyTable();
                    break;

                case "vendorbuydataGridView":
                    BuyAgent.CopyTable();
                    break;

                case "vendorsellGridView":
                    SellAgent.CopyTable();
                    break;

                case "restockdataGridView":
                    Restock.CopyTable();
                    break;

                case "graphfilterdatagrid":
                    RazorEnhanced.Filters.CopyGraphTable();
                    break;
                }
            }
        }
示例#2
0
        private void scavengerEnableCheck_CheckedChanged(object sender, EventArgs e)
        {
            if (World.Player == null)              // offline
            {
                if (scavengerCheckBox.Checked)
                {
                    scavengerCheckBox.Checked = false;
                    Scavenger.AddLog("You are not logged in game!");
                }
                return;
            }

            if (scavengerListSelect.Text == String.Empty)             // Nessuna lista
            {
                if (scavengerCheckBox.Checked)
                {
                    scavengerCheckBox.Checked = false;
                    Scavenger.AddLog("Item list not selected!");
                }
                return;
            }

            if (scavengerCheckBox.Checked)
            {
                ScavengerListSelect.Enabled       = false;
                scavengerButtonAddList.Enabled    = false;
                scavengerButtonRemoveList.Enabled = false;
                scavengerButtonExport.Enabled     = false;
                scavengerButtonImport.Enabled     = false;
                scavengerButtonClone.Enabled      = false;
                scavengerDragDelay.Enabled        = false;
                scavengerRange.Enabled            = false;

                Scavenger.ResetIgnore();
                Scavenger.AutoMode = true;
                Scavenger.AddLog("Scavenger Engine Start...");
                if (showagentmessageCheckBox.Checked)
                {
                    Misc.SendMessage("SCAVENGER: Engine Start...", false);
                }
            }
            else
            {
                ScavengerListSelect.Enabled       = true;
                scavengerButtonAddList.Enabled    = true;
                scavengerButtonRemoveList.Enabled = true;
                scavengerButtonExport.Enabled     = true;
                scavengerButtonImport.Enabled     = true;
                scavengerButtonClone.Enabled      = true;
                scavengerDragDelay.Enabled        = true;
                scavengerRange.Enabled            = true;

                Scavenger.AutoMode = false;
                Scavenger.AddLog("Scavenger Engine Stop...");
                if (showagentmessageCheckBox.Checked)
                {
                    Misc.SendMessage("SCAVENGER: Engine Stop...", false);
                }
            }
        }
示例#3
0
 //Scavs in the flee list will want to flee the room, and are removed from the list when they do
 private static void Scavenger_Act(On.Scavenger.orig_Act orig, Scavenger self)
 {
     orig.Invoke(self);
     if (self.room.world.game.IsStorySession)
     {
         if (fleeList.Contains(self))
         {
             if (self.abstractCreature.Room.name != shelter)
             {
                 fleeList.Remove(self);
             }
             else
             {
                 self.AI.behavior = ScavengerAI.Behavior.LeaveRoom;
                 self.abstractCreature.abstractAI.SetDestination(self.room.GetWorldCoordinate(self.room.ShortcutLeadingToNode(0).DestTile));
                 if (Vector2.Distance(self.mainBodyChunk.pos, self.room.MiddleOfTile(self.room.ShortcutLeadingToNode(0).StartTile)) < 50f)
                 {
                     for (int i = 0; i < self.room.shortcuts.Length; i++)
                     {
                         if (self.room.shortcuts[i].shortCutType == ShortcutData.Type.RoomExit)
                         {
                             self.SuckedIntoShortCut(self.room.shortcuts[i].StartTile, false);
                         }
                     }
                 }
             }
         }
     }
 }
示例#4
0
 //Scavengers cannot pick up objects while in a Shelter
 private static bool Scavenger_Grab(On.Scavenger.orig_Grab orig, Scavenger self, PhysicalObject obj, int graspUsed, int chunkGrabbed, Creature.Grasp.Shareability shareability, float dominance, bool overrideEquallyDominant, bool pacifying)
 {
     if (PickUp && self.room != null && self.room.abstractRoom.shelter && self.room.world.game.IsStorySession)
     {
         return(false);
     }
     return(orig.Invoke(self, obj, graspUsed, chunkGrabbed, shareability, dominance, overrideEquallyDominant, pacifying));
 }
示例#5
0
 //Add scavs to the flee list, changing their behaviour to LeaveRoom while they're in it
 private static void Scavenger_Violence(On.Scavenger.orig_Violence orig, Scavenger self, BodyChunk source, Vector2?directionAndMomentum, BodyChunk hitChunk, PhysicalObject.Appendage.Pos hitAppendage, Creature.DamageType type, float damage, float stunBonus)
 {
     if (Flee && self.room != null && self.room.abstractRoom.shelter && self.room.world.game.IsStorySession)
     {
         shelter = self.room.abstractRoom.name;
         fleeList.Add(self);
         self.AI.behavior = ScavengerAI.Behavior.LeaveRoom;
     }
     orig.Invoke(self, source, directionAndMomentum, hitChunk, hitAppendage, type, damage, stunBonus);
 }
示例#6
0
        private void scavengertListSelect_SelectedIndexChanged(object sender, EventArgs e)
        {
            Scavenger.UpdateListParam(scavengerListSelect.Text);

            if (scavengerListSelect.Focused && scavengerListSelect.Text != String.Empty)
            {
                Settings.Scavenger.ListUpdate(scavengerListSelect.Text, Scavenger.ScavengerDelay, Scavenger.ScavengerBag, true, Scavenger.MaxRange);
                Scavenger.AddLog("Scavenger list changed to: " + scavengerListSelect.Text);
            }

            Scavenger.InitGrid();
        }
示例#7
0
        internal void ScavengerAddItem()
        {
            if (showagentmessageCheckBox.Checked)
            {
                Misc.SendMessage("Select item to add in Scavenger list", false);
            }

            if (scavengerListSelect.Text != String.Empty)
            {
                Targeting.OneTimeTarget(new Targeting.TargetResponseCallback(ScavengerItemTarget_Callback));
            }
            else
            {
                Scavenger.AddLog("Item list not selected!");
            }
        }
示例#8
0
        static void Main(string[] args)
        {
            Console.WriteLine("START DUMPING VIEWS FROM WIKIMEDIA - Version 1.0.0");
            Console.WriteLine("--------------------------------------------------");

            var fileService          = new FileService();
            var dataService          = new DataService();
            var consoleReportService = new ConsoleReportService();
            var reportBuilderService = new ReportDataBuilderService();

            var scavenger = new Scavenger(fileService, dataService, consoleReportService, reportBuilderService);

            scavenger.Process();

            Console.ReadLine();
        }
示例#9
0
        private void GridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView grid = (DataGridView)sender;

            if (!grid.Focused)
            {
                return;
            }

            if (e.ColumnIndex == 0)             // Checkbox cambiate di stato genera save
            {
                switch (grid.Name)
                {
                case "autolootdataGridView":
                    AutoLoot.CopyTable();
                    break;

                case "scavengerdataGridView":
                    Scavenger.CopyTable();
                    break;

                case "organizerdataGridView":
                    Organizer.CopyTable();
                    break;

                case "vendorbuydataGridView":
                    BuyAgent.CopyTable();
                    break;

                case "vendorsellGridView":
                    SellAgent.CopyTable();
                    break;

                case "restockdataGridView":
                    Restock.CopyTable();
                    break;

                case "graphfilterdatagrid":
                    RazorEnhanced.Filters.CopyGraphTable();
                    break;

                case "journalfilterdatagrid":
                    RazorEnhanced.Filters.CopyJournalFilterTable();
                    break;
                }
            }
        }
示例#10
0
        private void scavengerEditProps_Click(object sender, EventArgs e)
        {
            if (scavengerListSelect.Text != String.Empty)
            {
                if (scavengerdataGridView.CurrentCell == null)
                {
                    return;
                }

                DataGridViewRow row = scavengerdataGridView.Rows[scavengerdataGridView.CurrentCell.RowIndex];
                EnhancedScavengerEditItemProps editProp = new EnhancedScavengerEditItemProps(ref row)
                {
                    TopMost = true
                };
                editProp.Show();
            }
            else
            {
                Scavenger.AddLog("Item list not selected!");
            }
        }
示例#11
0
        private void ScavengerItemTarget_Callback(bool loc, Serial serial, Point3D pt, ushort itemid)
        {
            Item scavengerItem = World.FindItem(serial);

            if (scavengerItem != null && scavengerItem.Serial.IsItem)
            {
                if (showagentmessageCheckBox.Checked)
                {
                    Misc.SendMessage("Scavenger item added: " + scavengerItem.ToString(), false);
                }
                Scavenger.AddLog("Scavenger item added: " + scavengerItem.ToString());
                this.Invoke((MethodInvoker) delegate { Scavenger.AddItemToList(scavengerItem.Name, scavengerItem.ItemID, scavengerItem.Hue); });
            }
            else
            {
                if (showagentmessageCheckBox.Checked)
                {
                    Misc.SendMessage("Invalid target", false);
                }
                Scavenger.AddLog("Invalid target");
            }
        }
        private void SaveData()
        {
            List <Scavenger.ScavengerItem.Property> propslist = new List <Scavenger.ScavengerItem.Property>();

            foreach (DataGridViewRow row in scavengerpropGridView.Rows)
            {
                if (row.IsNewRow)
                {
                    continue;
                }
                int    min      = Convert.ToInt32((string)row.Cells[1].Value);
                int    max      = Convert.ToInt32((string)row.Cells[2].Value);
                string propname = string.Empty;
                if (row.Cells[0].Value != null)
                {
                    propname = row.Cells[0].Value.ToString();
                }

                propslist.Add(new Scavenger.ScavengerItem.Property(propname, min, max));
            }
            m_row.Cells[4].Value = propslist;
            Scavenger.CopyTable();
        }
示例#13
0
        private void EnhancedAgentAddList_Click(object sender, EventArgs e)
        {
            bool   fail    = false;
            string newList = "";

            if (AgentListToAdd.Text == "")
            {
                fail = true;
            }

            if (!Regex.IsMatch(AgentListToAdd.Text, "^[a-zA-Z0-9_]+$"))
            {
                fail = true;
            }

            newList = AgentListToAdd.Text.ToLower();

            switch (m_agentid)
            {
            case 1:
                if (Settings.AutoLoot.ListExists(newList))
                {
                    fail = true;
                }
                break;

            case 2:
                if (Settings.Scavenger.ListExists(newList))
                {
                    fail = true;
                }
                break;

            case 3:
                if (Settings.Organizer.ListExists(newList))
                {
                    fail = true;
                }
                break;

            case 4:
                if (Settings.BuyAgent.ListExists(newList))
                {
                    fail = true;
                }
                break;

            case 5:
                if (Settings.SellAgent.ListExists(newList))
                {
                    fail = true;
                }
                break;

            case 6:
                if (Settings.Dress.ListExists(newList))
                {
                    fail = true;
                }
                break;

            case 7:
                if (Settings.Friend.ListExists(newList))
                {
                    fail = true;
                }
                break;

            case 8:
                if (Settings.Restock.ListExists(newList))
                {
                    fail = true;
                }
                break;

            case 9:
                if (RazorEnhanced.Shard.Exists(newList))
                {
                    fail = true;
                }
                break;
            }


            if (fail)
            {
                MessageBox.Show("Invalid list name!",
                                "Invalid list name!",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
                fail = true;
            }
            else
            {
                switch (m_agentid)
                {
                case 1:
                    AutoLoot.AddList(newList);
                    break;

                case 2:
                    Scavenger.AddList(newList);
                    break;

                case 3:
                    Organizer.AddList(newList);
                    break;

                case 4:
                    BuyAgent.AddList(newList);
                    break;

                case 5:
                    SellAgent.AddList(newList);
                    break;

                case 6:
                    Dress.AddList(newList);
                    HotKey.Init();
                    break;

                case 7:
                    Friend.AddList(newList);
                    break;

                case 8:
                    Restock.AddList(newList);
                    break;

                case 9:
                    RazorEnhanced.Shard.Insert(newList, "Not set", "Not Set", "0.0.0.0", "0", false, false);
                    break;
                }

                Close();
            }
        }
示例#14
0
 void Awake()
 {
     instance = this;
 }
    public override void Realize()
    {
        if (realizedCreature != null)
        {
            return;
        }
        switch (creatureTemplate.TopAncestor().type)
        {
        case CreatureTemplate.Type.Slugcat:
            realizedCreature = new Player(this, world);
            break;

        case CreatureTemplate.Type.LizardTemplate:
            realizedCreature = new Lizard(this, world);
            break;

        case CreatureTemplate.Type.Fly:
            realizedCreature = new Fly(this, world);
            break;

        case CreatureTemplate.Type.Leech:
            realizedCreature = new Leech(this, world);
            break;

        case CreatureTemplate.Type.Snail:
            realizedCreature = new Snail(this, world);
            break;

        case CreatureTemplate.Type.Vulture:
            realizedCreature = new Vulture(this, world);
            break;

        case CreatureTemplate.Type.GarbageWorm:
            GarbageWormAI.MoveAbstractCreatureToGarbage(this, Room);
            realizedCreature = new GarbageWorm(this, world);
            break;

        case CreatureTemplate.Type.LanternMouse:
            realizedCreature = new LanternMouse(this, world);
            break;

        case CreatureTemplate.Type.CicadaA:
            realizedCreature = new Cicada(this, world, creatureTemplate.type == CreatureTemplate.Type.CicadaA);
            break;

        case CreatureTemplate.Type.Spider:
            realizedCreature = new Spider(this, world);
            break;

        case CreatureTemplate.Type.JetFish:
            realizedCreature = new JetFish(this, world);
            break;

        case (CreatureTemplate.Type)patch_CreatureTemplate.Type.SeaDrake:
            realizedCreature = new SeaDrake(this, world);
            break;

        case CreatureTemplate.Type.BigEel:
            realizedCreature = new BigEel(this, world);
            break;

        case CreatureTemplate.Type.Deer:
            realizedCreature = new Deer(this, world);
            break;

        case (CreatureTemplate.Type)patch_CreatureTemplate.Type.WalkerBeast:
            realizedCreature = new WalkerBeast(this, world);
            break;

        case CreatureTemplate.Type.TubeWorm:
            realizedCreature = new TubeWorm(this, world);
            break;

        case CreatureTemplate.Type.DaddyLongLegs:
            realizedCreature = new DaddyLongLegs(this, world);
            break;

        case CreatureTemplate.Type.TentaclePlant:
            if (creatureTemplate.type == CreatureTemplate.Type.TentaclePlant)
            {
                realizedCreature = new TentaclePlant(this, world);
            }
            else
            {
                realizedCreature = new PoleMimic(this, world);
            }
            break;

        case CreatureTemplate.Type.MirosBird:
            realizedCreature = new MirosBird(this, world);
            break;

        case CreatureTemplate.Type.TempleGuard:
            realizedCreature = new TempleGuard(this, world);
            break;

        case CreatureTemplate.Type.Centipede:
        case CreatureTemplate.Type.RedCentipede:
        case CreatureTemplate.Type.Centiwing:
        case CreatureTemplate.Type.SmallCentipede:
            realizedCreature = new Centipede(this, world);
            break;

        case CreatureTemplate.Type.Scavenger:
            realizedCreature = new Scavenger(this, world);
            break;

        case CreatureTemplate.Type.Overseer:
            realizedCreature = new Overseer(this, world);
            break;

        case CreatureTemplate.Type.VultureGrub:
            if (creatureTemplate.type == CreatureTemplate.Type.VultureGrub)
            {
                realizedCreature = new VultureGrub(this, world);
            }
            else if (creatureTemplate.type == CreatureTemplate.Type.Hazer)
            {
                realizedCreature = new Hazer(this, world);
            }
            break;

        case CreatureTemplate.Type.EggBug:
            realizedCreature = new EggBug(this, world);
            break;

        case CreatureTemplate.Type.BigSpider:
        case CreatureTemplate.Type.SpitterSpider:
            realizedCreature = new BigSpider(this, world);
            break;

        case CreatureTemplate.Type.BigNeedleWorm:
            if (creatureTemplate.type == CreatureTemplate.Type.SmallNeedleWorm)
            {
                realizedCreature = new SmallNeedleWorm(this, world);
            }
            else
            {
                realizedCreature = new BigNeedleWorm(this, world);
            }
            break;

        case CreatureTemplate.Type.DropBug:
            realizedCreature = new DropBug(this, world);
            break;
        }
        InitiateAI();
        for (int i = 0; i < stuckObjects.Count; i++)
        {
            if (stuckObjects[i].A.realizedObject == null)
            {
                stuckObjects[i].A.Realize();
            }
            if (stuckObjects[i].B.realizedObject == null)
            {
                stuckObjects[i].B.Realize();
            }
        }
    }
示例#16
0
        public Fish GetFishByStr()
        {
            Fish fish  = null;
            var  regex = new Regex(@".*(?=:)");

            var fishName = regex.Match(LoadStr);
            var name     = fishName.Value;

            regex = new Regex(@"\d+");

            var matches = regex.Matches(LoadStr);
            var sizeCf  = Convert.ToSingle(matches[0].Value) / 100;
            var minDeep = Convert.ToInt32(matches[1].Value);
            var maxDeep = Convert.ToInt32(matches[2].Value);

            regex = new Regex(@"(?<=\[).*(?=\])");

            var match     = regex.Match(LoadStr);
            var luresList = match.Value;

            var lures = luresList.Split(',');

            HashSet <FishBait> baits = new HashSet <FishBait>();

            foreach (var s in lures)
            {
                baits.Add(FishBait.GetFishBaitByName(s));
            }
            switch (name)
            {
            case "Щука":
                fish = new Pike(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Арктич. Голец":
                fish = new ArcticChar(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Жерех":
                fish = new Asp(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Лещ":
                fish = new Bream(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Налим":
                fish = new Burbot(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Голавль":
                fish = new Chub(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Карась Зол":
                fish = new GoldCarp(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Карась Сер":
                fish = new SilverCarp(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Хариус":
                fish = new Grayling(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Окунь":
                fish = new Perch(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Горбуша":
                fish = new PinkSalmon(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Плотва":
                fish = new Roach(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Рыбец":
                fish = new Rybets(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Сёмга":
                fish = new Salmon(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Подлещик":
                fish = new Scavenger(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Змееголов":
                fish = new SnakeHead(minDeep, maxDeep, sizeCf, baits);
                break;

            case "Линь":
                fish = new Tench(minDeep, maxDeep, sizeCf, baits);
                break;
            }
            return(fish);
        }
示例#17
0
文件: Variables.cs 项目: inau/gravity
    // Use this for initialization
    void Start()
    {
        if (MomentumLabel == null)
        {
            MomentumLabel = this.transform.Find("MomentumLabel").GetComponent <Text>();
        }

        if (overviewToggle == null)
        {
            overviewToggle = this.transform.Find("OverViewToggle").GetComponent <Toggle>();
        }

        if (widthInput == null)
        {
            widthInput = this.transform.Find("MainMenu/SubMenu/Dev/MapW").GetComponent <InputField>();
        }

        if (heightInput == null)
        {
            heightInput = this.transform.Find("MainMenu/SubMenu/Dev/MapH").GetComponent <InputField>();
        }

        //main menu
        if (Level == null)
        {
            Level = this.transform.Find("MainMenu/Level").GetComponent <Button>();
        }

        if (Puzzle == null)
        {
            Puzzle = this.transform.Find("MainMenu/Puzzle").GetComponent <Button>();
        }

        if (Endless == null)
        {
            Endless = this.transform.Find("MainMenu/Endless").GetComponent <Button>();
        }

        if (Scavenger == null)
        {
            Scavenger = this.transform.Find("MainMenu/Scavenger").GetComponent <Button>();
        }

        if (reset == null)
        {
            reset = this.transform.Find("MainMenu/Reset").GetComponent <Button>();
        }

        if (MainMenuToggle == null)
        {
            MainMenuToggle = this.transform.Find("MainMenu").GetComponent <UIGroupToggle>();
        }

        Level.OnClickAsObservable().Subscribe(_ => GlobalVariables.variablesRx.mode.Value     = Global.Enumerations.GameMode.LEVELS).AddTo(Level);
        Puzzle.OnClickAsObservable().Subscribe(_ => GlobalVariables.variablesRx.mode.Value    = Global.Enumerations.GameMode.PUZZLE).AddTo(Puzzle);
        Endless.OnClickAsObservable().Subscribe(_ => GlobalVariables.variablesRx.mode.Value   = Global.Enumerations.GameMode.ENDLESS).AddTo(Endless);
        Scavenger.OnClickAsObservable().Subscribe(_ => GlobalVariables.variablesRx.mode.Value = Global.Enumerations.GameMode.SCAVENGER).AddTo(Scavenger);
        reset.OnClickAsObservable().Subscribe(_ => player.reset()).AddTo(reset);

        GlobalVariables.variablesRx.mode.Subscribe(x => this.SetColor(x == Global.Enumerations.GameMode.LEVELS, Level)).AddTo(Level);
        GlobalVariables.variablesRx.mode.Subscribe(x => this.SetColor(x == Global.Enumerations.GameMode.PUZZLE, Puzzle)).AddTo(Puzzle);
        GlobalVariables.variablesRx.mode.Subscribe(x => this.SetColor(x == Global.Enumerations.GameMode.ENDLESS, Endless)).AddTo(Endless);
        GlobalVariables.variablesRx.mode.Subscribe(x => this.SetColor(x == Global.Enumerations.GameMode.SCAVENGER, Scavenger)).AddTo(Scavenger);

        //hook rx components into
        GlobalVariables.variablesRx.player_screen_coordinates.SubscribeToText(MomentumLabel).AddTo(MomentumLabel);

        GlobalVariables.preferencesRx.camera_overview.Subscribe(x => overviewToggle.isOn = x).AddTo(overviewToggle);
        overviewToggle.OnValueChangedAsObservable()
        .Subscribe(_ => GlobalVariables.preferencesRx.camera_overview.Value = !GlobalVariables.preferencesRx.camera_overview.Value)
        .AddTo(overviewToggle);

        GlobalVariables.levelPrefsRx.width.SubscribeToText(widthInput.textComponent).AddTo(widthInput.textComponent);
        GlobalVariables.levelPrefsRx.height.SubscribeToText(heightInput.textComponent).AddTo(heightInput.textComponent);

        widthInput.OnEndEditAsObservable().Subscribe(x => GlobalVariables.levelPrefsRx.width.Value   = int.Parse(x)).AddTo(widthInput);
        heightInput.OnEndEditAsObservable().Subscribe(x => GlobalVariables.levelPrefsRx.height.Value = int.Parse(x)).AddTo(widthInput);
    }