Skip to content

Commit 2989842

Browse files
committed
fix missing building in location 19
1 parent 51144fe commit 2989842

File tree

2 files changed

+73
-60
lines changed

2 files changed

+73
-60
lines changed

MainCore/Services/PlanManager.cs

Lines changed: 62 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -17,97 +17,100 @@ public PlanManager(IDbContextFactory<AppDbContext> contextFactory)
1717
public void Add(int index, PlanTask task)
1818
{
1919
Check(index);
20-
using var context = _contextFactory.CreateDbContext();
21-
// check wall
22-
if (task.Building.IsWall())
20+
if (task.Type == Enums.PlanTypeEnums.General)
2321
{
24-
var village = context.Villages.Find(index);
25-
var tribe = context.AccountsInfo.Find(village.AccountId).Tribe;
26-
var wall = tribe.GetWall();
27-
if (task.Building != wall) task.Building = wall;
28-
}
22+
using var context = _contextFactory.CreateDbContext();
23+
// check wall
24+
if (task.Building.IsWall())
25+
{
26+
var village = context.Villages.Find(index);
27+
var tribe = context.AccountsInfo.Find(village.AccountId).Tribe;
28+
var wall = tribe.GetWall();
29+
if (task.Building != wall) task.Building = wall;
30+
}
2931

30-
// check building can build muiltiple times (warehouse, ganary, ...)
31-
if (task.Building.IsMultipleAllow())
32-
{
33-
var villageBuildings = context.VillagesBuildings.Where(x => x.VillageId == index).ToList();
34-
var building = villageBuildings.Where(x => x.Type == task.Building).OrderByDescending(x => x.Level).FirstOrDefault();
35-
if (building is null)
32+
// check building can build muiltiple times (warehouse, ganary, ...)
33+
if (task.Building.IsMultipleAllow())
3634
{
37-
var currentBuildings = context.VillagesCurrentlyBuildings.Where(x => x.VillageId == index).ToList();
38-
var currentBuilding = currentBuildings.Where(x => x.Type == task.Building).OrderByDescending(x => x.Level).FirstOrDefault();
39-
if (currentBuilding is null)
35+
var villageBuildings = context.VillagesBuildings.Where(x => x.VillageId == index).ToList();
36+
var building = villageBuildings.Where(x => x.Type == task.Building).OrderByDescending(x => x.Level).FirstOrDefault();
37+
if (building is null)
4038
{
41-
var planTasks = GetList(index);
42-
var planTask = planTasks.Where(x => x.Building == task.Building).OrderByDescending(x => x.Level).FirstOrDefault();
43-
if (planTask is not null)
39+
var currentBuildings = context.VillagesCurrentlyBuildings.Where(x => x.VillageId == index).ToList();
40+
var currentBuilding = currentBuildings.Where(x => x.Type == task.Building).OrderByDescending(x => x.Level).FirstOrDefault();
41+
if (currentBuilding is null)
42+
{
43+
var planTasks = GetList(index);
44+
var planTask = planTasks.Where(x => x.Building == task.Building).OrderByDescending(x => x.Level).FirstOrDefault();
45+
if (planTask is not null)
46+
{
47+
if (task.Location != planTask.Location && planTask.Level != planTask.Building.GetMaxLevel())
48+
{
49+
task.Location = planTask.Location;
50+
}
51+
}
52+
}
53+
else
4454
{
45-
if (task.Location != planTask.Location && planTask.Level != planTask.Building.GetMaxLevel())
55+
if (task.Location != currentBuilding.Location && currentBuilding.Level != currentBuilding.Type.GetMaxLevel())
4656
{
47-
task.Location = planTask.Location;
57+
task.Location = currentBuilding.Location;
4858
}
4959
}
5060
}
5161
else
5262
{
53-
if (task.Location != currentBuilding.Location && currentBuilding.Level != currentBuilding.Type.GetMaxLevel())
63+
if (task.Location != building.Id && building.Level != building.Type.GetMaxLevel())
5464
{
55-
task.Location = currentBuilding.Location;
65+
task.Location = building.Id;
5666
}
5767
}
5868
}
5969
else
6070
{
61-
if (task.Location != building.Id && building.Level != building.Type.GetMaxLevel())
71+
if (task.Building.IsResourceField())
6272
{
63-
task.Location = building.Id;
73+
var villageBuilding = context.VillagesBuildings.Where(x => x.VillageId == index).FirstOrDefault(x => x.Id == task.Location);
74+
// different type village ( 4446 import to 3337 for example )
75+
// now i just ignore the different resource field
76+
if (villageBuilding is null || villageBuilding.Type != task.Building) return;
6477
}
65-
}
66-
}
67-
else
68-
{
69-
if (task.Building.IsResourceField())
70-
{
71-
var villageBuilding = context.VillagesBuildings.Where(x => x.VillageId == index).FirstOrDefault(x => x.Id == task.Location);
72-
// different type village ( 4446 import to 3337 for example )
73-
// now i just ignore the different resource field
74-
if (villageBuilding is null || villageBuilding.Type != task.Building) return;
75-
}
76-
else
77-
{
78-
var villageBuildings = context.VillagesBuildings.Where(x => x.VillageId == index).ToList();
79-
var building = villageBuildings.FirstOrDefault(x => x.Type == task.Building);
80-
if (building is null)
78+
else
8179
{
82-
var currentBuildings = context.VillagesCurrentlyBuildings.Where(x => x.VillageId == index).ToList();
83-
var currentBuilding = currentBuildings.FirstOrDefault(x => x.Type == task.Building);
84-
if (currentBuilding is null)
80+
var villageBuildings = context.VillagesBuildings.Where(x => x.VillageId == index).ToList();
81+
var building = villageBuildings.FirstOrDefault(x => x.Type == task.Building);
82+
if (building is null)
8583
{
86-
var planTasks = GetList(index);
87-
var planTask = planTasks.FirstOrDefault(x => x.Building == task.Building);
88-
if (planTask is not null)
84+
var currentBuildings = context.VillagesCurrentlyBuildings.Where(x => x.VillageId == index).ToList();
85+
var currentBuilding = currentBuildings.FirstOrDefault(x => x.Type == task.Building);
86+
if (currentBuilding is null)
8987
{
90-
if (task.Location != planTask.Location)
88+
var planTasks = GetList(index);
89+
var planTask = planTasks.FirstOrDefault(x => x.Building == task.Building);
90+
if (planTask is not null)
9191
{
92-
task.Location = planTask.Location;
92+
if (task.Location != planTask.Location)
93+
{
94+
task.Location = planTask.Location;
95+
}
96+
}
97+
}
98+
else
99+
{
100+
if (task.Location != currentBuilding.Location)
101+
{
102+
task.Location = currentBuilding.Location;
93103
}
94104
}
95105
}
96106
else
97107
{
98-
if (task.Location != currentBuilding.Location)
108+
if (task.Location != building.Id)
99109
{
100-
task.Location = currentBuilding.Location;
110+
task.Location = building.Id;
101111
}
102112
}
103113
}
104-
else
105-
{
106-
if (task.Location != building.Id)
107-
{
108-
task.Location = building.Id;
109-
}
110-
}
111114
}
112115
}
113116

WPFUI/ViewModels/Tabs/Villages/BuildViewModel.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@ private void LoadBuildings(int villageId)
9595
var plannedBuild = queueBuildings.OrderByDescending(x => x.Level).FirstOrDefault(x => x.Location == building.Id);
9696
if (plannedBuild is not null)
9797
{
98-
if (plannedBuild.Type == PlanTypeEnums.ResFields) continue;
9998
Buildings.Add(new()
10099
{
101100
Location = building.Id,
@@ -251,20 +250,31 @@ private void ResBuildTask()
251250
MessageBox.Show("Level must be positive");
252251
return;
253252
}
253+
#if TTWARS
254+
if (level > 25)
255+
{
256+
level = 25;
257+
}
258+
#else
254259
if (level > 20)
255260
{
256261
level = 20;
257262
}
263+
#endif
258264
var planTask = new PlanTask()
259265
{
266+
Location = -1,
260267
Level = level,
261268
Type = PlanTypeEnums.ResFields,
262269
ResourceType = SelectedResType.Type,
263270
BuildingStrategy = SelectedBuildingStrategy.Strategy,
264271
};
272+
265273
var villageId = CurrentVillage.Id;
266274
_planManager.Add(villageId, planTask);
275+
267276
LoadQueue(villageId);
277+
268278
LoadBuildings(villageId);
269279

270280
var accountId = CurrentAccount.Id;

0 commit comments

Comments
 (0)