public void UpdateNPCList(int id, NonPlayerCharacter.AwakeningStatus status) { NPCCharacter npc = GetNPC(id); npc.status = status; npcList[id] = npc; }
public GameNPCAsset(NPCCharacter character, EGameAssetOrigin origin) : base(Guid.Parse(character.GUID), origin) { this.id = character.ID; this.name = character.EditorName; this.character = character; }
public static string ReplacePlaceholders(NPCCharacter character, Simulation simulation, string raw) { string result = raw ?? string.Empty; if (result.Contains("<br>")) { result = result.Replace("<br>", Environment.NewLine); } if (character != null && result.Contains("<name_npc>")) { result = result.Replace("<name_npc>", ReplacePlaceholders(character, simulation, character.DisplayName)); } if (simulation != null && result.Contains("<name_char>")) { result = result.Replace("<name_char>", simulation.Name); } if (result.Contains("<pause>")) { result = result.Replace("<pause>", ""); } return(result); }
void DirectDialog() { npc1Script = npc1.GetComponent <NPCCharacter>(); NameBox.text = npc1Script.GetName(npc1Script.Personality); conScript.SetTarget(npc1); MaxScript = 2; switch (dialogindex) { case 0: case 2: Dialog.text = conScript.Intro(dialogindex); break; case 1: Dialog.text = conScript.Intro(dialogindex); SelectOn = true; SelectPanel.SetActive(true); break; case 3: break; default: Dialog.text = "에러에러에러에러에러에러에러에러에러에러"; break; } }
public Character_PoseEditor(NPCCharacter character) { InitializeComponent(); DataContext = this; Character = character; }
public void UpdateNPCList(int id, bool haveSpoken, bool hasQuest) { NPCCharacter npc = GetNPC(id); npc.haveSpoken = haveSpoken; npc.hasQuest = hasQuest; npcList[id] = npc; }
public override void VisitNPCCharacter( NPCCharacter npcCharacter) { Console.WriteLine($"{npcCharacter.GetType().Name} visited by {this.GetType().Name}, " + $"their Hp is {npcCharacter.Hp} and Their Mp is {npcCharacter.Mp}"); }
private void Awake() { #if UNITY_EDITOR HideStuff(); #endif if (DB == null) { DB = DatabasePhoton.Load(); } character = gameObject.GetComponent <Character>(); currentAngularSpeed = lastAngularSpeed = Locomotion.angularSpeed; currentJump = lastJump = new Vector2(Locomotion.jumpForce, Locomotion.jumpTimes); currentGravity = lastGravity = new Vector2(Locomotion.gravity, Locomotion.maxFallSpeed); currentControls = lastControls = new Vector2(Locomotion.canRun ? 1 : 0, Locomotion.canJump ? 1 : 0); originalName = gameObject.name.Replace(CLONE, string.Empty); #if PHOTON_RPG isNPC = character is NPCCharacter; npc = character as NPCCharacter; #endif if (character && PhotonNetwork.InRoom) { /*if (character is PlayerCharacter) * { * if (!photonView.IsMine) * { * //locomotion.faceDirection = CharacterLocomotion.FACE_DIRECTION.None; * //locomotion.SetIsControllable(false); * * HookPlayer hookPlayer = gameObject.GetComponent<HookPlayer>(); * Destroy(hookPlayer); * * /// Workaround to reset the HookPlayer reference to the local player. * if (Player) * { * hookPlayer = Player.GetComponent<HookPlayer>(); * Destroy(hookPlayer); * Player.gameObject.AddComponent<HookPlayer>(); * } * } * else * { * photonView.Owner.TagObject = gameObject; * Player = this; * } * }*/ } #if PHOTON_RPG Actor.onActorReady += (OnActorReady); Actor.onClassChange += (OnClassChange); #endif }
private void CharacterTabButtonAdd_Click(object sender, RoutedEventArgs e) { NPCCharacter item = new NPCCharacter(); MainWindow.CurrentProject.data.characters.Add(item); MetroTabItem tabItem = CreateTab(item); MainWindow.Instance.characterTabSelect.Items.Add(tabItem); MainWindow.Instance.characterTabSelect.SelectedIndex = MainWindow.Instance.characterTabSelect.Items.Count - 1; }
public IEnumerator SwitchNPC(NPCCharacter NPCScript) { Debug.Log("Switching NPC to " + NPCScript._characterName); NPCAnimator.SetBool("OnStage", false); do { if (NPCAnimator.GetCurrentAnimatorStateInfo(0).IsName("OffStage")) { NPCImage.sprite = NPCScript.GetNPCSprite; NPCName.text = NPCScript._characterName; NPCAnimator.SetBool("OnStage", true); } else { yield return(new WaitForEndOfFrame()); } } while (!NPCAnimator.GetBool("OnStage")); yield return(true); }
public DialogueView_Window(NPCCharacter character, NPCDialogue dialogue, Simulation simulation, NPCDialogue prev = null) { InitializeComponent(); Character = character; Dialogue = dialogue; Simulation = simulation; Previous = prev; Start = dialogue; Loaded += (sender, e) => { SimulationView_Window svw = new SimulationView_Window(this, Simulation); svw.Owner = this; svw.Show(); Closing += (sender2, e2) => { svw.Close(); }; }; }
void UpdateDialog() //상대가 하나냐 둘이냐에 따라 다름. { //업데이트를 어떻게 할까.,., Baseentity Bplayer = player.GetComponent <Baseentity>(); npc1Script = npc1.GetComponent <NPCCharacter>(); MaxScript = 2; npc1Script.SetPartner(true); if (npc1Script.getIncon()) { MultiDialog(); } else { DirectDialog(); } if (dialogindex > MaxScript) { SetEnd(true); } }
public QuestView_Window(NPCCharacter character, Simulation simulation, NPCQuest quest, EMode mode = EMode.PREVIEW) { InitializeComponent(); Quest = quest; switch (mode) { case EMode.PREVIEW: acceptButton.IsEnabled = false; acceptButton.Visibility = Visibility.Collapsed; continueButton.IsEnabled = false; continueButton.Visibility = Visibility.Collapsed; break; case EMode.BEGIN_QUEST: continueButton.IsEnabled = false; continueButton.Visibility = Visibility.Collapsed; break; case EMode.END_QUEST: acceptButton.IsEnabled = false; acceptButton.Visibility = Visibility.Collapsed; break; } formatter.Markup(title, SimulationTool.ReplacePlaceholders(character, simulation, quest.Title)); formatter.Markup(desc, SimulationTool.ReplacePlaceholders(character, simulation, quest.description)); foreach (NPC.Conditions.Condition c in quest.conditions) { string text = c.FormatCondition(simulation); if (text == null) { continue; } Grid g = new Grid(); Border b = new Border() { BorderBrush = App.Current.Resources["AccentColor"] as Brush, BorderThickness = new Thickness(1), CornerRadius = new CornerRadius(4) }; TextBlock tb = new TextBlock(); formatter.Markup(tb, text); Label l = new Label() { Content = tb }; Image i = new Image() { Width = 26, Height = 26, Margin = new Thickness(5) }; g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.ColumnDefinitions.Add(new ColumnDefinition()); g.Children.Add(i); g.Children.Add(l); Grid.SetColumn(l, 1); if (c is IUIL_Icon uIL && uIL.UpdateIcon(out var img)) { i.Visibility = Visibility.Visible; i.Source = img; }
void MultiDialog() { npc1Script = npc1.GetComponent <NPCCharacter>(); npc2Script = npc2.GetComponent <NPCCharacter>(); }
public QuestView_Window(NPCCharacter character, Simulation simulation, NPCQuest quest, EMode mode = EMode.PREVIEW) { InitializeComponent(); Quest = quest; switch (mode) { case EMode.PREVIEW: acceptButton.IsEnabled = false; acceptButton.Visibility = Visibility.Collapsed; continueButton.IsEnabled = false; continueButton.Visibility = Visibility.Collapsed; break; case EMode.BEGIN_QUEST: continueButton.IsEnabled = false; continueButton.Visibility = Visibility.Collapsed; break; case EMode.END_QUEST: acceptButton.IsEnabled = false; acceptButton.Visibility = Visibility.Collapsed; break; } formatter.Markup(title, SimulationTool.ReplacePlaceholders(character, simulation, quest.title)); formatter.Markup(desc, SimulationTool.ReplacePlaceholders(character, simulation, quest.description)); foreach (NPC.Conditions.Condition c in quest.conditions) { string text = c.FormatCondition(simulation); if (text == null) { continue; } Border b = new Border() { BorderBrush = App.Current.Resources["AccentColor"] as Brush, BorderThickness = new Thickness(1), CornerRadius = new CornerRadius(4) }; TextBlock tb = new TextBlock(); formatter.Markup(tb, text); Label l = new Label() { Content = tb }; b.Child = l; goalsPanel.Children.Add(b); } foreach (NPC.Rewards.Reward r in quest.rewards) { string text = r.FormatReward(simulation); if (text == null) { continue; } Border b = new Border() { BorderBrush = App.Current.Resources["AccentColor"] as Brush, BorderThickness = new Thickness(1), CornerRadius = new CornerRadius(4) }; TextBlock tb = new TextBlock(); formatter.Markup(tb, text); Label l = new Label() { Content = tb }; b.Child = l; rewardsPanel.Children.Add(b); } }
public CharacterTabViewModel() { Character = new NPCCharacter(); UpdateColorPicker(); }
public VendorView_Window(NPCCharacter character, Simulation simulation, NPCVendor vendor) { InitializeComponent(); Vendor = vendor; Simulation = simulation; formatter.Markup(title, SimulationTool.ReplacePlaceholders(character, simulation, vendor.Title)); formatter.Markup(desc, SimulationTool.ReplacePlaceholders(character, simulation, vendor.vendorDescription)); UIElement createElement(VendorItem item) { Button b = new Button() { Margin = new Thickness(2.5), MinHeight = 64, HorizontalContentAlignment = HorizontalAlignment.Stretch, VerticalContentAlignment = VerticalAlignment.Stretch }; Grid g = new Grid(); g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.ColumnDefinitions.Add(new ColumnDefinition()); TextBlock tb = new TextBlock(); formatter.Markup(tb, LocalizationManager.Current.Simulation["Vendor"].Translate("Item_Cost", item.cost)); Label l = new Label() { HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Bottom, Content = tb }; string nameKey; switch (item.type) { case ItemType.ITEM: nameKey = "Item_Name"; break; case ItemType.VEHICLE: nameKey = "Vehicle_Name"; break; default: throw new Exception("Invalid ItemType"); } TextBlock tb2 = new TextBlock(); Label l2 = new Label() { HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, Content = tb2 }; TextBlock tb3 = new TextBlock() { FontSize = 9 }; Label l3 = new Label() { HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, Content = tb3 }; Grid g2 = new Grid(); g2.RowDefinitions.Add(new RowDefinition()); g2.RowDefinitions.Add(new RowDefinition()); g2.RowDefinitions.Add(new RowDefinition()); g2.Children.Add(l); g2.Children.Add(l2); g2.Children.Add(l3); Grid.SetRow(l2, 0); Grid.SetRow(l3, 1); Grid.SetRow(l, 2); g.Children.Add(g2); Grid.SetColumn(g2, 1); if (item.type == ItemType.ITEM && GameAssetManager.TryGetAsset <GameItemAsset>(item.id, out var asset)) { g.Children.Add(new Image() { Source = new BitmapImage(asset.ImagePath), Width = 48, Height = 48, Margin = new Thickness(5) }); formatter.Markup(tb2, asset.name); formatter.Markup(tb3, asset.itemDescription); } else { formatter.Markup(tb2, LocalizationManager.Current.Simulation["Vendor"].Translate(nameKey, item.id)); tb3.Text = string.Empty; } b.Content = g; return(b); } System.Collections.Generic.IEnumerable <VendorItem> buyItems = vendor.BuyItems.Where(d => d.conditions.All(c => c.Check(simulation))); System.Collections.Generic.IEnumerable <VendorItem> sellItems = vendor.SellItems.Where(d => d.conditions.All(c => c.Check(simulation))); if (!vendor.disableSorting) // enable sorting { buyItems = buyItems.OrderBy(v => v.id); sellItems = sellItems.OrderBy(v => v.id); } foreach (VendorItem b in buyItems) { UIElement elem = createElement(b); elem.PreviewMouseLeftButtonDown += (sender, e) => { if (Simulation.Items.Any(d => d.ID == b.id)) { Simulation.Items.Remove(Simulation.Items.First(d => d.ID == b.id)); changeCurrency(b.cost, false); } }; buyingPanel.Children.Add(elem); } foreach (VendorItem s in sellItems) { UIElement elem = createElement(s); elem.PreviewMouseLeftButtonDown += (sender, e) => { if (getCurrency() >= s.cost) { changeCurrency(s.cost, true); switch (s.type) { case ItemType.ITEM: { Simulation.Items.Add(new Simulation.Item() { ID = s.id, Amount = 1, Quality = 100 }); } break; case ItemType.VEHICLE: { MessageBox.Show(LocalizationManager.Current.Simulation["Vendor"].Translate("Vehicle_Spawned", s.id, s.spawnPointID)); } break; } } }; sellingPanel.Children.Add(elem); } if (string.IsNullOrEmpty(vendor.currency)) { isCurrency = false; } else { isCurrency = true; } setupCurrency(); updateCurrency(); }
public abstract void VisitNPCCharacter( NPCCharacter npcCharacter);
public VendorView_Window(NPCCharacter character, Simulation simulation, NPCVendor vendor) { InitializeComponent(); Vendor = vendor; Simulation = simulation; formatter.Markup(title, SimulationTool.ReplacePlaceholders(character, simulation, vendor.vendorTitle)); formatter.Markup(desc, SimulationTool.ReplacePlaceholders(character, simulation, vendor.vendorDescription)); UIElement createElement(VendorItem item) { Button b = new Button() { Margin = new Thickness(2.5), Height = 64, HorizontalContentAlignment = HorizontalAlignment.Stretch, VerticalContentAlignment = VerticalAlignment.Stretch }; Grid g = new Grid(); TextBlock tb = new TextBlock(); formatter.Markup(tb, LocalizationManager.Current.Simulation["Vendor"].Translate("Item_Cost", item.cost)); Label l = new Label() { HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Bottom, Content = tb }; string nameKey; switch (item.type) { case ItemType.ITEM: nameKey = "Item_Name"; break; case ItemType.VEHICLE: nameKey = "Vehicle_Name"; break; default: throw new Exception("Invalid ItemType"); } TextBlock tb2 = new TextBlock(); formatter.Markup(tb2, LocalizationManager.Current.Simulation["Vendor"].Translate(nameKey, item.id)); Label l2 = new Label() { HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, Content = tb2 }; g.Children.Add(l); g.Children.Add(l2); b.Content = g; return(b); } System.Collections.Generic.IEnumerable <VendorItem> buyItems = vendor.BuyItems.Where(d => d.conditions.All(c => c.Check(simulation))); System.Collections.Generic.IEnumerable <VendorItem> sellItems = vendor.SellItems.Where(d => d.conditions.All(c => c.Check(simulation))); if (!vendor.disableSorting) // enable sorting { buyItems = buyItems.OrderBy(v => v.id); sellItems = sellItems.OrderBy(v => v.id); } foreach (VendorItem b in buyItems) { UIElement elem = createElement(b); elem.PreviewMouseLeftButtonDown += (sender, e) => { if (Simulation.Items.Any(d => d.ID == b.id)) { Simulation.Items.Remove(Simulation.Items.First(d => d.ID == b.id)); changeCurrency(b.cost, false); } }; buyingPanel.Children.Add(elem); } foreach (VendorItem s in sellItems) { UIElement elem = createElement(s); elem.PreviewMouseLeftButtonDown += (sender, e) => { if (getCurrency() >= s.cost) { changeCurrency(s.cost, true); switch (s.type) { case ItemType.ITEM: { Simulation.Items.Add(new Simulation.Item() { ID = s.id, Amount = 1, Quality = 100 }); } break; case ItemType.VEHICLE: { MessageBox.Show(LocalizationManager.Current.Simulation["Vendor"].Translate("Vehicle_Spawned", s.id, s.spawnPointID)); } break; } } }; sellingPanel.Children.Add(elem); } updateCurrency(); }
private MetroTabItem CreateTab(NPCCharacter character) { var binding = new Binding() { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Mode = BindingMode.OneWay, Path = new PropertyPath("UIText") }; Label l = new Label(); l.SetBinding(Label.ContentProperty, binding); MetroTabItem tabItem = new MetroTabItem { CloseButtonEnabled = true, CloseTabCommand = CloseTabCommand, Header = l, DataContext = character }; tabItem.CloseTabCommandParameter = tabItem; var cmenu = new ContextMenu(); List <MenuItem> cmenuItems = new List <MenuItem>() { ContextHelper.CreateCopyButton((object sender, RoutedEventArgs e) => { Save(); ContextMenu context = (sender as MenuItem).Parent as ContextMenu; MetroTabItem target = context.PlacementTarget as MetroTabItem; ClipboardManager.SetObject(Universal_ItemList.ReturnType.Character, target.DataContext); }), ContextHelper.CreateDuplicateButton((object sender, RoutedEventArgs e) => { Save(); ContextMenu context = (sender as MenuItem).Parent as ContextMenu; MetroTabItem target = context.PlacementTarget as MetroTabItem; var cloned = (target.DataContext as NPCCharacter).Clone(); MainWindow.CurrentProject.data.characters.Add(cloned); MetroTabItem ti = CreateTab(cloned); MainWindow.Instance.characterTabSelect.Items.Add(ti); }), ContextHelper.CreatePasteButton((object sender, RoutedEventArgs e) => { if (ClipboardManager.TryGetObject(ClipboardManager.CharacterFormat, out var obj) && !(obj is null) && obj is NPCCharacter cloned) { MainWindow.CurrentProject.data.characters.Add(cloned); MetroTabItem ti = CreateTab(cloned); MainWindow.Instance.characterTabSelect.Items.Add(ti); } }) }; foreach (var cmenuItem in cmenuItems) { cmenu.Items.Add(cmenuItem); } tabItem.ContextMenu = cmenu; return(tabItem); }
public CharacterTabViewModel() { MainWindow.Instance.characterTabSelect.SelectionChanged += CharacterTabSelect_SelectionChanged; MainWindow.Instance.characterTabButtonAdd.Click += CharacterTabButtonAdd_Click; NPCCharacter empty = new NPCCharacter(); Character = empty; UpdateColorPicker(); UpdateTabs(); ContextMenu cmenu3 = new ContextMenu(); cmenu3.Items.Add(ContextHelper.CreateAddFromTemplateButton(typeof(NPCCharacter), (result) => { if (result is NPCCharacter npcc) { MainWindow.CurrentProject.data.characters.Add(npcc); MetroTabItem tabItem = CreateTab(npcc); MainWindow.Instance.characterTabSelect.Items.Add(tabItem); MainWindow.Instance.characterTabSelect.SelectedIndex = MainWindow.Instance.characterTabSelect.Items.Count - 1; } })); MainWindow.Instance.characterTabButtonAdd.ContextMenu = cmenu3; MainWindow.Instance.txtDisplayName.ContextMenu = ContextHelper.CreateContextMenu(ContextHelper.EContextOption.Group_Rich | ContextHelper.EContextOption.Group_TextEdit); #region Clothing Init #region Default ContextMenu cidDefault_hat = new ContextMenu(); cidDefault_hat.Items.Add(ContextHelper.CreateSelectHatButton((asset) => { this.DefaultClothing.Hat = asset.id; MainWindow.Instance.controlClothingDefaultHat.Value = asset.id; })); MainWindow.Instance.controlClothingDefaultHat.ContextMenu = cidDefault_hat; MainWindow.Instance.controlClothingDefaultHat.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidDefault_glasses = new ContextMenu(); cidDefault_glasses.Items.Add(ContextHelper.CreateSelectGlassesButton((asset) => { this.DefaultClothing.Glasses = asset.id; MainWindow.Instance.controlClothingDefaultGlasses.Value = asset.id; })); MainWindow.Instance.controlClothingDefaultGlasses.ContextMenu = cidDefault_glasses; MainWindow.Instance.controlClothingDefaultGlasses.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidDefault_backpack = new ContextMenu(); cidDefault_backpack.Items.Add(ContextHelper.CreateSelectBackpackButton((asset) => { this.DefaultClothing.Backpack = asset.id; MainWindow.Instance.controlClothingDefaultBackpack.Value = asset.id; })); MainWindow.Instance.controlClothingDefaultBackpack.ContextMenu = cidDefault_backpack; MainWindow.Instance.controlClothingDefaultBackpack.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidDefault_shirt = new ContextMenu(); cidDefault_shirt.Items.Add(ContextHelper.CreateSelectShirtButton((asset) => { this.DefaultClothing.Shirt = asset.id; MainWindow.Instance.controlClothingDefaultShirt.Value = asset.id; })); MainWindow.Instance.controlClothingDefaultShirt.ContextMenu = cidDefault_shirt; MainWindow.Instance.controlClothingDefaultShirt.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidDefault_pants = new ContextMenu(); cidDefault_pants.Items.Add(ContextHelper.CreateSelectPantsButton((asset) => { this.DefaultClothing.Pants = asset.id; MainWindow.Instance.controlClothingDefaultPants.Value = asset.id; })); MainWindow.Instance.controlClothingDefaultPants.ContextMenu = cidDefault_pants; MainWindow.Instance.controlClothingDefaultPants.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidDefault_mask = new ContextMenu(); cidDefault_mask.Items.Add(ContextHelper.CreateSelectMaskButton((asset) => { this.DefaultClothing.Mask = asset.id; MainWindow.Instance.controlClothingDefaultMask.Value = asset.id; })); MainWindow.Instance.controlClothingDefaultMask.ContextMenu = cidDefault_mask; MainWindow.Instance.controlClothingDefaultMask.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidDefault_vest = new ContextMenu(); cidDefault_vest.Items.Add(ContextHelper.CreateSelectVestButton((asset) => { this.DefaultClothing.Vest = asset.id; MainWindow.Instance.controlClothingDefaultVest.Value = asset.id; })); MainWindow.Instance.controlClothingDefaultVest.ContextMenu = cidDefault_vest; MainWindow.Instance.controlClothingDefaultVest.ValueChanged += (sender, e) => UpdateClothing(); #endregion #region Halloween ContextMenu cidHalloween_hat = new ContextMenu(); cidHalloween_hat.Items.Add(ContextHelper.CreateSelectHatButton((asset) => { this.HalloweenClothing.Hat = asset.id; MainWindow.Instance.controlClothingHalloweenHat.Value = asset.id; })); MainWindow.Instance.controlClothingHalloweenHat.ContextMenu = cidHalloween_hat; MainWindow.Instance.controlClothingHalloweenHat.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidHalloween_glasses = new ContextMenu(); cidHalloween_glasses.Items.Add(ContextHelper.CreateSelectGlassesButton((asset) => { this.HalloweenClothing.Glasses = asset.id; MainWindow.Instance.controlClothingHalloweenGlasses.Value = asset.id; })); MainWindow.Instance.controlClothingHalloweenGlasses.ContextMenu = cidHalloween_glasses; MainWindow.Instance.controlClothingHalloweenGlasses.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidHalloween_backpack = new ContextMenu(); cidHalloween_backpack.Items.Add(ContextHelper.CreateSelectBackpackButton((asset) => { this.HalloweenClothing.Backpack = asset.id; MainWindow.Instance.controlClothingHalloweenBackpack.Value = asset.id; })); MainWindow.Instance.controlClothingHalloweenBackpack.ContextMenu = cidHalloween_backpack; MainWindow.Instance.controlClothingHalloweenBackpack.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidHalloween_shirt = new ContextMenu(); cidHalloween_shirt.Items.Add(ContextHelper.CreateSelectShirtButton((asset) => { this.HalloweenClothing.Shirt = asset.id; MainWindow.Instance.controlClothingHalloweenShirt.Value = asset.id; })); MainWindow.Instance.controlClothingHalloweenShirt.ContextMenu = cidHalloween_shirt; MainWindow.Instance.controlClothingHalloweenShirt.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidHalloween_pants = new ContextMenu(); cidHalloween_pants.Items.Add(ContextHelper.CreateSelectPantsButton((asset) => { this.HalloweenClothing.Pants = asset.id; MainWindow.Instance.controlClothingHalloweenPants.Value = asset.id; })); MainWindow.Instance.controlClothingHalloweenPants.ContextMenu = cidHalloween_pants; MainWindow.Instance.controlClothingHalloweenPants.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidHalloween_mask = new ContextMenu(); cidHalloween_mask.Items.Add(ContextHelper.CreateSelectMaskButton((asset) => { this.HalloweenClothing.Mask = asset.id; MainWindow.Instance.controlClothingHalloweenMask.Value = asset.id; })); MainWindow.Instance.controlClothingHalloweenMask.ContextMenu = cidHalloween_mask; MainWindow.Instance.controlClothingHalloweenMask.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidHalloween_vest = new ContextMenu(); cidHalloween_vest.Items.Add(ContextHelper.CreateSelectVestButton((asset) => { this.HalloweenClothing.Vest = asset.id; MainWindow.Instance.controlClothingHalloweenVest.Value = asset.id; })); MainWindow.Instance.controlClothingHalloweenVest.ContextMenu = cidHalloween_vest; MainWindow.Instance.controlClothingHalloweenVest.ValueChanged += (sender, e) => UpdateClothing(); #endregion #region Christmas ContextMenu cidChristmas_hat = new ContextMenu(); cidChristmas_hat.Items.Add(ContextHelper.CreateSelectHatButton((asset) => { this.ChristmasClothing.Hat = asset.id; MainWindow.Instance.controlClothingChristmasHat.Value = asset.id; })); MainWindow.Instance.controlClothingChristmasHat.ContextMenu = cidChristmas_hat; MainWindow.Instance.controlClothingChristmasHat.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidChristmas_glasses = new ContextMenu(); cidChristmas_glasses.Items.Add(ContextHelper.CreateSelectGlassesButton((asset) => { this.ChristmasClothing.Glasses = asset.id; MainWindow.Instance.controlClothingChristmasGlasses.Value = asset.id; })); MainWindow.Instance.controlClothingChristmasGlasses.ContextMenu = cidChristmas_glasses; MainWindow.Instance.controlClothingChristmasGlasses.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidChristmas_backpack = new ContextMenu(); cidChristmas_backpack.Items.Add(ContextHelper.CreateSelectBackpackButton((asset) => { this.ChristmasClothing.Backpack = asset.id; MainWindow.Instance.controlClothingChristmasBackpack.Value = asset.id; })); MainWindow.Instance.controlClothingChristmasBackpack.ContextMenu = cidChristmas_backpack; MainWindow.Instance.controlClothingChristmasBackpack.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidChristmas_shirt = new ContextMenu(); cidChristmas_shirt.Items.Add(ContextHelper.CreateSelectShirtButton((asset) => { this.ChristmasClothing.Shirt = asset.id; MainWindow.Instance.controlClothingChristmasShirt.Value = asset.id; })); MainWindow.Instance.controlClothingChristmasShirt.ContextMenu = cidChristmas_shirt; MainWindow.Instance.controlClothingChristmasShirt.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidChristmas_pants = new ContextMenu(); cidChristmas_pants.Items.Add(ContextHelper.CreateSelectPantsButton((asset) => { this.ChristmasClothing.Pants = asset.id; MainWindow.Instance.controlClothingChristmasPants.Value = asset.id; })); MainWindow.Instance.controlClothingChristmasPants.ContextMenu = cidChristmas_pants; MainWindow.Instance.controlClothingChristmasPants.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidChristmas_mask = new ContextMenu(); cidChristmas_mask.Items.Add(ContextHelper.CreateSelectMaskButton((asset) => { this.ChristmasClothing.Mask = asset.id; MainWindow.Instance.controlClothingChristmasMask.Value = asset.id; })); MainWindow.Instance.controlClothingChristmasMask.ContextMenu = cidChristmas_mask; MainWindow.Instance.controlClothingChristmasMask.ValueChanged += (sender, e) => UpdateClothing(); ContextMenu cidChristmas_vest = new ContextMenu(); cidChristmas_vest.Items.Add(ContextHelper.CreateSelectVestButton((asset) => { this.ChristmasClothing.Vest = asset.id; MainWindow.Instance.controlClothingChristmasVest.Value = asset.id; })); MainWindow.Instance.controlClothingChristmasVest.ContextMenu = cidChristmas_vest; MainWindow.Instance.controlClothingChristmasVest.ValueChanged += (sender, e) => UpdateClothing(); #endregion #endregion MainWindow.Instance.clothingTabControl.SelectionChanged += (sender, e) => UpdateClothing(); #region Equipment Init ContextMenu cid_primary = new ContextMenu(); cid_primary.Items.Add(ContextHelper.CreateSelectItemButton((asset) => { EquipmentPrimary = asset.id; MainWindow.Instance.primaryIdBox.Value = asset.id; }, new AssetFilter_Equippable("Interface", "AssetPicker_Filter_Equippable", Equip_Type.Primary))); MainWindow.Instance.primaryIdBox.ContextMenu = cid_primary; MainWindow.Instance.primaryIdBox.ValueChanged += (sender, e) => UpdateEquipment(); ContextMenu cid_secondary = new ContextMenu(); cid_secondary.Items.Add(ContextHelper.CreateSelectItemButton((asset) => { EquipmentSecondary = asset.id; MainWindow.Instance.secondaryIdBox.Value = asset.id; }, new AssetFilter_Equippable("Interface", "AssetPicker_Filter_Equippable", Equip_Type.Secondary))); MainWindow.Instance.secondaryIdBox.ContextMenu = cid_secondary; MainWindow.Instance.secondaryIdBox.ValueChanged += (sender, e) => UpdateEquipment(); ContextMenu cid_tertiary = new ContextMenu(); cid_tertiary.Items.Add(ContextHelper.CreateSelectItemButton((asset) => { EquipmentTertiary = asset.id; MainWindow.Instance.tertiaryIdBox.Value = asset.id; }, new AssetFilter_Equippable("Interface", "AssetPicker_Filter_Equippable", Equip_Type.Tertiary))); MainWindow.Instance.tertiaryIdBox.ContextMenu = cid_tertiary; MainWindow.Instance.tertiaryIdBox.ValueChanged += (sender, e) => UpdateEquipment(); #endregion var txtIDContext = new ContextMenu(); txtIDContext.Items.Add(ContextHelper.CreateFindUnusedIDButton((id) => { this.ID = id; MainWindow.Instance.txtID.Value = id; }, GameIntegration.EGameAssetCategory.OBJECT)); MainWindow.Instance.txtID.ContextMenu = txtIDContext; var dialogueIDContext = new ContextMenu(); dialogueIDContext.Items.Add(ContextHelper.CreateSelectAssetButton(typeof(GameDialogueAsset), (asset) => { this.DialogueID = asset.id; MainWindow.Instance.txtStartDialogueID.Value = asset.id; }, "Control_SelectAsset_Dialogue", MahApps.Metro.IconPacks.PackIconMaterialKind.Chat)); MainWindow.Instance.txtStartDialogueID.ContextMenu = dialogueIDContext; }