Package cz.cuni.mff.abacs.burglar.logics.objects.agents

Source Code of cz.cuni.mff.abacs.burglar.logics.objects.agents.Burglar

/**
*
*/
package cz.cuni.mff.abacs.burglar.logics.objects.agents;

import cz.cuni.mff.abacs.burglar.logics.DataMap;
import cz.cuni.mff.abacs.burglar.logics.objects.BaseInterface;
import cz.cuni.mff.abacs.burglar.logics.objects.BaseObject;
import cz.cuni.mff.abacs.burglar.logics.objects.Room;
import cz.cuni.mff.abacs.burglar.logics.objects.items.Inventory;
import cz.cuni.mff.abacs.burglar.logics.objects.items.Item;
import cz.cuni.mff.abacs.burglar.logics.objects.positions.Position;


/**
* The protagonist of the game.
*
* @author abacs
*
*/
public class Burglar extends BaseAgent implements Agent {
 
 
  /** Whether he is hidden from security cameras. */
  protected boolean _isDisguised = false;
 
 
  // -------------------------------------------------------------------------
  // constructors:
 
 
  /**
   *
   *
   * @param id
   * @param position
   * @param aim
   * @param itemIdToCollect
   */
  public Burglar(
      int id,
      Position position,
      Room aim,
      int itemIdToCollect,
      DataMap referenceMap
  ) {
    super(
        id,
        BaseObject.Type.BURGLAR,
        position,
        new BurglarGoal(aim.getId(), itemIdToCollect),
        referenceMap
    );
  }
 
 
  /**
   *
   *
   * @param original
   * @param referenceMap
   */
  protected Burglar(Burglar original, DataMap referenceMap) {
    super(original, referenceMap);
    this._isDisguised = original._isDisguised;
   
    this._goals = new BurglarGoal((BurglarGoal)original._goals);
  }
 
 
  // -------------------------------------------------------------------------
 
 
  /**
   * Sets him hidden, or reveals him.
   */
  public void setIsDisguised(boolean isDisguised) {
    this._isDisguised = isDisguised;
  }
 
 
  /**
   * Is he hidden from cameras?
   */
  public boolean isDisguised() {
    return this._isDisguised;
  }
 
 
  // -------------------------------------------------------------------------
 
 
  /**
   * Sets the aim of the burglar where it has to reach to finish the level.
   *
   * @param roomId identifier of the room
   */
  public void setAimId(int roomId) {
    ((BurglarGoal)(this._goals)).setAimId(roomId);
 
 
 
  /**
   * Which room the burglar has to reach in order to finish the level.
   *
   * @return room identifier
   */
  public int getAimId() {
    return ((BurglarGoal)(this._goals)).getAimId();
  }
 
 
  /**
   * Sets the treasure id to collect.
   */
  public void setItemIdToCollect(int itemId) {
    ((BurglarGoal)(this._goals)).setItemIdToCollect(itemId);
  }
 
 
  /**
   * Returns the treasure id to collect.
   */
  public int getItemIdToCollect() {
    return ((BurglarGoal)(this._goals)).getItemIdToCollect();
  }
 
 
  // -------------------------------------------------------------------------
 
 
  /**
   * Checks whether the goals are completed.
   */
  public boolean isSatisfied() {
    return this._goals.isSatisfied(this);
  }
 
 
  // -------------------------------------------------------------------------
 
 
  @Override
  public void addItem(Item item) {
    super.addItem(item);
    if(item.isTypeOf(Type.UNIFORM))
      this._isDisguised = true;
  }
 
 
  @Override
  public boolean pickUp(Inventory inventory, Item item) {
    boolean result = super.pickUp(inventory, item);
    if(result && item.isTypeOf(Type.UNIFORM))
      this._isDisguised = true;
    return result;
  }
 
 
  @Override
  public Item removeItem(int id) {
    Item result = super.removeItem(id);
    if(result != null && result.isTypeOf(Type.UNIFORM))
      this._isDisguised = false;
    return result;
  }
 
 
  // -------------------------------------------------------------------------
 
 
  @Override
  public void copyChangeables(Agent original) {
   
    assert(original.isTypeOf(BaseInterface.Type.BURGLAR));
   
    super.copyChangeables((BaseAgent)original);
  }
 
 
  @Override
  public Agent copy(DataMap reference) {
    return new Burglar(this, reference);
  }
 
}
TOP

Related Classes of cz.cuni.mff.abacs.burglar.logics.objects.agents.Burglar

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.