📄 separadatosobjetosnw.java
字号:
/*
GAEM - Graphical Adventure Engine for Mobiles (version 0.1)
Copyright (C) 2005 Victor Borrull
This file is part of GAEM.
GAEM is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
GAEM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program;
if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/** Esta clase llama a {@link CanvasJuego#leeFichero(String) CanvasJuego.leeFichero(String)} para leer el fichero y luego separa los datos.
* Para separar los datos de los Objetos existen 2 metodos:<br>
* - {@link #separaDatosObjetosNW(String, int, int, CanvasJuego) separaDatosObjetosNW(String, int, int, CanvasJuego)}<br>
* - {@link #separaDatosObjetosNW(String, CanvasJuego) separaDatosObjetosNW(String, CanvasJuego)}
* <p>El primerosirve para extraer un solo Obj y el segundo para extraer todos los Objs. El segundo llama al primero y le pasa -1 como
* n鷐ero de Obj y n鷐ero de mapa.
*/
public class SeparaDatosObjetosNW {
/**Char de datos leido.*/
private char letrita;
/**Cadena resultado de ir concatenando la variable {@link #letrita letrita}.*/
private String cadena;
/**Cuenta las <i>letras separadoras<i> (char) leidas.*/
private int contadorDeLetritas;
/**Campo leyendose actualmente.*/
private int numeroDeCampo;
/**Columna de Obj.*/
private int oCol;
/**Fila de Obj.*/
private int oRow;
/**N鷐ero de estados.*/
private int oEst;
/**Descripci髇.*/
private String oDesc;
/**Ruta al fichero de la imagen.*/
private String oImg;
/**Propiedad cogible.*/
private boolean oCogible;
/**Frase al coger/no coger.*/
private String oFraseCogido;
/**Posici髇 en lista del Objeto usable.*/
private int oUsable;
/**Estado del Objeto usable.*/
private int oUsableEnEstado;
/**Mapa del Objeto usable.*/
private int oNumeroMapa;
/**Frase de error si son usables pero no en este estado.*/
private String oFraseError;
/**Frase de uso del estado anterior.*/
private String oFrase;
/**蚽dice de array para canvas.listaObjetos[].*/
private int numeroObj;
/**N鷐ero de estado para a馻dir nuevo estado en su posici髇.*/
private int numeroEstado;
/**N鷐ero de campo donde comienzan a definirse los estados posteriores al cero.*/
private int comienzoEstado;
/**N鷐ero de campo final.*/
private int finDePropiedades;
/**<code>true</code> si es est醫ico, <code>false</code> si es animado.*/
private boolean objetoEstatico;
/**<code>true</code> si es clave, <code>false</code> si no lo es.*/
private boolean oObjetoClave;
/**Mapa destino al que conduce un Obj clave.*/
private int oMapaDestino;
/**Comprueba si se ha guardado el mapa destino del Obj clave y hay que pasar al siguiente campo, o si no se ha guardado y hay que guardarlo.*/
private boolean mapaDestinoGuardado;
/**Columna destino del Obj clave.*/
private int oKCol;
/**Fila destino del Obj clave.*/
private int oKRow;
/** Obj retornado por {@link #separaDatosObjetosNW(String, int, int, CanvasJuego) separaDatosObjetosNW(String, int, int, CanvasJuego)}. Si el m閠odo se invoca desde
* {@link #separaDatosObjetosNW(String, CanvasJuego) separaDatosObjetosNW(String, CanvasJuego)}, retorno vale {@link CanvasJuego#vacio CanvasJuego.vacio}.*/
private Obj retorno;
/**Almacena el fichero leido.*/
private String str;
/**Constructor vac韔.*/
public SeparaDatosObjetosNW() {
}
/**Inicializa las variables.*/
public void inicializa() {
letrita = ' ';
cadena = "";
oDesc = "";
oImg = "";
oFraseCogido = "";
oFraseError = "";
oFrase = "";
contadorDeLetritas = 0;
oCol = 0;
oRow = 0;
oUsable = 0;
oUsableEnEstado = 0;
oNumeroMapa = 0;
numeroObj = 0;
numeroEstado = 0;
oMapaDestino = 0;
numeroDeCampo = 1;
oEst = 1;
oCogible = true;
objetoEstatico = true;
oObjetoClave = false;
mapaDestinoGuardado = false;
oKCol = -1;
oKRow = -1;
comienzoEstado = 10;
finDePropiedades = 18;
}
/** Separa datos de Objs del mapa. Llama a {@link #separaDatosObjetosNW(String, int, int, CanvasJuego) separaDatosObjetosNW(String, int, int, CanvasJuego)} y le
* pasa -1 como numero de objeto y -1 como numero de mapa.
* @param path Ruta al fichero de Objs.
* @param canvas Referencia al CanvasJuego.
*/
public void separaDatosObjetosNW(String path, CanvasJuego canvas){
retorno = canvas.vacio;
separaDatosObjetosNW(path, -1, -1, canvas);
}
/** Separa datos de Obj(s) de mapa. Puede elegirse el n鷐ero de Obj a cargar y el mapa al que pertenece para que devuelva
* susodicho Obj, o pasarle -1 como esos par醡etros para que cargue y haga las llamadas para crear todos los Objetos de un mapa.
* @param path Ruta del fichero a leer.
* @param numObj Posici髇 en lista del Objeto a extraer.
* @param numMapa N鷐ero de mapa al que pertenece el Objeto.
* @return Obj a extraer u Obj vac韔 si el m閠odo se invocaba desde {@link #separaDatosObjetosNW(String, CanvasJuego) separaDatosObjetosNW(String, CanvasJuego)}.
*/
public Obj separaDatosObjetosNW(String path, int numObj, int numMapa, CanvasJuego canvas) {
inicializa();
str = canvas.fichero.leeFichero(path);
for (int i = 0; i < str.length(); i++) {
letrita = str.charAt(i);
if (letrita == '|') {
contadorDeLetritas++;
if (contadorDeLetritas == 1) {
if (numMapa == -1 & numObj == -1) {
canvas.listaObjetos = new Obj[Integer.parseInt(cadena)];
}
} else {
try {
switch (numeroDeCampo) {
case 1:
if (numeroObj == numObj) { //el que viene es el ke se guarda
numMapa = -1;
} else if ((numeroObj == numObj + 1) & numeroObj != 0) { //el anterior al ke viene era el guardado
i = str.length();
break;
}
if (cadena.equals("a")) { //objeto animado!
objetoEstatico = false;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -