Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
ResearchPlan.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Newtonsoft.Json;
5using UnityEngine;
6
7public class ResearchPlan : EClass
8{
9 [JsonProperty]
10 public string id;
11
12 [JsonProperty]
13 public int exp;
14
15 [JsonProperty]
16 public int lastExp;
17
18 [JsonProperty]
19 public int rank = 1;
20
22
24
25 public string Name => source.GetName() + ((source.maxLv == 1) ? "" : (" " + rank));
26
27 public int MaxExp => 100;
28
29 public bool IsComplete => exp == MaxExp;
30
31 public void SetOwner(FactionBranch _branch)
32 {
33 branch = _branch;
34 }
35
36 public void GainExp(int a)
37 {
38 exp += a;
39 if (exp > MaxExp)
40 {
41 exp = MaxExp;
42 }
43 }
44
46 {
47 if (IsComplete)
48 {
49 return 0;
50 }
51 return -10;
52 }
53
54 public void WriteNote(UINote n)
55 {
56 n.Clear();
57 n.AddHeader(Name);
58 n.AddText("vRank".lang() + rank + " (" + Mathf.Clamp(exp * 100 / MaxExp, 0, 100) + "%)");
59 n.AddText("vMaxRank".lang() + source.maxLv);
60 n.AddHeader("researchEffect");
61 ParseReward(n);
62 n.Build();
63 }
64
65 public void OnComplete()
66 {
68 }
69
70 public void ParseReward(UINote n = null)
71 {
72 bool flag = n == null;
73 string reward = source.reward;
74 if (reward.IsEmpty())
75 {
76 return;
77 }
78 string[] array = reward.Split(Environment.NewLine.ToCharArray());
79 string text = array[0];
80 string[] array2 = array;
81 foreach (string text2 in array2)
82 {
83 if (text2.Split(',')[0].ToInt() <= rank)
84 {
85 text = text2;
86 }
87 }
88 List<string> list = text.Split(',').ToList();
89 list.RemoveAt(0);
90 foreach (string item in list)
91 {
92 string[] array3 = item.Split('/');
93 string text3 = "";
94 switch (array3[0])
95 {
96 case "r":
97 text3 = "rewardRecipe".lang(EClass.sources.cards.map[array3[1]].GetName());
98 if (flag)
99 {
100 EClass.player.recipes.Add(array3[1]);
101 }
102 break;
103 case "p":
104 text3 = "rewardPolicy".lang(EClass.sources.elements.alias[array3[1]].GetName());
105 if (flag)
106 {
107 branch.policies.AddPolicy(array3[1]);
108 }
109 break;
110 case "e":
111 {
112 Element element = Element.Create(array3[1], array3[2].ToInt());
113 text3 = "rewardElement".lang(EClass.sources.elements.alias[array3[1]].GetName(), array3[2]);
114 if (flag)
115 {
116 branch.AddFeat(element.id, element.Value);
117 }
118 break;
119 }
120 case "department":
121 text3 = "rewardDepartment".lang(source.GetName());
122 break;
123 }
124 if (n != null)
125 {
126 n.AddText(text3);
127 }
128 }
129 }
130
131 public static ResearchPlan Create(string id)
132 {
133 return new ResearchPlan
134 {
135 id = id
136 };
137 }
138}
Definition: EClass.cs:5
static SourceManager sources
Definition: EClass.cs:42
static Player player
Definition: EClass.cs:12
int id
Definition: ELEMENT.cs:240
int Value
Definition: ELEMENT.cs:282
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:913
void AddFeat(int ele, int v)
PolicyManager policies
RecipeManager recipes
Definition: Player.cs:898
void AddPolicy(string id)
void Add(string id, bool showEffect=true)
void WriteNote(UINote n)
Definition: ResearchPlan.cs:54
static ResearchPlan Create(string id)
void SetOwner(FactionBranch _branch)
Definition: ResearchPlan.cs:31
void ParseReward(UINote n=null)
Definition: ResearchPlan.cs:70
FactionBranch branch
Definition: ResearchPlan.cs:21
void GainExp(int a)
Definition: ResearchPlan.cs:36
SourceResearch.Row source
Definition: ResearchPlan.cs:23
void OnComplete()
Definition: ResearchPlan.cs:65
int GetSortVal(UIList.SortMode m)
Definition: ResearchPlan.cs:45
Dictionary< string, CardRow > map
Definition: SourceCard.cs:8
SourceResearch researches
SourceCard cards
SourceElement elements
Definition: UIList.cs:9
SortMode
Definition: UIList.cs:27
Definition: UINote.cs:6
void Clear()
Definition: UINote.cs:35
UIItem AddHeader(string text, Sprite sprite=null)
Definition: UINote.cs:79
UIItem AddText(string text, FontColor color=FontColor.DontChange)
Definition: UINote.cs:113
void Build()
Definition: UINote.cs:49