1+ import bwapi .*;
2+ import bwem .BWEM ;
3+
4+ import java .util .Arrays ;
5+ import java .util .stream .Collectors ;
6+
7+ class MapTester extends DefaultBWListener {
8+ private static BWClient client ;
9+
10+ public void onStart () {
11+ Game game = MapTester .client .getGame ();
12+
13+ final String mapHash = game .mapHash ();
14+
15+ MapData mapData = null ;
16+ try {
17+ BWEM bwem = new BWEM (game );
18+ bwem .initialize ();
19+ bwem .getMap ().assignStartingLocationsToSuitableBases ();
20+ mapData = new MapData (
21+ game .mapName (),
22+ game .getStartLocations ().size (),
23+ bwem .getMap ().getAreas ().size (),
24+ bwem .getMap ().getBases ().size (),
25+ bwem .getMap ().getChokePoints ().size ()
26+ );
27+ }
28+ catch (Exception e ) {
29+ //TODO Write to file here
30+ System .err .println (e );
31+ System .out .println (
32+ Arrays
33+ .stream (e .getStackTrace ())
34+ .map (StackTraceElement ::toString )
35+ .collect (Collectors .joining ("\n " ))
36+ );
37+ }
38+
39+ // if (MapKnowledge.knowledge.containsKey(mapHash)) {
40+ // MapData expected = MapKnowledge.knowledge.get(mapHash);
41+ // if ( ! expected.equals(mapData)) {
42+ // //TODO Write to file here
43+ // System.out.println("Expected: " + expected + ", but got: " + mapData);
44+ // }
45+ // else {
46+ // // Success, (probably) nothing broke.
47+ // }
48+
49+ System .out .println ("New map [" + mapHash + "]: " + mapData );
50+ game .leaveGame ();
51+ }
52+
53+ public static void main (String [] args ) {
54+ client = new BWClient (new MapTester ());
55+ client .startGame ();
56+ }
57+
58+ class MapData {
59+ private final String name ;
60+ private final int startLocationsAmount ;
61+ private final int areaAmount ;
62+ private final int basesAmount ;
63+ private final int chokeAmount ;
64+
65+ MapData (String name , int startLocationsAmount , int areaAmount , int basesAmount , int chokeAmount ) {
66+ this .name = name ;
67+ this .startLocationsAmount = startLocationsAmount ;
68+ this .areaAmount = areaAmount ;
69+ this .basesAmount = basesAmount ;
70+ this .chokeAmount = chokeAmount ;
71+ }
72+
73+ public boolean equals (Object o ) {
74+ if (this == o ) return true ;
75+ if (o == null || getClass () != o .getClass ()) return false ;
76+ MapData mapData = (MapData ) o ;
77+ return startLocationsAmount == mapData .startLocationsAmount &&
78+ areaAmount == mapData .areaAmount &&
79+ basesAmount == mapData .basesAmount &&
80+ chokeAmount == mapData .chokeAmount &&
81+ name .equals (mapData .name );
82+ }
83+
84+ public String toString () {
85+ return "MapData{" +
86+ "name='" + name + '\'' +
87+ ", startLocationsAmount=" + startLocationsAmount +
88+ ", areaAmount=" + areaAmount +
89+ ", basesAmount=" + basesAmount +
90+ ", chokeAmount=" + chokeAmount +
91+ '}' ;
92+ }
93+ }
94+ }
0 commit comments