package vooga.fighter.model.loaders; import java.awt.Dimension; import java.awt.Rectangle; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import util.Pixmap; import vooga.fighter.model.ModelConstants; import vooga.fighter.model.objects.MouseObject; import vooga.fighter.model.utils.State; /** * Loads the resources necessary for MouseObjects. Reads the data from the file designated * in the path ModelConstants.MOUSELOADER_PATH_TAG. * @author David Le, alanni */ public class MouseLoader extends ObjectLoader { /** * MouseObject to be modified by this loader. */ MouseObject myMouse; /** * Constructs the MouseLoader and sets the reference to the mouse object and points to * the data xml file. * @param mouse MouseObject to modify * @param pathHierarchy The path to the folder containing the game's resources */ public MouseLoader(MouseObject mouse, String pathHierarchy) { super(ModelConstants.MOUSELOADER_PATH_TAG, pathHierarchy); myMouse = mouse; load(ModelConstants.MOUSELOADER_PATH_TAG, pathHierarchy); } /** * Loads resources for the appropriate MouseObject matched by the param mouse * @param mouse Name tag of the mouse to be loaded in the xml file * @param pathHierarchy The path to the folder containing the game's resources */ @Override protected void load(String mouse, String pathHierarchy) { Document doc = getDocument(); NodeList menuNodes = doc.getElementsByTagName(ModelConstants.MOUSE_OBJECT); Element node = (Element) menuNodes.item(0); NodeList states = node.getElementsByTagName(ModelConstants.STATE_PROPERTY); Element state = (Element) states.item(0); String Statename = getAttributeValue(state, ModelConstants.NAME_PROPERTY); NodeList frames = node.getElementsByTagName(ModelConstants.FRAME_PROPERTY); State newState = new State(myMouse, frames.getLength()); Element node1 = (Element) frames.item(0); String imagepathway = getAttributeValue(node1, myMouse.getImageTag()+ModelConstants.IMAGE_PROPERTY); newState.populateImage(new Pixmap(imagepathway), 0); int width = Integer.parseInt((getAttributeValue(node1, ModelConstants.WIDTH_PROPERTY))); int height = Integer.parseInt((getAttributeValue(node1, ModelConstants.HEIGHT_PROPERTY))); Dimension dim = new Dimension(width,height); Rectangle rect = new Rectangle(width,height); newState.populateAllSizes(dim); newState.populateRectangle(rect, 0); myMouse.addState(Statename, newState); myMouse.defineDefaultState(Statename); myMouse.setToDefaultState(); } }