Advertisement
egyware

Untitled

Apr 16th, 2015
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.78 KB | None | 0 0
  1. package com.egysoft.gdx.assets.loaders;
  2.  
  3. import com.apollo.BehaviorTemplate;
  4. import com.badlogic.gdx.assets.AssetDescriptor;
  5. import com.badlogic.gdx.assets.AssetLoaderParameters;
  6. import com.badlogic.gdx.assets.AssetManager;
  7. import com.badlogic.gdx.assets.loaders.FileHandleResolver;
  8. import com.badlogic.gdx.assets.loaders.SynchronousAssetLoader;
  9. import com.badlogic.gdx.files.FileHandle;
  10. import com.badlogic.gdx.utils.Array;
  11. import com.badlogic.gdx.utils.Json;
  12. import com.badlogic.gdx.utils.SerializationException;
  13. import com.badlogic.gdx.utils.Json.Serializer;
  14. import com.badlogic.gdx.utils.reflect.ClassReflection;
  15. import com.badlogic.gdx.utils.reflect.ReflectionException;
  16. import com.badlogic.gdx.utils.JsonValue;
  17. import com.egysoft.gdx.assets.EntityBuilder;
  18.  
  19. /**
  20.  * @author egyware
  21.  *
  22.  */
  23. public class EntityBuilderLoader extends SynchronousAssetLoader<EntityBuilder, EntityBuilderLoader.EntityBuilderParameter>
  24. {
  25.     public static Json json = new Json();  
  26.     static
  27.     {
  28.         json.setSerializer(EntityBuilder.class, new EntityBuilderSerializer());
  29.     }
  30.     public EntityBuilderLoader(FileHandleResolver resolver)
  31.     {
  32.         super(resolver);       
  33.     }
  34.    
  35.     @Override
  36.     @SuppressWarnings("rawtypes")
  37.     public Array<AssetDescriptor> getDependencies(String fileName, FileHandle file, EntityBuilderParameter parameter)
  38.     {
  39.         return null;
  40.     }
  41.    
  42.     @Override
  43.     public EntityBuilder load(AssetManager assetManager, String fileName, FileHandle file, EntityBuilderParameter parameter)
  44.     {
  45.         return json.fromJson(EntityBuilder.class, file);
  46.     }
  47.  
  48.     public static class EntityBuilderParameter extends AssetLoaderParameters<EntityBuilder>
  49.     {
  50.         //TODO nada todavía por diseñar :D
  51.     }
  52.  
  53.    
  54.     @SuppressWarnings("rawtypes")
  55.     private static class EntityBuilderSerializer implements Serializer<EntityBuilder>
  56.     {
  57.         @Override
  58.         public void write(Json json, EntityBuilder object,  Class knownType)
  59.         {          
  60.         }
  61.  
  62.         @Override
  63.         public EntityBuilder read(Json json, JsonValue jsonData, Class type)
  64.         {
  65.             EntityBuilder entityBuilder = new EntityBuilder();
  66.             json.readField(entityBuilder, "defaultValue", jsonData);
  67.             json.readField(entityBuilder, "name", jsonData);
  68.            
  69.             JsonValue behaviorsData = jsonData.get("behaviors");
  70.             BehaviorTemplate behaviors[] = new BehaviorTemplate[behaviorsData.size];
  71.             int index = 0;
  72.             for(JsonValue behavior:behaviorsData)
  73.             {
  74.                 try
  75.                 {
  76.                     String className = String.format("com.apollo.behaviors.%sBehavior$Template", behavior.name);
  77.                     Class<?> classType = ClassReflection.forName(className);
  78.                     behaviors[index++] = (BehaviorTemplate) json.readValue(classType, behavior);                   
  79.                 }
  80.                 catch (ReflectionException ex)
  81.                 {
  82.                     throw new SerializationException(ex);
  83.                 }              
  84.             }
  85.             entityBuilder.behaviors = behaviors;
  86.            
  87.             return entityBuilder;
  88.         }      
  89.     }
  90.    
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement