package com.tutego.insel.game.vj;

import java.util.ArrayList;
import java.util.Collection;

class Maze
{
  ArrayList<GameObject> gameObjects = new ArrayList<GameObject>();

  Collection<String> getGameObjectNames()
  {
    ArrayList<String> result = new ArrayList<String>();

    for ( GameObject go : gameObjects )
      result.add( go.name );

    return result;
  }

  GameObject getGameObjectByName( String opName )
  {
    for ( GameObject go : gameObjects )
      if ( go.name.equalsIgnoreCase( opName ) )
          return go;

    return null;
  }

  String use( String sentence )
  {
    String[] split = sentence.split( "\\s+" );

    if ( split.length >= 2 )
    {
      GameObject go1 = getGameObjectByName( split[0] );

      if ( go1 == null )
        return "Subjekt nicht bekannt!";

      GameOperation op = go1.getOperationByName( split[1] );

      if ( op == null )
        return "Operation ist nicht bekannt!";

      GameObject go2 = null;

      if ( split.length == 3 )
      {
        go2 = getGameObjectByName( split[2] ); 

        if ( go2 == null )
          return "Objekt nicht bekannt!";
      }

      return op.apply( go1, go2 );
    }
    return "Kein gültiger Satz!";
  }
}