Example #1
0
        public override void Give(Simulation simulation)
        {
            short
                a = simulation.Flags[A_ID],
                b = simulation.Flags[B_ID];

            simulation.Flags[A_ID] = SimulationTool.Operate(a, b, Operation);
        }
Example #2
0
        public override void Give(Simulation simulation)
        {
            if (!simulation.Flags.TryGetValue(ID, out short a))
            {
                a = 0;
            }

            simulation.Flags[ID] = SimulationTool.Modify(a, Value, Modification);
        }
Example #3
0
        public override bool Check(Simulation simulation)
        {
            if (!simulation.Flags.TryGetValue(ID, out short flag))
            {
                return(Allow_Unset);
            }

            return(SimulationTool.Compare(flag, (short)(Value ? 1 : 0), Logic));
        }
        public override bool Check(Simulation simulation)
        {
            if (!simulation.Currencies.TryGetValue(GUID, out uint cur))
            {
                cur = 0;
                simulation.Currencies[GUID] = 0;
            }

            return(SimulationTool.Compare(cur, Value, Logic));
        }
        public override bool Check(Simulation simulation)
        {
            if (!simulation.Flags.TryGetValue(A_ID, out short flagA))
            {
                return(Allow_A_Unset);
            }

            if (!simulation.Flags.TryGetValue(B_ID, out short flagB))
            {
                return(Allow_B_Unset);
            }

            return(SimulationTool.Compare(flagA, flagB, Logic));
        }
 public override bool Check(Simulation simulation)
 {
     return(SimulationTool.Compare(simulation.Skillset, Value, Logic));
 }
Example #7
0
        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;
                }
Example #8
0
 public override bool Check(Simulation simulation)
 {
     return(SimulationTool.Compare(simulation.GetQuestStatus(ID), Status, Logic));
 }
        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();
        }
Example #10
0
 private string FormatText(string raw)
 {
     return(SimulationTool.ReplacePlaceholders(Character, Simulation, raw));
 }
 public override bool Check(Simulation simulation)
 {
     return(SimulationTool.Compare(simulation.Reputation, Value, Logic));
 }
Example #12
0
 public override void Give(Simulation simulation)
 {
     simulation.Flags[ID] = SimulationTool.Modify(simulation.Flags[ID], (short)Random.NextInt32(Min_Value, Max_Value + 1), Modification);
 }
 public override bool Check(Simulation simulation)
 {
     return(SimulationTool.Compare(simulation.Time, Second, Logic));
 }
        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();
        }
 public override bool Check(Simulation simulation)
 {
     return(SimulationTool.Compare(simulation.Experience, Value, Logic));
 }
        public override bool Check(Simulation simulation)
        {
            System.Collections.Generic.List <Simulation.Item> items = simulation.Items.Where(d => d.ID == ID).ToList();

            return(SimulationTool.Compare(items.Count, Amount, Logic_Type.Greater_Than_Or_Equal_To));
        }
Example #17
0
        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);
            }
        }