package com.rpsg.rpg.view; import com.badlogic.gdx.Input; import com.badlogic.gdx.graphics.g2d.Batch; import com.rpsg.rpg.controller.GameMenuController; import com.rpsg.rpg.controller.MapController; import com.rpsg.rpg.core.Game; import com.rpsg.rpg.core.Log; import com.rpsg.rpg.ui.view.View; import com.rpsg.rpg.view.game.FG; import com.rpsg.rpg.view.game.MessageBox; /** * GDX-RPG 游戏视窗<br> */ public class GameView extends View{ /**地图*/ public MapController map; /**对话框*/ public MessageBox msg; /**立绘*/ public FG fg; /**菜单*/ public GameMenuController menu; public void create() { Game.view = this; stage = Game.stage(); //载入地图 map = new MapController(); map.load(Game.archive.get().mapName); //init //添加输入处理 addProcessor(msg = new MessageBox()); fg = new FG(); menu = new GameMenuController(); Log.i("Game-view[created]"); } public void draw() { Batch batch = stage.getBatch(); if(map.renderable && map.loaded()){ map.draw(batch);//画地图 stage.draw();//画UI } fg.draw(batch); msg.draw(batch); } public void act() { map.act(); stage.act(); } public void onRemove() { //当视窗被移除时,代表已经不玩游戏了,将存档卸载 Game.archive.clear(); //将地图控制器卸载 map.dispose(); //卸载游戏菜单 menu.dispose(); Game.view = null; Log.i("Game-view[disposed]"); } @Override public boolean keyDown(int keycode) { if (keycode == Input.Keys.ESCAPE) menu.show(); return super.keyDown(keycode); } public void resize() { map.resize(); super.resize(); } }