/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tools;
import handling.RecvPacketOpcode;
import handling.SendPacketOpcode;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Itzik
*/
public class ConvertOpcodes {
public static void main(String[] args) {
boolean decimal;
boolean positive;
String recvopsName;
String sendopsName;
Scanner input = new Scanner(System.in);
if (args != null) {
try {
decimal = Boolean.parseBoolean(args[0]);
} catch (Exception e) {
decimal = false;
}
try {
positive = Boolean.parseBoolean(args[1]);
} catch (Exception e) {
positive = false;
}
try {
recvopsName = args[2] + ".properties";
} catch (Exception e) {
recvopsName = "recvops.properties";
}
try {
sendopsName = args[3] + ".properties";
} catch (Exception e) {
sendopsName = "sendops.properties";
}
} else {
System.out.println("歡迎使用包頭轉換器 \r\n你可以選擇十六進制或者十進制的包頭值, \r\n然後它們會被保存到新的檔案中");
//RecvPacketOpcode.reloadValues();
//SendPacketOpcode.reloadValues();
System.out.println("你想轉換成多少進制? 16 還是 10?");
decimal = "10".equals(input.next().toLowerCase());
System.out.println("輸出檔案為正序請出入1,其他則為倒序");
positive = "1".equals(input.next().toLowerCase());
System.out.println("\r\n輸入你要儲存的用戶端包頭值檔案名字(輸入1為recvops): \r\n");
recvopsName = input.next();
if (recvopsName.equals("1")) {
recvopsName = "recvops.properties";
} else {
recvopsName += ".properties";
}
System.out.println("\r\n輸入你要儲存的伺服端包頭值檔案名字(輸入1為sendops): \r\n");
sendopsName = input.next();
if (sendopsName.equals("1")) {
sendopsName = "sendops.properties";
} else {
sendopsName += ".properties";
}
}
StringBuilder sb = new StringBuilder();
FileOutputStream out;
try {
RecvPacketOpcode.loadValues();
out = new FileOutputStream(recvopsName, false);
for (RecvPacketOpcode recv : RecvPacketOpcode.values()) {
if (positive) {
sb.append(recv.name()).append(" = ").append(decimal ? recv.getValue() : HexTool.getOpcodeToString(recv.getValue())).append("\r\n");
} else {
sb.insert(0, "\r\n").insert(0, decimal ? recv.getValue() : HexTool.getOpcodeToString(recv.getValue())).insert(0, " = ").insert(0, recv.name());
}
}
out.write(sb.toString().getBytes());
out.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(ConvertOpcodes.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ConvertOpcodes.class.getName()).log(Level.SEVERE, null, ex);
}
sb = new StringBuilder();
try {
SendPacketOpcode.loadValues();
out = new FileOutputStream(sendopsName, false);
for (SendPacketOpcode send : SendPacketOpcode.values()) {
if (positive) {
sb.append(send.name()).append(" = ").append(decimal ? send.getValue(false) : HexTool.getOpcodeToString(send.getValue(false))).append("\r\n");
} else {
sb.insert(0, "\r\n").insert(0, decimal ? send.getValue(false) : HexTool.getOpcodeToString(send.getValue(false))).insert(0, " = ").insert(0, send.name());
}
}
out.write(sb.toString().getBytes());
out.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(ConvertOpcodes.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ConvertOpcodes.class.getName()).log(Level.SEVERE, null, ex);
}
}
}