Elin Decompiled Documentation EA 23.316 Nightly
Loading...
Searching...
No Matches
SourceData< T, T2 >.BaseRow Class Reference
Inheritance diagram for SourceData< T, T2 >.BaseRow:
LangRow RenderRow LangGame.Row LangGeneral.Row CardRow TileRow SourceChara.Row SourceThing.Row SourceBlock.Row SourceCellEffect.Row SourceDeco.Row SourceFloor.Row SourceObj.Row SourceThingV.Row SourceFood.Row2

Public Member Functions

Dictionary< string, FieldInfoGetRowFields ()
 
virtual string GetName ()
 
string GetDetail ()
 
virtual string GetEditorListName ()
 
string GetText (string id="name", bool returnNull=false)
 
string[] GetTextArray (string id)
 
virtual void SetID (ref int count)
 
virtual void OnImportData (SourceData data)
 
virtual IDictionary< string, string > ExportTexts (string idField="id")
 
virtual void ImportTexts (IReadOnlyDictionary< string, string > texts, string idField="id")
 

Public Attributes

int _index
 

Properties

virtual bool UseAlias [get]
 
virtual string GetAlias [get]
 

Static Private Attributes

static readonly Dictionary< Type, Dictionary< string, FieldInfo > > _fieldCache = new Dictionary<Type, Dictionary<string, FieldInfo>>()
 

Detailed Description

Definition at line 647 of file SourceData.cs.

Member Function Documentation

◆ ExportTexts()

virtual IDictionary< string, string > SourceData< T, T2 >.BaseRow.ExportTexts ( string  idField = "id")
inlinevirtual

Definition at line 738 of file SourceData.cs.

739 {
740 Dictionary<string, FieldInfo> rowFields = GetRowFields();
741 object obj = rowFields.GetValueOrDefault(idField)?.GetValue(this);
742 SortedDictionary<string, string> sortedDictionary = new SortedDictionary<string, string>();
743 if (obj == null)
744 {
745 return sortedDictionary;
746 }
747 string name = GetType().DeclaringType.Name;
748 foreach (var (text2, jp2) in rowFields)
749 {
750 if (!text2.EndsWith("_JP"))
751 {
752 continue;
753 }
754 string text3 = text2[..^3];
755 if (rowFields.TryGetValue(text3, out var value) && rowFields.TryGetValue(text3 + "_L", out var value2))
756 {
757 string text4 = GetFieldText(jp2, value, value2);
758 if (!text4.IsEmpty())
759 {
760 sortedDictionary[$"{name}.{obj}.{text3}"] = text4;
761 }
762 }
763 }
764 return sortedDictionary;
765 string GetFieldText(FieldInfo jp, FieldInfo en, FieldInfo l)
766 {
767 object value3 = jp.GetValue(this);
768 object value4 = en.GetValue(this);
769 object value5 = l.GetValue(this);
770 string langCode = Lang.langCode;
771 object obj2 = ((langCode == "JP") ? value3 : ((!(langCode == "EN")) ? (value5 ?? value4) : value4));
772 object obj3 = obj2;
773 if (obj3 is string str)
774 {
775 return str.IsEmpty(value4 as string);
776 }
777 if (obj3 is string[] array)
778 {
779 return string.Join(',', (array.Length != 0) ? array : (value4 as string[]));
780 }
781 return null;
782 }
783 }
Definition: Lang.cs:7
static string langCode
Definition: Lang.cs:29
Dictionary< string, FieldInfo > GetRowFields()
Definition: SourceData.cs:657

References $, SourceData< T, T2 >.BaseRow.GetRowFields(), SourceData< T, T2 >.FieldInfo.GetValue(), and Lang.langCode.

◆ GetDetail()

string SourceData< T, T2 >.BaseRow.GetDetail ( )
inline

Definition at line 678 of file SourceData.cs.

679 {
680 return GetText("detail");
681 }
string GetText(string id="name", bool returnNull=false)
Definition: SourceData.cs:688

References SourceData< T, T2 >.BaseRow.GetText().

Referenced by RecipeCard.GetDetail(), and RecipeSource.GetDetail().

◆ GetEditorListName()

virtual string SourceData< T, T2 >.BaseRow.GetEditorListName ( )
inlinevirtual

Reimplemented in CardRow.

Definition at line 683 of file SourceData.cs.

684 {
685 return this.GetField<int>("id") + "-" + this.GetField<string>("alias") + "(" + this.GetField<string>("name_JP") + ")";
686 }

◆ GetName()

virtual string SourceData< T, T2 >.BaseRow.GetName ( )
inlinevirtual

Reimplemented in CardRow, SourceChara.Row, and SourceThing.Row.

Definition at line 673 of file SourceData.cs.

674 {
675 return GetText();
676 }

References SourceData< T, T2 >.BaseRow.GetText().

Referenced by TraitTile.SetName().

◆ GetRowFields()

Dictionary< string, FieldInfo > SourceData< T, T2 >.BaseRow.GetRowFields ( )
inline

Definition at line 657 of file SourceData.cs.

658 {
659 Type type = GetType();
660 if (_fieldCache.TryGetValue(type, out var value))
661 {
662 return value;
663 }
664 value = new Dictionary<string, FieldInfo>();
665 FieldInfo[] fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public);
666 foreach (FieldInfo fieldInfo in fields)
667 {
668 value[fieldInfo.Name] = fieldInfo;
669 }
670 return _fieldCache[type] = value;
671 }
static readonly Dictionary< Type, Dictionary< string, FieldInfo > > _fieldCache
Definition: SourceData.cs:649

References SourceData< T, T2 >.BaseRow._fieldCache.

Referenced by SourceData< T, T2 >.BaseRow.ExportTexts(), SourceData< T, T2 >.BaseRow.GetText(), SourceData< T, T2 >.BaseRow.GetTextArray(), SourceData< T, T2 >.BaseRow.ImportTexts(), and SourceThingV.OnAfterImportData().

◆ GetText()

string SourceData< T, T2 >.BaseRow.GetText ( string  id = "name",
bool  returnNull = false 
)
inline

Definition at line 688 of file SourceData.cs.

689 {
690 Dictionary<string, FieldInfo> rowFields = GetRowFields();
691 if (rowFields.TryGetValue(id + LangSuffix, out var value))
692 {
693 string text = value.GetValue(this) as string;
694 if (!text.IsEmpty())
695 {
696 return text;
697 }
698 }
699 if (!Lang.isBuiltin && rowFields.TryGetValue(id, out var value2))
700 {
701 string text2 = value2.GetValue(this) as string;
702 if (!text2.IsEmpty())
703 {
704 return text2;
705 }
706 }
707 if (!returnNull)
708 {
709 return "";
710 }
711 return null;
712 }
static bool isBuiltin
Definition: Lang.cs:43
static string LangSuffix
Definition: SourceData.cs:834

References SourceData< T, T2 >.BaseRow.GetRowFields(), Lang.isBuiltin, and SourceData< T, T2 >.LangSuffix.

Referenced by Card.GetDetail(), SourceData< T, T2 >.BaseRow.GetDetail(), Recipe.GetDetail(), Msg.GetGameText(), SourceData< T, T2 >.BaseRow.GetName(), Recipe.GetName(), SourceChara.Row.GetName(), SourceThing.Row.GetName(), Trait.GetName(), TraitGene.GetName(), CardRow.GetName(), RenderRow.GetSearchName(), SourceChara.Row.GetSearchName(), and SourceThing.Row.GetSearchName().

◆ GetTextArray()

string[] SourceData< T, T2 >.BaseRow.GetTextArray ( string  id)
inline

Definition at line 714 of file SourceData.cs.

715 {
716 Dictionary<string, FieldInfo> rowFields = GetRowFields();
717 if (rowFields.TryGetValue(id + LangSuffix, out var value) && value.GetValue(this) is string[] { Length: >0 } array)
718 {
719 return array;
720 }
721 if (!Lang.isBuiltin && rowFields.TryGetValue(id, out var value2) && value2.GetValue(this) is string[] { Length: >0 } array2)
722 {
723 return array2;
724 }
725 return Array.Empty<string>();
726 }

References SourceData< T, T2 >.BaseRow.GetRowFields(), Lang.isBuiltin, and SourceData< T, T2 >.LangSuffix.

◆ ImportTexts()

virtual void SourceData< T, T2 >.BaseRow.ImportTexts ( IReadOnlyDictionary< string, string >  texts,
string  idField = "id" 
)
inlinevirtual

Definition at line 785 of file SourceData.cs.

786 {
787 Dictionary<string, FieldInfo> rowFields = GetRowFields();
788 object obj = rowFields.GetValueOrDefault(idField)?.GetValue(this);
789 if (obj == null)
790 {
791 return;
792 }
793 string name = GetType().DeclaringType.Name;
794 string langCode = Lang.langCode;
795 foreach (var (text2, fieldInfo2) in rowFields)
796 {
797 if (!text2.EndsWith("_L"))
798 {
799 continue;
800 }
801 string text3 = text2[..^2];
802 if (!texts.TryGetValue($"{name}.{obj}.{text3}", out var value2) || value2.IsEmpty() || !rowFields.TryGetValue(text3, out var value3) || !rowFields.TryGetValue(text3 + "_JP", out var value4))
803 {
804 continue;
805 }
806 fieldInfo2.SetValue(this, null);
807 SetFieldText(fieldInfo2, value2);
808 if (!(langCode == "EN"))
809 {
810 if (langCode == "JP")
811 {
812 SetFieldText(value4, value2);
813 }
814 }
815 else
816 {
817 SetFieldText(value3, value2);
818 }
819 }
820 void SetFieldText(FieldInfo l, string value)
821 {
822 if (l.FieldType == typeof(string))
823 {
824 l.SetValue(this, value);
825 }
826 else if (l.FieldType == typeof(string[]))
827 {
828 l.SetValue(this, value.IsEmpty() ? Array.Empty<string>() : value.Split(','));
829 }
830 }
831 }

References $, SourceData< T, T2 >.BaseRow.GetRowFields(), and Lang.langCode.

◆ OnImportData()

virtual void SourceData< T, T2 >.BaseRow.OnImportData ( SourceData  data)
inlinevirtual

Reimplemented in CardRow, RenderRow, and SourceThing.Row.

Definition at line 734 of file SourceData.cs.

735 {
736 }

◆ SetID()

virtual void SourceData< T, T2 >.BaseRow.SetID ( ref int  count)
inlinevirtual

Definition at line 728 of file SourceData.cs.

729 {
730 this.SetField("id", count);
731 count++;
732 }

Member Data Documentation

◆ _fieldCache

readonly Dictionary<Type, Dictionary<string, FieldInfo> > SourceData< T, T2 >.BaseRow._fieldCache = new Dictionary<Type, Dictionary<string, FieldInfo>>()
staticprivate

Definition at line 649 of file SourceData.cs.

Referenced by SourceData< T, T2 >.BaseRow.GetRowFields().

◆ _index

int SourceData< T, T2 >.BaseRow._index

Property Documentation

◆ GetAlias

virtual string SourceData< T, T2 >.BaseRow.GetAlias
get

Definition at line 655 of file SourceData.cs.

◆ UseAlias

virtual bool SourceData< T, T2 >.BaseRow.UseAlias
get

Definition at line 653 of file SourceData.cs.


The documentation for this class was generated from the following file: