Пример #1
0
/**
 *
 *  rct2: 0x006CD48C
 */
static void window_maze_construction_mousedown(rct_window *w, rct_widgetindex widgetIndex, rct_widget *widget)
{
    switch (widgetIndex) {
    case WIDX_MAZE_BUILD_MODE:
        _rideConstructionState = RIDE_CONSTRUCTION_STATE_MAZE_BUILD;
        window_maze_construction_update_pressed_widgets();
        break;
    case WIDX_MAZE_MOVE_MODE:
        _rideConstructionState = RIDE_CONSTRUCTION_STATE_MAZE_MOVE;
        window_maze_construction_update_pressed_widgets();
        break;
    case WIDX_MAZE_FILL_MODE:
        _rideConstructionState = RIDE_CONSTRUCTION_STATE_MAZE_FILL;
        window_maze_construction_update_pressed_widgets();
        break;
    }
}
Пример #2
0
static void window_maze_construction_entrance_mouseup(rct_window *w, rct_widgetindex widgetIndex){
    if (tool_set(w, widgetIndex, TOOL_CROSSHAIR))
        return;

    gRideEntranceExitPlaceType = widgetIndex == WIDX_MAZE_ENTRANCE ? ENTRANCE_TYPE_RIDE_ENTRANCE : ENTRANCE_TYPE_RIDE_EXIT;
    gRideEntranceExitPlaceRideIndex = (uint8)w->number;
    gRideEntranceExitPlaceStationIndex = 0;
    input_set_flag(INPUT_FLAG_6, true);

    ride_construction_invalidate_current_track();

    // ???
    uint8 old_state = _rideConstructionState;
    _rideConstructionState = RIDE_CONSTRUCTION_STATE_ENTRANCE_EXIT;
    if (old_state != RIDE_CONSTRUCTION_STATE_ENTRANCE_EXIT)
        _rideConstructionState = old_state;
    window_maze_construction_update_pressed_widgets();
}
Пример #3
0
static void window_maze_construction_entrance_mouseup(rct_window *w, sint32 widgetIndex){
	if (tool_set(w, widgetIndex, 12))
		return;

	gRideEntranceExitPlaceType = widgetIndex == WIDX_MAZE_ENTRANCE ? ENTRANCE_TYPE_RIDE_ENTRANCE : ENTRANCE_TYPE_RIDE_EXIT;
	gRideEntranceExitPlaceRideIndex = (uint8)w->number;
	gRideEntranceExitPlaceStationIndex = 0;
	gInputFlags |= INPUT_FLAG_6;

	sub_6C9627();

	// ???
	uint8 old_state = _rideConstructionState;
	_rideConstructionState = 5;
	if (old_state != 5)
		_rideConstructionState = old_state;
	window_maze_construction_update_pressed_widgets();
}
Пример #4
0
/**
 *
 *  rct2: 0x006CD767
 */
static void window_maze_construction_update(rct_window *w)
{
    rct_ride *ride = get_ride(_currentRideIndex);
    if (ride == NULL || ride->status != RIDE_STATUS_CLOSED) {
        window_close(w);
        return;
    }

    switch (_rideConstructionState) {
    case RIDE_CONSTRUCTION_STATE_PLACE:
        if (!widget_is_active_tool(w, WIDX_MAZE_DIRECTION_GROUPBOX)) {
            window_close(w);
            return;
        }
        break;
    case RIDE_CONSTRUCTION_STATE_ENTRANCE_EXIT:
        if (!widget_is_active_tool(w, WIDX_MAZE_ENTRANCE) && !widget_is_active_tool(w, WIDX_MAZE_EXIT)) {
            _rideConstructionState = gRideEntranceExitPlacePreviousRideConstructionState;
            window_maze_construction_update_pressed_widgets();
        }
        break;
    }

    switch (_rideConstructionState) {
    case RIDE_CONSTRUCTION_STATE_FRONT:
    case RIDE_CONSTRUCTION_STATE_BACK:
    case RIDE_CONSTRUCTION_STATE_SELECTED:
        if (
            (input_test_flag(INPUT_FLAG_TOOL_ACTIVE)) &&
            gCurrentToolWidget.window_classification == WC_RIDE_CONSTRUCTION
        ) {
            tool_cancel();
        }
        break;
    }
    sub_6C94D8();
}