Exemplo n.º 1
0
        public void Events_EditItem(int index, object element, CollectionBoxViewModel.EditElementOp op)
        {
            string       elementName = "Events[" + index + "]";
            DataEditForm frmData     = new DataEditForm();

            frmData.Title = DataEditor.GetWindowTitle(ZoneManager.Instance.CurrentMap.AssetName, elementName, element, typeof(SingleCharEvent), new object[0]);

            DataEditor.LoadClassControls(frmData.ControlPanel, ZoneManager.Instance.CurrentMap.AssetName, elementName, typeof(SingleCharEvent), new object[0], element, true);

            frmData.SelectedOKEvent += () =>
            {
                element = DataEditor.SaveClassControls(frmData.ControlPanel, elementName, typeof(SingleCharEvent), new object[0], true);
                op(index, element);
                frmData.Close();
            };
            frmData.SelectedCancelEvent += () =>
            {
                frmData.Close();
            };

            DevForm form = (DevForm)DiagManager.Instance.DevEditor;

            form.MapEditForm.RegisterChild(frmData);
            frmData.Show();
        }
        public void btnSetIntrinsic_Click()
        {
            lock (GameBase.lockObj)
            {
                DevForm.SetConfig("IntrinsicChoice", chosenIntrinsic);

                if (GameManager.Instance.CurrentScene == DungeonScene.Instance)
                {
                    if (DungeonScene.Instance.ActiveTeam.Players.Count > 0 && DungeonScene.Instance.FocusedCharacter != null)
                    {
                        Character player = DungeonScene.Instance.FocusedCharacter;
                        player.LearnIntrinsic(chosenIntrinsic, 0);
                        DungeonScene.Instance.LogMsg(String.Format("Gave {1} to {0}.", player.Name, DataManager.Instance.GetIntrinsic(chosenIntrinsic).Name.ToLocal()), false, true);
                    }
                }
                else if (GameManager.Instance.CurrentScene == GroundScene.Instance)
                {
                    if (DataManager.Instance.Save.ActiveTeam.Players.Count > 0)
                    {
                        Character player = DataManager.Instance.Save.ActiveTeam.Leader;
                        player.LearnIntrinsic(chosenIntrinsic, 0);
                        GameManager.Instance.SE("Menu/Sort");
                    }
                }
                else
                {
                    GameManager.Instance.SE("Menu/Cancel");
                }
            }
        }
Exemplo n.º 3
0
        public override async Task EditLayer()
        {
            MapLayerWindow    window = new MapLayerWindow();
            MapLayerViewModel vm     = new MapLayerViewModel(Layers[ChosenLayer]);

            window.DataContext = vm;

            DevForm form = (DevForm)DiagManager.Instance.DevEditor;

            bool result = await window.ShowDialog <bool>(groundMode?form.GroundEditForm : form.MapEditForm);

            lock (GameBase.lockObj)
            {
                if (result)
                {
                    MapLayer newLayer = new MapLayer(vm.Name);
                    MapLayer oldLayer = Layers[ChosenLayer];
                    newLayer.Layer   = vm.Front ? DrawLayer.Top : DrawLayer.Bottom;
                    newLayer.Visible = oldLayer.Visible;
                    newLayer.Tiles   = oldLayer.Tiles;

                    if (groundMode)
                    {
                        edits.Apply(new GroundTextureStateUndo(ChosenLayer));
                    }
                    else
                    {
                        edits.Apply(new MapTextureStateUndo(ChosenLayer));
                    }

                    Layers[ChosenLayer] = newLayer;
                }
            }
        }
        public void MapBG_Edit(object element, ClassBoxViewModel.EditElementOp op)
        {
            string       elementName = "MapBG";
            DataEditForm frmData     = new DataEditForm();

            frmData.Title = DataEditor.GetWindowTitle(ZoneManager.Instance.CurrentGround.AssetName, elementName, element, typeof(MapBG), new object[0]);

            DataEditor.LoadClassControls(frmData.ControlPanel, ZoneManager.Instance.CurrentGround.AssetName, elementName, typeof(MapBG), new object[0], element, true);

            frmData.SelectedOKEvent += () =>
            {
                element = DataEditor.SaveClassControls(frmData.ControlPanel, elementName, typeof(MapBG), new object[0], true);
                op(element);
                frmData.Close();
            };
            frmData.SelectedCancelEvent += () =>
            {
                frmData.Close();
            };

            DevForm form = (DevForm)DiagManager.Instance.DevEditor;

            form.GroundEditForm.RegisterChild(frmData);
            frmData.Show();
        }
        public override async Task EditLayer()
        {
            AnimLayerWindow    window = new AnimLayerWindow();
            AnimLayerViewModel vm     = new AnimLayerViewModel(Layers[ChosenLayer]);

            window.DataContext = vm;

            DevForm form = (DevForm)DiagManager.Instance.DevEditor;

            bool result = await window.ShowDialog <bool>(form.GroundEditForm);

            lock (GameBase.lockObj)
            {
                if (result)
                {
                    AnimLayer newLayer = new AnimLayer(vm.Name);
                    AnimLayer oldLayer = Layers[ChosenLayer];
                    newLayer.Layer   = vm.Front ? DrawLayer.Top : DrawLayer.Bottom;
                    newLayer.Visible = oldLayer.Visible;
                    newLayer.Anims   = oldLayer.Anims;

                    edits.Apply(new GroundDecorationStateUndo(ChosenLayer));

                    Layers[ChosenLayer] = newLayer;
                }
            }
        }
 public void btnGiveSkill_Click()
 {
     lock (GameBase.lockObj)
     {
         DevForm.SetConfig("SkillChoice", chosenSkill);
         if (GameManager.Instance.CurrentScene == DungeonScene.Instance)
         {
             Character player = DungeonScene.Instance.FocusedCharacter;
             foreach (Character character in ZoneManager.Instance.CurrentMap.IterateCharacters())
             {
                 if (DungeonScene.Instance.GetMatchup(player, character) == Alignment.Foe)
                 {
                     if (character.BaseSkills[CharData.MAX_SKILL_SLOTS - 1].SkillNum > -1)
                     {
                         character.DeleteSkill(0);
                     }
                     character.LearnSkill(chosenSkill, true);
                 }
             }
             DungeonScene.Instance.LogMsg(String.Format("Taught {0} to all foes.", DataManager.Instance.GetSkill(chosenSkill).Name.ToLocal()), false, true);
         }
         else
         {
             GameManager.Instance.SE("Menu/Cancel");
         }
     }
 }
        public void AutoTile_Edit(AutoTile element, TileBoxViewModel.EditElementOp op)
        {
            TileEditForm      frmData = new TileEditForm();
            TileEditViewModel tmv     = new TileEditViewModel();

            frmData.DataContext = tmv;
            tmv.Name            = element.ToString();

            //load as if eyedropping
            tmv.TileBrowser.TileSize     = ZoneManager.Instance.CurrentGround.TileSize;
            tmv.AutotileBrowser.TileSize = ZoneManager.Instance.CurrentGround.TileSize;
            tmv.LoadTile(element);

            tmv.SelectedOKEvent += () =>
            {
                element = tmv.GetTile();
                op(element);
                frmData.Close();
            };
            tmv.SelectedCancelEvent += () =>
            {
                frmData.Close();
            };

            DevForm form = (DevForm)DiagManager.Instance.DevEditor;

            form.GroundEditForm.RegisterChild(frmData);
            frmData.Show();
        }
 public void btnSpawnItem_Click()
 {
     lock (GameBase.lockObj)
     {
         DevForm.SetConfig("ItemChoice", chosenItem);
         InvItem  item  = new InvItem(chosenItem);
         ItemData entry = (ItemData)item.GetData();
         if (entry.MaxStack > 1)
         {
             item.HiddenValue = entry.MaxStack;
         }
         if (GameManager.Instance.CurrentScene == DungeonScene.Instance)
         {
             DungeonScene.Instance.PendingDevEvent = DungeonScene.Instance.DropItem(item, DungeonScene.Instance.FocusedCharacter.CharLoc);
         }
         else if (GameManager.Instance.CurrentScene == GroundScene.Instance)
         {
             if (DataManager.Instance.Save.ActiveTeam.GetInvCount() < DataManager.Instance.Save.ActiveTeam.GetMaxInvSlots(ZoneManager.Instance.CurrentZone))
             {
                 GameManager.Instance.SE("Menu/Sort");
                 DataManager.Instance.Save.ActiveTeam.AddToInv(item);
             }
             else
             {
                 GameManager.Instance.SE("Menu/Cancel");
             }
         }
         else
         {
             GameManager.Instance.SE("Menu/Cancel");
         }
     }
 }
        public void TextureMap_EditItem(object key, object element, DictionaryBoxViewModel.EditElementOp op)
        {
            string       elementName = "TextureMap[" + key.ToString() + "]";
            DataEditForm frmData     = new DataEditForm();

            frmData.Title = DataEditor.GetWindowTitle(ZoneManager.Instance.CurrentMap.AssetName, elementName, element, typeof(AutoTile), new object[0]);

            DataEditor.LoadClassControls(frmData.ControlPanel, ZoneManager.Instance.CurrentMap.AssetName, elementName, typeof(AutoTile), new object[0], element, true);

            frmData.SelectedOKEvent += () =>
            {
                element = DataEditor.SaveClassControls(frmData.ControlPanel, elementName, typeof(AutoTile), new object[0], true);
                op(key, element);
                frmData.Close();
            };
            frmData.SelectedCancelEvent += () =>
            {
                frmData.Close();
            };

            DevForm form = (DevForm)DiagManager.Instance.DevEditor;

            form.MapEditForm.RegisterChild(frmData);
            frmData.Show();
        }
Exemplo n.º 10
0
        public override async Task EditLayer()
        {
            EntityLayerWindow    window = new EntityLayerWindow();
            EntityLayerViewModel vm     = new EntityLayerViewModel(Layers[ChosenLayer]);

            window.DataContext = vm;

            DevForm form = (DevForm)DiagManager.Instance.DevEditor;

            bool result = await window.ShowDialog <bool>(form.GroundEditForm);

            lock (GameBase.lockObj)
            {
                if (result)
                {
                    EntityLayer newLayer = new EntityLayer(vm.Name);
                    EntityLayer oldLayer = Layers[ChosenLayer];
                    newLayer.Visible        = oldLayer.Visible;
                    newLayer.GroundObjects  = oldLayer.GroundObjects;
                    newLayer.Markers        = oldLayer.Markers;
                    newLayer.MapChars       = oldLayer.MapChars;
                    newLayer.Spawners       = oldLayer.Spawners;
                    newLayer.TemporaryChars = oldLayer.TemporaryChars;

                    edits.Apply(new GroundEntityStateUndo(ChosenLayer));

                    Layers[ChosenLayer] = newLayer;
                }
            }
        }
Exemplo n.º 11
0
 private void picLogo_Click(object sender, EventArgs e)
 {
     if (Config.IsDev)
     {
         DevForm frm = new DevForm();
         frm.Show();
     }
 }
 public void btnOpenScriptDir_Click()
 {
     lock (GameBase.lockObj)
     {
         DevForm form         = (DevForm)DiagManager.Instance.DevEditor;
         string  mapscriptdir = LuaEngine.MakeMapScriptPath(Path.GetFileNameWithoutExtension(((GroundEditViewModel)form.GroundEditForm.DataContext).CurrentFile));
         mapscriptdir = Path.GetFullPath(mapscriptdir);
         Process.Start("explorer.exe", mapscriptdir);
     }
 }
 public void btnEnterGround_Click()
 {
     lock (GameBase.lockObj)
     {
         DevForm.SetConfig("ZoneChoice", chosenZone);
         DevForm.SetConfig("GroundChoice", chosenGround);
         LuaEngine.Instance.BreakScripts();
         MenuManager.Instance.ClearMenus();
         GameManager.Instance.SceneOutcome = GameManager.Instance.DebugWarp(new ZoneLoc(chosenZone, new SegLoc(-1, chosenGround)), RogueElements.MathUtils.Rand.NextUInt64());
     }
 }
 public void btnEnterDungeon_Click()
 {
     lock (GameBase.lockObj)
     {
         DevForm.SetConfig("ZoneChoice", chosenZone);
         DevForm.SetConfig("StructChoice", chosenStructure);
         DevForm.SetConfig("FloorChoice", chosenFloor);
         LuaEngine.Instance.BreakScripts();
         MenuManager.Instance.ClearMenus();
         GameManager.Instance.SceneOutcome = GameManager.Instance.DebugWarp(new ZoneLoc(chosenZone, new SegLoc(chosenStructure, floorIDs[chosenFloor])), RogueElements.MathUtils.Rand.NextUInt64());
     }
 }
        public void TileStates_EditItem(int index, object element, CollectionBoxViewModel.EditElementOp op)
        {
            string       elementName = "TileStates[" + index + "]";
            DataEditForm frmData     = new DataEditForm();

            frmData.Title = DataEditor.GetWindowTitle("Tile", elementName, element, typeof(TileState), new object[0]);

            //TODO: make this a member and reference it that way
            DataEditor.LoadClassControls(frmData.ControlPanel, "Tile", elementName, typeof(TileState), new object[0], element, true);

            DevForm form = (DevForm)DiagManager.Instance.DevEditor;

            frmData.SelectedOKEvent += async() =>
            {
                element = DataEditor.SaveClassControls(frmData.ControlPanel, elementName, typeof(TileState), new object[0], true);

                bool itemExists = false;

                List <object> states = (List <object>)TileStates.GetList(typeof(List <object>));
                for (int ii = 0; ii < states.Count; ii++)
                {
                    if (ii != index)
                    {
                        if (states[ii].GetType() == element.GetType())
                        {
                            itemExists = true;
                        }
                    }
                }

                if (itemExists)
                {
                    await MessageBox.Show(form.MapEditForm, "Cannot add duplicate states.", "Entry already exists.", MessageBox.MessageBoxButtons.Ok);
                }
                else
                {
                    op(index, element);
                    frmData.Close();
                }
            };
            frmData.SelectedCancelEvent += () =>
            {
                frmData.Close();
            };

            form.MapEditForm.RegisterChild(frmData);
            frmData.Show();
        }
Exemplo n.º 16
0
        //TODO: move these events into ListEditor; they were generic enough to warrant copy+pasting
        public void Statuses_EditItem(int index, object element, CollectionBoxViewModel.EditElementOp op)
        {
            string       elementName = "Statuses[" + index + "]";
            DataEditForm frmData     = new DataEditForm();

            frmData.Title = DataEditor.GetWindowTitle(ZoneManager.Instance.CurrentMap.AssetName, elementName, element, typeof(MapStatus), new object[0]);

            DataEditor.LoadClassControls(frmData.ControlPanel, ZoneManager.Instance.CurrentMap.AssetName, elementName, typeof(MapStatus), new object[0], element, true);

            DevForm form = (DevForm)DiagManager.Instance.DevEditor;

            frmData.SelectedOKEvent += async() =>
            {
                element = DataEditor.SaveClassControls(frmData.ControlPanel, elementName, typeof(MapStatus), new object[0], true);

                bool itemExists = false;

                List <MapStatus> states = (List <MapStatus>)Statuses.GetList(typeof(List <MapStatus>));
                for (int ii = 0; ii < states.Count; ii++)
                {
                    if (ii != index)
                    {
                        if (states[ii].ID == ((MapStatus)element).ID)
                        {
                            itemExists = true;
                        }
                    }
                }

                if (itemExists)
                {
                    await MessageBox.Show(form.MapEditForm, "Cannot add duplicate IDs.", "Entry already exists.", MessageBox.MessageBoxButtons.Ok);
                }
                else
                {
                    op(index, element);
                    frmData.Close();
                }
            };
            frmData.SelectedCancelEvent += () =>
            {
                frmData.Close();
            };

            form.MapEditForm.RegisterChild(frmData);
            frmData.Show();
        }
Exemplo n.º 17
0
        public void btnLearnSkill_Click()
        {
            lock (GameBase.lockObj)
            {
                DevForm.SetConfig("SkillChoice", chosenSkill);

                if (GameManager.Instance.CurrentScene == DungeonScene.Instance)
                {
                    if (DungeonScene.Instance.ActiveTeam.Players.Count > 0 && DungeonScene.Instance.FocusedCharacter != null)
                    {
                        Character player = DungeonScene.Instance.FocusedCharacter;
                        if (player.BaseSkills[CharData.MAX_SKILL_SLOTS - 1].SkillNum > -1)
                        {
                            player.DeleteSkill(0);
                        }
                        player.LearnSkill(chosenSkill, true);
                        DungeonScene.Instance.LogMsg(String.Format("Taught {1} to {0}.", player.Name, DataManager.Instance.GetSkill(chosenSkill).Name.ToLocal()), false, true);
                    }
                }
                else if (GameManager.Instance.CurrentScene == GroundScene.Instance)
                {
                    if (DataManager.Instance.Save.ActiveTeam.Players.Count > 0)
                    {
                        Character player = DataManager.Instance.Save.ActiveTeam.Leader;
                        if (player.BaseSkills[CharData.MAX_SKILL_SLOTS - 1].SkillNum > -1)
                        {
                            player.DeleteSkill(0);
                        }
                        player.LearnSkill(chosenSkill, true);
                        GameManager.Instance.SE("Menu/Sort");
                    }
                }
                else
                {
                    GameManager.Instance.SE("Menu/Cancel");
                }
            }
        }
        public MapTabPropertiesViewModel()
        {
            Sights = new ObservableCollection <string>();
            for (int ii = 0; ii <= (int)Map.SightRange.Blind; ii++)
            {
                Sights.Add(((Map.SightRange)ii).ToLocal());
            }

            Elements = new ObservableCollection <string>();
            string[] element_names = DataManager.Instance.DataIndices[DataManager.DataType.Element].GetLocalStringArray();
            for (int ii = 0; ii < element_names.Length; ii++)
            {
                Elements.Add(ii.ToString("D2") + ": " + element_names[ii]);
            }

            ScrollEdges = new ObservableCollection <string>();
            for (int ii = 0; ii <= (int)Map.ScrollEdge.Clamp; ii++)
            {
                ScrollEdges.Add(((Map.ScrollEdge)ii).ToLocal());
            }

            BG = new ClassBoxViewModel(new StringConv(typeof(MapBG), new object[0]));
            BG.OnMemberChanged      += BG_Changed;
            BG.OnEditItem           += MapBG_Edit;
            BlankBG                  = new TileBoxViewModel();
            BlankBG.OnMemberChanged += BlankBG_Changed;
            BlankBG.OnEditItem      += AutoTile_Edit;

            DevForm form = (DevForm)DiagManager.Instance.DevEditor;

            TextureMap = new DictionaryBoxViewModel(form.MapEditForm, new StringConv(typeof(AutoTile), new object[0]));
            TextureMap.OnMemberChanged += TextureMap_Changed;
            TextureMap.OnEditKey       += TextureMap_EditKey;
            TextureMap.OnEditItem      += TextureMap_EditItem;

            Music = new ObservableCollection <string>();
            reloadMusic();
        }
Exemplo n.º 19
0
        public void btnGiveFoes_Click()
        {
            lock (GameBase.lockObj)
            {
                DevForm.SetConfig("IntrinsicChoice", chosenIntrinsic);

                if (GameManager.Instance.CurrentScene == DungeonScene.Instance)
                {
                    Character player = DungeonScene.Instance.FocusedCharacter;
                    foreach (Character character in ZoneManager.Instance.CurrentMap.IterateCharacters())
                    {
                        if (DungeonScene.Instance.GetMatchup(player, character) == Alignment.Foe)
                        {
                            character.LearnIntrinsic(chosenIntrinsic, 0);
                        }
                    }
                    DungeonScene.Instance.LogMsg(String.Format("Gave {0} to all foes.", DataManager.Instance.GetIntrinsic(chosenIntrinsic).Name.ToLocal()), false, true);
                }
                else
                {
                    GameManager.Instance.SE("Menu/Cancel");
                }
            }
        }
Exemplo n.º 20
0
 public void btnToggleStatus_Click()
 {
     lock (GameBase.lockObj)
     {
         DevForm.SetConfig("StatusChoice", chosenStatus);
         StatusData entry = DataManager.Instance.GetStatus(chosenStatus);
         if (GameManager.Instance.CurrentScene == DungeonScene.Instance)
         {
             if (DungeonScene.Instance.ActiveTeam.Players.Count > 0 && DungeonScene.Instance.FocusedCharacter != null)
             {
                 Character player = DungeonScene.Instance.FocusedCharacter;
                 if (entry.Targeted)
                 {
                     DungeonScene.Instance.LogMsg(String.Format("This is a targeted status."), false, true);
                 }
                 else
                 {
                     if (player.StatusEffects.ContainsKey(chosenStatus))
                     {
                         DungeonScene.Instance.PendingDevEvent = player.RemoveStatusEffect(chosenStatus);
                     }
                     else
                     {
                         StatusEffect status = new StatusEffect(chosenStatus);
                         status.LoadFromData();
                         DungeonScene.Instance.PendingDevEvent = player.AddStatusEffect(status);
                     }
                 }
             }
         }
         else
         {
             GameManager.Instance.SE("Menu/Cancel");
         }
     }
 }