Elin Decompiled Documentation EA 23.286 Nightly Patch 1
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 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 585 of file SourceData.cs.

Member Function Documentation

◆ ExportTexts()

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

Definition at line 676 of file SourceData.cs.

677 {
678 Dictionary<string, FieldInfo> rowFields = GetRowFields();
679 object obj = rowFields.GetValueOrDefault(idField)?.GetValue(this);
680 SortedDictionary<string, string> sortedDictionary = new SortedDictionary<string, string>();
681 if (obj == null)
682 {
683 return sortedDictionary;
684 }
685 string name = GetType().DeclaringType.Name;
686 foreach (var (text2, jp2) in rowFields)
687 {
688 if (!text2.EndsWith("_JP"))
689 {
690 continue;
691 }
692 string text3 = text2[..^3];
693 if (rowFields.TryGetValue(text3, out var value) && rowFields.ContainsKey(text3 + "_L"))
694 {
695 string text4 = GetFieldText(jp2, value);
696 if (!text4.IsEmpty())
697 {
698 sortedDictionary[$"{name}.{obj}.{text3}"] = text4;
699 }
700 }
701 }
702 return sortedDictionary;
703 string GetFieldText(FieldInfo jp, FieldInfo en)
704 {
705 object obj2 = jp.GetValue(this);
706 object obj3 = en.GetValue(this);
707 if (!Lang.isJP)
708 {
709 object obj4 = obj2;
710 object obj5 = obj3;
711 obj3 = obj4;
712 obj2 = obj5;
713 }
714 if (obj2 is string str)
715 {
716 return str.IsEmpty(obj3 as string);
717 }
718 if (obj2 is string[] array)
719 {
720 return string.Join(',', (array.Length != 0) ? array : (obj3 as string[]));
721 }
722 return null;
723 }
724 }
$
Definition: ModManager.cs:85
Definition: Lang.cs:7
static bool isJP
Definition: Lang.cs:39
Dictionary< string, FieldInfo > GetRowFields()
Definition: SourceData.cs:595

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

◆ GetDetail()

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

Definition at line 616 of file SourceData.cs.

617 {
618 return GetText("detail");
619 }
string GetText(string id="name", bool returnNull=false)
Definition: SourceData.cs:626

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 621 of file SourceData.cs.

622 {
623 return this.GetField<int>("id") + "-" + this.GetField<string>("alias") + "(" + this.GetField<string>("name_JP") + ")";
624 }

◆ GetName()

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

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

Definition at line 611 of file SourceData.cs.

612 {
613 return GetText();
614 }

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

Referenced by TraitTile.SetName().

◆ GetRowFields()

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

Definition at line 595 of file SourceData.cs.

596 {
597 Type type = GetType();
598 if (_fieldCache.TryGetValue(type, out var value))
599 {
600 return value;
601 }
602 value = new Dictionary<string, FieldInfo>();
603 FieldInfo[] fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public);
604 foreach (FieldInfo fieldInfo in fields)
605 {
606 value[fieldInfo.Name] = fieldInfo;
607 }
608 return _fieldCache[type] = value;
609 }
static readonly Dictionary< Type, Dictionary< string, FieldInfo > > _fieldCache
Definition: SourceData.cs:587

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 626 of file SourceData.cs.

627 {
628 Dictionary<string, FieldInfo> rowFields = GetRowFields();
629 if (rowFields.TryGetValue(id + LangSuffix, out var value))
630 {
631 string text = value.GetValue(this) as string;
632 if (!text.IsEmpty())
633 {
634 return text;
635 }
636 }
637 if (!Lang.isBuiltin && rowFields.TryGetValue(id, out var value2))
638 {
639 string text2 = value2.GetValue(this) as string;
640 if (!text2.IsEmpty())
641 {
642 return text2;
643 }
644 }
645 if (!returnNull)
646 {
647 return "";
648 }
649 return null;
650 }
static bool isBuiltin
Definition: Lang.cs:43
static string LangSuffix
Definition: SourceData.cs:765

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 652 of file SourceData.cs.

653 {
654 Dictionary<string, FieldInfo> rowFields = GetRowFields();
655 if (rowFields.TryGetValue(id + LangSuffix, out var value) && value.GetValue(this) is string[] { Length: >0 } array)
656 {
657 return array;
658 }
659 if (!Lang.isBuiltin && rowFields.TryGetValue(id, out var value2) && value2.GetValue(this) is string[] { Length: >0 } array2)
660 {
661 return array2;
662 }
663 return Array.Empty<string>();
664 }

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 726 of file SourceData.cs.

727 {
728 Dictionary<string, FieldInfo> rowFields = GetRowFields();
729 object obj = rowFields.GetValueOrDefault(idField)?.GetValue(this);
730 if (obj == null)
731 {
732 return;
733 }
734 string name = GetType().DeclaringType.Name;
735 foreach (var (text2, fieldInfo2) in rowFields)
736 {
737 if (!text2.EndsWith("_L"))
738 {
739 continue;
740 }
741 string text3 = text2[..^2];
742 if (rowFields.ContainsKey(text3) && rowFields.ContainsKey(text3 + "_JP"))
743 {
744 fieldInfo2.SetValue(this, null);
745 if (texts.TryGetValue($"{name}.{obj}.{text3}", out var value2) && !value2.IsEmpty())
746 {
747 SetFieldText(fieldInfo2, value2);
748 }
749 }
750 }
751 void SetFieldText(FieldInfo l, string value)
752 {
753 if (l.FieldType == typeof(string))
754 {
755 l.SetValue(this, value);
756 }
757 else if (l.FieldType == typeof(string[]))
758 {
759 l.SetValue(this, value.IsEmpty() ? Array.Empty<string>() : value.Split(','));
760 }
761 }
762 }

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

◆ OnImportData()

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

Reimplemented in CardRow, RenderRow, and SourceThing.Row.

Definition at line 672 of file SourceData.cs.

673 {
674 }

◆ SetID()

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

Definition at line 666 of file SourceData.cs.

667 {
668 this.SetField("id", count);
669 count++;
670 }

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 587 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 593 of file SourceData.cs.

◆ UseAlias

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

Definition at line 591 of file SourceData.cs.


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