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

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

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.graphics.Point;

import com.ulooked.engine.Entity;
import com.ulooked.engine.GameEngine;
import com.ulooked.engine.commands.CheckCollisionCommand;
import com.ulooked.engine.commands.CheckCollisionResult;
import com.ulooked.engine.commands.Command;
import com.ulooked.engine.commands.ICommandResult;
import com.ulooked.engine.commands.MoveCommand.Direction;

public class CollisionService implements IService {
  private static ArrayList<Class<? extends Command>> _cmds = new ArrayList<Class<? extends Command>>();
  private static final Map<Direction,int[]> _collisionProbes = new HashMap<Direction,int[]>();

  public CollisionService() {
    _cmds.add(CheckCollisionCommand.class);
    _collisionProbes.put(Direction.North, new int[]{0,-1});
    _collisionProbes.put(Direction.South, new int[]{0,1});
    _collisionProbes.put(Direction.East, new int[]{1,0});
    _collisionProbes.put(Direction.West, new int[]{-1,0});
  }
  
  public List<Class<? extends Command>> handledCommands() {
    return _cmds;
  }

  public ICommandResult process(Command command) {
    CheckCollisionResult res = new CheckCollisionResult(null);
    CheckCollisionCommand cmd = (CheckCollisionCommand)command;
    Point pt = cmd.getPos();
    Direction dir = cmd.getDirection();
    Entity currEntity;
    ArrayList<Entity> surroundList = new ArrayList<Entity>();
    
    int[] probe = _collisionProbes.get(dir);  
    currEntity = GameEngine.self.currentMap().getEntity(new Point(pt.x+probe[0],pt.y+probe[1]));
    
    if (currEntity != null) {
      surroundList.add(currEntity);
    }
    res.setSurroundEntities(surroundList);      
    return res;
  }
}
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.