Okay my problem is with this
switch (charType) {
case Mush:
switch (charColor) {
case Blue:
switch (charDirec) {
case Left:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.l_blue_m);
break;
case Right:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.r_blue_m);
break;
case Bounce:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.b_blue_m);
break;
case Walk:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.w_blue_m);
break;
}
break;
case Red:
switch (charDirec) {
case Left:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.l_red_m);
break;
case Right:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.r_red_m);
break;
case Bounce:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.b_red_m);
break;
case Walk:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.w_red_m);
break;
}
case Tan:
switch (charDirec) {
case Left:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.l_tan_m);
break;
case Right:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.r_tan_m);
break;
case Bounce:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.b_tan_m);
break;
case Walk:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.w_tan_m);
break;
}
break;
}
break;
case Slime:
switch (charColor) {
case Blue:
switch (charDirec) {
case Left:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.l_blue_s);
break;
case Right:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.r_blue_s);
break;
case Bounce:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.b_blue_s);
break;
case Walk:
bitmap = (Bitmap) BitmapFactory.decodeResource(
mainContext.getResources(), R.drawable.w_blue_s);
break;
}
break;
}
break;
}
What is a better way to handle this? or is this correct??
You can start by splitting your method into two simpler methods. One method should find the correct resource ID, and the other actually fetches the
Bitmap:This simple change already removes a lot of the duplicated code.
In your
getResourceIdmethod you may want to consider using a map to find the resource id instead of nested switches.All that remains is to populate the dictionary when your program starts.