package mapmaker;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import util.*;
public class MapFactory {
public static final Object
type_DescRoom = "DescRoom",
type_VirtualRoom = "VirtualRoom";
public Room createRoom(AreaMap map, Object roomType) {
if (roomType == type_VirtualRoom)
return new VirtualRoom(map);
if (roomType == type_DescRoom)
return new DescRoom(map);
return null;
} // createRoom
public Link createLink(AreaMap map,
Room room1, int exit1,
Room room2, int exit2) {
return new Link(map, room1, exit1, room2, exit2);
} // createLink
public Link createLink(AreaMap map, Link orgLink) {
return new Link(map, orgLink);
} // createLink
/** sets up a working MVC pattern and returns a MapMVC
* object containing its elements;
*/
public static ExtendedMapMVC createMapMVC() {
Observable obs = new MyObservable();
CMap map = new CMap(20, 15, obs);
MapEventHandler controller = new SimpleHandler(map);
MapGraphics view = new MapGraphics(map, controller);
JMap Jview = new JMap(obs, view);
JComponent mapViewJStyle = new JScrollPane(Jview);
DescViewer descViewer = new DescViewer(map);
obs.addObserver(descViewer);
// put mapView and descView into one Component
JComponent viewJStyle = new JPanel();
// add map view and description view from top to bottom
viewJStyle.setLayout(new BoxLayout(viewJStyle, BoxLayout.Y_AXIS));
viewJStyle.add(mapViewJStyle);
viewJStyle.add(new JScrollPane(descViewer));
// add listener for hotkeys
Jview.addKeyListener(new HotkeyListener(descViewer));
return new ExtendedMapMVC(map, viewJStyle, controller, view);
} // createMapMCV
} // MapFactory