/**
     * Create an Obstacle in the scene (generally used on first load).
     */
    virtual protected void CreateObstacle(string buildingTypeId, GridPosition pos)
    {
        if (!types.ContainsKey(buildingTypeId))
        {
            Debug.LogWarning("Tried to create an obstacle with an invalid ID");
            return;
        }
        BuildingTypeData type = types[buildingTypeId];

        if (!type.isObstacle)
        {
            Debug.LogError("Tried to create an obstacle with non-obstacle building data");
            return;
        }
        GameObject go = (GameObject)Instantiate(buildingPrefab);

        go.transform.parent = gameView.transform;
        Building obstacle = go.GetComponent <Building>();

        obstacle.Init(type, pos);
        BuildingModeGrid.GetInstance().AddObjectAtPosition(obstacle, pos);
        buildings.Add(obstacle.uid, obstacle);
        obstacle.Acknowledge();
        if ((int)saveMode < (int)SaveMode.SAVE_MOSTLY)
        {
            PersistenceManager.GetInstance().Save();
        }
    }
 /**
  * Acknowledge building changing it from READY
  * to BUILT.
  */
 virtual public bool AcknowledgeBuilding(Building building)
 {
     if (building.State == BuildingState.READY)
     {
         building.Acknowledge();
         buildings.Add(building.uid, building);
         buildingsInProgress.Remove(building);
         if ((int)saveMode < (int)SaveMode.SAVE_NEVER)
         {
             PersistenceManager.GetInstance().Save();
         }
         return(true);
     }
     return(false);
 }