Package com.l2client.util

Source Code of com.l2client.util.PartSetManager

package com.l2client.util;

import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.HashMap;
import java.util.HashSet;

import com.l2client.model.PartSet;

public final class PartSetManager {
  private static final String ROOT_ENTITY = "entity";

  private static PartSetManager singleton = null;
 
  HashMap<String, PartSet> sets = new HashMap<String, PartSet>();
  HashSet<String> entityTemplates = new HashSet<String>();
 
  /**
   * singleton private constructor
   */
  private PartSetManager() {
    singleton = this;
  }
 
  public void loadParts(String megaSet){
    try {
      LineNumberReader reader = new LineNumberReader(new InputStreamReader(PartSetManager.class.getClassLoader().getResourceAsStream(
          megaSet)));
      String row = reader.readLine();
      while(row != null){
        addPartSets(row);
        row = reader.readLine();
      }
      reader.close();
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
 
  private void addPartSets(String row) {
    String[] token = row.split(";");

    PartSet last = getCreatePart(token[0]);
    PartSet top = last;
    for(int i = 1; i<token.length; i++){
      PartSet next =  last.getPart(token[i]);
      if(next == null)
        next = new PartSet(token[i]);

//      if(i==token.length-2)
//        last.setDetail(token[i+1]);
     
      last.setPart(next);
      last = next;     
    }
   
    sets.put(token[0], top);
    if(ROOT_ENTITY.equals(token[0]))
      entityTemplates.add(token[1]);
  }
 
  private PartSet getCreatePart(String id){
    PartSet set = sets.get(id);
    if(set == null){
      set = new PartSet(id);
    }
    return set;
  }
 
 
//  private void addPartSetsOld(String row){
//    String[] token = row.split(";");
//   
//    if(token.length>=4){
//    PartSet set = sets.get(token[0]+token[2]);
//    if(set == null){
//      if(token[0].startsWith("anim"))
//        set = new AnimPartSet(token[0]+token[2]);
//      else
//        set = new PartSet(token[0]+token[2]);
//    }
//    set.setVariant(token[3], token.length>4?token[4]:"");
//    sets.put(set.getName(), set);
//    }
//   
//    if(token.length>=3){
//    PartSet detail = sets.get(token[0]+token[1]);//mesh or anim or etc..
//    if(detail == null)
//      detail = new PartSet(token[0]+token[1]);
//   
//    detail.setVariant(token[2], token[0]+token[2]);
//    sets.put(detail.getName(), detail);
//    }
//   
//    if(token.length>=1){
//    PartSet actor = sets.get(token[0]);
//    if(actor == null)
//      actor = new PartSet(token[0]);
//   
//    actor.setVariant(token[1], token[0]+token[1]);
//    sets.put(actor.getName(), actor);
//   
//    templates.add(token[0]);
//    }
//   
//   
//  }


  /**
   * Fetch the singleton instance (created in case not done so far)
   *
   * @return The instance
   */
  public static PartSetManager get() {
    if (singleton != null)
      return singleton;
    else {
      return new PartSetManager();
    }
  }
 
  public PartSet getPart(String partset){
    return sets.get(partset);
  }
 
  /**
   * returns a list of the currently loaded templates
   * @return Array of distnct Strings of template names
   */
  public String[] getTemplates(){
    if(entityTemplates != null)
      return entityTemplates.toArray(new String[entityTemplates.size()]);
    else
      return new String[0];
  }
}
TOP

Related Classes of com.l2client.util.PartSetManager

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.