Package

Source Code of Conversor

/**
* Este programa pode ser utilizado para gerar uma lista de itens, monstros, informações sobre jogadores
* e outras coisas mais complexas como criar um histórico de tudo que acontece no jogo. Por enquanto só
* estou trabalhando nas classes.
* Estando feitas as classe qualquer um poderá dar sua contribuição... fazendo uma classe que explora
* um aspécto X nos dados do jogo.
*
* @data 10/05/2010
* @author Diogo_RBG - http://diogorbg.blogspot.com/
*/

import java.io.PrintStream;
import java.util.Collections;
import java.util.Comparator;

import parserTXT.Comando;
import parserTXT.Item;
import parserTXT.Parser;
import parserTXT.Script;
import parserTXT.Token;
import parserTXT.Token.TipoToken;

public class Conversor {

  static PrintStream out = System.out;

  public static void main (String args[]) {

    Parser itens = new Parser();
    try {
      itens.carregarItens("../../db/item_db.txt");
    } catch (Exception e) {
      e.printStackTrace();
    }

    try{
      gerarGrupoItensXML(itens);
      //tabelaItens();
    }catch (Exception e) {
      e.printStackTrace();
    }
  }

  private static void gerarGrupoItensXML(Parser itens) {
    Item item = null;

    Comparator<Item> comparator = new Comparator<Item>() {
      public int compare(Item a, Item b) {
        try {
          if( a.getTipo().equals(b.getTipo()) ) {
            if( a.getLoc().equals( b.getLoc() ) ) {
              return Integer.valueOf(a.getId()).compareTo( Integer.valueOf(b.getId()) );
            }
            return Integer.valueOf(a.getLoc()).compareTo( Integer.valueOf(b.getLoc()) );
          }
          return Integer.valueOf(a.getTipo()).compareTo( Integer.valueOf(b.getTipo()) );
        } catch(Exception e) {
          return -1;
        }
      }
    };
    Collections.sort(itens.getItens(), comparator);

    String tipo = "";
    String loc = "";

    out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
    out.println("<items>");
    itens.initIterator();
    while( itens.seProx() ) {
      item = itens.getProx();
      if( item.getTipo().equals(tipo)==false || item.getLoc().equals(loc)==false ){
        if(tipo.equals("")==false)
          out.println("\t</group>");
        out.println("\t<group type=\""+item.getTipo()+( item.getLoc().length()!=0?"-"+item.getLoc():"" )+"\" id=\"\" name=\"\" desc=\"\">");
        tipo = item.getTipo();
        loc = item.getLoc();
      }
      out.print("\t\t<item");
      out.print(" id=\""+item.getId()+"\"");
      out.print(" name=\""+item.getDesc()+"\"");
      try {
        if( Integer.valueOf(item.getId()).intValue()>=3000 )
          out.print(" tmwbr=\"true\"");
      } catch(Exception e) {
      }
      out.println("/>");
    }
    out.println("\t</group>");
    out.println("</items>");
  }

  /**
   * Esta função apenas gera um exemplo para testes. Quando os códigos estiverem prontos ele irão carregar diretaente dos arquivos do eAthena.
   */
  public static Parser geraExemplo(){
    Parser parser = new Parser();

    //512,biscoitoGengibre,biscoitoGengibre,0,50,25,1,,,,,,2,,,0,,{ itemheal 25,0; },{}
    Script uso = new Script();
    Script eqp = new Script();
    Comando cmd = new Comando();
    cmd.addToken( new Token(TipoToken.CMD, "itemheal") );
    cmd.addToken( new Token(TipoToken.NUM, "25") );
    cmd.addToken( new Token(TipoToken.NUM, "0") );
    uso.addComando(cmd);
    Object[] item1 = {"512", "biscoitoGengibre", "biscoitoGengibre" , "0", "50", "25" , "1", "", "", "", "", "", "2", "", "", "0", "", uso, eqp};

    //3046,verdadeiroTrevo,Verdadeiro Trevo,5,50000,25000,10,,,,5,0,2,8,,0,0,{},{ bonus bLuk, 10; bonus bMdef, 25; }
    uso = new Script();
    eqp = new Script();
    cmd = new Comando();
    cmd.addToken( new Token(TipoToken.CMD, "bonus") );
    cmd.addToken( new Token(TipoToken.VAR, "bLuk") );
    cmd.addToken( new Token(TipoToken.NUM, "10") );
    eqp.addComando(cmd);
    cmd = new Comando();
    cmd.addToken( new Token(TipoToken.CMD, "bonus") );
    cmd.addToken( new Token(TipoToken.VAR, "bMdef") );
    cmd.addToken( new Token(TipoToken.NUM, "25") );
    eqp.addComando(cmd);
    Object[] item2 = {"3046", "verdadeiroTrevo", "Verdadeiro Trevo", "5", "50000", "25000", "10", "", "", "", "5", "0", "2", "8", "", "0", "0", uso, eqp};

    parser.addItem(new Item(item1));
    parser.addItem(new Item(item2));

    return parser;
  }

  public static void tabelaItens(){
    Item item = null;
    String str = null;
    Script script = null;
    Comando cmd = null;

    //Parser itens = geraExemplo();
    Parser itens = new Parser();
    try {
      //itens.carregarItens("item_db.txt");
      itens.carregarItens("../../db/item_db.txt");
    } catch (Exception e) {
      e.printStackTrace();
    }
    int[] cols = { Item.ID, Item.NOME, Item.DESC, Item.TIPO, Item.COMP, Item.VEND, Item.USO, Item.EQP };

    out.println("| ID | NOME | DESCRICAO | TIPO | COMPRA | VENDA | USO | EQUIP |");
    itens.initIterator();
    while( itens.seProx() ) {
      item = itens.getProx();
      out.print("|");
      for(int i=0; i<cols.length; i++){

        // Quando for do tipo String:
        str = item.getColString( cols[i] );
        if( str!=null ){
          out.print(" "+str+" |");
        }

        // Quando for do tipo Script:
        script = item.getColScript( cols[i] );
        if( script!=null ){
          script.initIterator();
          while( script.seProx() ){
            cmd = script.getProx();
            if( cmd.getComando().equals("itemheal") ){
              if( !cmd.getString(1).equals("0") )
                out.print(" HP: +" +cmd.getString(1));
              if( !cmd.getString(2).equals("0") )
                out.print(" MP: +" +cmd.getString(2));
            }else if( cmd.getComando().equals("bonus") ){
              if( cmd.getString(1).equals("bLuk") ){
                out.print(" Sorte: +" +cmd.getString(2));
              }else if( cmd.getString(1).equals("bMdef") ){
                out.print(" Def.Mag: +" +cmd.getString(2));
              }else
                out.print(" +");
            }else{
              out.print(" *");
            }
          }
          out.print(" |");
        }
      }
      out.println();
    }
  }

}
TOP

Related Classes of Conversor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.