/**
* $RCSfile: ,v $
* $Revision: $
* $Date: $
*
* Copyright (C) 2004-2011 Jive Software. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package battleship.types;
import java.awt.Image;
import javax.swing.ImageIcon;
public enum Ship {
EMPTY("empty.png"), TWO("2.png"), THREE("3.png"), THREE2("3.png"), FOUR("4.png"), FIVE("5.png");
private String image;
private Ship(String s) {
image = s;
}
public ImageIcon getImage() {
ClassLoader cl = getClass().getClassLoader();
return new ImageIcon(cl.getResource(image));
}
public static Ship valueOf(int x) {
switch (x) {
case 2:
return TWO;
case 3:
return THREE;
case 4:
return THREE2;
case 5:
return FOUR;
case 6:
return FIVE;
default:
return EMPTY;
}
}
/**
* Returns the Position inside the Array
* @return
*/
public int inArrayPosition() {
switch (this) {
case TWO:
return 0;
case THREE:
return 1;
case THREE2:
return 2;
case FOUR:
return 3;
case FIVE:
return 4;
default:
return 0;
}
}
/**
* Returns the Occupying Fields
* @return
*/
public int getFields() {
switch (this) {
case TWO:
return 2;
case THREE:
return 3;
case THREE2:
return 3;
case FOUR:
return 4;
case FIVE:
return 5;
}
return 0;
}
public ImageIcon getScaledInstance(int w, int h, int hints) {
Image img = getImage().getImage();
return new ImageIcon(img.getScaledInstance(w, h, hints));
}
/**
* Returns the next Bigger Ship<br>
* 2 -> 3.1 -> 3.2 -> 4 -> 5 -> 2.....
*
* @return
*/
public Ship increment() {
switch (this) {
case TWO:
return THREE;
case THREE:
return THREE2;
case THREE2:
return FOUR;
case FOUR:
return FIVE;
case FIVE:
return TWO;
}
return TWO;
}
}