void Transaction::flush() { purge_map ( m_modified ); purge_map ( m_inserted ); purge_map ( m_deleted ); m_modified_parts.clear(); m_deleted_parts.clear(); m_inserted_parts.clear(); }
Model::~Model() { purge(m_maps); for(std::list<namespace_t>::iterator nspace = m_namespaces.begin(); nspace != m_namespaces.end(); ++nspace) purge_map(nspace->second); purge(m_pathers); purge(m_created_grids); purge(m_adopted_grids); }
static LRESULT WizardDlgProc(HWND hDlg,UINT msg, WPARAM wParam,LPARAM lParam) { int i; switch (msg) { case WM_INITDIALOG: hWizardDlg = hDlg; hWizardText = GetDlgItem(hDlg,IDC_OUTPUT); SendMessage(hWizardText,WM_SETFONT,(WPARAM)hfCourier,1); display_game_status(); SetTimer(hDlg,10,20,NULL); return 0; case WM_TIMER: do_events();return 1; case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: EndDialog(hDlg,0);return 0; case IDC_CLEARMAP: { HWND listwnd = PrepareListWindow(hDlg); HWND list = GetDlgItem(listwnd,IDC_LIST); int res; ListBox_AddString(list,"Clear Monsters"); ListBox_AddString(list,"Clear Items"); res = PumpDialogMessages(listwnd); if (res == IDOK) { if (ListBox_GetSel(list,0)) { for(i = 0;i<MAX_MOBS;i++) if (mobs[i].vlajky & MOB_LIVE) { vybrana_zbran = -1; select_player = -1; mob_hit(mobs+i,mobs[i].lives); } } if (ListBox_GetSel(list,1)) { for(i = 0;i<mapsize*4;i++) { destroy_items(map_items[i]); free(map_items[i]); map_items[i] = NULL; } for(i = 0;i<vyk_max;i++) { destroy_items(map_vyk[i].items); map_vyk[i].items[0] = 0; } } } CloseListWindow(listwnd); } break; case IDC_ADVENCE: { int i,j,c; if (!wzscanf("Advence to level <postava -1= vsichni><uroven>:","%d %d",&i,&j)) return 0; c = MessageBox(GetActiveWindow(),"Automaticky?","?",MB_YESNO|MB_ICONQUESTION); if (i>0) advence_player(i-1,j,c == IDYES);else for(i = 0;i<POCET_POSTAV;i++) if (postavy[i].used) advence_player(i,j,c == IDYES); return 0; } case IDC_GOTO: { char prompt[50]; sprintf(prompt,"Goto sector <1-%d>:",mapsize-1); if (!wzscanf(prompt,"%d",&viewsector)) return 0; chod_s_postavama(1); SEND_LOG("(WIZARD) Goto %d",viewsector,0); return 0; } case IDC_LOADMAP: if (!wzscanf("Load Map <filename><sector>","%s %hd",loadlevel.name,&loadlevel.start_pos)) return 0; for(i = 0;i<POCET_POSTAV;i++)postavy[i].sektor = loadlevel.start_pos; SEND_LOG("(WIZARD) Load map '%s' %d",loadlevel.name,loadlevel.start_pos); EndDialog(hDlg,0); send_message(E_CLOSE_MAP); return 0; case IDC_OPENDOOR:if (map_sectors[viewsector].step_next[viewdir]) delay_action(3,viewsector,viewdir,0x2000000,0,0); else delay_action(3,viewsector,viewdir,0,0,0); return 0; case IDC_TAKEMONEY:if (take_money()) return 0;break; case IDC_PURGE:if (purge_map()) return 0;break; case IDC_HEAL:if (heal_meditate()) return 0;break; case IDC_RAISEDEATH:if (raise_death()) return 0;break; case IDC_RAISEMONSTER:if (raise_killed_monster(hDlg)) return 0;break; case IDC_IMMORTAL:set_immortality();break; case IDC_NETECNOST:set_nohassle();break; case IDC_UNAFFECT :unaffect();break; case IDC_WEAPONSKILL:if (advance_weapon()) return 0;break; case IDC_REFRESH:display_game_status();break; case IDC_RELOADMOBILES: i = MessageBox(hDlg,"Tato funkce precte znova parametry vsech existujicich nestvur. " "Pouzivej jen v pripade, ze se tyto parametry zmenili a nesouhlasi tak " "obsah ulozene pozice. Pokracovat? ","??",MB_YESNO|MB_ICONQUESTION); if (i == IDYES) reload_mobs(); return 0; case IDC_LOADITEM: { HWND listdlg = PrepareListWindow(hDlg); HWND list = GetDlgItem(listdlg,IDC_LIST); char buff[256]; int i; int res; for (i = 0;i<item_count;i++) { _snprintf(buff,sizeof(buff),"%d. %s",i,glob_items[i].jmeno); kamenik2windows(buff,strlen(buff),buff); ListBox_AddString(list,buff); } res = PumpDialogMessages(listdlg); while (res == IDOK) { int cnt; for (i = 0,cnt = ListBox_GetCount(list);i<cnt;i++) if (ListBox_GetSel(list,i)) { SEND_LOG("(WIZARD) Load Item %d (%s)",i,glob_items[i].jmeno); macro_drop_item(viewsector,viewdir,i); wzprintf("Dropped item: %d\r\n",i); } res = PumpDialogMessages(listdlg); } CloseListWindow(listdlg); } return 0; } default: return 0; } return 1; }