Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
AM_Copy.cs
Go to the documentation of this file.
1using System.IO;
2using SFB;
3using UnityEngine;
4
6{
7 public enum Mode
8 {
9 Copy,
10 Place,
11 Create
12 }
13
14 public string overwritePath;
15
17
18 public DirectoryInfo dir;
19
20 public DirectoryInfo dirUser;
21
23 {
24 get
25 {
26 if (partialMap != null)
27 {
28 return BaseTileSelector.SelectType.Single;
29 }
30 return BaseTileSelector.SelectType.Multiple;
31 }
32 }
33
34 public override bool IsBuildMode => true;
35
36 public override BuildMenu.Mode buildMenuMode => BuildMenu.Mode.PartialMap;
37
38 public override bool UseSubMenu => true;
39
40 public override bool SubMenuAsGroup => false;
41
42 public virtual Mode mode => Mode.Copy;
43
45
46 public override int CostMoney
47 {
48 get
49 {
50 if (partialMap == null)
51 {
52 return 0;
53 }
54 return partialMap.value;
55 }
56 }
57
58 public override string OnSetSubMenuButton(int a, UIButton b)
59 {
60 if (a != 0)
61 {
62 return null;
63 }
65 return "copyRelative";
66 }
67
68 public override void OnClickSubMenu(int a)
69 {
70 PartialMap.relative = !PartialMap.relative;
71 }
72
73 public override HitResult HitTest(Point point, Point start)
74 {
75 if (!base.Summary.CanExecute())
76 {
77 return HitResult.Invalid;
78 }
79 if (partialMap == null)
80 {
81 foreach (Thing thing in point.cell.Things)
82 {
83 if (!thing.trait.CanCopyInBlueprint)
84 {
85 return HitResult.Warning;
86 }
87 }
88 }
89 return HitResult.Valid;
90 }
91
92 public override void OnSelectStart(Point point)
93 {
94 RefreshMenu(show: false);
95 }
96
97 public override void OnSelectEnd(bool cancel)
98 {
99 if (cancel)
100 {
101 RefreshMenu(show: true);
102 }
103 }
104
105 public override void OnAfterProcessTiles(Point start, Point end)
106 {
107 if (partialMap != null)
108 {
109 EClass.Sound.Play("build_area");
110 partialMap.editMode = false;
111 partialMap.procedural = true;
112 if (MapPiece.IsEditor)
113 {
114 if (Input.GetKey(KeyCode.LeftShift))
115 {
116 partialMap.procedural = true;
117 }
118 else
119 {
120 partialMap.editMode = true;
121 }
122 }
124 return;
125 }
127 {
128 allowRotate = Application.isEditor
129 };
130 int x = Mathf.Min(start.x, end.x);
131 int z = Mathf.Min(start.z, end.z);
132 int w = Mathf.Abs(start.x - end.x) + 1;
133 int h = Mathf.Abs(start.z - end.z) + 1;
134 partialMap.Save(x, z, w, h);
135 if (!overwritePath.IsEmpty())
136 {
137 File.Copy(PartialMap.PathTemp, overwritePath, overwrite: true);
138 SE.Play("camera");
139 overwritePath = null;
140 partialMap = null;
141 RefreshMenu(show: true);
142 return;
143 }
145 partialMap.localOffsetX = ((end.x > start.x) ? (start.x - end.x) : 0);
146 partialMap.localOffsetZ = ((end.z > start.z) ? (start.z - end.z) : 0);
147 RefreshMenu(show: false);
148 if (mode == Mode.Create)
149 {
151 Clear();
152 }
153 else
154 {
155 SE.Click();
156 }
157 }
158
159 public virtual void OnSave(PartialMap _partial)
160 {
161 if (MapPiece.IsEditor)
162 {
163 MapPiece.initialized = false;
165 }
167 menu.Refresh();
168 }
169
170 public override void OnRenderTile(Point point, HitResult result, int dir)
171 {
173 {
174 if (partialMap != null)
175 {
176 partialMap.Apply(point, PartialMap.ApplyMode.Render);
177 }
178 else
179 {
180 base.OnRenderTile(point, result, dir);
181 }
182 }
183 }
184
185 public override void OnUpdateInput()
186 {
187 if (Input.GetKeyDown(KeyCode.K))
188 {
190 }
191 if (Input.GetKeyDown(KeyCode.L))
192 {
193 ImportDialog();
194 }
195 }
196
197 public override void RotateUnderMouse()
198 {
199 if (partialMap != null && partialMap.allowRotate)
200 {
202 }
203 else
204 {
205 base.RotateUnderMouse();
206 }
207 }
208
209 public void Clear()
210 {
212 partialMap = null;
213 RefreshMenu(show: true);
214 }
215
216 public override void OnCancel()
217 {
218 if (!overwritePath.IsEmpty())
219 {
220 overwritePath = null;
221 SE.Play("actionMode");
222 RefreshMenu(show: true);
223 }
224 else if (mode == Mode.Place)
225 {
226 Deactivate();
227 }
228 else if (!UIScreenshot.Instance)
229 {
230 if (partialMap != null)
231 {
232 Clear();
233 SE.Play("actionMode");
234 }
235 else
236 {
237 Deactivate();
238 }
239 }
240 }
241
242 public void Import(string path)
243 {
244 partialMap = PartialMap.Load(path);
245 RefreshMenu(show: false);
246 }
247
248 public void ImportDialog(string dir = null)
249 {
251 {
252 string[] array = StandaloneFileBrowser.OpenFilePanel("Import Map Piece", dir ?? CorePath.MapPieceSaveUser, "mp", multiselect: false);
253 if (array.Length != 0)
254 {
255 Import(array[0]);
256 }
257 });
258 }
259
260 public void RefreshMenu(bool show)
261 {
262 if (!menu)
263 {
264 return;
265 }
266 menu.SetVisible(show);
267 BuildMenu.Instance.terrainMenu.SetActive(!show);
268 menu.buttonSave.SetActive(partialMap != null && partialMap.path.IsEmpty());
269 menu.buttonDelete.SetActive(partialMap != null && !partialMap.path.IsEmpty());
270 menu.buttonEdit.SetActive(partialMap != null && !partialMap.path.IsEmpty());
271 menu.buttonSave.SetOnClick(delegate
272 {
274 {
275 OnSave(a);
276 Clear();
277 });
278 });
279 menu.buttonDelete.SetOnClick(delegate
280 {
281 Dialog.YesNo("dialog_deleteMapPiece", delegate
282 {
283 SE.Trash();
286 menu.Refresh();
287 Clear();
288 });
289 });
290 menu.buttonEdit.SetOnClick(delegate
291 {
292 UIScreenshot.Create().Activate(partialMap, dir, OnSave, isUpdate: true);
293 Clear();
294 });
295 }
296
297 public override void OnActivate()
298 {
299 dir = (dirUser = new DirectoryInfo(CorePath.MapPieceSaveUser));
300 if (mode == Mode.Copy)
301 {
303 }
304 RefreshMenu(show: true);
305 }
306
307 public override void OnDeactivate()
308 {
309 if (partialMap != null)
310 {
312 partialMap = null;
313 }
314 if ((bool)menu)
315 {
317 }
318 if (Application.isEditor)
319 {
320 MapPiece.initialized = false;
321 }
322 }
323}
HitResult
Definition: HitResult.cs:2
if(item3.idFile==idFirstFile &&item3.id==idFirstTopic)
Definition: UIBook.cs:627
Mode
Definition: AM_Copy.cs:8
override void OnSelectStart(Point point)
Definition: AM_Copy.cs:92
override void OnUpdateInput()
Definition: AM_Copy.cs:185
override bool IsBuildMode
Definition: AM_Copy.cs:34
virtual void OnSave(PartialMap _partial)
Definition: AM_Copy.cs:159
override void OnCancel()
Definition: AM_Copy.cs:216
PartialMap partialMap
Definition: AM_Copy.cs:16
override void RotateUnderMouse()
Definition: AM_Copy.cs:197
override void OnDeactivate()
Definition: AM_Copy.cs:307
void ImportDialog(string dir=null)
Definition: AM_Copy.cs:248
override BaseTileSelector.SelectType selectType
Definition: AM_Copy.cs:23
override bool SubMenuAsGroup
Definition: AM_Copy.cs:40
override int CostMoney
Definition: AM_Copy.cs:47
override void OnSelectEnd(bool cancel)
Definition: AM_Copy.cs:97
override BuildMenu.Mode buildMenuMode
Definition: AM_Copy.cs:36
PartialMapMenu menu
Definition: AM_Copy.cs:44
override void OnActivate()
Definition: AM_Copy.cs:297
virtual Mode mode
Definition: AM_Copy.cs:42
void Import(string path)
Definition: AM_Copy.cs:242
override HitResult HitTest(Point point, Point start)
Definition: AM_Copy.cs:73
DirectoryInfo dir
Definition: AM_Copy.cs:18
override void OnClickSubMenu(int a)
Definition: AM_Copy.cs:68
void Clear()
Definition: AM_Copy.cs:209
override bool UseSubMenu
Definition: AM_Copy.cs:38
void RefreshMenu(bool show)
Definition: AM_Copy.cs:260
DirectoryInfo dirUser
Definition: AM_Copy.cs:20
override void OnRenderTile(Point point, HitResult result, int dir)
Definition: AM_Copy.cs:170
override string OnSetSubMenuButton(int a, UIButton b)
Definition: AM_Copy.cs:58
string overwritePath
Definition: AM_Copy.cs:14
override void OnAfterProcessTiles(Point start, Point end)
Definition: AM_Copy.cs:105
void Deactivate()
Definition: ActionMode.cs:529
void Activate(bool toggle=true, bool forceActivate=false)
Definition: ActionMode.cs:339
void WaitForEndOfFrame(Action action)
Definition: BaseCore.cs:61
static BuildMenu Instance
Definition: BuildMenu.cs:77
TerrainMenu terrainMenu
Definition: BuildMenu.cs:49
Trait trait
Definition: Card.cs:49
List< Thing > Things
Definition: Cell.cs:986
static string MapPieceSaveUser
Definition: CorePath.cs:202
Definition: Dialog.cs:7
static Dialog YesNo(string langDetail, Action actionYes, Action actionNo=null, string langYes="yes", string langNo="no")
Definition: Dialog.cs:244
Definition: EClass.cs:5
static Core core
Definition: EClass.cs:6
static SoundManager Sound
Definition: EClass.cs:46
static bool IsEditor
Definition: MapPiece.cs:47
void DestorySprites()
UIButton buttonEdit
void RefreshCategory(DirectoryInfo dir=null)
UIButton buttonSave
UIButton buttonDelete
static void Activate()
void SetVisible(bool visible)
static PartialMapMenu Instance
bool allowRotate
Definition: PartialMap.cs:55
static void Delete(string path)
Definition: PartialMap.cs:507
string path
Definition: PartialMap.cs:68
void Apply(Point _point, ApplyMode mode)
Definition: PartialMap.cs:112
void ClearMarkedCells()
Definition: PartialMap.cs:103
static PartialMap Load(string path=null)
Definition: PartialMap.cs:448
static string PathTemp
Definition: PartialMap.cs:86
static void ExportDialog(string dir=null)
Definition: PartialMap.cs:515
static bool relative
Definition: PartialMap.cs:25
void Save(int _x, int _z, int _w, int _h)
Definition: PartialMap.cs:411
void Rotate()
Definition: PartialMap.cs:92
Definition: Point.cs:9
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
Cell cell
Definition: Point.cs:51
static string[] OpenFilePanel(string title, string directory, string extension, bool multiselect)
Definition: Thing.cs:8
virtual bool CanCopyInBlueprint
Definition: Trait.cs:148
void SetCheck(bool check)
Definition: UIButton.cs:332
static UIScreenshot Create()
Definition: UIScreenshot.cs:20
void Activate(PartialMap partial, DirectoryInfo dir, Action< PartialMap > onSave=null, bool isUpdate=false)
Definition: UIScreenshot.cs:31
static UIScreenshot Instance
Definition: UIScreenshot.cs:8