Elin Decompiled Documentation EA 23.153 Nightly
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")))
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)
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 Zone_User zone_User = EClass.game.spatials.Find((Zone_User z) => z.idUser == m.id);
136 if (zone_User == null)
137 {
138 zone_User = SpatialGen.Create("user", EClass.world.region, register: true) as Zone_User;
139 zone_User.path = m.path;
140 zone_User.idUser = m.id;
141 zone_User.dateExpire = EClass.world.date.GetRaw(1);
142 zone_User.name = m.name;
143 }
144 Debug.Log(zone_User);
145 MoveZone(zone_User);
146 }
147
148 public void MoveZone(Zone zone)
149 {
150 zone.instance = new ZoneInsstanceMoongate
151 {
152 uidZone = EClass._zone.uid,
153 x = EClass.pc.pos.x,
154 z = EClass.pc.pos.z
155 };
157 }
158
159 public List<MapMetaData> ListSavedUserMap()
160 {
161 List<MapMetaData> list = new List<MapMetaData>();
162 foreach (FileInfo item in new DirectoryInfo(CorePath.ZoneSaveUser).GetFiles().Concat(MOD.listMaps))
163 {
164 if (!(item.Extension != ".z"))
165 {
166 MapMetaData metaData = Map.GetMetaData(item.FullName);
167 if (metaData != null && metaData.IsValidVersion())
168 {
169 metaData.path = item.FullName;
170 metaData.date = item.LastWriteTime;
171 list.Add(metaData);
172 }
173 }
174 }
175 return list;
176 }
177}
Version version
Definition: BaseCore.cs:17
Point pos
Definition: Card.cs:55
void SayNothingHappans()
Definition: Card.cs:6418
bool IsInstalled
Definition: Card.cs:2317
Definition: Chara.cs:10
Stats burden
Definition: Chara.cs:996
void MoveZone(string alias)
Definition: Chara.cs:3094
BackerContentConfig backer
Definition: CoreConfig.cs:604
static string ZoneSaveUser
Definition: CorePath.cs:198
Definition: Core.cs:14
static void TryWarnMod(Action action, bool warn=true)
Definition: Core.cs:800
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 int rnd(int a)
Definition: EClass.cs:58
static Core core
Definition: EClass.cs:6
static Zone _zone
Definition: EClass.cs:20
static World world
Definition: EClass.cs:40
static Chara pc
Definition: EClass.cs:14
static UI ui
Definition: EClass.cs:16
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:21
string id
Definition: MapMetaData.cs:10
bool IsValidVersion()
Definition: MapMetaData.cs:25
Definition: Map.cs:13
static MapMetaData GetMetaData(string pathZip)
Definition: Map.cs:732
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:160
static async UniTask< List< DownloadMeta > > GetFileList(string idLang)
Definition: Net.cs:193
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:26
Region region
Definition: World.cs:23
GameDate date
Definition: World.cs:6
Definition: Zone.cs:12
static bool IsImportValid(string path)
Definition: Zone.cs:3072
bool IsInstance
Definition: Zone.cs:482
bool demo
Definition: Version.cs:14