Skip to content

Commit 073a9ee

Browse files
authored
Merge pull request #121 from Erol444/fix-15-06-2022
Fix 15 06 2022 ( well =)) )
2 parents 59fc27f + 91753b5 commit 073a9ee

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+1271
-2094
lines changed

TbsCore/Core/PostLoadHelper.cs

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public static List<Action> GetPostLoadTasks(Account acc)
7171
else if (acc.Wb.CurrentUrl.Contains("dorf2")) TaskExecutor.UpdateDorf2Info(acc);
7272
},
7373
// 2: get culture point
74-
() => acc.AccInfo.CulturePoints = RightBarParser.GetCulturePoints(html, acc.AccInfo.ServerVersion),
74+
() => acc.AccInfo.CulturePoints = RightBarParser.GetCulturePoints(html),
7575
// 3: Village expansion:
7676
() =>
7777
{
@@ -86,8 +86,7 @@ public static List<Action> GetPostLoadTasks(Account acc)
8686
// 4: claim Beginner Quests:
8787
() =>
8888
{
89-
if(acc.AccInfo.ServerVersion == Classificator.ServerVersionEnum.T4_5 &&
90-
acc.Wb.Html.GetElementbyId("sidebarBoxQuestmaster")?
89+
if( acc.Wb.Html.GetElementbyId("sidebarBoxQuestmaster")?
9190
.Descendants()?.FirstOrDefault(x=>x.HasClass("newQuestSpeechBubble")) != null &&
9291
acc.Wb.Html.GetElementbyId("mentorTaskList") == null &&
9392
acc.Quests.ClaimBeginnerQuests)
@@ -96,23 +95,11 @@ public static List<Action> GetPostLoadTasks(Account acc)
9695

9796
return;
9897
}
99-
100-
acc.Quests.Quests = RightBarParser.GetBeginnerQuests(html, acc.AccInfo.ServerVersion);
101-
var claimQuest = acc.Quests?.Quests?.FirstOrDefault(x => x.finished);
102-
if (claimQuest != null && acc.Quests.ClaimBeginnerQuests)
103-
{
104-
acc.Tasks.Add( new ClaimBeginnerTask()
105-
{
106-
ExecuteAt = DateTime.Now,
107-
Vill = VillageHelper.VillageFromId(acc, acc.Quests.VillToClaim),
108-
}, true);
109-
}
11098
},
11199
// 5: claim Daily Quest:
112100
() =>
113101
{
114-
if (acc.AccInfo.ServerVersion == Classificator.ServerVersionEnum.T4_5 &&
115-
RightBarParser.CheckDailyQuest(html) &&
102+
if ( RightBarParser.CheckDailyQuest(html) &&
116103
acc.Quests.ClaimDailyQuests)
117104
{
118105
acc.Tasks.Add( new ClaimDailyTask()
@@ -125,17 +112,17 @@ public static List<Action> GetPostLoadTasks(Account acc)
125112
// 6: Parse gold/silver
126113
() =>
127114
{
128-
var goldSilver = RightBarParser.GetGoldAndSilver(html, acc.AccInfo.ServerVersion);
115+
var goldSilver = RightBarParser.GetGoldAndSilver(html);
129116
acc.AccInfo.Gold = goldSilver[0];
130117
acc.AccInfo.Silver = goldSilver[1];
131118
},
132119
// 7: plus acconunt
133-
() => acc.AccInfo.PlusAccount = RightBarParser.HasPlusAccount(html, acc.AccInfo.ServerVersion),
120+
() => acc.AccInfo.PlusAccount = RightBarParser.HasPlusAccount(html),
134121

135122
// 8: Check msgs:
136123
() =>
137124
{
138-
if (MsgParser.UnreadMessages(html, acc.AccInfo.ServerVersion) > 0
125+
if (MsgParser.UnreadMessages(html) > 0
139126
&& !acc.Wb.CurrentUrl.Contains("messages.php")
140127
&& acc.Settings.AutoReadIgms)
141128
{
@@ -210,11 +197,11 @@ public static List<Action> GetPostLoadTasks(Account acc)
210197
}
211198
},
212199
// 16: Adventure num
213-
() => acc.Hero.AdventureNum = HeroParser.GetAdventureNum(html, acc.AccInfo.ServerVersion),
200+
() => acc.Hero.AdventureNum = HeroParser.GetAdventureNum(html),
214201
// 17: status of hero
215-
() => acc.Hero.Status = HeroParser.HeroStatus(html, acc.AccInfo.ServerVersion),
202+
() => acc.Hero.Status = HeroParser.HeroStatus(html),
216203
// 18: health of hero
217-
() => acc.Hero.HeroInfo.Health = HeroParser.GetHeroHealth(html, acc.AccInfo.ServerVersion),
204+
() => acc.Hero.HeroInfo.Health = HeroParser.GetHeroHealth(html),
218205
// 19: Hero:
219206
() =>
220207
{
@@ -248,7 +235,7 @@ public static List<Action> GetPostLoadTasks(Account acc)
248235
Vill = AccountHelper.GetHeroReviveVillage(acc)
249236
}, true);
250237
}
251-
if (HeroParser.LeveledUp(html, acc.AccInfo.ServerVersion) && acc.Hero.Settings.AutoSetPoints)
238+
if (HeroParser.LeveledUp(html) && acc.Hero.Settings.AutoSetPoints)
252239
{
253240
acc.Tasks.Add( new HeroSetPoints() { ExecuteAt = DateTime.Now }, true);
254241
}

TbsCore/Core/TaskExecutor.cs

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@ public static async Task<bool> PageLoaded(Account acc)
5555
if (CheckCookiesNew(acc))
5656
await DriverHelper.ExecuteScript(acc, "document.getElementsByClassName('cmpboxbtnyes')[0].click();");
5757

58-
if (CheckContextualHelp(acc) &&
59-
acc.AccInfo.ServerVersion == Classificator.ServerVersionEnum.T4_5)
58+
if (CheckContextualHelp(acc))
6059
{
6160
acc.Tasks.Add(new EditPreferences()
6261
{
@@ -245,7 +244,7 @@ public static void UpdateDorf1Info(Account acc)
245244
}
246245
vill.TroopMovements.Dorf1Movements = dorf1Movements;
247246

248-
var resFields = ResourceParser.GetResourcefields(acc.Wb.Html, acc.AccInfo.ServerVersion);
247+
var resFields = ResourceParser.GetResourcefields(acc.Wb.Html);
249248
foreach (var field in resFields)
250249
{
251250
var building = vill.Build.Buildings.FirstOrDefault(x => x.Id == field.Id);
@@ -314,33 +313,13 @@ private static bool CheckCookiesNew(Account acc) =>
314313
//will be called before executing PreTaskRefresh
315314
internal static bool IsLoginScreen(Account acc)
316315
{
317-
switch (acc.AccInfo.ServerVersion)
318-
{
319-
case Classificator.ServerVersionEnum.TTwars:
320-
{
321-
var outerLoginBox = acc.Wb.Html.DocumentNode
322-
.Descendants("form")
323-
.FirstOrDefault(x => x.GetAttributeValue("name", "") == "login");
324-
325-
if (outerLoginBox != null)
326-
{
327-
if (!IsCaptcha(acc)) return true;
328-
}
329-
return false;
330-
}
331-
case Classificator.ServerVersionEnum.T4_5:
332-
{
333-
var tableLogin = acc.Wb.Html.GetElementbyId("loginForm");
316+
var tableLogin = acc.Wb.Html.GetElementbyId("loginForm");
334317

335-
if (tableLogin != null)
336-
{
337-
if (!IsCaptcha(acc)) return true;
338-
}
339-
return false;
340-
}
341-
default:
342-
return false;
318+
if (tableLogin != null)
319+
{
320+
if (!IsCaptcha(acc)) return true;
343321
}
322+
return false;
344323
}
345324

346325
private static bool IsSysMsg(Account acc)

TbsCore/Helpers/Classificator.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -362,12 +362,6 @@ public enum TribeEnum
362362
Huns, //7
363363
}
364364

365-
public enum ServerVersionEnum
366-
{
367-
TTwars,
368-
T4_5,
369-
}
370-
371365
public enum MovementType
372366
{
373367
Reinforcement = 2,

TbsCore/Helpers/HeroHelper.cs

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -163,10 +163,7 @@ public static HeroItemCategory GetHeroItemCategory(HeroItemEnum item)
163163
/// <param name="acc">Account</param>
164164
public static void ParseHeroPage(Account acc)
165165
{
166-
acc.Hero.HeroInfo = HeroParser.GetHeroInfo(acc.Wb.Html);
167-
acc.Hero.Items = HeroParser.GetHeroItems(acc.Wb.Html);
168166
acc.Hero.Equipt = HeroParser.GetHeroEquipment(acc.Wb.Html);
169-
acc.Hero.HeroArrival = DateTime.Now + HeroParser.GetHeroArrivalInfo(acc.Wb.Html);
170167

171168
UpdateHeroVillage(acc);
172169

@@ -181,20 +178,11 @@ public static void UpdateHeroVillage(Account acc)
181178
var hrefId = HeroParser.GetHeroVillageHref(acc.Wb.Html);
182179
if (hrefId == null) return;
183180

184-
switch (acc.AccInfo.ServerVersion)
185-
{
186-
case Classificator.ServerVersionEnum.TTwars:
187-
acc.Hero.HomeVillageId = hrefId ?? 0;
188-
return;
189-
190-
case ServerVersionEnum.T4_5:
191-
// Convert from coordinates id -> coordinates -> villageId
192-
var coordinates = new Coordinates(acc, hrefId ?? 0);
193-
var vill = acc.Villages.FirstOrDefault(x => x.Coordinates.Equals(coordinates));
194-
if (vill == null) return;
195-
acc.Hero.HomeVillageId = vill.Id;
196-
return;
197-
}
181+
// Convert from coordinates id -> coordinates -> villageId
182+
var coordinates = new Coordinates(acc, hrefId ?? 0);
183+
var vill = acc.Villages.FirstOrDefault(x => x.Coordinates.Equals(coordinates));
184+
if (vill == null) return;
185+
acc.Hero.HomeVillageId = vill.Id;
198186
}
199187

200188
public static long[] GetHeroResources(Account acc)
@@ -222,8 +210,7 @@ public static bool SwitchHelmet(Account acc, Village trainVill, BuildingEnum bui
222210
// In T4.5, helmet will only have effect in hero home village
223211
// In TTWars, helmets have acc-wide effect
224212
// TODO: for T4.5, add auto-move hero feature (for helmet effect purposes)
225-
if (GetHeroHomeVillage(acc) != trainVill &&
226-
acc.AccInfo.ServerVersion != Classificator.ServerVersionEnum.TTwars) return false;
213+
if (GetHeroHomeVillage(acc) != trainVill) return false;
227214

228215
string type = "";
229216
if (building == BuildingEnum.Barracks ||

TbsCore/Helpers/MapHelper.cs

Lines changed: 49 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -25,72 +25,44 @@ public static List<object> jsonToVillTypes(string json)
2525
/// </summary>
2626
public static async Task<List<MapTile>> GetMapTiles(Account acc, Coordinates coords)
2727
{
28-
switch (acc.AccInfo.ServerVersion)
29-
{
30-
case Classificator.ServerVersionEnum.TTwars:
31-
var ajaxToken = DriverHelper.GetJsObj<string>(acc, "ajaxToken");
32-
33-
var req = new RestRequest
34-
{
35-
Resource = "/ajax.php?cmd=mapPositionData",
36-
Method = Method.Post,
37-
};
38-
39-
req.AddParameter("cmd", "mapPositionData");
40-
req.AddParameter("data[x]", coords.x.ToString());
41-
req.AddParameter("data[y]", coords.y.ToString());
42-
req.AddParameter("data[zoomLevel]", "3");
43-
req.AddParameter("ajaxToken", ajaxToken);
28+
var bearerToken = DriverHelper.GetBearerToken(acc);
4429

45-
var resString = await HttpHelper.SendPostReqAsync(acc, req);
46-
47-
var root = JsonConvert.DeserializeObject<MapPositionDataT4_4.Root>(resString);
48-
if (root.response.error) throw new Exception("Unable to get T4.4 map position data!\n" + root.response.error);
49-
return root.response.data.tiles.Select(x => x.GetMapTile()).ToList();
50-
51-
case Classificator.ServerVersionEnum.T4_5:
52-
{
53-
var bearerToken = DriverHelper.GetBearerToken(acc);
30+
var reqMapInfo = new RestRequest
31+
{
32+
Resource = "/api/v1/map/info",
33+
Method = Method.Post,
34+
RequestFormat = DataFormat.Json
35+
};
36+
reqMapInfo.AddHeader("authorization", $"Bearer {bearerToken}");
37+
reqMapInfo.AddHeader("content-type", "application/json; charset=UTF-8");
38+
reqMapInfo.AddJsonBody(GenerateMapInfo(coords));
5439

55-
var reqMapInfo = new RestRequest
56-
{
57-
Resource = "/api/v1/map/info",
58-
Method = Method.Post,
59-
RequestFormat = DataFormat.Json
60-
};
61-
reqMapInfo.AddHeader("authorization", $"Bearer {bearerToken}");
62-
reqMapInfo.AddHeader("content-type", "application/json; charset=UTF-8");
63-
reqMapInfo.AddJsonBody(GenerateMapInfo(coords));
40+
var mapInfoRes = await HttpHelper.SendPostReqAsync(acc, reqMapInfo);
6441

65-
var mapInfoRes = await HttpHelper.SendPostReqAsync(acc, reqMapInfo);
42+
var mapPosition = new SendMapPositionT4_5.Root()
43+
{
44+
data = new SendMapPositionT4_5.Data()
45+
{
46+
x = coords.x,
47+
y = coords.y,
48+
zoomLevel = 3,
49+
ignorePositions = new List<object>()
50+
}
51+
};
6652

67-
var mapPosition = new SendMapPositionT4_5.Root()
68-
{
69-
data = new SendMapPositionT4_5.Data()
70-
{
71-
x = coords.x,
72-
y = coords.y,
73-
zoomLevel = 3,
74-
ignorePositions = new List<object>()
75-
}
76-
};
77-
78-
var reqMapPosition = new RestRequest
79-
{
80-
Resource = "/api/v1/map/position",
81-
Method = Method.Post,
82-
RequestFormat = DataFormat.Json
83-
};
84-
reqMapPosition.AddHeader("authorization", $"Bearer {bearerToken}");
85-
reqMapPosition.AddHeader("content-type", "application/json; charset=UTF-8");
86-
reqMapPosition.AddJsonBody(mapPosition);
87-
88-
var mapPositionRes = await HttpHelper.SendPostReqAsync(acc, reqMapPosition);
89-
var mapPositionData = JsonConvert.DeserializeObject<MapPositionDataT4_5>(mapPositionRes);
90-
return mapPositionData.tiles.Select(x => x.GetMapTile()).ToList();
91-
}
92-
}
93-
return null;
53+
var reqMapPosition = new RestRequest
54+
{
55+
Resource = "/api/v1/map/position",
56+
Method = Method.Post,
57+
RequestFormat = DataFormat.Json
58+
};
59+
reqMapPosition.AddHeader("authorization", $"Bearer {bearerToken}");
60+
reqMapPosition.AddHeader("content-type", "application/json; charset=UTF-8");
61+
reqMapPosition.AddJsonBody(mapPosition);
62+
63+
var mapPositionRes = await HttpHelper.SendPostReqAsync(acc, reqMapPosition);
64+
var mapPositionData = JsonConvert.DeserializeObject<MapPositionDataT4_5>(mapPositionRes);
65+
return mapPositionData.tiles.Select(x => x.GetMapTile()).ToList();
9466
}
9567

9668
/// <summary>
@@ -101,49 +73,22 @@ public static async Task<TroopsBase> GetOasisAnimals(Account acc, Coordinates oa
10173
var htmlDoc = new HtmlAgilityPack.HtmlDocument();
10274
string html = "";
10375

104-
switch (acc.AccInfo.ServerVersion)
105-
{
106-
case Classificator.ServerVersionEnum.TTwars:
107-
var ajaxToken = DriverHelper.GetJsObj<string>(acc, "ajaxToken");
108-
109-
var req = new RestRequest
110-
{
111-
Resource = "/ajax.php?cmd=viewTileDetails",
112-
Method = Method.Post,
113-
};
114-
115-
req.AddParameter("cmd", "viewTileDetails");
116-
req.AddParameter("x", oasis.x.ToString());
117-
req.AddParameter("y", oasis.y.ToString());
118-
req.AddParameter("ajaxToken", ajaxToken);
76+
var bearerToken = DriverHelper.GetBearerToken(acc);
11977

120-
var resString = await HttpHelper.SendPostReqAsync(acc, req);
121-
122-
var root = JsonConvert.DeserializeObject<TileDetailsT4_4>(resString);
123-
if (root.response.error) throw new Exception("Unable to get T4.4 tile details!\n" + root.response.error);
124-
125-
html = WebUtility.HtmlDecode(root.response.data.html);
126-
break;
127-
128-
case Classificator.ServerVersionEnum.T4_5:
129-
var bearerToken = DriverHelper.GetBearerToken(acc);
130-
131-
var reqMapInfo = new RestRequest
132-
{
133-
Resource = "/api/v1/ajax/viewTileDetails",
134-
Method = Method.Post,
135-
RequestFormat = DataFormat.Json
136-
};
137-
reqMapInfo.AddHeader("authorization", $"Bearer {bearerToken}");
138-
reqMapInfo.AddHeader("content-type", "application/json; charset=UTF-8");
139-
reqMapInfo.AddJsonBody(oasis);
140-
141-
var tileDetails = await HttpHelper.SendPostReqAsync(acc, reqMapInfo);
142-
143-
var tile = JsonConvert.DeserializeObject<TileDetailsT4_5>(tileDetails);
144-
html = WebUtility.HtmlDecode(tile.html);
145-
break;
146-
}
78+
var reqMapInfo = new RestRequest
79+
{
80+
Resource = "/api/v1/ajax/viewTileDetails",
81+
Method = Method.Post,
82+
RequestFormat = DataFormat.Json
83+
};
84+
reqMapInfo.AddHeader("authorization", $"Bearer {bearerToken}");
85+
reqMapInfo.AddHeader("content-type", "application/json; charset=UTF-8");
86+
reqMapInfo.AddJsonBody(oasis);
87+
88+
var tileDetails = await HttpHelper.SendPostReqAsync(acc, reqMapInfo);
89+
90+
var tile = JsonConvert.DeserializeObject<TileDetailsT4_5>(tileDetails);
91+
html = WebUtility.HtmlDecode(tile.html);
14792

14893
htmlDoc.LoadHtml(html);
14994
return TroopsParser.GetOasisAnimals(htmlDoc);

0 commit comments

Comments
 (0)