Ejemplo n.º 1
0
        public override void LoadWindowControls(StackPanel control, string parent, string name, Type type, object[] attributes, Int32 member)
        {
            LoadLabelControl(control, name);

            DataTypeAttribute dataAtt = ReflectionExt.FindAttribute <DataTypeAttribute>(attributes);

            ComboBox cbValue = new ComboBox();

            cbValue.VirtualizationMode = ItemVirtualizationMode.Simple;
            int            chosenIndex = member;
            EntryDataIndex nameIndex   = DataManager.Instance.DataIndices[dataAtt.DataType];

            List <string> items = new List <string>();

            if (dataAtt.IncludeInvalid)
            {
                items.Add("---");
                chosenIndex++;
            }

            for (int ii = 0; ii < nameIndex.Count; ii++)
            {
                items.Add(ii.ToString() + ": " + nameIndex.Entries[ii].GetLocalString(false));
            }

            var subject = new Subject <List <string> >();

            cbValue.Bind(ComboBox.ItemsProperty, subject);
            subject.OnNext(items);
            cbValue.SelectedIndex = Math.Min(Math.Max(0, chosenIndex), items.Count - 1);
            control.Children.Add(cbValue);
        }
Ejemplo n.º 2
0
        public static void IndexNamedData(string dataPath)
        {
            try
            {
                EntryDataIndex fullGuide = new EntryDataIndex();

                foreach (string dir in PathMod.GetModFiles(dataPath, "*" + DataManager.DATA_EXT))
                {
                    string     file = Path.GetFileNameWithoutExtension(dir);
                    int        num  = Convert.ToInt32(file);
                    IEntryData data = (IEntryData)DataManager.LoadData(dir);
                    while (fullGuide.Entries.Count <= num)
                    {
                        fullGuide.Entries.Add(new EntrySummary());
                    }
                    fullGuide.Entries[num] = data.GenerateEntrySummary();
                }

                using (Stream stream = new FileStream(PathMod.ModPath(dataPath + "index.idx"), FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    using (BinaryWriter writer = new BinaryWriter(stream))
                    {
                        IFormatter formatter = new BinaryFormatter();
                        formatter.Serialize(stream, fullGuide);
                    }
                }
            }
            catch (Exception ex)
            {
                DiagManager.Instance.LogError(new Exception("Error importing index at " + dataPath + "\n", ex));
            }
        }
Ejemplo n.º 3
0
        public override string GetString(Int32 obj, Type type, object[] attributes)
        {
            DataTypeAttribute dataAtt = ReflectionExt.FindAttribute <DataTypeAttribute>(attributes);

            EntryDataIndex nameIndex = DataManager.Instance.DataIndices[dataAtt.DataType];

            if (obj >= 0 && obj < nameIndex.Count)
            {
                return(nameIndex.Entries[obj].Name.ToLocal());
            }
            return("---");
        }
Ejemplo n.º 4
0
 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
 {
     if (value is int idx)
     {
         DataManager.DataType dataType  = (DataManager.DataType)Int32.Parse((string)parameter);
         EntryDataIndex       nameIndex = DataManager.Instance.DataIndices[dataType];
         if (idx >= 0 && idx < nameIndex.Count)
         {
             return(nameIndex.Entries[idx].Name.ToLocal());
         }
         return("---");
     }
     return(value);
 }
Ejemplo n.º 5
0
        public static void IndexHardcodedNamedData(string dataPath, GetNamedData getData, int max)
        {
            try
            {
                EntryDataIndex fullGuide = new EntryDataIndex();
                fullGuide.Entries = new EntrySummary[max];
                for (int ii = 0; ii < max; ii++)
                {
                    IEntryData data = getData(ii);
                    fullGuide.Entries[ii] = data.GenerateEntrySummary();
                }

                DataManager.SaveData(dataPath + "index.idx", fullGuide);
            }
            catch (Exception ex)
            {
                DiagManager.Instance.LogError(new Exception("Error importing index at " + dataPath + "\n", ex));
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Returns the time string (hh:mm:ss) of the entry that matches the input sheet, tab and ddescription.
        /// <para> </para>
        /// Returns 00:00:00 if a matching entry does not exist.
        /// </summary>
        /// <param name="logName"></param>
        /// <param name="projectName"></param>
        /// <param name="dataIndex"></param>
        /// <returns></returns>
        public static string getTodaysEntryData(string logName, string projectName, string projectDescription, EntryDataIndex dataIndex)
        {
            // set the result string to a default return value
            string result = "00:00:00";

            for (int i = 0; i < m_todaysLogs.Length; i++)
            {
                if (!m_todaysLogs[i].Contains(m_dataSeperator))
                {
                    continue;
                }

                // split the entry into its components
                string[] logEntryData = m_todaysLogs[i].Split(m_dataSeperator.ToCharArray());

                // check if the entry exists
                if (logEntryData[(int)EntryDataIndex.ProjectDescription] == projectDescription &&
                    logEntryData[(int)EntryDataIndex.ProjectName] == projectName &&
                    logEntryData[(int)EntryDataIndex.LogName] == logName)
                {
                    // set the result to the strig of the data index called for
                    result = logEntryData[(int)dataIndex];
                }
            }
            return(result);
        }
Ejemplo n.º 7
0
        public override void LoadWindowControls(StackPanel control, string parent, string name, Type type, object[] attributes, MonsterID member)
        {
            LoadLabelControl(control, name);

            MonsterIDAttribute dataAtt = ReflectionExt.FindAttribute <MonsterIDAttribute>(attributes);

            {
                Avalonia.Controls.Grid innerPanel1 = getSharedRowPanel(2);

                TextBlock lblSpecies = new TextBlock();
                lblSpecies.Text = "Species:";
                lblSpecies.VerticalAlignment   = Avalonia.Layout.VerticalAlignment.Center;
                lblSpecies.HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Right;
                innerPanel1.Children.Add(lblSpecies);
                innerPanel1.ColumnDefinitions[0].Width = new GridLength(46);
                lblSpecies.SetValue(Avalonia.Controls.Grid.ColumnProperty, 0);

                ComboBox cbSpecies = new ComboBox();
                ComboBox cbForms   = new ComboBox();

                cbSpecies.VirtualizationMode = ItemVirtualizationMode.Simple;
                int            chosenSpecies = member.Species;
                EntryDataIndex nameIndex     = DataManager.Instance.DataIndices[DataManager.DataType.Monster];

                List <string> species = new List <string>();
                List <string> forms   = new List <string>();

                if (dataAtt.InvalidSpecies)
                {
                    species.Add("---");
                    chosenSpecies++;
                }

                for (int ii = 0; ii < nameIndex.Count; ii++)
                {
                    species.Add(ii.ToString() + ": " + nameIndex.Entries[ii].GetLocalString(false));
                }

                var speciesSubject = new Subject <List <string> >();
                var formSubject    = new Subject <List <string> >();

                cbSpecies.Bind(ComboBox.ItemsProperty, speciesSubject);
                speciesSubject.OnNext(species);
                cbSpecies.SelectedIndex     = Math.Min(Math.Max(0, chosenSpecies), species.Count - 1);
                cbSpecies.SelectionChanged += (object sender, SelectionChangedEventArgs e) =>
                {
                    loadForms(dataAtt, cbSpecies.SelectedIndex, forms);
                    cbForms.SelectedIndex = -1;
                    cbForms.SelectedIndex = Math.Min(Math.Max(0, cbForms.SelectedIndex), forms.Count - 1);
                    formSubject.OnNext(forms);
                };

                innerPanel1.Children.Add(cbSpecies);
                cbSpecies.SetValue(Avalonia.Controls.Grid.ColumnProperty, 1);
                control.Children.Add(innerPanel1);


                Avalonia.Controls.Grid innerPanel2 = getSharedRowPanel(2);

                TextBlock lblForm = new TextBlock();
                lblForm.Margin              = new Thickness(8, 0, 0, 0);
                lblForm.Text                = "Form:";
                lblForm.VerticalAlignment   = Avalonia.Layout.VerticalAlignment.Center;
                lblForm.HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Right;
                innerPanel2.Children.Add(lblForm);
                innerPanel2.ColumnDefinitions[0].Width = new GridLength(46);
                lblForm.SetValue(Avalonia.Controls.Grid.ColumnProperty, 0);


                cbForms.VirtualizationMode = ItemVirtualizationMode.Simple;
                int chosenForm = member.Form;

                loadForms(dataAtt, member.Species, forms);

                if (dataAtt.InvalidForm)
                {
                    chosenForm++;
                }

                cbForms.Bind(ComboBox.ItemsProperty, formSubject);
                formSubject.OnNext(forms);
                cbForms.SelectedIndex = Math.Min(Math.Max(0, chosenForm), forms.Count - 1);
                innerPanel2.Children.Add(cbForms);
                cbForms.SetValue(Avalonia.Controls.Grid.ColumnProperty, 1);
                control.Children.Add(innerPanel2);
            }

            Avalonia.Controls.Grid innerPanel3 = getSharedRowPanel(4);

            {
                TextBlock lblSkin = new TextBlock();
                lblSkin.Margin              = new Thickness(8, 0, 0, 0);
                lblSkin.Text                = "Skin:";
                lblSkin.VerticalAlignment   = Avalonia.Layout.VerticalAlignment.Center;
                lblSkin.HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Right;
                innerPanel3.Children.Add(lblSkin);
                innerPanel3.ColumnDefinitions[0].Width = new GridLength(46);
                lblSkin.SetValue(Avalonia.Controls.Grid.ColumnProperty, 0);

                ComboBox cbSkin = new ComboBox();
                cbSkin.VirtualizationMode = ItemVirtualizationMode.Simple;
                int            chosenIndex = member.Skin;
                EntryDataIndex nameIndex   = DataManager.Instance.DataIndices[DataManager.DataType.Skin];

                List <string> items = new List <string>();
                if (dataAtt.InvalidSkin)
                {
                    items.Add("---");
                    chosenIndex++;
                }

                for (int ii = 0; ii < nameIndex.Count; ii++)
                {
                    items.Add(ii.ToString() + ": " + nameIndex.Entries[ii].GetLocalString(false));
                }

                var subject = new Subject <List <string> >();
                cbSkin.Bind(ComboBox.ItemsProperty, subject);
                subject.OnNext(items);
                cbSkin.SelectedIndex = Math.Min(Math.Max(0, chosenIndex), items.Count - 1);
                innerPanel3.Children.Add(cbSkin);
                cbSkin.SetValue(Avalonia.Controls.Grid.ColumnProperty, 1);
            }

            {
                TextBlock lblGender = new TextBlock();
                lblGender.Margin              = new Thickness(8, 0, 0, 0);
                lblGender.Text                = "Gender:";
                lblGender.VerticalAlignment   = Avalonia.Layout.VerticalAlignment.Center;
                lblGender.HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Right;
                innerPanel3.Children.Add(lblGender);
                innerPanel3.ColumnDefinitions[2].Width = new GridLength(46);
                lblGender.SetValue(Avalonia.Controls.Grid.ColumnProperty, 2);

                ComboBox cbGender = new ComboBox();
                cbGender.VirtualizationMode = ItemVirtualizationMode.Simple;
                int chosenIndex = (int)member.Gender;

                List <string> items = new List <string>();
                if (dataAtt.InvalidGender)
                {
                    items.Add("---");
                    chosenIndex++;
                }

                for (int ii = 0; ii <= (int)Gender.Female; ii++)
                {
                    items.Add(((Gender)ii).ToLocal());
                }

                var subject = new Subject <List <string> >();
                cbGender.Bind(ComboBox.ItemsProperty, subject);
                subject.OnNext(items);
                cbGender.SelectedIndex = Math.Min(Math.Max(0, chosenIndex), items.Count - 1);
                innerPanel3.Children.Add(cbGender);
                cbGender.SetValue(Avalonia.Controls.Grid.ColumnProperty, 3);
            }

            control.Children.Add(innerPanel3);
        }