Elin Decompiled Documentation EA 23.130 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 try
60 {
61 List<Net.DownloadMeta> listOrg = await Net.GetFileList(lang);
62 listOrg = listOrg.Where((Net.DownloadMeta m) => m.IsValidVersion()).ToList();
63 listOrg.ForeachReverse(delegate(Net.DownloadMeta m)
64 {
65 if (!AllowedCat.Split(',').Contains(m.cat.IsEmpty("Home")))
66 {
67 listOrg.Remove(m);
68 }
69 });
70 if (listOrg == null || listOrg.Count == 0)
71 {
73 return false;
74 }
75 List<MapMetaData> list = ListSavedUserMap();
76 IList<Net.DownloadMeta> list2 = listOrg.Copy();
77 foreach (MapMetaData item2 in list)
78 {
79 foreach (Net.DownloadMeta item3 in list2)
80 {
81 if (item3.id == item2.id && item3.version == item2.version)
82 {
83 list2.Remove(item3);
84 break;
85 }
86 }
87 }
88 Debug.Log(list2.Count);
89 if (list2.Count == 0)
90 {
91 list2 = listOrg.Copy();
92 }
93 Net.DownloadMeta item = list2.RandomItem();
94 Zone_User zone_User = EClass.game.spatials.Find((Zone_User z) => z.id == item.id);
95 if (zone_User != null)
96 {
97 MoveZone(zone_User);
98 return true;
99 }
100 FileInfo fileInfo = await Net.DownloadFile(item, CorePath.ZoneSaveUser, lang);
101 Debug.Log(item?.ToString() + "/" + item.title + item.id + "/" + item.path + "/");
102 Debug.Log(fileInfo?.ToString() + "/" + item.name + "/" + item.path);
103 if (Zone.IsImportValid(fileInfo.FullName))
104 {
105 Debug.Log("valid");
106 LoadMap(Map.GetMetaData(fileInfo.FullName));
107 }
108 else
109 {
110 Debug.Log("invalid");
112 }
113 }
114 catch (Exception ex)
115 {
116 EClass.ui.Say(ex.Message);
117 return false;
118 }
119 return true;
120 }
121
122 public void LoadMap(MapMetaData m)
123 {
124 if (EClass.pc.burden.GetPhase() == 4)
125 {
126 Msg.Say("returnOverweight");
127 return;
128 }
129 Debug.Log("loading:" + m.name + "/" + m.path);
130 Zone_User zone_User = EClass.game.spatials.Find((Zone_User z) => z.idUser == m.id);
131 if (zone_User == null)
132 {
133 zone_User = SpatialGen.Create("user", EClass.world.region, register: true) as Zone_User;
134 zone_User.path = m.path;
135 zone_User.idUser = m.id;
136 zone_User.dateExpire = EClass.world.date.GetRaw(1);
137 zone_User.name = m.name;
138 }
139 Debug.Log(zone_User);
140 MoveZone(zone_User);
141 }
142
143 public void MoveZone(Zone zone)
144 {
145 zone.instance = new ZoneInsstanceMoongate
146 {
147 uidZone = EClass._zone.uid,
148 x = EClass.pc.pos.x,
149 z = EClass.pc.pos.z
150 };
152 }
153
154 public List<MapMetaData> ListSavedUserMap()
155 {
156 List<MapMetaData> list = new List<MapMetaData>();
157 foreach (FileInfo item in new DirectoryInfo(CorePath.ZoneSaveUser).GetFiles().Concat(MOD.listMaps))
158 {
159 if (!(item.Extension != ".z"))
160 {
161 MapMetaData metaData = Map.GetMetaData(item.FullName);
162 if (metaData != null && metaData.IsValidVersion())
163 {
164 metaData.path = item.FullName;
165 metaData.date = item.LastWriteTime;
166 list.Add(metaData);
167 }
168 }
169 }
170 return list;
171 }
172}
Version version
Definition: BaseCore.cs:17
Point pos
Definition: Card.cs:55
void SayNothingHappans()
Definition: Card.cs:6227
bool IsInstalled
Definition: Card.cs:2281
Definition: Chara.cs:10
Stats burden
Definition: Chara.cs:958
void MoveZone(string alias)
Definition: Chara.cs:3029
BackerContentConfig backer
Definition: CoreConfig.cs:602
static string ZoneSaveUser
Definition: CorePath.cs:198
Definition: Core.cs:14
static void TryWarnMod(Action action, bool warn=true)
Definition: Core.cs:798
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
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:2988
bool IsInstance
Definition: Zone.cs:480
bool demo
Definition: Version.cs:14