/** * Copyright (C) 2013-2014 Project-Vethrfolnir * * This program 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 3 of the License, or * (at your option) any later version. * * This program 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, see <http://www.gnu.org/licenses/>. */ package com.vethrfolnir.gen; import java.io.*; import java.util.ArrayList; import com.fasterxml.jackson.databind.ObjectWriter; import com.vethrfolnir.game.templates.npc.NpcTemplate; /** * @author Vlad * */ public class GenMonsters { public static void main(String[] args) throws Exception { try (BufferedReader br = new BufferedReader(new InputStreamReader(Class.class.getResourceAsStream("/Monster.txt")))) { ArrayList<NpcTemplate> templates = new ArrayList<>(); while(br.ready()) { String line = br.readLine().replaceAll("\\t{2,9}", " "); if(line.isEmpty() || line.startsWith("//") || line.endsWith("end")) continue; String[] split = line.split("\\t"); NpcTemplate template = new NpcTemplate(); int ptr = 0; template.NpcId = Integer.parseInt(split[ptr++]); // No Integer.parseInt(split[ptr++]); // Rate template.Name = split[ptr++].replace("\"", ""); // Name template.Level = Integer.parseInt(split[ptr++]); //Lvl template.HP = Integer.parseInt(split[ptr++]); template.MP = Integer.parseInt(split[ptr++]); template.MinDmg = Integer.parseInt(split[ptr++]); template.MaxDmg = Integer.parseInt(split[ptr++]); template.PDef = Integer.parseInt(split[ptr++]); template.MagDef = Integer.parseInt(split[ptr++]); template.Attack = Integer.parseInt(split[ptr++]); template.Success = Integer.parseInt(split[ptr++]); template.MoveAble = Integer.parseInt(split[ptr++]); template.AtkType = Integer.parseInt(split[ptr++]); template.AtkRange = Integer.parseInt(split[ptr++]); template.VisRange = Integer.parseInt(split[ptr++]); template.MovSpeed = Integer.parseInt(split[ptr++]); template.AtkSpeed = Integer.parseInt(split[ptr++]); template.RegenTime = Integer.parseInt(split[ptr++]); template.Attrib = Integer.parseInt(split[ptr++]); template.ItemRate = Integer.parseInt(split[ptr++]); template.MoneyRate = Integer.parseInt(split[ptr++]); template.MaxIS = Integer.parseInt(split[ptr++]); template.RWind = Integer.parseInt(split[ptr++]); template.RPois = Integer.parseInt(split[ptr++]); template.RIce = Integer.parseInt(split[ptr++]); template.RWtr = Integer.parseInt(split[ptr++]); template.RFire = Integer.parseInt(split[ptr++]); templates.add(template); } ObjectWriter writer = GenData.getWriter(); new File("./dist/GameServer/system/static/npc/").mkdirs(); File file = new File("./dist/GameServer/system/static/npc/npc-data.json"); file.createNewFile(); writer.writeValue(new FileOutputStream(file), templates); // warm-up templates = GenData.asArrayList(new FileInputStream(file), GenData.getMapper(), NpcTemplate.class); long t1 = System.currentTimeMillis(); templates = GenData.asArrayList(new FileInputStream(file), GenData.getMapper(), NpcTemplate.class); long end = System.currentTimeMillis(); for (int i = 0; i < templates.size(); i++) { NpcTemplate t = templates.get(i); System.out.println(t); } System.out.println("Parsed: "+templates.size()+ " in "+(end - t1)+" ms - about 150 w/o worm up"); } } }