void Start()
    {
        stateInformation = new StateInformation();
        interfaceManager = InterfaceManager.GetInstance();
        prefabsManager   = PrefabsManager.GetInstance();
        levelController  = LevelController.instance;
        levelDataManager = LevelDataManager.GetInstance();

        startupModule           = (IStartupModule)StartupModule.GetInstance();
        objectDeletionModule    = (IObjectDeletionModule)ObjectDeletionModule.GetInstance();
        objectPlacementModule   = (IObjectPlacementModule)ObjectPlacementModule.GetInstance();
        objectEditingModule     = (IObjectEditingModule)ObjectEditingModule.GetInstance();
        objectInformationModule = (IObjectInformationModule)ObjectInformationModule.GetInstance();


        GameObject leftMouseButtonObject = Instantiate(mouseButtonPrefab, transform);

        leftMouseButton = leftMouseButtonObject.GetComponent <MouseButton>();
        GameObject rightMouseButtonObject = Instantiate(mouseButtonPrefab, transform);

        rightMouseButton = rightMouseButtonObject.GetComponent <MouseButton>();

        leftMouseButton.Setup(0, mouseButtonLeftPressedTime);
        rightMouseButton.Setup(1, cameraDragTime);

        prefabsManager.AddPrefabs();
        interfaceManager.SetupUI(prefabsManager.GetPrefabTable());

        InitializeLevel(initialLevelWidth, initialLevelHeight);
        SetupLevel();
    }
    public ObjectEditingState(MouseButton leftMouseButton, IObjectEditingModule objectEditingModule, IObjectInformationModule objectInformationModule)
    {
        this.leftMouseButton         = leftMouseButton;
        this.objectEditingModule     = objectEditingModule;
        this.objectInformationModule = objectInformationModule;

        this.lastLeftMouseButtonState = MouseButtonState.NONE;
    }
 public void Setup(IObjectDeletionModule objectDeletionModule, IObjectPlacementModule objectPlacementModule, IObjectInformationModule objectInformationModule, IObjectEditingModule objectEditingModule, ILevelDataManager levelDataManager, ILevelController levelController, IPrefabsManager prefabsManager)
 {
     this.objectInformationModule = objectInformationModule;
     this.objectDeletionModule    = objectDeletionModule;
     this.levelDataManager        = levelDataManager;
     this.objectPlacementModule   = objectPlacementModule;
     this.objectEditingModule     = objectEditingModule;
     this.levelController         = levelController;
     this.prefabsManager          = prefabsManager;
 }
 public PatrolPointState(IObjectEditingModule objectEditingModule, MouseButton leftMouseButton, IInterfaceManager interfaceManager)
 {
     this.leftMouseButton     = leftMouseButton;
     this.objectEditingModule = objectEditingModule;
     this.interfaceManager    = interfaceManager;
 }