1
1
using MainCore . Enums ;
2
+ using MainCore . Models . Runtime ;
2
3
using MainCore . Services ;
3
- using MainCore . TravianData ;
4
4
using System . Collections . Generic ;
5
5
using System . Linq ;
6
6
@@ -43,7 +43,7 @@ public static bool CanBuild(AppDbContext context, IPlanManager planManager, int
43
43
} ;
44
44
}
45
45
46
- ( var reqTribe , var prerequisites ) = BuildingsData . GetPrerequisiteBuildings ( building ) ;
46
+ ( var reqTribe , var prerequisites ) = building . GetPrerequisiteBuildings ( ) ;
47
47
if ( reqTribe != TribeEnums . Any && reqTribe != tribe ) return false ;
48
48
foreach ( var prerequisite in prerequisites )
49
49
{
@@ -234,5 +234,203 @@ public static string GetColor(this BuildingEnums building)
234
234
BuildingEnums . Trapper => 1 ,
235
235
_ => 0 ,
236
236
} ;
237
+
238
+ public static ( TribeEnums , List < PrerequisiteBuilding > ) GetPrerequisiteBuildings ( this BuildingEnums building )
239
+ {
240
+ TribeEnums tribe = TribeEnums . Any ;
241
+ var ret = new List < PrerequisiteBuilding > ( ) ;
242
+ switch ( building )
243
+ {
244
+ case BuildingEnums . Sawmill :
245
+ ret . Add ( new ( ) { Building = BuildingEnums . Woodcutter , Level = 10 } ) ;
246
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 5 } ) ;
247
+ break ;
248
+
249
+ case BuildingEnums . Brickyard :
250
+ ret . Add ( new ( ) { Building = BuildingEnums . ClayPit , Level = 10 } ) ;
251
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 5 } ) ;
252
+ break ;
253
+
254
+ case BuildingEnums . IronFoundry :
255
+ ret . Add ( new ( ) { Building = BuildingEnums . IronMine , Level = 10 } ) ;
256
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 5 } ) ;
257
+ break ;
258
+
259
+ case BuildingEnums . GrainMill :
260
+ ret . Add ( new ( ) { Building = BuildingEnums . Cropland , Level = 5 } ) ;
261
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 5 } ) ;
262
+ break ;
263
+
264
+ case BuildingEnums . Bakery :
265
+ ret . Add ( new ( ) { Building = BuildingEnums . Cropland , Level = 10 } ) ;
266
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 5 } ) ;
267
+ ret . Add ( new ( ) { Building = BuildingEnums . GrainMill , Level = 5 } ) ;
268
+ break ;
269
+
270
+ case BuildingEnums . Warehouse :
271
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 1 } ) ;
272
+ break ;
273
+
274
+ case BuildingEnums . Granary :
275
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 1 } ) ;
276
+ break ;
277
+
278
+ case BuildingEnums . Blacksmith :
279
+ //DOESN'T EXIST ANYMORE
280
+ tribe = TribeEnums . Nature ; //Just a dirty hack, since user can't be Nature, he can't build Blacksmith
281
+ break ;
282
+
283
+ case BuildingEnums . Smithy :
284
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 3 } ) ;
285
+ ret . Add ( new ( ) { Building = BuildingEnums . Academy , Level = 1 } ) ;
286
+ break ;
287
+
288
+ case BuildingEnums . TournamentSquare :
289
+ ret . Add ( new ( ) { Building = BuildingEnums . RallyPoint , Level = 15 } ) ;
290
+ break ;
291
+
292
+ case BuildingEnums . MainBuilding :
293
+ break ;
294
+
295
+ case BuildingEnums . RallyPoint :
296
+ break ;
297
+
298
+ case BuildingEnums . Marketplace :
299
+ ret . Add ( new ( ) { Building = BuildingEnums . Warehouse , Level = 1 } ) ;
300
+ ret . Add ( new ( ) { Building = BuildingEnums . Granary , Level = 1 } ) ;
301
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 3 } ) ;
302
+ break ;
303
+
304
+ case BuildingEnums . Embassy :
305
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 1 } ) ;
306
+ break ;
307
+
308
+ case BuildingEnums . Barracks :
309
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 3 } ) ;
310
+ ret . Add ( new ( ) { Building = BuildingEnums . RallyPoint , Level = 1 } ) ;
311
+ break ;
312
+
313
+ case BuildingEnums . Stable :
314
+ ret . Add ( new ( ) { Building = BuildingEnums . Smithy , Level = 3 } ) ;
315
+ ret . Add ( new ( ) { Building = BuildingEnums . Academy , Level = 5 } ) ;
316
+ break ;
317
+
318
+ case BuildingEnums . Workshop :
319
+ ret . Add ( new ( ) { Building = BuildingEnums . Academy , Level = 10 } ) ;
320
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 5 } ) ;
321
+ break ;
322
+
323
+ case BuildingEnums . Academy :
324
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 3 } ) ;
325
+ ret . Add ( new ( ) { Building = BuildingEnums . Barracks , Level = 3 } ) ;
326
+ break ;
327
+
328
+ case BuildingEnums . Cranny :
329
+ break ;
330
+
331
+ case BuildingEnums . TownHall :
332
+ ret . Add ( new ( ) { Building = BuildingEnums . Academy , Level = 10 } ) ;
333
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 10 } ) ;
334
+ break ;
335
+
336
+ case BuildingEnums . Residence :
337
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 5 } ) ; //no palace!
338
+ break ;
339
+
340
+ case BuildingEnums . Palace :
341
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 5 } ) ; //no residence!
342
+ ret . Add ( new ( ) { Building = BuildingEnums . Embassy , Level = 1 } ) ;
343
+ break ;
344
+
345
+ case BuildingEnums . Treasury :
346
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 10 } ) ;
347
+ break ;
348
+
349
+ case BuildingEnums . TradeOffice :
350
+ ret . Add ( new ( ) { Building = BuildingEnums . Stable , Level = 10 } ) ;
351
+ ret . Add ( new ( ) { Building = BuildingEnums . Marketplace , Level = 20 } ) ;
352
+ break ;
353
+
354
+ case BuildingEnums . GreatBarracks :
355
+ ret . Add ( new ( ) { Building = BuildingEnums . Barracks , Level = 20 } ) ; //not capital!
356
+ break ;
357
+
358
+ case BuildingEnums . GreatStable :
359
+ ret . Add ( new ( ) { Building = BuildingEnums . Stable , Level = 20 } ) ; //not capital
360
+ break ;
361
+
362
+ case BuildingEnums . CityWall :
363
+ tribe = TribeEnums . Romans ;
364
+ break ;
365
+
366
+ case BuildingEnums . EarthWall :
367
+ tribe = TribeEnums . Teutons ;
368
+ break ;
369
+
370
+ case BuildingEnums . Palisade :
371
+ tribe = TribeEnums . Gauls ;
372
+ break ;
373
+
374
+ case BuildingEnums . StonemasonsLodge :
375
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 5 } ) ; //capital
376
+ break ;
377
+
378
+ case BuildingEnums . Brewery :
379
+ tribe = TribeEnums . Teutons ;
380
+ ret . Add ( new ( ) { Building = BuildingEnums . Granary , Level = 20 } ) ;
381
+ ret . Add ( new ( ) { Building = BuildingEnums . RallyPoint , Level = 10 } ) ;
382
+ break ;
383
+
384
+ case BuildingEnums . Trapper :
385
+ tribe = TribeEnums . Gauls ;
386
+ ret . Add ( new ( ) { Building = BuildingEnums . RallyPoint , Level = 1 } ) ;
387
+ break ;
388
+
389
+ case BuildingEnums . HerosMansion :
390
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 3 } ) ;
391
+ ret . Add ( new ( ) { Building = BuildingEnums . RallyPoint , Level = 1 } ) ;
392
+ break ;
393
+
394
+ case BuildingEnums . GreatWarehouse :
395
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 10 } ) ; //art/ww vill
396
+ break ;
397
+
398
+ case BuildingEnums . GreatGranary :
399
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 10 } ) ; //art/ww vill
400
+ break ;
401
+
402
+ case BuildingEnums . WW : //ww vill
403
+ tribe = TribeEnums . Nature ; //Just a dirty hack, since user can't be Nature, bot can't construct WW.
404
+ break ;
405
+
406
+ case BuildingEnums . HorseDrinkingTrough :
407
+ ret . Add ( new ( ) { Building = BuildingEnums . RallyPoint , Level = 10 } ) ;
408
+ ret . Add ( new ( ) { Building = BuildingEnums . Stable , Level = 20 } ) ;
409
+ tribe = TribeEnums . Romans ;
410
+ break ;
411
+
412
+ case BuildingEnums . StoneWall :
413
+ tribe = TribeEnums . Egyptians ;
414
+ break ;
415
+
416
+ case BuildingEnums . MakeshiftWall :
417
+ tribe = TribeEnums . Huns ;
418
+ break ;
419
+
420
+ case BuildingEnums . CommandCenter : //no res/palace
421
+ tribe = TribeEnums . Huns ;
422
+ ret . Add ( new ( ) { Building = BuildingEnums . MainBuilding , Level = 5 } ) ;
423
+ break ;
424
+
425
+ case BuildingEnums . Waterworks :
426
+ tribe = TribeEnums . Egyptians ;
427
+ ret . Add ( new ( ) { Building = BuildingEnums . HerosMansion , Level = 10 } ) ;
428
+ break ;
429
+
430
+ default :
431
+ break ;
432
+ }
433
+ return ( tribe , ret ) ;
434
+ }
237
435
}
238
436
}
0 commit comments