public void restart()
 {
     boat.reset();
     fromCoast.reset();
     toCoast.reset();
     for (int i = 0; i < 6; i++)
     {
         var mc   = characters[i];
         var _pos = fromCoast.getEmptyPosition();
         mc.setPosition(_pos);
         mc.getOnCoast(fromCoast.getGameobj(), _pos, CharacterPosition.From);
         fromCoast.addCharacter(mc);
     }
 }
    public void loadResources()
    {
        GameObject water = Instantiate(Resources.Load("Perfabs/Water", typeof(GameObject)), water_pos, Quaternion.identity, null) as GameObject;

        water.name = "water";
        fromCoast  = new CoastController(new Vector3(9, 1, 0));
        toCoast    = new CoastController(new Vector3(-9, 1, 0));
        for (int i = 0; i < 6; i++)
        {
            MyCharacterController mc;
            if (i < 3)
            {
                mc = new MyCharacterController(CharacterType.Devil);
            }
            else
            {
                mc = new MyCharacterController(CharacterType.Priest);
            }
            characters[i] = mc;
            var _pos = fromCoast.getEmptyPosition();
            mc.setPosition(_pos);
            mc.getOnCoast(fromCoast.getGameobj(), _pos, CharacterPosition.From);
            fromCoast.addCharacter(mc);
        }
        boat          = new BoatController(boatFromPosition, boatToPosition);
        userGui.state = GameState.NotWin;
        actionManager = gameObject.AddComponent <CCActionManager>() as CCActionManager;
    }
 public void characterClick(MyCharacterController c)
 {
     if (userGui.state != GameState.NotWin)
     {
         return;
     }
     if (c.pos == CharacterPosition.From)
     {
         if (boat.getBoatPos() == BoatState.From && boat.getEmptyIndex() != -1)
         {
             var _pos = boat.getEmptyPosition();
             c.getOnBoat(boat.getGameobj(), _pos);
             fromCoast.removeCharacter(c);
             boat.GetOnBoat(c);
             actionManager.moveCharacter(c.getGameobj(), _pos);
         }
     }
     else if (c.pos == CharacterPosition.To)
     {
         if (boat.getBoatPos() == BoatState.To && boat.getEmptyIndex() != -1)
         {
             var _pos = boat.getEmptyPosition();
             c.getOnBoat(boat.getGameobj(), _pos);
             toCoast.removeCharacter(c);
             boat.GetOnBoat(c);
             actionManager.moveCharacter(c.getGameobj(), _pos);
         }
     }
     else
     {
         if (boat.getBoatPos() == BoatState.From)
         {
             var _pos = fromCoast.getEmptyPosition();
             c.getOnCoast(fromCoast.getGameobj(), _pos, CharacterPosition.From);
             fromCoast.addCharacter(c);
             boat.GetOffBoat(c);
             actionManager.moveCharacter(c.getGameobj(), _pos);
         }
         else
         {
             var _pos = toCoast.getEmptyPosition();
             c.getOnCoast(toCoast.getGameobj(), _pos, CharacterPosition.To);
             toCoast.addCharacter(c);
             boat.GetOffBoat(c);
             actionManager.moveCharacter(c.getGameobj(), _pos);
         }
     }
     if (toCoast.getEmptyIndex() == -1)
     {
         userGui.state = GameState.Win;
     }
 }