34 import org.hedgewars.hedgeroid.Datastructures.Scheme; |
34 import org.hedgewars.hedgeroid.Datastructures.Scheme; |
35 import org.hedgewars.hedgeroid.Datastructures.Schemes; |
35 import org.hedgewars.hedgeroid.Datastructures.Schemes; |
36 import org.hedgewars.hedgeroid.Datastructures.TeamInGame; |
36 import org.hedgewars.hedgeroid.Datastructures.TeamInGame; |
37 import org.hedgewars.hedgeroid.Datastructures.Weaponset; |
37 import org.hedgewars.hedgeroid.Datastructures.Weaponset; |
38 import org.hedgewars.hedgeroid.Datastructures.Weaponsets; |
38 import org.hedgewars.hedgeroid.Datastructures.Weaponsets; |
|
39 import org.hedgewars.hedgeroid.util.FileUtils; |
39 |
40 |
40 import android.app.Activity; |
41 import android.app.Activity; |
41 import android.content.Intent; |
42 import android.content.Intent; |
42 import android.graphics.drawable.Drawable; |
43 import android.graphics.drawable.Drawable; |
43 import android.os.Bundle; |
44 import android.os.Bundle; |
44 import android.util.Log; |
|
45 import android.view.View; |
45 import android.view.View; |
46 import android.view.View.OnClickListener; |
46 import android.view.View.OnClickListener; |
47 import android.widget.AdapterView; |
47 import android.widget.AdapterView; |
48 import android.widget.AdapterView.OnItemSelectedListener; |
48 import android.widget.AdapterView.OnItemSelectedListener; |
49 import android.widget.ArrayAdapter; |
49 import android.widget.ArrayAdapter; |
68 |
74 |
69 back = (ImageButton) findViewById(R.id.btnBack); |
75 back = (ImageButton) findViewById(R.id.btnBack); |
70 team = (ImageButton) findViewById(R.id.btnTeams); |
76 team = (ImageButton) findViewById(R.id.btnTeams); |
71 start = (ImageButton) findViewById(R.id.btnStart); |
77 start = (ImageButton) findViewById(R.id.btnStart); |
72 |
78 |
73 maps = (Spinner) findViewById(R.id.spinMaps); |
|
74 gameplay = (Spinner) findViewById(R.id.spinGameplay); |
|
75 gamescheme = (Spinner) findViewById(R.id.spinGamescheme); |
|
76 weapons = (Spinner) findViewById(R.id.spinweapons); |
|
77 themes = (Spinner) findViewById(R.id.spinTheme); |
|
78 |
|
79 themeIcon = (ImageView) findViewById(R.id.imgTheme); |
79 themeIcon = (ImageView) findViewById(R.id.imgTheme); |
80 mapPreview = (ImageView) findViewById(R.id.mapPreview); |
80 mapPreview = (ImageView) findViewById(R.id.mapPreview); |
81 teamCount = (ImageView) findViewById(R.id.imgTeamsCount); |
81 teamCount = (ImageView) findViewById(R.id.imgTeamsCount); |
82 |
82 |
83 start.setOnClickListener(startClicker); |
83 start.setOnClickListener(startClicker); |
84 back.setOnClickListener(backClicker); |
84 back.setOnClickListener(backClicker); |
85 team.setOnClickListener(teamClicker); |
85 team.setOnClickListener(teamClicker); |
86 |
86 |
87 List<MapFile> mapFiles; |
|
88 try { |
87 try { |
89 mapFiles = FrontendDataUtils.getMaps(this); |
88 mapFiles = FrontendDataUtils.getMaps(this); |
90 } catch (FileNotFoundException e) { |
89 styles = FrontendDataUtils.getGameStyles(this); |
91 Log.e("StartGameActivity", e.getMessage(), e); |
90 schemes = Schemes.loadAllSchemes(this); |
92 mapFiles = Collections.emptyList(); |
91 weaponsets = Weaponsets.loadAllWeaponsets(this); |
93 } |
92 themes = FrontendDataUtils.getThemes(this); |
94 ArrayAdapter<?> adapter = new ArrayAdapter<MapFile>(this, R.layout.listview_item, mapFiles); |
93 } catch (IOException e) { |
|
94 Toast.makeText(getApplicationContext(), R.string.error_missing_sdcard_or_files, Toast.LENGTH_LONG).show(); |
|
95 finish(); |
|
96 } |
|
97 |
|
98 Collections.sort(mapFiles, MapFile.MISSIONS_FIRST_NAME_ORDER); |
|
99 Collections.sort(styles, String.CASE_INSENSITIVE_ORDER); |
|
100 Collections.sort(schemes, Scheme.NAME_ORDER); |
|
101 Collections.sort(weaponsets, Weaponset.NAME_ORDER); |
|
102 Collections.sort(themes, String.CASE_INSENSITIVE_ORDER); |
|
103 |
|
104 List<String> mapNames = MapFile.toDisplayNameList(mapFiles, getResources()); |
|
105 List<String> schemeNames = Schemes.toNameList(schemes); |
|
106 List<String> weaponsetNames = Weaponsets.toNameList(weaponsets); |
|
107 View rootView = findViewById(android.R.id.content); |
|
108 mapSpinner = prepareSpinner(rootView, R.id.spinMaps, mapNames, mapsClicker); |
|
109 styleSpinner = prepareSpinner(rootView, R.id.spinGameplay, styles, null); |
|
110 schemeSpinner = prepareSpinner(rootView, R.id.spinGamescheme, schemeNames, null); |
|
111 weaponsetSpinner = prepareSpinner(rootView, R.id.spinweapons, weaponsetNames, null); |
|
112 themeSpinner = prepareSpinner(rootView, R.id.spinTheme, themes, themesClicker); |
|
113 |
|
114 // set map to first nonmission |
|
115 for(int i = 0; i < mapFiles.size(); i++){ |
|
116 if(!mapFiles.get(i).isMission){ |
|
117 mapSpinner.setSelection(i, false); |
|
118 break; |
|
119 } |
|
120 } |
|
121 styleSpinner.setSelection(styles.indexOf(GameConfig.DEFAULT_STYLE), false); |
|
122 schemeSpinner.setSelection(schemeNames.indexOf(GameConfig.DEFAULT_SCHEME), false); |
|
123 weaponsetSpinner.setSelection(weaponsetNames.indexOf(GameConfig.DEFAULT_WEAPONSET), false); |
|
124 themeSpinner.setSelection(themes.indexOf(GameConfig.DEFAULT_THEME), false); |
|
125 } |
|
126 |
|
127 private static Spinner prepareSpinner(View v, int id, List<String> items, OnItemSelectedListener itemSelectedListener) { |
|
128 Spinner spinner = (Spinner)v.findViewById(id); |
|
129 ArrayAdapter<String> adapter = new ArrayAdapter<String>(v.getContext(), R.layout.listview_item, items); |
95 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
130 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
96 maps.setAdapter(adapter); |
131 spinner.setAdapter(adapter); |
97 maps.setOnItemSelectedListener(mapsClicker); |
132 spinner.setOnItemSelectedListener(itemSelectedListener); |
98 //set to first nonmission |
133 return spinner; |
99 for(int i = 0; i < adapter.getCount(); i++){ |
134 } |
100 if(!((MapFile)adapter.getItem(i)).isMission){ |
135 |
101 maps.setSelection(i, false); |
|
102 break; |
|
103 } |
|
104 } |
|
105 |
|
106 List<String> gameStyles; |
|
107 try { |
|
108 gameStyles = FrontendDataUtils.getGameStyles(this); |
|
109 } catch (FileNotFoundException e) { |
|
110 Log.e("StartGameActivity", e.getMessage(), e); |
|
111 gameStyles = Collections.emptyList(); |
|
112 } |
|
113 adapter = new ArrayAdapter<String>(this, R.layout.listview_item, gameStyles); |
|
114 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
|
115 gameplay.setAdapter(adapter); |
|
116 //set to first nonmap |
|
117 for(int i = 0; i < adapter.getCount(); i++){ |
|
118 if(((String)adapter.getItem(i)).equals("None")){ |
|
119 gameplay.setSelection(i, false); |
|
120 break; |
|
121 } |
|
122 } |
|
123 |
|
124 List<Scheme> schemes; |
|
125 try { |
|
126 schemes = new ArrayList<Scheme>(Schemes.loadAllSchemes(this).values()); |
|
127 } catch (IOException e) { |
|
128 Log.e("StartGameActivity", e.getMessage(), e); |
|
129 schemes = Collections.emptyList(); |
|
130 } |
|
131 adapter = new ArrayAdapter<Scheme>(this, R.layout.listview_item, schemes); |
|
132 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
|
133 gamescheme.setAdapter(adapter); |
|
134 for(int i = 0; i < adapter.getCount(); i++){ |
|
135 if(((Scheme)adapter.getItem(i)).name.equals("Default")){ |
|
136 gamescheme.setSelection(i, false); |
|
137 break; |
|
138 } |
|
139 } |
|
140 |
|
141 List<Weaponset> weaponsets; |
|
142 try { |
|
143 weaponsets = Weaponsets.loadAllWeaponsets(this); |
|
144 } catch(IOException e) { |
|
145 Log.e("StartGameActivity", e.getMessage(), e); |
|
146 weaponsets = Collections.emptyList(); |
|
147 } |
|
148 adapter = new ArrayAdapter<Weaponset>(this, R.layout.listview_item, weaponsets); |
|
149 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
|
150 weapons.setAdapter(adapter); |
|
151 for(int i = 0; i < adapter.getCount(); i++){ |
|
152 if(((Weaponset)adapter.getItem(i)).name.equals("Crazy")){ |
|
153 weapons.setSelection(i, false); |
|
154 break; |
|
155 } |
|
156 } |
|
157 |
|
158 List<String> themeList; |
|
159 try { |
|
160 themeList = FrontendDataUtils.getThemes(this); |
|
161 } catch(FileNotFoundException e) { |
|
162 Log.e("StartGameActivity", e.getMessage(), e); |
|
163 themeList = Collections.emptyList(); |
|
164 } |
|
165 adapter = new ArrayAdapter<String>(this, R.layout.listview_item, themeList); |
|
166 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
|
167 themes.setAdapter(adapter); |
|
168 themes.setOnItemSelectedListener(themesClicker); |
|
169 } |
|
170 |
|
171 private void startTeamsActivity(){ |
136 private void startTeamsActivity(){ |
172 Intent i = new Intent(StartGameActivity.this, TeamSelectionActivity.class); |
137 Intent i = new Intent(StartGameActivity.this, TeamSelectionActivity.class); |
173 TeamSelectionActivity.activityParams = new ArrayList<TeamInGame>(teams); |
138 TeamSelectionActivity.activityParams = new ArrayList<TeamInGame>(teams); |
174 startActivityForResult(i, ACTIVITY_TEAM_SELECTOR); |
139 startActivityForResult(i, ACTIVITY_TEAM_SELECTOR); |
175 } |
140 } |
221 public void onClick(View v) { |
186 public void onClick(View v) { |
222 if(teams.size() < 2) { |
187 if(teams.size() < 2) { |
223 Toast.makeText(getApplicationContext(), R.string.not_enough_teams, Toast.LENGTH_LONG).show(); |
188 Toast.makeText(getApplicationContext(), R.string.not_enough_teams, Toast.LENGTH_LONG).show(); |
224 startTeamsActivity(); |
189 startTeamsActivity(); |
225 } else { |
190 } else { |
226 String style = (String)gameplay.getSelectedItem(); |
191 String style = styles.get(styleSpinner.getSelectedItemPosition()); |
227 Scheme scheme = (Scheme)gamescheme.getSelectedItem(); |
192 Scheme scheme = schemes.get(schemeSpinner.getSelectedItemPosition()); |
228 String mapName = ((MapFile)maps.getSelectedItem()).name; |
193 String mapName = mapFiles.get(mapSpinner.getSelectedItemPosition()).name; |
229 String theme = (String)themes.getSelectedItem(); |
194 String theme = themes.get(themeSpinner.getSelectedItemPosition()); |
230 MapRecipe map = MapRecipe.makeMap(mapName, UUID.randomUUID().toString(), theme); |
195 MapRecipe map = MapRecipe.makeMap(mapName, UUID.randomUUID().toString(), theme); |
231 Weaponset weaponset = (Weaponset)weapons.getSelectedItem(); |
196 Weaponset weaponset = weaponsets.get(weaponsetSpinner.getSelectedItemPosition()); |
232 SDLActivity.startConfig = new GameConfig(style, scheme, map, teams, weaponset); |
197 SDLActivity.startConfig = new GameConfig(style, scheme, map, teams, weaponset); |
|
198 SDLActivity.startNetgame = false; |
233 Intent i = new Intent(StartGameActivity.this, SDLActivity.class); |
199 Intent i = new Intent(StartGameActivity.this, SDLActivity.class); |
234 startActivity(i); |
200 startActivity(i); |
235 } |
201 } |
236 } |
202 } |
237 }; |
203 }; |