Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
ResearchManager.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Newtonsoft.Json;
5
6public class ResearchManager : EClass
7{
8 [JsonProperty]
9 public List<ResearchPlan> plans = new List<ResearchPlan>();
10
11 [JsonProperty]
12 public List<ResearchPlan> finished = new List<ResearchPlan>();
13
14 [JsonProperty]
15 public List<ResearchPlan> newPlans = new List<ResearchPlan>();
16
17 [JsonProperty]
19
21
22 public void SetOwner(FactionBranch _branch)
23 {
24 branch = _branch;
25 foreach (ResearchPlan plan in plans)
26 {
27 plan.SetOwner(_branch);
28 }
29 foreach (ResearchPlan item in finished)
30 {
31 item.SetOwner(_branch);
32 }
33 }
34
35 public void OnSimulateDay()
36 {
37 newPlans.Clear();
38 }
39
40 public void TryAddPlans(string idResource, int lv)
41 {
42 foreach (SourceResearch.Row item in EClass.sources.researches.rows.Where((SourceResearch.Row r) => r.resource.Length > 1 && r.resource[0] == idResource && r.resource[1].ToInt() == lv))
43 {
44 AddPlan(item.id);
45 }
46 }
47
48 public bool IsListBarter(string idPlan)
49 {
51 if (row.money > 0)
52 {
53 return !branch.researches.HasPlan(row.id);
54 }
55 return false;
56 }
57
58 public bool HasPlan(string idPlan)
59 {
60 foreach (ResearchPlan item in plans.Concat(finished))
61 {
62 if (item.id == idPlan)
63 {
64 return true;
65 }
66 }
67 return false;
68 }
69
70 public bool IsComplete(string id, int rank = -1)
71 {
72 foreach (ResearchPlan item in finished)
73 {
74 if (item.source.id == id)
75 {
76 return true;
77 }
78 }
79 if (rank != -1)
80 {
81 foreach (ResearchPlan plan in plans)
82 {
83 if (plan.source.id == id && plan.rank >= rank)
84 {
85 return true;
86 }
87 }
88 }
89 return false;
90 }
91
92 public void AddPlan(string id)
93 {
95 }
96
97 public void AddPlan(ResearchPlan p)
98 {
100 plans.Add(p);
101 newPlans.Add(p);
102 WidgetPopText.Say("rewardPlan".lang(p.Name));
103 }
104
106 {
108 {
109 return false;
110 }
111 return true;
112 }
113
115 {
116 if (focused == p)
117 {
118 focused = null;
119 }
120 p.OnComplete();
121 WidgetPopText.Say("completePlan".lang(p.Name), FontColor.Great);
122 if (p.source.maxLv > p.rank)
123 {
124 p.rank++;
125 p.exp = (p.lastExp = 0);
126 SE.Play("good");
127 }
128 else
129 {
130 plans.Remove(p);
131 finished.Add(p);
132 SE.Play("good");
133 }
134 }
135
136 public void ShowNewPlans(Action onComplete = null)
137 {
139 List<ResearchPlan> list = new List<ResearchPlan>();
140 foreach (SourceResearch.Row row in EClass.sources.researches.rows)
141 {
142 list.Add(ResearchPlan.Create(row.id));
143 }
144 Rand.SetSeed();
145 foreach (ResearchPlan item in list)
146 {
147 _ = item;
148 }
149 EClass.core.ui.AddLayer<LayerList>().SetSize().SetList2(list, (ResearchPlan p) => p.Name, delegate(ResearchPlan p, ItemGeneral b)
150 {
153 onComplete?.Invoke();
154 }, delegate
155 {
156 });
157 }
158}
FontColor
Definition: FontColor.cs:2
UI ui
Definition: Core.cs:63
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static Core core
Definition: EClass.cs:6
static SourceManager sources
Definition: EClass.cs:42
ResearchManager researches
HomeResourceManager resources
int seed
Definition: Game.cs:197
Definition: Rand.cs:4
static void SetSeed(int a=-1)
Definition: Rand.cs:37
ResearchPlan focused
void AddPlan(string id)
void TryAddPlans(string idResource, int lv)
List< ResearchPlan > finished
void ShowNewPlans(Action onComplete=null)
void SetOwner(FactionBranch _branch)
bool HasPlan(string idPlan)
void AddPlan(ResearchPlan p)
bool CanCompletePlan(ResearchPlan p)
List< ResearchPlan > plans
bool IsComplete(string id, int rank=-1)
List< ResearchPlan > newPlans
void CompletePlan(ResearchPlan p)
FactionBranch branch
bool IsListBarter(string idPlan)
static ResearchPlan Create(string id)
void SetOwner(FactionBranch _branch)
Definition: ResearchPlan.cs:31
SourceResearch.Row source
Definition: ResearchPlan.cs:23
void OnComplete()
Definition: ResearchPlan.cs:65
SourceResearch researches
static void Say(string text, FontColor fontColor=FontColor.Default, Sprite sprite=null)