Elin Decompiled Documentation EA 23.183 Nightly Patch 1
Loading...
Searching...
No Matches
TraitMoongate.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.IO;
4using System.Linq;
5using Cysharp.Threading.Tasks;
6using UnityEngine;
7
8public class TraitMoongate : Trait
9{
10 public UniTask<bool> test;
11
12 public virtual string AllowedCat
13 {
14 get
15 {
16 if (!(EClass._zone is Zone_Tent))
17 {
18 return "Home,Dungeon,Town";
19 }
20 return "Tent";
21 }
22 }
23
24 public override bool CanUse(Chara c)
25 {
27 {
28 return false;
29 }
30 return true;
31 }
32
33 public override bool OnUse(Chara c)
34 {
36 {
38 return false;
39 }
40 Core.TryWarnMod(delegate
41 {
43 }, warn: false);
44 return false;
45 }
46
47 public async UniTask<bool> UseMoongate()
48 {
49 string lang = Lang.langCode;
50 if (lang != "JP" && lang != "CN" && lang != "EN")
51 {
52 lang = "EN";
53 }
55 {
56 lang = ((EClass.rnd(10) != 0) ? ((EClass.rnd(2) == 0) ? "JP" : "EN") : "CN");
57 }
58 Debug.Log(lang);
59 Net.DownloadMeta meta = null;
60 try
61 {
62 List<Net.DownloadMeta> listOrg = await Net.GetFileList(lang);
63 listOrg = listOrg.Where((Net.DownloadMeta m) => m.IsValidVersion()).ToList();
64 listOrg.ForeachReverse(delegate(Net.DownloadMeta m)
65 {
66 if (!AllowedCat.Split(',').Contains(m.cat.IsEmpty("Home")) || (EClass.core.config.net.noAdult && m.tag.HasTag("adult")))
67 {
68 listOrg.Remove(m);
69 }
70 });
71 if (listOrg == null || listOrg.Count == 0)
72 {
74 return false;
75 }
76 List<MapMetaData> list = ListSavedUserMap();
77 IList<Net.DownloadMeta> list2 = listOrg.Copy();
78 foreach (MapMetaData item in list)
79 {
80 foreach (Net.DownloadMeta item2 in list2)
81 {
82 if ((item2.id == item.id && item2.version == item.version) || (EClass.core.config.net.noAdult && item2.tag.HasTag("adult")))
83 {
84 list2.Remove(item2);
85 break;
86 }
87 }
88 }
89 Debug.Log(list2.Count);
90 if (list2.Count == 0)
91 {
92 list2 = listOrg.Copy();
93 }
94 meta = list2.RandomItem();
95 Zone_User zone_User = EClass.game.spatials.Find((Zone_User z) => z.id == meta.id);
96 if (zone_User != null)
97 {
98 MoveZone(zone_User);
99 return true;
100 }
101 FileInfo fileInfo = await Net.DownloadFile(meta, CorePath.ZoneSaveUser, lang);
102 Debug.Log(meta?.ToString() + "/" + meta.title + meta.id + "/" + meta.path + "/");
103 Debug.Log(fileInfo?.ToString() + "/" + meta.name + "/" + meta.path);
104 if (Zone.IsImportValid(fileInfo.FullName))
105 {
106 Debug.Log("valid");
107 LoadMap(Map.GetMetaData(fileInfo.FullName));
108 }
109 else
110 {
111 Debug.Log("invalid");
113 }
114 }
115 catch (Exception ex)
116 {
117 EClass.ui.Say(ex.Message);
118 if (meta != null)
119 {
120 EClass.ui.Say("Invalid Usermap: " + meta.title + "(" + meta.id + ")");
121 }
122 return false;
123 }
124 return true;
125 }
126
127 public void LoadMap(MapMetaData m)
128 {
129 if (EClass.pc.burden.GetPhase() == 4)
130 {
131 Msg.Say("returnOverweight");
132 return;
133 }
134 Debug.Log("loading:" + m.name + "/" + m.path);
135 Debug.Log(m.tag);
136 Zone_User zone_User = EClass.game.spatials.Find((Zone_User z) => z.idUser == m.id);
137 if (zone_User == null)
138 {
139 zone_User = SpatialGen.Create("user", EClass.world.region, register: true) as Zone_User;
140 zone_User.path = m.path;
141 zone_User.idUser = m.id;
142 zone_User.dateExpire = EClass.world.date.GetRaw(1);
143 zone_User.name = m.name;
144 if (m.underwater)
145 {
146 zone_User.elements.SetBase(3606, 1);
147 }
148 }
149 Debug.Log(zone_User);
150 MoveZone(zone_User);
151 }
152
153 public void MoveZone(Zone zone)
154 {
155 zone.instance = new ZoneInsstanceMoongate
156 {
157 uidZone = EClass._zone.uid,
158 x = EClass.pc.pos.x,
159 z = EClass.pc.pos.z
160 };
162 }
163
164 public List<MapMetaData> ListSavedUserMap()
165 {
166 List<MapMetaData> list = new List<MapMetaData>();
167 foreach (FileInfo item in new DirectoryInfo(CorePath.ZoneSaveUser).GetFiles().Concat(MOD.listMaps))
168 {
169 if (!(item.Extension != ".z"))
170 {
171 MapMetaData metaData = Map.GetMetaData(item.FullName);
172 if (metaData != null && metaData.IsValidVersion())
173 {
174 metaData.path = item.FullName;
175 metaData.date = item.LastWriteTime;
176 list.Add(metaData);
177 }
178 }
179 }
180 return list;
181 }
182}
Version version
Definition: BaseCore.cs:17
Point pos
Definition: Card.cs:57
void SayNothingHappans()
Definition: Card.cs:6494
bool IsInstalled
Definition: Card.cs:2343
Definition: Chara.cs:10
Stats burden
Definition: Chara.cs:1126
void MoveZone(string alias)
Definition: Chara.cs:3245
NetSetting net
Definition: CoreConfig.cs:604
BackerContentConfig backer
Definition: CoreConfig.cs:606
static string ZoneSaveUser
Definition: CorePath.cs:198
Definition: Core.cs:14
static void TryWarnMod(Action action, bool warn=true)
Definition: Core.cs:805
CoreConfig config
Definition: Core.cs:70
int GetRaw(int offsetHours=0)
Definition: Date.cs:322
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static Core core
Definition: EClass.cs:6
static Zone _zone
Definition: EClass.cs:20
static World world
Definition: EClass.cs:40
static int rnd(long a)
Definition: EClass.cs:58
static Chara pc
Definition: EClass.cs:14
static UI ui
Definition: EClass.cs:16
Element SetBase(string alias, int v, int potential=0)
SpatialManager spatials
Definition: Game.cs:152
Definition: Lang.cs:6
static string langCode
Definition: Lang.cs:28
static LayerProgress StartAsync(string text, UniTask< bool > task, Action onCancel=null)
Definition: MOD.cs:7
static List< FileInfo > listMaps
Definition: MOD.cs:20
string name
Definition: MapMetaData.cs:7
string path
Definition: MapMetaData.cs:27
string id
Definition: MapMetaData.cs:10
bool underwater
Definition: MapMetaData.cs:25
bool IsValidVersion()
Definition: MapMetaData.cs:31
string tag
Definition: MapMetaData.cs:16
Definition: Map.cs:13
static MapMetaData GetMetaData(string pathZip)
Definition: Map.cs:734
Definition: Msg.cs:5
static string SayNothingHappen()
Definition: Msg.cs:96
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
string path
Definition: Net.cs:38
string id
Definition: Net.cs:36
string title
Definition: Net.cs:34
string name
Definition: Net.cs:32
Definition: Net.cs:11
static async UniTask< FileInfo > DownloadFile(DownloadMeta item, string path, string idLang)
Definition: Net.cs:164
static async UniTask< List< DownloadMeta > > GetFileList(string idLang)
Definition: Net.cs:197
int x
Definition: Point.cs:36
static Spatial Create(string id, Spatial parent, bool register, int x=-99999, int y=-99999, int icon=0)
Definition: SpatialGen.cs:16
Zone Find(string id)
int uid
Definition: Spatial.cs:70
virtual bool IsRegion
Definition: Spatial.cs:501
string id
Definition: Spatial.cs:13
int dateExpire
Definition: Spatial.cs:166
string idUser
Definition: Spatial.cs:16
override int GetPhase()
Definition: Stats.cs:117
void LoadMap(MapMetaData m)
override bool CanUse(Chara c)
void MoveZone(Zone zone)
UniTask< bool > test
List< MapMetaData > ListSavedUserMap()
async UniTask< bool > UseMoongate()
override bool OnUse(Chara c)
virtual string AllowedCat
Definition: Trait.cs:7
Card owner
Definition: Trait.cs:27
Region region
Definition: World.cs:23
GameDate date
Definition: World.cs:6
Definition: Zone.cs:12
static bool IsImportValid(string path)
Definition: Zone.cs:3110
ElementContainerZone elements
Definition: Zone.cs:43
bool IsInstance
Definition: Zone.cs:482
bool demo
Definition: Version.cs:14