RenderService.java :  » Game » ulooked-games » com » ulooked » engine » services » Android Open Source

Android Open Source » Game » ulooked games 
ulooked games » com » ulooked » engine » services » RenderService.java
package com.ulooked.engine.services;

import java.util.ArrayList;
import java.util.List;

import android.graphics.PointF;

import com.stickycoding.rokon.*;
import com.ulooked.engine.Entity;
import com.ulooked.engine.GameEngine;
import com.ulooked.engine.commands.AddSceneCommand;
import com.ulooked.engine.commands.AddTextureCommand;
import com.ulooked.engine.commands.Command;
import com.ulooked.engine.commands.ICommandResult;
import com.ulooked.engine.commands.LoadTexturesCommand;
import com.ulooked.engine.commands.RenderCommand;
import com.ulooked.engine.commands.RenderCommandResult;
import com.ulooked.engine.components.ComponentType;
import com.ulooked.engine.components.Render;

public class RenderService implements IService {
  private static ArrayList<Class<? extends Command>> _cmds = new ArrayList<Class<? extends Command>>();
  private TextureAtlas _atlas;
  
  public RenderService() {
    _cmds.add(RenderCommand.class);
    _cmds.add(AddTextureCommand.class);
    _cmds.add(LoadTexturesCommand.class);
    _cmds.add(AddSceneCommand.class);
    _atlas = new TextureAtlas(100);
  }
  
  public ICommandResult process(Command command) {
    if (command.getClass() == RenderCommand.class) {
      Scene currScene = GameEngine.self.getScene();
      
      for (Entity entity : command.getEntities()) {
        if (entity != null && entity.hasComponent(ComponentType.Render)) {          
          Render render = (Render)entity.getComponent(ComponentType.Render);
          Sprite sprite = render.getSprite();          
          currScene.add(render.getZIndex(), sprite);
        }
      }
    } else if (command.getClass() == AddTextureCommand.class) {
      _atlas.insert(((AddTextureCommand)command).getTexture());
    } else if (command.getClass() == LoadTexturesCommand.class) {
      _atlas.complete();
    } else if (command.getClass() == AddSceneCommand.class) {
      AddSceneCommand cmd = (AddSceneCommand)command;
      GameEngine.self.addScene(cmd.getSceneName(), cmd.getScene());
      
      if (cmd.activate())
        GameEngine.self.gameActivity().setScene(cmd.getScene());
    }
    return new RenderCommandResult();
  }

  public List<Class<? extends Command>> handledCommands() {
    return _cmds;
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.