8 |
8 |
9 import org.hedgewars.hedgeroid.R; |
9 import org.hedgewars.hedgeroid.R; |
10 import org.hedgewars.hedgeroid.Datastructures.FrontendDataUtils; |
10 import org.hedgewars.hedgeroid.Datastructures.FrontendDataUtils; |
11 import org.hedgewars.hedgeroid.Datastructures.MapFile; |
11 import org.hedgewars.hedgeroid.Datastructures.MapFile; |
12 import org.hedgewars.hedgeroid.Datastructures.MapRecipe; |
12 import org.hedgewars.hedgeroid.Datastructures.MapRecipe; |
13 import org.hedgewars.hedgeroid.Datastructures.Scheme; |
|
14 import org.hedgewars.hedgeroid.Datastructures.Weaponset; |
|
15 import org.hedgewars.hedgeroid.frontlib.Frontlib; |
13 import org.hedgewars.hedgeroid.frontlib.Frontlib; |
16 |
14 |
17 import android.content.Context; |
15 import android.content.Context; |
18 import android.graphics.drawable.Drawable; |
16 import android.graphics.drawable.Drawable; |
19 import android.os.Bundle; |
17 import android.os.Bundle; |
31 import android.widget.ImageView; |
29 import android.widget.ImageView; |
32 import android.widget.Spinner; |
30 import android.widget.Spinner; |
33 import android.widget.TableRow; |
31 import android.widget.TableRow; |
34 import android.widget.Toast; |
32 import android.widget.Toast; |
35 |
33 |
36 public class MapFragment extends Fragment implements RoomStateManager.Observer { |
34 public class MapFragment extends Fragment { |
37 private Spinner mapTypeSpinner, mapNameSpinner, templateSpinner, mazeSizeSpinner; |
35 private Spinner mapTypeSpinner, mapNameSpinner, templateSpinner, mazeSizeSpinner; |
38 private TableRow nameRow, templateRow, mazeSizeRow; |
36 private TableRow nameRow, templateRow, mazeSizeRow; |
39 private ImageView mapPreview; |
37 private ImageView mapPreview; |
40 private List<MapFile> mapFiles; |
38 private List<MapFile> mapFiles; |
41 private RoomStateManager stateManager; |
39 private RoomStateManager stateManager; |
89 mapTypeSpinner = prepareSpinner(v, R.id.spinMapType, Arrays.asList(getResources().getStringArray(R.array.map_types)), mapTypeSelectedListener); |
87 mapTypeSpinner = prepareSpinner(v, R.id.spinMapType, Arrays.asList(getResources().getStringArray(R.array.map_types)), mapTypeSelectedListener); |
90 mapNameSpinner = prepareSpinner(v, R.id.spinMapName, mapNames, mapNameSelectedListener); |
88 mapNameSpinner = prepareSpinner(v, R.id.spinMapName, mapNames, mapNameSelectedListener); |
91 templateSpinner = prepareSpinner(v, R.id.spinTemplateFilter, Arrays.asList(getResources().getStringArray(R.array.map_templates)), mapTemplateSelectedListener); |
89 templateSpinner = prepareSpinner(v, R.id.spinTemplateFilter, Arrays.asList(getResources().getStringArray(R.array.map_templates)), mapTemplateSelectedListener); |
92 mazeSizeSpinner = prepareSpinner(v, R.id.spinMazeSize, Arrays.asList(getResources().getStringArray(R.array.map_maze_sizes)), mazeSizeSelectedListener); |
90 mazeSizeSpinner = prepareSpinner(v, R.id.spinMazeSize, Arrays.asList(getResources().getStringArray(R.array.map_maze_sizes)), mazeSizeSelectedListener); |
93 |
91 |
94 stateManager.registerObserver(this); |
92 stateManager.addListener(roomStateChangeListener); |
95 currentMap = stateManager.getMapRecipe(); |
93 currentMap = stateManager.getMapRecipe(); |
96 if(currentMap != null) { |
94 if(currentMap != null) { |
97 updateDisplay(currentMap); |
95 updateDisplay(currentMap); |
98 } |
96 } |
99 setChiefState(stateManager.getChiefStatus()); |
97 setChiefState(stateManager.getChiefStatus()); |
122 |
120 |
123 @Override |
121 @Override |
124 public void onDestroy() { |
122 public void onDestroy() { |
125 super.onDestroy(); |
123 super.onDestroy(); |
126 mapPreviewHandler.stop(); |
124 mapPreviewHandler.stop(); |
127 stateManager.unregisterObserver(this); |
125 stateManager.removeListener(roomStateChangeListener); |
128 } |
126 } |
129 |
127 |
130 private void setChiefState(boolean chiefState) { |
128 private void setChiefState(boolean chiefState) { |
131 mapTypeSpinner.setEnabled(chiefState); |
129 mapTypeSpinner.setEnabled(chiefState); |
132 mapNameSpinner.setEnabled(chiefState); |
130 mapNameSpinner.setEnabled(chiefState); |
205 mapNameSpinner.setSelection(random.nextInt(mapNameSpinner.getCount())); |
203 mapNameSpinner.setSelection(random.nextInt(mapNameSpinner.getCount())); |
206 } |
204 } |
207 } |
205 } |
208 }; |
206 }; |
209 |
207 |
210 public void onChiefStatusChanged(boolean isChief) { |
208 private final RoomStateManager.Listener roomStateChangeListener = new RoomStateManager.ListenerAdapter() { |
211 setChiefState(isChief); |
209 @Override |
212 } |
210 public void onChiefStatusChanged(boolean isChief) { |
213 |
211 setChiefState(isChief); |
214 public void onMapChanged(MapRecipe recipe) { |
212 }; |
215 if(currentMap==null |
213 |
216 || currentMap.mapgen != recipe.mapgen |
214 @Override |
217 || currentMap.mazeSize != recipe.mazeSize |
215 public void onMapChanged(MapRecipe recipe) { |
218 || !currentMap.name.equals(recipe.name) |
216 if(currentMap==null |
219 || !currentMap.seed.equals(recipe.seed) |
217 || currentMap.mapgen != recipe.mapgen |
220 || currentMap.templateFilter != recipe.templateFilter |
218 || currentMap.mazeSize != recipe.mazeSize |
221 || !Arrays.equals(currentMap.getDrawData(), recipe.getDrawData())) { |
219 || !currentMap.name.equals(recipe.name) |
222 mapPreviewHandler.activity(); |
220 || !currentMap.seed.equals(recipe.seed) |
223 } |
221 || currentMap.templateFilter != recipe.templateFilter |
224 updateDisplay(recipe); |
222 || !Arrays.equals(currentMap.getDrawData(), recipe.getDrawData())) { |
225 currentMap = recipe; |
223 mapPreviewHandler.activity(); |
226 } |
224 } |
227 |
225 updateDisplay(recipe); |
228 public void onGameStyleChanged(String gameStyle) { } |
226 currentMap = recipe; |
229 public void onSchemeChanged(Scheme scheme) { } |
227 }; |
230 public void onWeaponsetChanged(Weaponset weaponset) { } |
228 }; |
231 |
229 |
232 private MapPreviewGenerator.Listener mapPreviewListener = new MapPreviewGenerator.Listener() { |
230 private MapPreviewGenerator.Listener mapPreviewListener = new MapPreviewGenerator.Listener() { |
233 public void onMapPreviewResult(Drawable preview) { |
231 public void onMapPreviewResult(Drawable preview) { |
234 if(newPreviewRequest != null) { |
232 if(newPreviewRequest != null) { |
235 MapPreviewGenerator.startPreviewGeneration(getActivity().getApplicationContext(), newPreviewRequest, mapPreviewListener); |
233 MapPreviewGenerator.startPreviewGeneration(getActivity().getApplicationContext(), newPreviewRequest, mapPreviewListener); |