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"); } } }
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(); }
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; } } }
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(); }
//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(); }
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(); }
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"); } } }
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"); } } }