您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ DoCommandP函数代码示例

51自学网 2021-06-01 20:28:52
  C++
这篇教程C++ DoCommandP函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中DoCommandP函数的典型用法代码示例。如果您正苦于以下问题:C++ DoCommandP函数的具体用法?C++ DoCommandP怎么用?C++ DoCommandP使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了DoCommandP函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: PlaceRoad_TrafficLights

/** * Place trafficlights on a tile or returns an error. * @param tile This tile. */static void PlaceRoad_TrafficLights(TileIndex tile, Window *w){	if (_remove_button_clicked) {		DoCommandP(tile, 0, 0, CMD_REMOVE_TRAFFICLIGHTS | CMD_MSG(STR_ERROR_CAN_T_REMOVE_TRAFFIC_LIGHTS_FROM), CcPlaySound1D);	} else {		if (!_settings_game.construction.traffic_lights) {			DoCommandP(tile, 0, 0, CMD_BUILD_TRAFFICLIGHTS | CMD_MSG(STR_ERROR_BUILDING_TRAFFIC_LIGHTS_DISABLED), CcPlaySound1D);		} else{			DoCommandP(tile, 0, 0, CMD_BUILD_TRAFFICLIGHTS | CMD_MSG(STR_ERROR_CAN_T_PLACE_TRAFFIC_LIGHTS), CcPlaySound1D);		}	}}
开发者ID:koreapyj,项目名称:openttd-yapp,代码行数:16,


示例2: OnClick

	virtual void OnClick(Point pt, int widget)	{		/* Check which button is clicked */		if (IsInsideMM(widget, AID_WIDGET_COMPANY_BUTTON_START, AID_WIDGET_COMPANY_BUTTON_END + 1)) {			/* Is it no on disable? */			if (!this->IsWidgetDisabled(widget)) {				ChangeToAI((CompanyID)(widget - AID_WIDGET_COMPANY_BUTTON_START));			}		}		if (widget == AID_WIDGET_RELOAD_TOGGLE && !this->IsWidgetDisabled(widget)) {			/* First kill the company of the AI, then start a new one. This should start the current AI again */			DoCommandP(0, 2, ai_debug_company, CMD_COMPANY_CTRL);			DoCommandP(0, 1, ai_debug_company, CMD_COMPANY_CTRL);		}	}
开发者ID:Voxar,项目名称:OpenTTD,代码行数:15,


示例3: OnPlaceObject

	virtual void OnPlaceObject(Point pt, TileIndex tile)	{		switch (this->last_clicked_widget) {			case WID_DT_CANAL: // Build canal button				VpStartPlaceSizing(tile, (_game_mode == GM_EDITOR) ? VPM_X_AND_Y : VPM_X_OR_Y, DDSP_CREATE_WATER);				break;			case WID_DT_LOCK: // Build lock button				DoCommandP(tile, 0, 0, CMD_BUILD_LOCK | CMD_MSG(STR_ERROR_CAN_T_BUILD_LOCKS), CcBuildDocks);				break;			case WID_DT_DEMOLISH: // Demolish aka dynamite button				PlaceProc_DemolishArea(tile);				break;			case WID_DT_DEPOT: // Build depot button				DoCommandP(tile, _ship_depot_direction, 0, CMD_BUILD_SHIP_DEPOT | CMD_MSG(STR_ERROR_CAN_T_BUILD_SHIP_DEPOT), CcBuildDocks);				break;			case WID_DT_STATION: { // Build station button				uint32 p2 = (uint32)INVALID_STATION << 16; // no station to join				/* tile is always the land tile, so need to evaluate _thd.pos */				CommandContainer cmdcont = { tile, _ctrl_pressed, p2, CMD_BUILD_DOCK | CMD_MSG(STR_ERROR_CAN_T_BUILD_DOCK_HERE), CcBuildDocks, "" };				/* Determine the watery part of the dock. */				DiagDirection dir = GetInclinedSlopeDirection(GetTileSlope(tile));				TileIndex tile_to = (dir != INVALID_DIAGDIR ? TileAddByDiagDir(tile, ReverseDiagDir(dir)) : tile);				ShowSelectStationIfNeeded(cmdcont, TileArea(tile, tile_to));				break;			}			case WID_DT_BUOY: // Build buoy button				DoCommandP(tile, 0, 0, CMD_BUILD_BUOY | CMD_MSG(STR_ERROR_CAN_T_POSITION_BUOY_HERE), CcBuildDocks);				break;			case WID_DT_RIVER: // Build river button (in scenario editor)				VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_RIVER);				break;			case WID_DT_BUILD_AQUEDUCT: // Build aqueduct button				DoCommandP(tile, GetOtherAqueductEnd(tile), TRANSPORT_WATER << 15, CMD_BUILD_BRIDGE | CMD_MSG(STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE), CcBuildBridge);				break;			default: NOT_REACHED();		}	}
开发者ID:fonsinchen,项目名称:openttd-cargodist,代码行数:48,


示例4: OnPlaceMouseUp

	virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)	{		if (pt.x != -1 && select_proc == DDSP_PLANT_TREES) {			DoCommandP(end_tile, this->tree_to_plant, start_tile,				CMD_PLANT_TREE | CMD_MSG(STR_ERROR_CAN_T_PLANT_TREE_HERE));		}	}
开发者ID:fonsinchen,项目名称:openttd-cargodist,代码行数:7,


示例5: EndGameWindow

    EndGameWindow(const WindowDesc *desc) : EndGameHighScoreBaseWindow(desc)    {        /* Pause in single-player to have a look at the highscore at your own leisure */        if (!_networking) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE);        this->background_img = SPR_TYCOON_IMG1_BEGIN;        if (_local_company != COMPANY_SPECTATOR) {            const Company *c = Company::Get(_local_company);            if (c->old_economy[0].performance_history == SCORE_MAX) {                this->background_img = SPR_TYCOON_IMG2_BEGIN;            }        }        /* In a network game show the endscores of the custom difficulty 'network' which is the last one         * as well as generate a TOP5 of that game, and not an all-time top5. */        if (_networking) {            this->window_number = lengthof(_highscore_table) - 1;            this->rank = SaveHighScoreValueNetwork();        } else {            /* in single player _local company is always valid */            const Company *c = Company::Get(_local_company);            this->window_number = _settings_game.difficulty.diff_level;            this->rank = SaveHighScoreValue(c);        }        MarkWholeScreenDirty();    }
开发者ID:blackberry,项目名称:OpenTTD,代码行数:28,


示例6: MakeNewGameDone

static void MakeNewGameDone(){	SettingsDisableElrail(_settings_game.vehicle.disable_elrails);	/* In a dedicated server, the server does not play */	if (_network_dedicated || BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() == 0) {		SetLocalCompany(COMPANY_SPECTATOR);		IConsoleCmdExec("exec scripts/game_start.scr 0");		return;	}	/* Create a single company */	DoStartupNewCompany(false);	Company *c = Company::Get(COMPANY_FIRST);	c->settings = _settings_client.company;	IConsoleCmdExec("exec scripts/game_start.scr 0");	SetLocalCompany(COMPANY_FIRST);	InitializeRailGUI();#ifdef ENABLE_NETWORK	/* We are the server, we start a new company (not dedicated),	 * so set the default password *if* needed. */	if (_network_server && !StrEmpty(_settings_client.network.default_company_pass)) {		NetworkChangeCompanyPassword(_local_company, _settings_client.network.default_company_pass);	}#endif /* ENABLE_NETWORK */	if (_settings_client.gui.pause_on_newgame) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE);	MarkWholeScreenDirty();}
开发者ID:dolly22,项目名称:openttd-sai,代码行数:35,


示例7: NetworkExecuteLocalCommandQueue

/** * Execute all commands on the local command queue that ought to be executed this frame. */void NetworkExecuteLocalCommandQueue(){	assert(IsLocalCompany());	CommandQueue &queue = (_network_server ? _local_execution_queue : ClientNetworkGameSocketHandler::my_client->incoming_queue);	CommandPacket *cp;	while ((cp = queue.Peek()) != NULL) {		/* The queue is always in order, which means		 * that the first element will be executed first. */		if (_frame_counter < cp->frame) break;		if (_frame_counter > cp->frame) {			/* If we reach here, it means for whatever reason, we've already executed			 * past the command we need to execute. */			error("[net] Trying to execute a packet in the past!");		}		/* We can execute this command */		_current_company = cp->company;		cp->cmd |= CMD_NETWORK_COMMAND;		DoCommandP(cp, cp->my_cmd);		queue.Pop();		free(cp);	}	/* Local company may have changed, so we should not restore the old value */	_current_company = _local_company;}
开发者ID:ComLock,项目名称:OpenTTD,代码行数:33,


示例8: DoCommandP

	virtual ~SaveLoadWindow()	{		/* pause is only used in single-player, non-editor mode, non menu mode */		if (!_networking && _game_mode != GM_EDITOR && _game_mode != GM_MENU) {			DoCommandP(0, PM_PAUSED_SAVELOAD, 0, CMD_PAUSE);		}	}
开发者ID:M3Henry,项目名称:openttd,代码行数:7,


示例9: OnPlaceMouseUp

	virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)	{		if (pt.x != -1) {			switch (select_proc) {				case DDSP_DEMOLISH_AREA:					GUIPlaceProcDragXY(select_proc, start_tile, end_tile);					break;				case DDSP_CREATE_WATER:					DoCommandP(end_tile, start_tile, (_game_mode == GM_EDITOR && _ctrl_pressed) ? WATER_CLASS_SEA : WATER_CLASS_CANAL, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_BUILD_CANALS), CcBuildCanal);					break;				case DDSP_CREATE_RIVER:					DoCommandP(end_tile, start_tile, WATER_CLASS_RIVER, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_PLACE_RIVERS), CcBuildCanal);					break;				default: break;			}		}	}
开发者ID:fonsinchen,项目名称:openttd-cargodist,代码行数:18,


示例10: BuildBridge

	void BuildBridge(uint8 i)	{		switch ((TransportType)(this->type >> 15)) {			case TRANSPORT_RAIL: _last_railbridge_type = this->bridges->Get(i)->index; break;			case TRANSPORT_ROAD: _last_roadbridge_type = this->bridges->Get(i)->index; break;			default: break;		}		DoCommandP(this->end_tile, this->start_tile, this->type | this->bridges->Get(i)->index,					CMD_BUILD_BRIDGE | CMD_MSG(STR_ERROR_CAN_T_BUILD_BRIDGE_HERE), CcBuildBridge);	}
开发者ID:TeddyDesTodes,项目名称:openttd,代码行数:10,


示例11: ConnectRoadToStructure

/** * If required, connects a new structure to an existing road or tram by building the missing roadbit. * @param tile Tile containing the structure to connect. * @param direction Direction to check. */void ConnectRoadToStructure(TileIndex tile, DiagDirection direction){	tile += TileOffsByDiagDir(direction);	/* if there is a roadpiece just outside of the station entrance, build a connecting route */	if (IsNormalRoadTile(tile)) {		if (GetRoadBits(tile, _cur_roadtype) != ROAD_NONE) {			DoCommandP(tile, _cur_roadtype << 4 | DiagDirToRoadBits(ReverseDiagDir(direction)), 0, CMD_BUILD_ROAD);		}	}}
开发者ID:andythenorth,项目名称:NotRoadTypes,代码行数:15,


示例12: OnClick

	virtual void OnClick(Point pt, int widget, int click_count)	{		/* Check which button is clicked */		if (IsInsideMM(widget, AID_WIDGET_COMPANY_BUTTON_START, AID_WIDGET_COMPANY_BUTTON_END + 1)) {			/* Is it no on disable? */			if (!this->IsWidgetDisabled(widget)) {				ChangeToAI((CompanyID)(widget - AID_WIDGET_COMPANY_BUTTON_START));			}		}		switch (widget) {			case AID_WIDGET_RELOAD_TOGGLE:				/* First kill the company of the AI, then start a new one. This should start the current AI again */				DoCommandP(0, 2 | ai_debug_company << 16, 0, CMD_COMPANY_CTRL);				DoCommandP(0, 1 | ai_debug_company << 16, 0, CMD_COMPANY_CTRL);				break;			case AID_WIDGET_SETTINGS:				ShowAISettingsWindow(ai_debug_company);				break;			case AID_WIDGET_BREAK_STR_ON_OFF_BTN:				this->break_check_enabled = !this->break_check_enabled;				this->SetWidgetLoweredState(AID_WIDGET_BREAK_STR_ON_OFF_BTN, this->break_check_enabled);				this->SetWidgetDirty(AID_WIDGET_BREAK_STR_ON_OFF_BTN);				break;			case AID_WIDGET_MATCH_CASE_BTN:				this->case_sensitive_break_check = !this->case_sensitive_break_check;				this->SetWidgetLoweredState(AID_WIDGET_MATCH_CASE_BTN, this->case_sensitive_break_check);				break;			case AID_WIDGET_CONTINUE_BTN:				/* Unpause */				DoCommandP(0, PM_PAUSED_NORMAL, 0, CMD_PAUSE);				this->DisableWidget(AID_WIDGET_CONTINUE_BTN);				this->RaiseWidget(AID_WIDGET_CONTINUE_BTN); // Disabled widgets don't raise themself				break;		}	}
开发者ID:a7omic,项目名称:OpenTTD,代码行数:40,


示例13: HighScoreWindow

    HighScoreWindow(const WindowDesc *desc, int difficulty, int8 ranking) : EndGameHighScoreBaseWindow(desc)    {        /* pause game to show the chart */        if (!_networking) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE);        /* Close all always on-top windows to get a clean screen */        if (_game_mode != GM_MENU) HideVitalWindows();        MarkWholeScreenDirty();        this->window_number = difficulty; // show highscore chart for difficulty...        this->background_img = SPR_HIGHSCORE_CHART_BEGIN; // which background to show        this->rank = ranking;    }
开发者ID:blackberry,项目名称:OpenTTD,代码行数:13,


示例14: OnPlaceMouseUp

	virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)	{		if (pt.x != -1) {			switch (select_proc) {				case DDSP_BUILD_BRIDGE:					if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace();					DoCommandP(end_tile, start_tile, TRANSPORT_WATER << 15, CMD_BUILD_BRIDGE | CMD_MSG(STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE), CcBuildBridge);				case DDSP_DEMOLISH_AREA:					GUIPlaceProcDragXY(select_proc, start_tile, end_tile);					break;				case DDSP_CREATE_WATER:					DoCommandP(end_tile, start_tile, (_game_mode == GM_EDITOR && _ctrl_pressed) ? WATER_CLASS_SEA : WATER_CLASS_CANAL, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_BUILD_CANALS), CcBuildCanal);					break;				case DDSP_CREATE_RIVER:					DoCommandP(end_tile, start_tile, WATER_CLASS_RIVER, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_PLACE_RIVERS), CcBuildCanal);					break;				default: break;			}		}	}
开发者ID:jemmyw,项目名称:openttd,代码行数:22,


示例15: OnQueryTextFinished

	virtual void OnQueryTextFinished(char *str)	{		if (str == NULL) return;		const Vehicle *v = this->vehicle;		uint32 p1 = PackTimetableArgs(v, this->sel_index);		uint64 time = StrEmpty(str) ? 0 : strtoul(str, NULL, 10);		if (!_settings_client.gui.timetable_in_ticks) time *= DAY_TICKS;		uint32 p2 = minu(time, UINT16_MAX);		DoCommandP(0, p1, p2, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));	}
开发者ID:jemmyw,项目名称:openttd,代码行数:15,


示例16: TrainDepotMoveVehicle

static void TrainDepotMoveVehicle(const Vehicle *wagon, VehicleID sel, const Vehicle *head){	const Vehicle *v = Vehicle::Get(sel);	if (v == wagon) return;	if (wagon == NULL) {		if (head != NULL) wagon = head->Last();	} else {		wagon = wagon->Previous();		if (wagon == NULL) return;	}	if (wagon == v) return;	DoCommandP(v->tile, v->index + ((wagon == NULL ? INVALID_VEHICLE : wagon->index) << 16), _ctrl_pressed ? 1 : 0, CMD_MOVE_RAIL_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_MOVE_VEHICLE));}
开发者ID:Voxar,项目名称:OpenTTD,代码行数:17,


示例17: OnQueryTextFinished

	virtual void OnQueryTextFinished(char *str)	{		if (str == NULL) return;		const Vehicle *v = this->vehicle;		uint32 p1 = PackTimetableArgs(v, this->sel_index, this->query_is_speed_query);		uint64 val = StrEmpty(str) ? 0 : strtoul(str, NULL, 10);		if (this->query_is_speed_query) {			val = ConvertDisplaySpeedToKmhishSpeed(val);		} else {			if (!_settings_client.gui.timetable_in_ticks) val *= DAY_TICKS;		}		uint32 p2 = minu(val, UINT16_MAX);		DoCommandP(0, p1, p2, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));	}
开发者ID:bartdevriendt,项目名称:openttd-cargodist,代码行数:19,


示例18: HandleOnEditText

void HandleOnEditText(const char *str){	switch (_rename_what) {		case 3: { // Give money, you can only give money in excess of loan			const Company *c = Company::GetIfValid(_local_company);			if (c == nullptr) break;			Money money = min(c->money - c->current_loan, (Money)(atoi(str) / _currency->rate));			uint32 money_c = Clamp(ClampToI32(money), 0, 20000000); // Clamp between 20 million and 0			/* Give 'id' the money, and subtract it from ourself */			DoCommandP(0, money_c, _rename_id, CMD_GIVE_MONEY | CMD_MSG(STR_ERROR_INSUFFICIENT_FUNDS), CcGiveMoney, str);			break;		}		default: NOT_REACHED();	}	_rename_id = _rename_what = -1;}
开发者ID:OpenTTD,项目名称:OpenTTD,代码行数:19,


示例19: OnInvalidateData

	/**	 * Some data on this window has become invalid.	 * @param data Information about the changed data.	 * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.	 */	virtual void OnInvalidateData(int data = 0, bool gui_scope = true)	{		if (data == -1 || ai_debug_company == data) this->SetDirty();		if (gui_scope && data == -2) {			/* The continue button should be disabled when the game is unpaused and			 * it was previously paused by the break string ( = a line in the log			 * was highlighted )*/			if ((_pause_mode & PM_PAUSED_NORMAL) == PM_UNPAUSED && this->highlight_row != -1) {				this->DisableWidget(AID_WIDGET_CONTINUE_BTN);				this->SetWidgetDirty(AID_WIDGET_CONTINUE_BTN);				this->SetWidgetDirty(AID_WIDGET_LOG_PANEL);				this->highlight_row = -1;			}		}		/* If the log message is related to the active company tab, check the break string.		 * This needs to be done in gameloop-scope, so the AI is suspended immediately. */		if (!gui_scope && data == ai_debug_company && this->break_check_enabled && !StrEmpty(this->edit_str_buf)) {			/* Get the log instance of the active company */			Backup<CompanyByte> cur_company(_current_company, ai_debug_company, FILE_LINE);			AILog::LogData *log = (AILog::LogData *)AIObject::GetLogPointer();			if (log != NULL && case_sensitive_break_check?					strstr(log->lines[log->pos], this->edit_str_buf) != 0 :					strcasestr(log->lines[log->pos], this->edit_str_buf) != 0) {				AI::Suspend(ai_debug_company);				if ((_pause_mode & PM_PAUSED_NORMAL) == PM_UNPAUSED) {					DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE);				}				/* Make it possible to click on the continue button */				this->EnableWidget(AID_WIDGET_CONTINUE_BTN);				this->SetWidgetDirty(AID_WIDGET_CONTINUE_BTN);				/* Highlight row that matched */				this->highlight_row = log->pos;			}			cur_company.Restore();		}	}
开发者ID:a7omic,项目名称:OpenTTD,代码行数:48,


示例20: MaybeStartNewCompany

/** Start a new competitor company if possible. */static void MaybeStartNewCompany(){#ifdef ENABLE_NETWORK	if (_networking && Company::GetNumItems() >= _settings_client.network.max_companies) return;#endif /* ENABLE_NETWORK */	Company *c;	/* count number of competitors */	uint n = 0;	FOR_ALL_COMPANIES(c) {		if (c->is_ai) n++;	}	if (n < (uint)_settings_game.difficulty.max_no_competitors) {		/* Send a command to all clients to start up a new AI.		 * Works fine for Multiplayer and Singleplayer */		DoCommandP(0, 1 | INVALID_COMPANY << 16, 0, CMD_COMPANY_CTRL);	}}
开发者ID:habnabit,项目名称:openttd-cargodist,代码行数:21,


示例21: CcBuildWagon

/** * Callback for building wagons. * @param result The result of the command. * @param tile   The tile the command was executed on. * @param p1 Additional data for the command (for the #CommandProc) * @param p2 Additional data for the command (for the #CommandProc) */void CcBuildWagon(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2){	if (result.Failed()) return;	/* find a locomotive in the depot. */	const Vehicle *found = NULL;	const Train *t;	FOR_ALL_TRAINS(t) {		if (t->IsFrontEngine() && t->tile == tile && t->IsStoppedInDepot()) {			if (found != NULL) return; // must be exactly one.			found = t;		}	}	/* if we found a loco, */	if (found != NULL) {		found = found->Last();		/* put the new wagon at the end of the loco. */		DoCommandP(0, _new_vehicle_id, found->index, CMD_MOVE_RAIL_VEHICLE);		InvalidateWindowClassesData(WC_TRAINS_LIST, 0);	}}
开发者ID:tony,项目名称:openttd,代码行数:29,


示例22: CcBuildWagon

void CcBuildWagon(bool success, TileIndex tile, uint32 p1, uint32 p2){	if (!success) return;	/* find a locomotive in the depot. */	const Vehicle *found = NULL;	const Train *t;	FOR_ALL_TRAINS(t) {		if (t->IsFrontEngine() && t->tile == tile &&				t->track == TRACK_BIT_DEPOT) {			if (found != NULL) return; // must be exactly one.			found = t;		}	}	/* if we found a loco, */	if (found != NULL) {		found = found->Last();		/* put the new wagon at the end of the loco. */		DoCommandP(0, _new_vehicle_id | (found->index << 16), 0, CMD_MOVE_RAIL_VEHICLE);		InvalidateWindowClassesData(WC_TRAINS_LIST, 0);	}}
开发者ID:Voxar,项目名称:OpenTTD,代码行数:23,


示例23: OnClick

	virtual void OnClick(Point pt, int widget, int click_count)	{		const Vehicle *v = this->vehicle;		switch (widget) {			case WID_VT_ORDER_VIEW: // Order view button				ShowOrdersWindow(v);				break;			case WID_VT_TIMETABLE_PANEL: { // Main panel.				int selected = GetOrderFromTimetableWndPt(pt.y, v);				this->DeleteChildWindows();				this->sel_index = (selected == INVALID_ORDER || selected == this->sel_index) ? -1 : selected;				break;			}			case WID_VT_START_DATE: // Change the date that the timetable starts.				ShowSetDateWindow(this, v->index, _date, _cur_year, _cur_year + 15, ChangeTimetableStartCallback);				break;			case WID_VT_CHANGE_TIME: { // "Wait For" button.				int selected = this->sel_index;				VehicleOrderID real = (selected + 1) / 2;				if (real >= v->GetNumOrders()) real = 0;				const Order *order = v->GetOrder(real);				StringID current = STR_EMPTY;				if (order != NULL) {					uint time = (selected % 2 == 1) ? order->travel_time : order->wait_time;					if (!_settings_client.gui.timetable_in_ticks) time /= DAY_TICKS;					if (time != 0) {						SetDParam(0, time);						current = STR_JUST_INT;					}				}				this->query_is_speed_query = false;				ShowQueryString(current, STR_TIMETABLE_CHANGE_TIME, 31, this, CS_NUMERAL, QSF_NONE);				break;			}			case WID_VT_CHANGE_SPEED: { // Change max speed button.				int selected = this->sel_index;				VehicleOrderID real = (selected + 1) / 2;				if (real >= v->GetNumOrders()) real = 0;				StringID current = STR_EMPTY;				const Order *order = v->GetOrder(real);				if (order != NULL) {					if (order->max_speed != UINT16_MAX) {						SetDParam(0, ConvertKmhishSpeedToDisplaySpeed(order->max_speed));						current = STR_JUST_INT;					}				}				this->query_is_speed_query = true;				ShowQueryString(current, STR_TIMETABLE_CHANGE_SPEED, 31, this, CS_NUMERAL, QSF_NONE);				break;			}			case WID_VT_CLEAR_TIME: { // Clear waiting time.				uint32 p1 = PackTimetableArgs(v, this->sel_index, false);				DoCommandP(0, p1, 0, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));				break;			}			case WID_VT_CLEAR_SPEED: { // Clear max speed button.				uint32 p1 = PackTimetableArgs(v, this->sel_index, true);				DoCommandP(0, p1, UINT16_MAX, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));				break;			}			case WID_VT_RESET_LATENESS: // Reset the vehicle's late counter.				DoCommandP(0, v->index, 0, CMD_SET_VEHICLE_ON_TIME | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));				break;			case WID_VT_AUTOFILL: { // Autofill the timetable.				uint32 p2 = 0;				if (!HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE)) SetBit(p2, 0);				if (_ctrl_pressed) SetBit(p2, 1);				DoCommandP(0, v->index, p2, CMD_AUTOFILL_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));				break;			}			case WID_VT_EXPECTED:				this->show_expected = !this->show_expected;				break;			case WID_VT_SHARED_ORDER_LIST:				ShowVehicleListWindow(v);				break;		}		this->SetDirty();	}
开发者ID:bartdevriendt,项目名称:openttd-cargodist,代码行数:100,


示例24: ChangeTimetableStartCallback

/** * Callback for when a time has been chosen to start the time table * @param window the window related to the setting of the date * @param date the actually chosen date */static void ChangeTimetableStartCallback(const Window *w, Date date){	DoCommandP(0, w->window_number, date, CMD_SET_TIMETABLE_START | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));}
开发者ID:bartdevriendt,项目名称:openttd-cargodist,代码行数:9,


示例25:

    ~HighScoreWindow()    {        if (_game_mode != GM_MENU) ShowVitalWindows();        if (!_networking) DoCommandP(0, PM_PAUSED_NORMAL, 0, CMD_PAUSE); // unpause    }
开发者ID:blackberry,项目名称:OpenTTD,代码行数:6,


示例26: OnHotkey

	virtual EventState OnHotkey(int hotkey)	{		if (hotkey == GHK_QUIT) {			HandleExitGameRequest();			return ES_HANDLED;		}		/* Disable all key shortcuts, except quit shortcuts when		 * generating the world, otherwise they create threading		 * problem during the generating, resulting in random		 * assertions that are hard to trigger and debug */		if (HasModalProgress()) return ES_NOT_HANDLED;		switch (hotkey) {			case GHK_ABANDON:				/* No point returning from the main menu to itself */				if (_game_mode == GM_MENU) return ES_HANDLED;				if (_settings_client.gui.autosave_on_exit) {					DoExitSave();					_switch_mode = SM_MENU;				} else {					AskExitToGameMenu();				}				return ES_HANDLED;			case GHK_CONSOLE:				IConsoleSwitch();				return ES_HANDLED;			case GHK_BOUNDING_BOXES:				ToggleBoundingBoxes();				return ES_HANDLED;			case GHK_DIRTY_BLOCKS:				ToggleDirtyBlocks();				return ES_HANDLED;		}		if (_game_mode == GM_MENU) return ES_NOT_HANDLED;		switch (hotkey) {			case GHK_CENTER:			case GHK_CENTER_ZOOM: {				Point pt = GetTileBelowCursor();				if (pt.x != -1) {					bool instant = (hotkey == GHK_CENTER_ZOOM && this->viewport->zoom != _settings_client.gui.zoom_min);					if (hotkey == GHK_CENTER_ZOOM) MaxZoomInOut(ZOOM_IN, this);					ScrollMainWindowTo(pt.x, pt.y, -1, instant);				}				break;			}			case GHK_RESET_OBJECT_TO_PLACE: ResetObjectToPlace(); ToolbarSelectLastTool(); break;			case GHK_DELETE_WINDOWS: DeleteNonVitalWindows(); break;			case GHK_DELETE_NONVITAL_WINDOWS: DeleteAllNonVitalWindows(); break;			case GHK_REFRESH_SCREEN: MarkWholeScreenDirty(); break;			case GHK_CRASH: // Crash the game				*(volatile byte *)0 = 0;				break;			case GHK_MONEY: // Gimme money				/* You can only cheat for money in single player. */				if (!_networking) DoCommandP(0, 10000000, 0, CMD_MONEY_CHEAT);				break;			case GHK_UPDATE_COORDS: // Update the coordinates of all station signs				UpdateAllVirtCoords();				break;			case GHK_TOGGLE_TRANSPARENCY:			case GHK_TOGGLE_TRANSPARENCY + 1:			case GHK_TOGGLE_TRANSPARENCY + 2:			case GHK_TOGGLE_TRANSPARENCY + 3:			case GHK_TOGGLE_TRANSPARENCY + 4:			case GHK_TOGGLE_TRANSPARENCY + 5:			case GHK_TOGGLE_TRANSPARENCY + 6:			case GHK_TOGGLE_TRANSPARENCY + 7:			case GHK_TOGGLE_TRANSPARENCY + 8:				/* Transparency toggle hot keys */				ToggleTransparency((TransparencyOption)(hotkey - GHK_TOGGLE_TRANSPARENCY));				MarkWholeScreenDirty();				break;			case GHK_TOGGLE_INVISIBILITY:			case GHK_TOGGLE_INVISIBILITY + 1:			case GHK_TOGGLE_INVISIBILITY + 2:			case GHK_TOGGLE_INVISIBILITY + 3:			case GHK_TOGGLE_INVISIBILITY + 4:			case GHK_TOGGLE_INVISIBILITY + 5:			case GHK_TOGGLE_INVISIBILITY + 6:			case GHK_TOGGLE_INVISIBILITY + 7:				/* Invisibility toggle hot keys */				ToggleInvisibilityWithTransparency((TransparencyOption)(hotkey - GHK_TOGGLE_INVISIBILITY));				MarkWholeScreenDirty();				break;			case GHK_TRANSPARENCY_TOOLBAR:				ShowTransparencyToolbar();				break;//.........这里部分代码省略.........
开发者ID:CliffsDover,项目名称:openttd-android,代码行数:101,


示例27: ShowHighscoreTable

 ~EndGameWindow() {     if (!_networking) DoCommandP(0, PM_PAUSED_NORMAL, 0, CMD_PAUSE); // unpause     ShowHighscoreTable(this->window_number, this->rank); }
开发者ID:blackberry,项目名称:OpenTTD,代码行数:5,


示例28: OnPlaceObject

	virtual void OnPlaceObject(Point pt, TileIndex tile)	{		DoCommandP(tile, ObjectClass::Get(_selected_object_class)->GetSpec(_selected_object_index)->Index(),				_selected_object_view, CMD_BUILD_OBJECT | CMD_MSG(STR_ERROR_CAN_T_BUILD_OBJECT), CcTerraform);	}
开发者ID:Johnnei,项目名称:OpenTTD,代码行数:5,



注:本文中的DoCommandP函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ DoCompare函数代码示例
C++ DoCommand函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。