Elin Decompiled Documentation EA 23.102 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 override bool CanUse(Chara c)
13 {
15 {
16 return false;
17 }
18 return true;
19 }
20
21 public override bool OnUse(Chara c)
22 {
24 {
26 return false;
27 }
28 Core.TryWarnMod(delegate
29 {
31 }, warn: false);
32 return false;
33 }
34
35 public async UniTask<bool> UseMoongate()
36 {
37 string lang = Lang.langCode;
38 if (lang != "JP" && lang != "CN" && lang != "EN")
39 {
40 lang = "EN";
41 }
43 {
44 lang = ((EClass.rnd(10) != 0) ? ((EClass.rnd(2) == 0) ? "JP" : "EN") : "CN");
45 }
46 Debug.Log(lang);
47 try
48 {
49 List<Net.DownloadMeta> list = (await Net.GetFileList(lang)).Where((Net.DownloadMeta m) => m.IsValidVersion()).ToList();
50 if (list == null || list.Count == 0)
51 {
53 return false;
54 }
55 List<MapMetaData> list2 = ListSavedUserMap();
56 IList<Net.DownloadMeta> list3 = list.Copy();
57 foreach (MapMetaData item2 in list2)
58 {
59 foreach (Net.DownloadMeta item3 in list3)
60 {
61 if (item3.id == item2.id && item3.version == item2.version)
62 {
63 list3.Remove(item3);
64 break;
65 }
66 }
67 }
68 Debug.Log(list3.Count);
69 if (list3.Count == 0)
70 {
71 list3 = list.Copy();
72 }
73 Net.DownloadMeta item = list3.RandomItem();
74 Zone_User zone_User = EClass.game.spatials.Find((Zone_User z) => z.id == item.id);
75 if (zone_User != null)
76 {
77 MoveZone(zone_User);
78 return true;
79 }
80 FileInfo fileInfo = await Net.DownloadFile(item, CorePath.ZoneSaveUser, lang);
81 Debug.Log(item?.ToString() + "/" + item.title + item.id + "/" + item.path + "/");
82 Debug.Log(fileInfo?.ToString() + "/" + item.name + "/" + item.path);
83 if (Zone.IsImportValid(fileInfo.FullName))
84 {
85 Debug.Log("valid");
86 LoadMap(Map.GetMetaData(fileInfo.FullName));
87 }
88 else
89 {
90 Debug.Log("invalid");
92 }
93 }
94 catch (Exception ex)
95 {
96 EClass.ui.Say(ex.Message);
97 return false;
98 }
99 return true;
100 }
101
102 public void LoadMap(MapMetaData m)
103 {
104 if (EClass.pc.burden.GetPhase() == 4)
105 {
106 Msg.Say("returnOverweight");
107 return;
108 }
109 Debug.Log("loading:" + m.name + "/" + m.path);
110 Zone_User zone_User = EClass.game.spatials.Find((Zone_User z) => z.idUser == m.id);
111 if (zone_User == null)
112 {
113 zone_User = SpatialGen.Create("user", EClass.world.region, register: true) as Zone_User;
114 zone_User.path = m.path;
115 zone_User.idUser = m.id;
116 zone_User.dateExpire = EClass.world.date.GetRaw(1);
117 zone_User.name = m.name;
118 }
119 Debug.Log(zone_User);
120 MoveZone(zone_User);
121 }
122
123 public void MoveZone(Zone zone)
124 {
125 zone.instance = new ZoneInsstanceMoongate
126 {
127 uidZone = EClass._zone.uid,
128 x = EClass.pc.pos.x,
129 z = EClass.pc.pos.z
130 };
132 }
133
134 public List<MapMetaData> ListSavedUserMap()
135 {
136 List<MapMetaData> list = new List<MapMetaData>();
137 foreach (FileInfo item in new DirectoryInfo(CorePath.ZoneSaveUser).GetFiles().Concat(MOD.listMaps))
138 {
139 if (!(item.Extension != ".z"))
140 {
141 MapMetaData metaData = Map.GetMetaData(item.FullName);
142 if (metaData != null && metaData.IsValidVersion())
143 {
144 metaData.path = item.FullName;
145 metaData.date = item.LastWriteTime;
146 list.Add(metaData);
147 }
148 }
149 }
150 return list;
151 }
152}
Version version
Definition: BaseCore.cs:17
Point pos
Definition: Card.cs:55
void SayNothingHappans()
Definition: Card.cs:6041
bool IsInstalled
Definition: Card.cs:2241
Definition: Chara.cs:10
Stats burden
Definition: Chara.cs:953
void MoveZone(string alias)
Definition: Chara.cs:3010
BackerContentConfig backer
Definition: CoreConfig.cs:600
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:50
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:154
static async UniTask< List< DownloadMeta > > GetFileList(string idLang)
Definition: Net.cs:187
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)
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:2968
bool IsInstance
Definition: Zone.cs:480
bool demo
Definition: Version.cs:14