void LoadAssetsFromPack(PlayAssetPackRequest packRequest) { var discreteAssets = gameAssetManager.GetDiscreteAssetNameList(); foreach (string discreteAsset in discreteAssets) { var assetLocation = packRequest.GetAssetLocation( discreteAsset); if (assetLocation != null) { long assetSize = (long)assetLocation.Size; long assetOffset = (long)assetLocation.Offset; var assetFileStream = File.OpenRead(assetLocation.Path); var assetBuffer = new byte[assetSize]; assetFileStream.Seek(assetOffset, SeekOrigin.Begin); assetFileStream.Read(assetBuffer, 0, assetBuffer.Length); Debug.Log("Finished discrete load of " + discreteAsset); // The asset is a raw .jpg or .png, convert to a sprite gameAssetManager.AddSpriteAsset(discreteAsset, GameAssetManager.GenerateSpriteFromRawImage( assetBuffer)); } } }
private void updateCurrency() { string translateKey; uint value; if (!isCurrency) // experience { translateKey = "Pay_Experience"; value = Simulation.Experience; } else // currency { if (!Simulation.Currencies.TryGetValue(Vendor.currency, out value)) { value = 0; } translateKey = "Pay_Currency"; } if (isCurrency && GameAssetManager.TryGetAsset <GameCurrencyAsset>(Guid.Parse(Vendor.currency), out var asset)) { currencyText.Text = string.Format(asset.valueFormat, value); } else { formatter.Markup(currencyText, LocalizationManager.Current.Simulation["Vendor"].Translate(translateKey, value)); } }
public override string FormatCondition(Simulation simulation) { string text = Localization; if (string.IsNullOrEmpty(text)) { text = LocalizationManager.Current.Simulation["Quest"]["Default_Condition_TreeKills"]; } if (!simulation.Flags.TryGetValue(ID, out short value)) { value = 0; } string arg; if (Guid.TryParse(Tree, out var treeGUID) && GameAssetManager.TryGetAsset <GameResourceAsset>(treeGUID, out var treeAsset)) { arg = treeAsset.name; } else { arg = "?"; } return(string.Format(text, value, Value, arg)); }
private void Awake() { if (main == null) { main = this; } }
private void Awake() { gameAssetManager = GameObject.Find("GameAssetManager").GetComponent <GameAssetManager>(); if (gameAssetManager == null) { Debug.LogError("Failed to find GameAssetManager"); } }
private void Awake() { infoStatus = AssetPackInfoStatus.PACKSTATUS_PENDING; gameAssetManager = GameObject.Find("GameAssetManager").GetComponent <GameAssetManager>(); if (gameAssetManager == null) { Debug.LogError("Failed to find GameAssetManager"); } waitingOnPermissionResult = false; }
private void setupCurrency() { if (isCurrency) { currencyTextLabel.HorizontalAlignment = HorizontalAlignment.Right; if (Guid.TryParse(Vendor.currency, out var curGuid) && GameAssetManager.TryGetAsset <GameCurrencyAsset>(curGuid, out var asset)) { currencyIcons.Visibility = Visibility.Visible; foreach (var entry in asset.entries.OrderBy(d => d.Value)) { Grid eG = new Grid(); Image eIcon = new Image() { Width = 32, Height = 32, Margin = new Thickness(2.5) }; if (Guid.TryParse(entry.ItemGUID, out var itemGuid) && GameAssetManager.TryGetAsset <GameItemAsset>(itemGuid, out var itemAsset)) { eIcon.Source = ThumbnailManager.CreateThumbnail(itemAsset.ImagePath); } Label eL = new Label() { VerticalAlignment = VerticalAlignment.Bottom, HorizontalAlignment = HorizontalAlignment.Center }; TextBlock eT = new TextBlock() { TextAlignment = TextAlignment.Center, Text = entry.Value.ToString() }; eL.Content = eT; eG.Children.Add(eIcon); eG.Children.Add(eL); currencyIcons.Children.Add(eG); } } } else { currencyIcons.Visibility = Visibility.Collapsed; currencyTextLabel.HorizontalAlignment = HorizontalAlignment.Center; } }
public void Display() { Simulation.OnPropertyChanged(""); mainText.Text = string.Empty; responsesPanel.Children.Clear(); formatter.Markup(npcNameText, FormatText(Character.DisplayName) ?? string.Empty); for (int i = 0; i < Dialogue.Messages.Count; i++) { NPCMessage msg = Dialogue.Messages[i]; if (msg.conditions.All(d => d.Check(Simulation))) { foreach (NPC.Conditions.Condition c in msg.conditions) { c.Apply(Simulation); } foreach (NPC.Rewards.Reward r in msg.rewards) { r.Give(Simulation); } lastMessageId = i; lastPage = 0; lastMessage = msg; if (msg.prev != 0) { NPCDialogue prevNext; if (GameAssetManager.TryGetAsset <GameDialogueAsset>(msg.prev, out var gameDialogueAsset)) { prevNext = gameDialogueAsset.dialogue; } else { MessageBox.Show(LocalizationManager.Current.Simulation["Dialogue"].Translate("Error_DialogueNotFound", msg.prev)); Close(); return; } Previous = prevNext; } DisplayPage(msg, i, 0); break; } } }
public bool UpdateIcon(out BitmapImage image) { if (ID > 0 && GameAssetManager.TryGetAsset <GameItemAsset>(ID, out var asset)) { image = ThumbnailManager.CreateThumbnail(asset.ImagePath); return(true); } else { image = default; return(false); } }
internal static MenuItem CreateFindUnusedIDButton(Action <ushort> action, EGameAssetCategory category) { return(CreateGenericButton(new BaseCommand(() => { if (GameAssetManager.TryFindUnusedID(category, out var result)) { action.Invoke(result); } else { MessageBox.Show(LocalizationManager.Current.Interface["Control_FindUnusedID_Failed"]); } }), "Control_FindUnusedID", PackIconMaterialKind.Magnify)); }
ushort resolve(ushort id) { if (GameAssetManager.TryGetAsset <GameSpawnAsset>(ID, out var asset)) { asset.resolve(out id, out bool isSpawn); if (isSpawn) { id = resolve(id); } return(id); } else { return(0); } }
public override string FormatCondition(Simulation simulation) { string text = Localization; if (string.IsNullOrEmpty(text)) { if (GameAssetManager.TryGetAsset<GameCurrencyAsset>(Guid.Parse(GUID), out var asset) && !string.IsNullOrEmpty(asset.valueFormat)) { text = asset.valueFormat; } else { text = LocalizationManager.Current.Simulation["Quest"].Translate("Default_Condition_Currency"); } } return string.Format(text, Value); }
public override string FormatReward(Simulation simulation) { string text = Localization; if (string.IsNullOrEmpty(text)) { text = LocalizationManager.Current.Simulation["Quest"].Translate("Default_Reward_Item"); } string itemName; if (GameAssetManager.TryGetAsset <GameItemAsset>(ID, out var asset)) { itemName = asset.name; } else { itemName = ID.ToString(); } return(string.Format(text, Amount, itemName)); }
public override string FormatCondition(Simulation simulation) { string text = Localization; if (string.IsNullOrEmpty(text)) { text = LocalizationManager.Current.Simulation["Quest"].Translate("Default_Condition_Item"); } System.Collections.Generic.IEnumerable <Simulation.Item> found = simulation.Items.Where(d => d.ID == ID); string idOrName; if (GameAssetManager.TryGetAsset <GameItemAsset>(ID, out var gameAsset)) { idOrName = gameAsset.name; } else { idOrName = ID.ToString(); } return(string.Format(text, found.Count(), Amount, idOrName)); }
void SetupAssets() { ClearList(); IEnumerable <GameAsset> assets = GameAssetManager.GetAllAssets(assetType); IEnumerable <GameAsset> orderedAssets; switch (orderMode) { case EOrderByMode.ID_A: orderedAssets = assets.OrderBy(d => d.origin).ThenBy(d => d.id); break; case EOrderByMode.ID_D: orderedAssets = assets.OrderBy(d => d.origin).ThenByDescending(d => d.id); break; case EOrderByMode.Name_A: orderedAssets = assets.OrderBy(d => d.origin).ThenBy(d => { if (d is IHasNameOverride nameOverride) { return(nameOverride.NameOverride); } else { return(d.name); } }); break; case EOrderByMode.Name_D: orderedAssets = assets.OrderBy(d => d.origin).ThenByDescending(d => { if (d is IHasNameOverride nameOverride) { return(nameOverride.NameOverride); } else { return(d.name); } }); break; default: orderedAssets = assets; break; } foreach (var asset in orderedAssets) { Grid g = new Grid() { Margin = new Thickness(5), Tag = asset }; g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); TextBlock tb = new TextBlock(); Label l = new Label() { Content = tb }; TextBlock tbid = new TextBlock(); Label lid = new Label() { Content = tbid }; if (asset is IHasNameOverride gda) { markup.Markup(tb, gda.NameOverride); } else { markup.Markup(tb, asset.name); } tbid.Text = asset.id.ToString(); g.Children.Add(l); g.Children.Add(lid); if (asset is IHasIcon hasIcon) { Image icon = new Image() { Source = ThumbnailManager.CreateThumbnail(hasIcon.ImagePath), Width = 32, Height = 32, Margin = new Thickness(1) }; g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.Children.Add(icon); Grid.SetColumn(icon, 0); Grid.SetColumn(lid, 1); Grid.SetColumn(l, 2); } else if (asset is IHasThumbnail hasThumbnail) { Image icon = new Image() { Source = hasThumbnail.Thumbnail, Width = 32, Height = 32, Margin = new Thickness(1) }; g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.Children.Add(icon); Grid.SetColumn(icon, 0); Grid.SetColumn(lid, 1); Grid.SetColumn(l, 2); } else if (asset is IHasAnimatedThumbnail hasAnimatedThumbnail) { var thumbs = hasAnimatedThumbnail.Thumbnails.ToList(); if (thumbs.Count > 0) { Image icon = new Image() { Source = thumbs.First(), Width = 32, Height = 32, Margin = new Thickness(1) }; DispatcherTimer dt = new DispatcherTimer() { Interval = new TimeSpan(0, 0, 3) }; int last = 0; dt.Tick += (sender, e) => { last++; if (last >= thumbs.Count) { last = 0; } icon.Source = thumbs[last]; }; dt.Start(); g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.Children.Add(icon); Grid.SetColumn(icon, 0); Grid.SetColumn(lid, 1); Grid.SetColumn(l, 2); } else { Grid.SetColumn(lid, 0); Grid.SetColumn(l, 1); } } else { tpbarGrid.ColumnDefinitions[0].Width = new GridLength(0); Grid.SetColumn(lid, 0); Grid.SetColumn(l, 1); } if (asset is IHasToolTip hasToolTip) { g.ToolTip = hasToolTip.ToolTipContent; } else if (asset is IHasTextToolTip hasTextToolTip) { var sp = new StackPanel() { Orientation = Orientation.Vertical }; void addLabel(string text) { sp.Children.Add(new Label() { Content = new TextBlock() { Text = text, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Left, TextAlignment = TextAlignment.Left }, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Left, Margin = new Thickness(5) }); } foreach (var line in hasTextToolTip.GetToolTipLines()) { addLabel(line); } g.ToolTip = sp; } g.MouseDown += (sender, e) => { DialogResult = true; SelectedAsset = asset; Close(); }; stack.Children.Add(g); } }
void SetupAssets() { ClearList(); IEnumerable <GameAsset> assets = GameAssetManager.GetAllAssets(assetType); IEnumerable <GameAsset> orderedAssets; switch (orderMode) { case EOrderByMode.ID_A: orderedAssets = assets.OrderBy(d => d.origin).ThenBy(d => d.GUIDOverID ? (object)d.guid : (object)d.id); break; case EOrderByMode.ID_D: orderedAssets = assets.OrderBy(d => d.origin).ThenByDescending(d => d.GUIDOverID ? (object)d.guid : (object)d.id); break; case EOrderByMode.Name_A: orderedAssets = assets.OrderBy(d => d.origin).ThenBy(d => { if (d is IHasNameOverride nameOverride) { return(nameOverride.NameOverride); } else { return(d.name); } }); break; case EOrderByMode.Name_D: orderedAssets = assets.OrderBy(d => d.origin).ThenByDescending(d => { if (d is IHasNameOverride nameOverride) { return(nameOverride.NameOverride); } else { return(d.name); } }); break; default: orderedAssets = assets; break; } if (typeof(ICreatable).IsAssignableFrom(assetType)) { addEntryButton.Visibility = Visibility.Visible; addEntryButton.Command = new BaseCommand(() => { GameAsset createdA = (GameAsset)Activator.CreateInstance(assetType); if (createdA is ICreatable createable) { createable.OnCreate(); } Reorder(); }); } else { addEntryButton.Visibility = Visibility.Collapsed; } foreach (var asset in orderedAssets) { Grid g = new Grid() { Margin = new Thickness(5), Tag = asset }; g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); TextBlock tb = new TextBlock(); Label l = new Label() { Content = tb, VerticalAlignment = VerticalAlignment.Center }; TextBlock tbid = new TextBlock(); Label lid = new Label() { Content = tbid, VerticalAlignment = VerticalAlignment.Center, MaxWidth = 69 }; if (asset is IHasNameOverride gda) { markup.Markup(tb, gda.NameOverride); } else { markup.Markup(tb, asset.name); } if (asset.GUIDOverID) { tbid.Text = asset.guid.ToString("N"); tbid.ToolTip = tbid.Text; } else { tbid.Text = asset.id.ToString(); } g.Children.Add(l); g.Children.Add(lid); Grid editableGrid = new Grid() { HorizontalAlignment = HorizontalAlignment.Right, Margin = new Thickness(5) }; Grid deletableGrid = new Grid() { HorizontalAlignment = HorizontalAlignment.Right, Margin = new Thickness(5) }; g.Children.Add(editableGrid); g.Children.Add(deletableGrid); if (asset is IEditable editable) { Button editButton = new Button() { ToolTip = LocalizationManager.Current.Interface["AssetPicker_Editable_Edit_ToolTip"] }; editButton.Content = new PackIconMaterial() { Kind = PackIconMaterialKind.Pencil, Foreground = Application.Current.Resources["AccentColor"] as System.Windows.Media.Brush, Width = 16, Height = 16 }; editButton.Command = new BaseCommand(() => { editable.Edit(this); if (asset is IHasNameOverride gda1) { markup.Markup(tb, gda1.NameOverride); } else { markup.Markup(tb, asset.name); } if (asset.GUIDOverID) { tbid.Text = asset.guid.ToString("N"); tbid.ToolTip = tbid.Text; } else { tbid.Text = asset.id.ToString(); } }); editableGrid.Children.Add(editButton); } if (asset is IDeletable deletable) { Button deleteButton = new Button() { ToolTip = LocalizationManager.Current.Interface["AssetPicker_Deletable_Delete_ToolTip"] }; deleteButton.Content = new PackIconMaterial() { Kind = PackIconMaterialKind.TrashCan, Foreground = Application.Current.Resources["AccentColor"] as System.Windows.Media.Brush, Width = 16, Height = 16 }; deleteButton.Command = new BaseCommand(() => { deletable.OnDelete(); Reorder(); }); deletableGrid.Children.Add(deleteButton); } if (asset is IHasIcon hasIcon) { Image icon = new Image() { Source = ThumbnailManager.CreateThumbnail(hasIcon.ImagePath), Width = 32, Height = 32, Margin = new Thickness(1), VerticalAlignment = VerticalAlignment.Center }; g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.Children.Add(icon); Grid.SetColumn(icon, 0); Grid.SetColumn(lid, 1); Grid.SetColumn(l, 2); Grid.SetColumn(editableGrid, 3); Grid.SetColumn(deletableGrid, 4); } else if (asset is IHasThumbnail hasThumbnail) { Image icon = new Image() { Source = hasThumbnail.Thumbnail, Width = 32, Height = 32, Margin = new Thickness(1), VerticalAlignment = VerticalAlignment.Center }; g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.Children.Add(icon); Grid.SetColumn(icon, 0); Grid.SetColumn(lid, 1); Grid.SetColumn(l, 2); Grid.SetColumn(editableGrid, 3); Grid.SetColumn(deletableGrid, 4); } else if (asset is IHasAnimatedThumbnail hasAnimatedThumbnail) { var thumbs = hasAnimatedThumbnail.Thumbnails.ToList(); if (thumbs.Count > 0) { Image icon = new Image() { Source = thumbs.First(), Width = 32, Height = 32, Margin = new Thickness(1), VerticalAlignment = VerticalAlignment.Center }; DispatcherTimer dt = new DispatcherTimer() { Interval = new TimeSpan(0, 0, 3) }; int last = 0; dt.Tick += (sender, e) => { last++; if (last >= thumbs.Count) { last = 0; } icon.Source = thumbs[last]; }; dt.Start(); g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.Children.Add(icon); Grid.SetColumn(icon, 0); Grid.SetColumn(lid, 1); Grid.SetColumn(l, 2); Grid.SetColumn(editableGrid, 3); Grid.SetColumn(deletableGrid, 4); } else { Grid.SetColumn(lid, 0); Grid.SetColumn(l, 1); Grid.SetColumn(editableGrid, 2); Grid.SetColumn(deletableGrid, 3); } } else { tpbarGrid.ColumnDefinitions[0].Width = new GridLength(0); Grid.SetColumn(lid, 0); Grid.SetColumn(l, 1); Grid.SetColumn(editableGrid, 2); Grid.SetColumn(deletableGrid, 3); } if (asset is IHasToolTip hasToolTip) { g.ToolTip = hasToolTip.ToolTipContent; } else if (asset is IHasTextToolTip hasTextToolTip) { var sp = new StackPanel() { Orientation = Orientation.Vertical }; void addLabel(string text) { sp.Children.Add(new Label() { Content = new TextBlock() { Text = text, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Left, TextAlignment = TextAlignment.Left }, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Left, Margin = new Thickness(5) }); } foreach (var line in hasTextToolTip.GetToolTipLines()) { addLabel(line); } g.ToolTip = sp; } g.MouseDown += (sender, e) => { DialogResult = true; SelectedAsset = asset; Close(); }; stack.Children.Add(g); } }
public static void FindMistakes() { if (CheckMistakes == null) { CheckMistakes = new HashSet <Mistake>(); string[] nspaces = { "BowieD.Unturned.NPCMaker.Mistakes.Character", "BowieD.Unturned.NPCMaker.Mistakes.Dialogue", "BowieD.Unturned.NPCMaker.Mistakes.Vendor", "BowieD.Unturned.NPCMaker.Mistakes.Quest", "BowieD.Unturned.NPCMaker.Mistakes.Currencies" }; IEnumerable <Type> q = from t in Assembly.GetExecutingAssembly().GetTypes() where t.IsClass && !t.IsAbstract && nspaces.Contains(t.Namespace) select t; foreach (Type t in q) { try { object mistake = Activator.CreateInstance(t); if (mistake is Mistake mist) { CheckMistakes.Add(mist); } } catch { } } } MainWindow.Instance.lstMistakes.Items.Clear(); FoundMistakes.Clear(); foreach (Mistake m in CheckMistakes) { IEnumerable <Mistake> mistakes = m.CheckMistake(); foreach (Mistake fm in mistakes) { string descKey = $"{fm.MistakeName}_Desc"; if (fm.MistakeDesc == null) { if (LocalizationManager.Current.Mistakes.TryGetValue(descKey, out string desc)) { fm.MistakeDesc = desc; } } string solutionKey = $"{fm.MistakeName}_Solution"; if (fm.MistakeSolution == null) { if (LocalizationManager.Current.Mistakes.TryGetValue(solutionKey, out string solution)) { fm.MistakeSolution = solution; } } FoundMistakes.Add(fm); MainWindow.Instance.lstMistakes.Items.Add(fm); } } foreach (NPCDialogue dialogue in MainWindow.CurrentProject.data.dialogues) { if (GameAssetManager.TryGetAsset <GameAsset>((asset) => { if (asset is GameDialogueAsset gda) { if (gda.dialogue != null && gda.dialogue == dialogue) { return(false); } return(gda.id == dialogue.ID); } else { return(asset.Category == EGameAssetCategory.NPC && asset.id == dialogue.ID); } }, out _)) { MainWindow.Instance.lstMistakes.Items.Add(new Mistake() { MistakeDesc = LocalizationManager.Current.Mistakes.Translate("deep_dialogue", dialogue.ID), Importance = IMPORTANCE.WARNING }); } } foreach (NPCVendor vendor in MainWindow.CurrentProject.data.vendors) { if (GameAssetManager.TryGetAsset <GameAsset>((asset) => { if (asset is GameVendorAsset gva) { if (gva.vendor != null && gva.vendor == vendor) { return(false); } return(gva.id == vendor.ID); } else { return(asset.Category == EGameAssetCategory.NPC && asset.id == vendor.ID); } }, out _)) { MainWindow.Instance.lstMistakes.Items.Add(new Mistake() { MistakeDesc = LocalizationManager.Current.Mistakes.Translate("deep_vendor", vendor.ID), Importance = IMPORTANCE.WARNING }); } foreach (VendorItem it in vendor.items) { if (it.type == ItemType.VEHICLE) { if (GameAssetManager.HasImportedAssets && !GameAssetManager.TryGetAsset <GameVehicleAsset>(it.id, out _)) { MainWindow.Instance.lstMistakes.Items.Add(new Mistake() { MistakeDesc = LocalizationManager.Current.Mistakes.Translate("deep_vehicle", it.id), Importance = IMPORTANCE.WARNING }); continue; } } if (it.type == ItemType.ITEM) { if (GameAssetManager.HasImportedAssets && !GameAssetManager.TryGetAsset <GameItemAsset>(it.id, out _)) { MainWindow.Instance.lstMistakes.Items.Add(new Mistake() { MistakeDesc = LocalizationManager.Current.Mistakes.Translate("deep_item", it.id), Importance = IMPORTANCE.WARNING }); continue; } } } } foreach (NPCQuest quest in MainWindow.CurrentProject.data.quests) { if (GameAssetManager.TryGetAsset <GameAsset>((asset) => { if (asset is GameQuestAsset gqa) { if (gqa.quest != null && gqa.quest == quest) { return(false); } return(gqa.id == quest.ID); } else { return(asset.Category == EGameAssetCategory.NPC && asset.id == quest.ID); } }, out _)) { MainWindow.Instance.lstMistakes.Items.Add(new Mistake() { MistakeDesc = LocalizationManager.Current.Mistakes.Translate("deep_quest", quest.ID), Importance = IMPORTANCE.WARNING }); } } foreach (NPCCharacter character in MainWindow.CurrentProject.data.characters) { if (character.ID > 0) { if (GameAssetManager.TryGetAsset <GameAsset>((asset) => { if (asset is GameNPCAsset gva) { if (gva.character != null && gva.character == character) { return(false); } return(gva.id == character.ID); } else { return(asset.Category == EGameAssetCategory.OBJECT && asset.id == character.ID); } }, out _)) { MainWindow.Instance.lstMistakes.Items.Add(new Mistake() { MistakeDesc = LocalizationManager.Current.Mistakes.Translate("deep_char", character.ID), Importance = IMPORTANCE.WARNING }); } } } if (MainWindow.Instance.lstMistakes.Items.Count == 0) { MainWindow.Instance.lstMistakes.Visibility = Visibility.Collapsed; MainWindow.Instance.noErrorsLabel.Visibility = Visibility.Visible; } else { MainWindow.Instance.lstMistakes.Visibility = Visibility.Visible; MainWindow.Instance.noErrorsLabel.Visibility = Visibility.Collapsed; } }
public void DisplayPage(NPCMessage message, int i, int page) { Simulation.OnPropertyChanged(""); formatter.Markup(mainText, FormatText(message.pages[page])); lastPage = page; if (!canDisplayNextPage) { foreach (NPCResponse res in Dialogue.Responses) { if ((res.VisibleInAll || res.visibleIn.Length <= i || res.visibleIn[i] == 1) && res.conditions.All(d => d.Check(Simulation))) { Border border = new Border() { BorderBrush = App.Current.Resources["AccentColor"] as Brush, BorderThickness = new Thickness(1), CornerRadius = new CornerRadius(4), Margin = new Thickness(0, 2.5, 0, 2.5) }; border.PreviewMouseLeftButtonDown += (sender, e) => { bool shouldClose = true; if (res.openQuestId > 0) { shouldClose = false; NPCQuest questAsset; if (GameAssetManager.TryGetAsset <GameQuestAsset>(res.openQuestId, out var gameQuestAsset)) { questAsset = gameQuestAsset.quest; } else { MessageBox.Show(LocalizationManager.Current.Simulation["Dialogue"].Translate("Error_QuestNotFound", res.openQuestId)); Close(); return; } Quest_Status questStatus = Simulation.GetQuestStatus(questAsset.ID); QuestView_Window.EMode _mode; switch (questStatus) { case Quest_Status.Ready: _mode = QuestView_Window.EMode.END_QUEST; break; default: _mode = QuestView_Window.EMode.BEGIN_QUEST; break; } QuestView_Window qvw = new QuestView_Window(Character, Simulation, questAsset, _mode); if (qvw.ShowDialog() == true) { foreach (NPC.Conditions.Condition c in res.conditions) { c.Apply(Simulation); } foreach (NPC.Rewards.Reward r in res.rewards) { r.Give(Simulation); } if (res.openDialogueId > 0) { Previous = Start; NPCDialogue next; if (GameAssetManager.TryGetAsset <GameDialogueAsset>(res.openDialogueId, out var gameDialogueAsset)) { next = gameDialogueAsset.dialogue; } else { MessageBox.Show(LocalizationManager.Current.Simulation["Dialogue"].Translate("Error_DialogueNotFound", res.openDialogueId)); Close(); return; } Dialogue = next; Display(); } } return; } else if (res.openVendorId > 0) { shouldClose = false; NPCVendor vendorAsset; if (GameAssetManager.TryGetAsset <GameVendorAsset>(res.openVendorId, out var gameVendorAsset)) { vendorAsset = gameVendorAsset.vendor; } else { MessageBox.Show(LocalizationManager.Current.Simulation["Dialogue"].Translate("Error_VendorNotFound", res.openVendorId)); Close(); return; } VendorView_Window qvw = new VendorView_Window(Character, Simulation, vendorAsset); qvw.ShowDialog(); foreach (NPC.Conditions.Condition c in res.conditions) { c.Apply(Simulation); } foreach (NPC.Rewards.Reward r in res.rewards) { r.Give(Simulation); } if (res.openDialogueId > 0) { Previous = Start; NPCDialogue next; if (GameAssetManager.TryGetAsset <GameDialogueAsset>(res.openDialogueId, out var gameDialogueAsset)) { next = gameDialogueAsset.dialogue; } else { MessageBox.Show(LocalizationManager.Current.Simulation["Dialogue"].Translate("Error_DialogueNotFound", res.openDialogueId)); Close(); return; } Dialogue = next; Display(); } return; } foreach (NPC.Conditions.Condition c in res.conditions) { c.Apply(Simulation); } foreach (NPC.Rewards.Reward r in res.rewards) { r.Give(Simulation); } if (res.openDialogueId > 0) { Previous = Dialogue; NPCDialogue next; if (GameAssetManager.TryGetAsset <GameDialogueAsset>(res.openDialogueId, out var gameDialogueAsset)) { next = gameDialogueAsset.dialogue; } else { MessageBox.Show(LocalizationManager.Current.Simulation["Dialogue"].Translate("Error_DialogueNotFound", res.openDialogueId)); Close(); return; } Display(); } else if (shouldClose) { Close(); } }; Grid g = new Grid(); TextBlock tb = new TextBlock(); formatter.Markup(tb, FormatText(res.mainText)); Label l = new Label() { Content = tb, HorizontalAlignment = HorizontalAlignment.Center, Margin = new Thickness(5) }; g.Children.Add(l); PackIconMaterial icon = null; if (res.openQuestId > 0) { switch (Simulation.GetQuestStatus(res.openQuestId)) { case Quest_Status.Ready: icon = new PackIconMaterial() { Kind = PackIconMaterialKind.Help }; break; default: icon = new PackIconMaterial() { Kind = PackIconMaterialKind.Exclamation }; break; } } else if (res.openVendorId > 0) { icon = new PackIconMaterial() { Kind = PackIconMaterialKind.ShoppingOutline }; } if (icon != null) { icon.VerticalAlignment = VerticalAlignment.Center; icon.HorizontalAlignment = HorizontalAlignment.Left; icon.Margin = new Thickness(5); icon.Foreground = App.Current.Resources["AccentColor"] as Brush; g.Children.Add(icon); } border.Child = g; responsesPanel.Children.Add(border); } } } }
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 override void PostLoad(Universal_RewardEditor editor) { var idControl = editor.GetAssociatedControl <MahApps.Metro.Controls.NumericUpDown>("ID"); var sightControl = editor.GetAssociatedControl <Controls.OptionalUInt16ValueControl>("Sight"); var barrelControl = editor.GetAssociatedControl <Controls.OptionalUInt16ValueControl>("Barrel"); var magazineControl = editor.GetAssociatedControl <Controls.OptionalUInt16ValueControl>("Magazine"); var gripControl = editor.GetAssociatedControl <Controls.OptionalUInt16ValueControl>("Grip"); var tacticalControl = editor.GetAssociatedControl <Controls.OptionalUInt16ValueControl>("Tactical"); var ammoControl = editor.GetAssociatedControl <Controls.OptionalByteValueControl>("Ammo"); void check(ushort ID) { if (ID > 0) { if (GameAssetManager.TryGetAsset <GameItemGunAsset>(ID, out var gunAsset)) { if (gunAsset.hasSight) { sightControl.Visibility = System.Windows.Visibility.Visible; } else { sightControl.Visibility = System.Windows.Visibility.Collapsed; sightControl.checkbox.IsChecked = false; } if (gunAsset.hasBarrel) { barrelControl.Visibility = System.Windows.Visibility.Visible; } else { barrelControl.Visibility = System.Windows.Visibility.Collapsed; barrelControl.checkbox.IsChecked = false; } magazineControl.Visibility = System.Windows.Visibility.Visible; if (gunAsset.hasGrip) { gripControl.Visibility = System.Windows.Visibility.Visible; } else { gripControl.Visibility = System.Windows.Visibility.Collapsed; gripControl.checkbox.IsChecked = false; } if (gunAsset.hasTactical) { tacticalControl.Visibility = System.Windows.Visibility.Visible; } else { tacticalControl.Visibility = System.Windows.Visibility.Collapsed; tacticalControl.checkbox.IsChecked = false; } ammoControl.Visibility = System.Windows.Visibility.Visible; } else if (GameAssetManager.TryGetAsset <GameItemAsset>(ID, out var itemAsset)) { sightControl.Visibility = System.Windows.Visibility.Collapsed; barrelControl.Visibility = System.Windows.Visibility.Collapsed; magazineControl.Visibility = System.Windows.Visibility.Collapsed; gripControl.Visibility = System.Windows.Visibility.Collapsed; tacticalControl.Visibility = System.Windows.Visibility.Collapsed; ammoControl.Visibility = System.Windows.Visibility.Collapsed; sightControl.checkbox.IsChecked = false; barrelControl.checkbox.IsChecked = false; magazineControl.checkbox.IsChecked = false; gripControl.checkbox.IsChecked = false; tacticalControl.checkbox.IsChecked = false; ammoControl.checkbox.IsChecked = false; } else { sightControl.Visibility = System.Windows.Visibility.Visible; barrelControl.Visibility = System.Windows.Visibility.Visible; magazineControl.Visibility = System.Windows.Visibility.Visible; gripControl.Visibility = System.Windows.Visibility.Visible; tacticalControl.Visibility = System.Windows.Visibility.Visible; ammoControl.Visibility = System.Windows.Visibility.Visible; } } else { sightControl.Visibility = System.Windows.Visibility.Visible; barrelControl.Visibility = System.Windows.Visibility.Visible; magazineControl.Visibility = System.Windows.Visibility.Visible; gripControl.Visibility = System.Windows.Visibility.Visible; tacticalControl.Visibility = System.Windows.Visibility.Visible; ammoControl.Visibility = System.Windows.Visibility.Visible; } } idControl.ValueChanged += (sender, e) => { if (e.NewValue.HasValue) { check((ushort)e.NewValue); } else { check(0); } }; editor.Loaded += (sender, e) => { if (idControl.Value.HasValue) { check((ushort)idControl.Value); } else { check(0); } }; }