Added a check for team count to prevent the engine from crashes when starting with <2 teams + changed the text in the Teams selection menu hedgeroid
authorXeli
Sun, 21 Aug 2011 18:14:49 +0200
branchhedgeroid
changeset 5625 9add7b92c5f0
parent 5623 df23b477609d
child 5627 ce2d92589cbc
Added a check for team count to prevent the engine from crashes when starting with <2 teams + changed the text in the Teams selection menu
project_files/Android-build/SDL-android-project/res/layout/team_selector.xml
project_files/Android-build/SDL-android-project/res/values/strings.xml
project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/StartGameActivity.java
project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/TeamSelectionActivity.java
--- a/project_files/Android-build/SDL-android-project/res/layout/team_selector.xml	Sun Aug 21 18:13:11 2011 +0200
+++ b/project_files/Android-build/SDL-android-project/res/layout/team_selector.xml	Sun Aug 21 18:14:49 2011 +0200
@@ -28,8 +28,7 @@
   	android:layout_alignTop="@id/btnBack"
   	android:layout_margin="3dp"
   	android:gravity="center"
-  	android:background="@drawable/box"
-  	android:text="bla"/>
+  	android:background="@drawable/box"/>
   	
   
 
--- a/project_files/Android-build/SDL-android-project/res/values/strings.xml	Sun Aug 21 18:13:11 2011 +0200
+++ b/project_files/Android-build/SDL-android-project/res/values/strings.xml	Sun Aug 21 18:14:49 2011 +0200
@@ -29,6 +29,11 @@
     <string name="start_filter">Filter</string>
     <string name="start_themes">Themes</string>
     
+    
+    
+    <!-- Teams -->
+    <string name="not_enough_teams">Not enough teams</string>
+    <string name="teams_info_template">Selected teams = %d</string>
     <!-- Settings -->
     <string name="name">Name</string>
     <string name="name_default">Unnamed</string>
--- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/StartGameActivity.java	Sun Aug 21 18:13:11 2011 +0200
+++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/StartGameActivity.java	Sun Aug 21 18:14:49 2011 +0200
@@ -19,8 +19,6 @@
 
 package org.hedgewars.mobile;
 
-import java.util.ArrayList;
-
 import org.hedgewars.mobile.EngineProtocol.FrontendDataUtils;
 import org.hedgewars.mobile.EngineProtocol.GameConfig;
 import org.hedgewars.mobile.EngineProtocol.Map;
@@ -30,12 +28,9 @@
 
 import android.app.Activity;
 import android.content.Intent;
-import android.content.SharedPreferences;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.Parcelable;
-import android.preference.PreferenceManager;
-import android.util.Log;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.AdapterView;
@@ -44,6 +39,7 @@
 import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.Spinner;
+import android.widget.Toast;
 
 public class StartGameActivity extends Activity {
 
@@ -57,19 +53,20 @@
 	public void onCreate(Bundle savedInstanceState){
 		super.onCreate(savedInstanceState);
 
-		SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
-
+		//SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
+		//Copy all the xml files to the device TODO only do first time launch of the app...
 		Utils.resRawToFilesDir(this,R.array.schemes, Scheme.DIRECTORY_SCHEME);
 		Utils.resRawToFilesDir(this, R.array.weapons, Weapon.DIRECTORY_WEAPON);
 		Scheme.parseBasicFlags(this);
+
 		config = new GameConfig();
 
 		setContentView(R.layout.starting_game);
-		
+
 		back = (ImageButton) findViewById(R.id.btnBack);
 		team = (ImageButton) findViewById(R.id.btnTeams);
 		start = (ImageButton) findViewById(R.id.btnStart);
-		
+
 		maps = (Spinner) findViewById(R.id.spinMaps);
 		gameplay = (Spinner) findViewById(R.id.spinGameplay);
 		gamescheme = (Spinner) findViewById(R.id.spinGamescheme);
@@ -82,7 +79,7 @@
 		start.setOnClickListener(startClicker);
 		back.setOnClickListener(backClicker);
 		team.setOnClickListener(teamClicker);
-		
+
 		ArrayAdapter<?> adapter = new ArrayAdapter<Map>(this, R.layout.listview_item, FrontendDataUtils.getMaps(this));
 		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 		maps.setAdapter(adapter);
@@ -110,6 +107,12 @@
 
 	}
 
+	private void startTeamsActivity(){
+		Intent i = new Intent(StartGameActivity.this, TeamSelectionActivity.class);
+		i.putParcelableArrayListExtra("teams", config.teams);
+		startActivityForResult(i, ACTIVITY_TEAM_SELECTOR);
+	}
+	
 	public void onActivityResult(int requestCode, int resultCode, Intent data){
 		switch(requestCode){
 		case ACTIVITY_TEAM_SELECTOR:
@@ -119,13 +122,13 @@
 				for(Parcelable t : parcelables){
 					config.teams.add((Team)t);
 				}
-				
+
 			}
 			break;
 		}
 	}
-	
-	
+
+
 	private OnItemSelectedListener themesClicker = new OnItemSelectedListener(){
 
 		public void onItemSelected(AdapterView<?> arg0, View view, int position, long rowId) {
@@ -152,13 +155,13 @@
 		}
 
 	};
-	
+
 	private OnItemSelectedListener weaponClicker = new OnItemSelectedListener(){
 		public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
 			config.weapon = (Weapon)arg0.getAdapter().getItem(arg2);
 		}
 		public void onNothingSelected(AdapterView<?> arg0) {
-			
+
 		}
 	};
 	private OnItemSelectedListener schemeClicker = new OnItemSelectedListener(){
@@ -166,7 +169,7 @@
 			config.scheme = (Scheme)arg0.getAdapter().getItem(arg2);
 		}
 		public void onNothingSelected(AdapterView<?> arg0) {
-			
+
 		}
 	};
 	private OnItemSelectedListener gameplayClicker = new OnItemSelectedListener(){
@@ -174,29 +177,32 @@
 			//config = ()arg0.getAdapter().getItem(arg2);
 		}
 		public void onNothingSelected(AdapterView<?> arg0) {
-			
+
 		}
 	};
-	
+
 	private OnClickListener startClicker = new OnClickListener(){
 		public void onClick(View v) {
-			Intent i = new Intent(StartGameActivity.this, SDLActivity.class);
-			i.putExtra("config", config);
-			startActivity(i);
+			if(config.teams.size() < 2){
+				Toast.makeText(StartGameActivity.this, R.string.not_enough_teams, Toast.LENGTH_LONG).show();
+				startTeamsActivity();
+			}
+			else{
+				Intent i = new Intent(StartGameActivity.this, SDLActivity.class);
+				i.putExtra("config", config);
+				startActivity(i);}
 		}
 	};
-	
+
 	private OnClickListener backClicker = new OnClickListener(){
 		public void onClick(View v) {
 			finish();
 		}
 	};
-	
+
 	private OnClickListener teamClicker = new OnClickListener(){
 		public void onClick(View v) {
-			Intent i = new Intent(StartGameActivity.this, TeamSelectionActivity.class);
-			i.putParcelableArrayListExtra("teams", config.teams);
-			startActivityForResult(i, ACTIVITY_TEAM_SELECTOR);
+			startTeamsActivity();
 		}
 	};
 
--- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/TeamSelectionActivity.java	Sun Aug 21 18:13:11 2011 +0200
+++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/mobile/TeamSelectionActivity.java	Sun Aug 21 18:14:49 2011 +0200
@@ -43,6 +43,7 @@
 import android.widget.RelativeLayout;
 import android.widget.SimpleAdapter;
 import android.widget.SimpleAdapter.ViewBinder;
+import android.widget.TextView;
 
 public class TeamSelectionActivity extends Activity{
 
@@ -51,6 +52,7 @@
 	private ImageButton addTeam, back;
 	private ListView availableTeams, selectedTeams;
 	private ArrayList<HashMap<String, Object>> availableTeamsList, selectedTeamsList;
+	private TextView txtInfo;
 	private int minTeams = 2;
 
 	public void onCreate(Bundle savedInstanceState){
@@ -60,7 +62,8 @@
 
 		addTeam = (ImageButton) findViewById(R.id.btnAdd);
 		back = (ImageButton) findViewById(R.id.btnBack);
-
+        txtInfo = (TextView) findViewById(R.id.txtInfo);
+        
 		addTeam.setOnClickListener(addTeamClicker);
 		back.setOnClickListener(backClicker);
 
@@ -90,6 +93,7 @@
 		selectedTeams.setAdapter(adapter);
 		selectedTeams.setOnItemClickListener(selectedClicker);
 
+		txtInfo.setText(String.format(getResources().getString(R.string.teams_info_template), selectedTeams.getChildCount()));
 	}
 
 	private ViewBinder viewBinder = new ViewBinder(){
@@ -218,6 +222,8 @@
 			selectedTeamsList.remove(position);
 			((SimpleAdapter)availableTeams.getAdapter()).notifyDataSetChanged();
 			((SimpleAdapter)selectedTeams.getAdapter()).notifyDataSetChanged();
+			
+			txtInfo.setText(String.format(getResources().getString(R.string.teams_info_template), selectedTeamsList.size()));
 		}
 
 	};
@@ -266,6 +272,8 @@
 		availableTeamsList.remove(position);
 		((SimpleAdapter)availableTeams.getAdapter()).notifyDataSetChanged();
 		((SimpleAdapter)selectedTeams.getAdapter()).notifyDataSetChanged();
+		
+		txtInfo.setText(String.format(getResources().getString(R.string.teams_info_template), selectedTeamsList.size()));
 	}
 
 	private void returnTeams(){