void comms_setup_player_choices() { comms_state = COMMS_STATE_PLAYER_CHOICE; current_player_choice = ((Comms_NPCDialogue *)vector_get(&comms_current_npc_lines, current_npc_text))->next_state_index; comms_subject_pos[0] = comms_subject_final_pos; comms_portrait_background_pos[1] = comms_portrait_background_final_pos; current_npc_text = ((Comms_NPCDialogue *)vector_get(&comms_current_npc_lines, current_npc_text))->next_state_index; gui_clear(); int default_button; Comms_PlayerChoice * pc = (Comms_PlayerChoice *)vector_get(&comms_player_choices, current_player_choice); default_button = gui_add_text_button(pc->text0, 0, comms_text_offset - 2, 35, BUTTON_STATE_ENABLED, BUTTON_STYLE_MENU, -1, &comms_action, pc->choice0, NULL, -1, NULL, -1); if (pc->text1 != NULL) { gui_add_text_button(pc->text1, 0, comms_text_offset + 5, 35, BUTTON_STATE_ENABLED, BUTTON_STYLE_MENU, -1, &comms_action, pc->choice1, NULL, -1, NULL, -1); if (pc->text2 != NULL) { gui_add_text_button(pc->text2, 0, comms_text_offset + 12, 35, BUTTON_STATE_ENABLED, BUTTON_STYLE_MENU, -1, &comms_action, pc->choice2, NULL, -1, NULL, -1); if (pc->text3 != NULL) { gui_add_text_button(pc->text3, 0, comms_text_offset + 19, 35, BUTTON_STATE_ENABLED, BUTTON_STYLE_MENU, -1, &comms_action, pc->choice3, NULL, -1, NULL, -1); } } } update_button_state(default_button, BUTTON_STATE_SELECTED); }
void comms_setup_intro() { Travel_Node *t = (Travel_Node *)vector_get(starmap, current_node); int w=(int)(pow(2,(t->p->size+3))); int h=w; comms_subject_pos[0] = -w; comms_subject_pos[1] = h = 32 - h / 2; comms_subject_final_pos = 64 - w * 0.75; //comms_intro_text = ">incoming signal from "; SDL_QueryTexture(portrait_background, NULL, NULL, &w, &h); comms_portrait_background_pos[0] = 2; comms_portrait_background_pos[1] = -h; comms_portrait_background_final_pos = 0; comms_text_offset = h + 1; comms_portrait_pos[0] = 2; comms_portrait_pos[1] = 0; comms_state = COMMS_STATE_INTRO; current_npc_text = 0; current_player_choice = 0; gui_clear(); int default_button; default_button = gui_add_symbol_button(SYMBOL_ARROW_RIGHT, 64 - 9, 64 - 9, -1, BUTTON_STATE_ENABLED, BUTTON_STYLE_GUI, -1, &comms_skip, -1, NULL, -1, NULL, -1); update_button_state(default_button, BUTTON_STATE_SELECTED); }
void comms_setup_npc_text() { comms_state = COMMS_STATE_NPC_TEXT; comms_subject_pos[0] = comms_subject_final_pos; Travel_Node *t = (Travel_Node *)vector_get(starmap, current_node); t->p->x=comms_subject_final_pos; comms_portrait_background_pos[1] = comms_portrait_background_final_pos; gui_clear(); int default_button; default_button = gui_add_symbol_button(SYMBOL_ARROW_RIGHT, 64 - 9, 64 - 9, -1, BUTTON_STATE_ENABLED, BUTTON_STYLE_GUI, -1, &comms_skip, -1, NULL, -1, NULL, -1); update_button_state(default_button, BUTTON_STATE_SELECTED); }
int main(int argc, char **argv) { int rc = 0; struct cfgdata_t cfg; struct params_t params; kx_inputs inputs; lg = log_open(16); log_msg(lg, "%s starting", PACKAGE_STRING); initmode = do_init(); /* Get cmdline parameters */ params.cfg = &cfg; init_cfgdata(&cfg); cfg.angle = 0; /* No rotation by default */ parse_cmdline(&cfg); kxb_ttydev = cfg.ttydev; setup_terminal(kxb_ttydev, &kxb_echo_state, 1); /* Setup function that will restore terminal when exit() will called */ atexit(atexit_restore_terminal); log_msg(lg, "FB angle is %d, tty is %s", cfg.angle, cfg.ttydev); #ifdef USE_MACHINE_KERNEL machine_kernel = get_machine_kernelpath(); /* FIXME should be passed as arg to get_bootinfo() */ #endif #ifdef USE_DELAY /* extra delay for initializing slow SD/CF */ sleep(USE_DELAY); #endif int no_ui = 1; /* UI presence flag */ #ifdef USE_FBMENU params.gui = NULL; if (no_ui) { params.gui = gui_init(cfg.angle); if (NULL == params.gui) { log_msg(lg, "Can't initialize GUI"); } else no_ui = 0; } #endif #ifdef USE_TEXTUI FILE *ttyfp; params.tui = NULL; if (no_ui) { if (cfg.ttydev) ttyfp = fopen(cfg.ttydev, "w"); else ttyfp = stdout; params.tui = tui_init(ttyfp); if (NULL == params.tui) { log_msg(lg, "Can't initialize TUI"); if (ttyfp != stdout) fclose(ttyfp); } else no_ui = 0; } #endif if (no_ui) exit(-1); /* Exit if no one UI was initialized */ params.menu = build_menu(¶ms); params.bootcfg = NULL; scan_devices(¶ms); if (-1 == fill_menu(¶ms)) { exit(-1); } /* Collect input devices */ inputs_init(&inputs, 8); inputs_open(&inputs); inputs_preprocess(&inputs); /* Run main event loop * Return values: <0 - error, >=0 - selected item id */ rc = do_main_loop(¶ms, &inputs); #ifdef USE_FBMENU if (params.gui) { if (rc < 0) gui_clear(params.gui); gui_destroy(params.gui); } #endif #ifdef USE_TEXTUI if (params.tui) { tui_destroy(params.tui); if (ttyfp != stdout) fclose(ttyfp); } #endif inputs_close(&inputs); inputs_clean(&inputs); log_close(lg); lg = NULL; /* rc < 0 indicate error */ if (rc < 0) exit(rc); menu_destroy(params.menu, 0); if (rc >= A_DEVICES) { start_kernel(¶ms, rc - A_DEVICES); } /* When we reach this point then some error has occured */ DPRINTF("We should not reach this point!"); exit(-1); }
int advance_comms() { comms_draw_count = 0; switch (comms_state) { case COMMS_STATE_INTRO: comms_state = COMMS_STATE_NPC_TEXT; comms_setup_npc_text(); break; case COMMS_STATE_NPC_TEXT: switch(((Comms_NPCDialogue *)vector_get(&comms_current_npc_lines, current_npc_text))->next_state) { case COMMS_STATE_INTRO: //restart dialogue? don't know why we might want to do this. could be fun? comms_setup_intro(); break; case COMMS_STATE_PLAYER_CHOICE: comms_setup_player_choices(); break; case COMMS_STATE_NPC_TEXT: comms_setup_npc_text(); break; case COMMS_STATE_ENTER_COMBAT: gui_clear(); faction_update_disposition(comms_faction, -10); //TODO: This is temp code combat_set_faction(comms_faction); combat_setup(); //exit comms, start combat break; case COMMS_STATE_ENTER_TRAVEL: gui_clear(); faction_update_disposition(comms_faction, 5); //TODO: This is temp code starmap_setup(); //exit comms, start travel break; case COMMS_STATE_ENTER_TRADE_BUY: { gui_clear(); Travel_Node *t = (Travel_Node *)vector_get(starmap, current_node); trade_set_npc_entity(t->t); trade_set_faction(t->f); printf("Entering buy mode?\n"); trade_set_mode(TRADE_MODE_BUY); trade_setup(); //exit comms, start trade } break; case COMMS_STATE_ENTER_TRADE_SELL: { gui_clear(); Travel_Node *t = (Travel_Node *)vector_get(starmap, current_node); trade_set_npc_entity(t->t); trade_set_faction(t->f); printf("Entering sell mode?\n"); trade_set_mode(TRADE_MODE_SELL); trade_setup(); //exit comms, start trade } break; } break; case COMMS_STATE_PLAYER_CHOICE: comms_state = COMMS_STATE_NPC_TEXT; comms_setup_npc_text(); current_npc_text = selected_player_choice; break; } return 0; }
void gui_set_scale(char _divider) { divider = _divider; gui_clear(); }
void gui_init() { divider = 1; gui_clear(); }