void draw_resurrect_creature(struct GuiButton *gbtn) { unsigned short flg_mem; flg_mem = lbDisplay.DrawFlags; lbDisplay.DrawFlags = Lb_SPRITE_TRANSPAR4; LbDrawBox(gbtn->scr_pos_x, gbtn->scr_pos_y, gbtn->width, gbtn->height, 0); LbTextSetFont(winfont); LbTextSetWindow(gbtn->scr_pos_x, gbtn->scr_pos_y, gbtn->width, gbtn->height); struct Dungeon *dungeon; dungeon = get_my_dungeon(); int i; i = selected_resurrect_creature(dungeon, gbtn); int tx_units_per_px; tx_units_per_px = ((gbtn->height*22/26) * 16) / LbTextLineHeight(); if (i != -1) { struct CreatureStorage *cstore; cstore = &dungeon->dead_creatures[i]; struct CreatureData *crdata; crdata = creature_data_get(cstore->model); lbDisplay.DrawFlags = Lb_TEXT_HALIGN_LEFT; LbTextDrawResizedFmt(0, 0, tx_units_per_px, " %s", get_string(crdata->namestr_idx)); lbDisplay.DrawFlags = Lb_TEXT_HALIGN_RIGHT; LbTextDrawResizedFmt(0, 0, tx_units_per_px, "%s %d ", get_string(GUIStr_MnuLevel), (int)(cstore->explevel + 1)); } lbDisplay.DrawFlags = flg_mem; }
void update_chosen_tendencies(void) { struct Dungeon *dungeon; dungeon = get_my_dungeon(); game.my.creatures_tend_imprison = ((dungeon->creature_tendencies & 0x01) != 0); game.my.creatures_tend_flee = ((dungeon->creature_tendencies & 0x02) != 0); }
void maintain_resurrect_creature_select(struct GuiButton *gbtn) { struct Dungeon *dungeon; dungeon = get_my_dungeon(); long listitm_idx; listitm_idx = resurrect_creature_scroll_offset + gbtn->btype_value; set_flag_byte(&gbtn->flags, LbBtnFlag_Enabled, (listitm_idx < dungeon->dead_creatures_count)); }
void select_transfer_creature_down(struct GuiButton *gbtn) { struct Dungeon *dungeon; dungeon = get_my_dungeon(); if (transfer_creature_scroll_offset < dungeon->num_active_creatrs-transfer_creature_items_visible+1) { transfer_creature_scroll_offset++; } }
void select_resurrect_creature_down(struct GuiButton *gbtn) { struct Dungeon *dungeon; dungeon = get_my_dungeon(); if (resurrect_creature_scroll_offset < dungeon->dead_creatures_count-resurrect_creature_items_visible+1) { resurrect_creature_scroll_offset++; } }
void maintain_transfer_creature_select(struct GuiButton *gbtn) { struct Dungeon *dungeon; dungeon = get_my_dungeon(); long listitm_idx; listitm_idx = transfer_creature_scroll_offset + gbtn->btype_value; set_flag_byte(&gbtn->flags, LbBtnFlag_Enabled, (listitm_idx < dungeon->num_active_creatrs)); }
void select_resurrect_creature(struct GuiButton *gbtn) { struct Dungeon *dungeon; dungeon = get_my_dungeon(); int i; i = selected_resurrect_creature(dungeon, gbtn); if (i != -1) { struct CreatureStorage *cstore; cstore = &dungeon->dead_creatures[i]; struct Packet *pckt; pckt = get_packet(my_player_number); set_packet_action(pckt, PckA_ResurrectCrtr, dungeon_special_selected, dungeon->owner | (cstore->model << 4) | (cstore->explevel << 12)); turn_off_menu(GMnu_RESURRECT_CREATURE); } }
void select_transfer_creature(struct GuiButton *gbtn) { struct Dungeon *dungeon; dungeon = get_my_dungeon(); struct Thing *thing; thing = INVALID_THING; int listitm_idx; listitm_idx = selected_transfer_creature(dungeon, gbtn); if (listitm_idx != -1) { thing = get_player_list_nth_creature_of_model(dungeon->creatr_list_start, 0, listitm_idx); } if (thing_exists(thing)) { struct Packet *pckt; pckt = get_packet(my_player_number); set_packet_action(pckt, PckA_TransferCreatr, dungeon_special_selected, thing->index); turn_off_menu(GMnu_TRANSFER_CREATURE); } }
void draw_transfer_creature(struct GuiButton *gbtn) { unsigned long flgmem; if (gbtn == NULL) return; SYNCDBG(7,"Starting"); flgmem = lbDisplay.DrawFlags; lbDisplay.DrawFlags = Lb_SPRITE_TRANSPAR4; LbTextSetFont(winfont); LbDrawBox(gbtn->scr_pos_x, gbtn->scr_pos_y, gbtn->width, gbtn->height, 0); // The 0 means black color LbTextSetWindow(gbtn->scr_pos_x, gbtn->scr_pos_y, gbtn->width, gbtn->height); struct Dungeon *dungeon; dungeon = get_my_dungeon(); struct Thing *thing; thing = INVALID_THING; int listitm_idx; listitm_idx = selected_transfer_creature(dungeon, gbtn); int tx_units_per_px; tx_units_per_px = ((gbtn->height*22/26) * 16) / LbTextLineHeight(); if (listitm_idx != -1) { thing = get_player_list_nth_creature_of_model(dungeon->creatr_list_start, 0, listitm_idx); } if (!thing_is_invalid(thing)) { const struct CreatureControl *cctrl; cctrl = creature_control_get_from_thing(thing); const struct CreatureData *crdata; crdata = creature_data_get_from_thing(thing); lbDisplay.DrawFlags = Lb_TEXT_HALIGN_LEFT; LbTextDrawResizedFmt(0, 0, tx_units_per_px, " %s", get_string(crdata->namestr_idx)); lbDisplay.DrawFlags = Lb_TEXT_HALIGN_RIGHT; LbTextDrawResizedFmt(0, 0, tx_units_per_px, "%s %d ", get_string(GUIStr_MnuLevel), (int)(cctrl->explevel+1)); } lbDisplay.DrawFlags = flgmem; }
void maintain_transfer_creature_scroll(struct GuiButton *gbtn) { struct Dungeon *dungeon; dungeon = get_my_dungeon(); int count; count = dungeon->num_active_creatrs; if (transfer_creature_scroll_offset > count-transfer_creature_items_visible+1) { if (count > transfer_creature_items_visible) { transfer_creature_scroll_offset = count-transfer_creature_items_visible+1; } else { transfer_creature_scroll_offset = 0; } } if (gbtn->btype_value == 1) { set_flag_byte(&gbtn->flags, LbBtnFlag_Enabled, (transfer_creature_scroll_offset > 0)); } else { set_flag_byte(&gbtn->flags, LbBtnFlag_Enabled, (transfer_creature_scroll_offset < count-transfer_creature_items_visible+1)); } }
void maintain_resurrect_creature_scroll(struct GuiButton *gbtn) { struct Dungeon *dungeon; dungeon = get_my_dungeon(); int count; count = dungeon->dead_creatures_count; if (resurrect_creature_scroll_offset >= count-resurrect_creature_items_visible+1) { if (count+1 > resurrect_creature_items_visible) { resurrect_creature_scroll_offset = count-resurrect_creature_items_visible+1; } else { resurrect_creature_scroll_offset = 0; } } if (gbtn->btype_value == 1) { set_flag_byte(&gbtn->flags, LbBtnFlag_Enabled, (resurrect_creature_scroll_offset > 0)); } else { set_flag_byte(&gbtn->flags, LbBtnFlag_Enabled, (resurrect_creature_scroll_offset < count-resurrect_creature_items_visible+1)); } }