/* On valid search, find the path to the selected entry from current location. Re-draw the map. On invalid search, returns and keep listening for keyboard inputs */ bool do_enter(){ bool retval = false; if(ready()){ retval = true; name_list* nl = matched_names.head; for(int i = 1; i < sel; i++){ nl = nl->next; } int start_node = get_start_node(); if (road_only && !vertex_had_road_edge(full_map_graph, start_node)){ draw_information_box("YOUR CURRENT LOCATION HAS NO ROAD ACCESS. PLEASE TURN OFF THE ROADS BUTTON."); do_back(); return retval; } end_node = find_vertex_by_name(full_map_graph, nl->name)->id; if (road_only && !vertex_had_road_edge(full_map_graph, end_node)){ draw_information_box("YOUR SELECTED LOCATION HAS NO ROAD ACCESS. PLEASE TURN OFF THE ROADS BUTTON."); do_back(); return retval; } do_back(); load_and_draw_graph_path(full_map_graph, start_node, end_node, road_only, PURPLEPIZZAZZ); draw_information_box("HAVE A FUN TRIP!"); } return retval; }
bool TransitionData::tool_cmd(ToolCom * com, const char * args, BrowserNode * bn, const QString & comment) { if (((unsigned char) args[-1]) >= firstSetCmd) { if (!bn->is_writable() && !root_permission()) com->write_ack(FALSE); else { switch ((unsigned char) args[-1]) { case setUmlTriggerCmd: uml.trigger = args; break; case setUmlGuardCmd: uml.guard = args; break; case setUmlActivityCmd: uml.expr = args; break; case setCppTriggerCmd: cpp.trigger = args; break; case setCppGuardCmd: cpp.guard = args; break; case setCppActivityCmd: cpp.expr = args; break; case setJavaTriggerCmd: java.trigger = args; break; case setJavaGuardCmd: java.guard = args; break; case setJavaActivityCmd: java.expr = args; break; case setIsCppExternalCmd: if (*args != 0) is_internal = FALSE; else if (get_start_node() != end) { com->write_ack(FALSE); return TRUE; } else is_internal = TRUE; break; default: return BasicData::tool_cmd(com, args, bn, comment); } // ok case bn->package_modified(); modified(); com->write_ack(TRUE); } } else return BasicData::tool_cmd(com, args, bn, comment); return TRUE; }
// Ask for a start and end node and find the best directions void do_dir(){ int start_node = get_start_node(); if (road_only && !vertex_had_road_edge(full_map_graph, start_node)){ draw_information_box("YOUR CURRENT LOCATION HAS NO ROAD ACCESS. PLEASE TURN OFF THE ROADS BUTTON."); DIR_BUTT.prs_p(DIR_BUTT); return; } draw_information_box("PLEASE SELECT DESTINATION"); end_node = get_node(full_map_graph); if (end_node == -1){ DIR_BUTT.prs_p(DIR_BUTT); about_screen(); return; } if (road_only && !vertex_had_road_edge(full_map_graph, end_node)){ draw_information_box("YOUR SELECTED LOCATION HAS NO ROAD ACCESS. PLEASE TURN OFF THE ROADS BUTTON."); DIR_BUTT.prs_p(DIR_BUTT); return; } load_and_draw_graph_path(full_map_graph, start_node, end_node, road_only, PURPLEPIZZAZZ); draw_information_box("HAVE A FUN TRIP!"); DIR_BUTT.prs_p(DIR_BUTT); }
T get_start_node(const T & x, uint8_t) { return get_start_node(x); }