/** * update_inventory(void) * * @brief * @param void * @return void */ void update_inventory(void) { uint32 i = 0; //frmMirage.lstInv.Clear //Show the inventory for(i = 1; i < MAX_INV; i++){ if(player(myindex())->inv[i].id && player(myindex())->inv[i].id < MAX_ITEMS){ if(item(player(myindex())->inv[i].id)->type == ITEM_TYPE_CURRENCY){ //frmMirage.lstInv.AddItem i & ": " & Trim$(Item(GetPlayerInvItemNum(i)).Name) & " (" & GetPlayerInvItemValue(i) & ")" } else{ //Check if this item is being worn uint8 x = 0; for(x = 0; x < EQUIPMENT_COUNT; x++){ if(player(myindex())->equipment[x] == i){ //frmMirage.lstInv.AddItem i & ": " & Trim$(Item(GetPlayerInvItemNum(i)).Name) & " (worn)" } else{ //frmMirage.lstInv.AddItem i & ": " & Trim$(Item(GetPlayerInvItemNum(i)).Name) } } } } else{ //frmMirage.lstInv.AddItem "<free inventory slot>" } } //frmMirage.lstInv.ListIndex = 0 }
/** * check_direction(uint8 dir) * * @brief * @param dir * @return sboolean true or false */ sbool check_direction(uint8 dir) { uint32 x = player(myindex())->x; uint32 y = player(myindex())->y; uint32 i = 0; switch(dir){ case DIR_UP: y--; break; case DIR_DOWN: y++; break; case DIR_LEFT: x--; break; case DIR_RIGHT: x++; break; } if(map()->tile[GETXY(x,y)].type == TILE_TYPE_BLOCKED) return TRUE; for(i = 0; i < players_on_map(); i++){ if(player(player_on_map(i))->x == x && player(player_on_map(i))->y == y) return TRUE; } for(i = 0; i < MAX_MAP_NPCS; i++){ if(map()->npc[i].num){ if(map()->npc[i].x == x && map()->npc[i].y == y) return TRUE; } } return FALSE; }
void send_player_move(void) { buffer_t buffer; clear_buffer(&buffer); add_opcode(&buffer,CPLAYERMOVE); add_buffer(&buffer,&player(myindex())->dir, SIZE8); add_buffer(&buffer,&player(myindex())->moving, SIZE8); send_data(&buffer); }
/** * check_attack(void) * * @brief Check attack * @param void * @return void */ void check_attack(void) { buffer_t buffer; if(tempdata()->control){ if(player(myindex())->attacktimer + 1 < gettickcount()){ if(!player(myindex())->attacking){ player(myindex())->attacking = 1; player(myindex())->attacktimer = gettickcount(); clear_buffer(&buffer); add_opcode(&buffer, CATTACK); socketsend(&buffer); } } } }
/** * cast_spell(void) * * @brief * @param void * @return void */ void cast_spell(void) { buffer_t buffer; //Check for subscript out of range if(!tempdata()->spell_selected || tempdata()->spell_selected >= MAX_PLAYER_SPELLS) return; //Check if player has enough MP if(player(myindex())->spells[tempdata()->spell_selected]){ if(player(myindex())->vitals[VITAL_MP] < spell(player(myindex())->spells[tempdata()->spell_selected])->mpreq){ // Call AddText("Not enough MP to cast " & Trim$(Spell(SpellSelected).Name) & ".", 12) return; } if(gettickcount() > player(myindex())->attacktimer + 1){ if(player(myindex())->moving == 0){ clear_buffer(&buffer); add_opcode(&buffer,CCAST); add_buffer(&buffer,&tempdata()->spell_selected, SIZE16); socketsend(&buffer); player(myindex())->attacking = TRUE; player(myindex())->attacktimer = gettickcount(); tempdata()->castedspell = TRUE; } else{ //Call AddText("Cannot cast while walking!", 12) } } } else{ //Call AddText("No spell here.", 12) } }
/** * dev_msg(char *text, uint8 color) * * @brief * @param text * @param color * @return void */ void dev_msg(char *text, uint8 color) { if(tempdata()->ingame){ if(player(myindex())->group >= GROUP_DEVELOPER){ //Call AddText(Text, Color) printf("%s", text); } } }
void request_new_map(void) { buffer_t buffer; clear_buffer(&buffer); add_opcode(&buffer,CREQUESTNEWMAP); add_buffer(&buffer,&player(myindex())->dir, SIZE8); send_data(&buffer); }
void send_player_dir(void) { buffer_t buffer; clear_buffer(&buffer); add_opcode(&buffer,CPLAYERDIR); add_buffer(&buffer,&player(myindex())->dir, SIZE8); send_data(&buffer); }
void get_players_on_map(void) { int16 i = 0; uint16 array_index = 0; onmap_t.map_players = 0; if(online.players_online == 0){ onmap_t.index[0] = myindex(); onmap_t.map_players++; return; } for(i = 0; i <= online.players_online; i++){ if(player_array[i].map == player_array[user_index].map){ onmap_t.index[array_index] = i; array_index++; onmap_t.map_players++; } } }
int main(int argc, char *argv[]) { // awesome code goes here: char *s = "hello there!"; char x[20]; mystrcpy(x, s); my_reverse(x); printf("%s\n---------------------\n", x); char z[] = "184"; printf("%i\n", myatoi(z)); char a[10]; myitoa(a, 192); printf("%s\n", a); char h[] = "Kristian"; int res = myindex(h, "s"); printf("s is at position %i in 'Kristian'\n", res); return 0; }
/** * threadupdates(void) * * @brief * @param void * @return void */ void threadupdates(void) { float hp = player(myindex())->vitals[VITAL_HP]; float maxhp = player(myindex())->maxvitals[VITAL_HP]; if(updatetiles){ clear_map_tiles(); //make sure we unload unused images from the image buffer. update_map_tiles(); updatetiles = FALSE; } if(update_user_bars){ if(player(myindex())->maxvitals[VITAL_HP] >= 0) update_progressbar_value(&ingame_gui()->hpbar, ((float)player(myindex())->vitals[VITAL_HP] / (float)player(myindex())->maxvitals[VITAL_HP]) * 100.f); if(player(myindex())->maxvitals[VITAL_MP] >= 0) update_progressbar_value(&ingame_gui()->mpbar, ((float)player(myindex())->vitals[VITAL_MP] / (float)player(myindex())->maxvitals[VITAL_MP]) * 100.f); if(player(myindex())->maxvitals[VITAL_SP] >= 0) update_progressbar_value(&ingame_gui()->spbar, ((float)player(myindex())->vitals[VITAL_SP] / (float)player(myindex())->maxvitals[VITAL_SP]) * 100.f); update_user_bars = FALSE; } }
coded_mini() { FILE *fopen(),*fp3,*fp1; char line[MAXLINE],*fgets(); char string1[MAXSTRING]; char string2[MAXSTRING]; char string3[MAXSTRING]; char string4[MAXSTRING]; char string5[MAXSTRING]; char command[MAXSTRING]; int i,j,cursor,linelength; int code_index,notany_index; if ( (fp3 = fopen(temp3,"w")) == NULL ) { fprintf(stderr,"fopen in coded_mini: can't create temp3\n"); exit(-1); } if ( (fp1 = fopen(temp1,"r")) == NULL ) { fprintf(stderr,"fopen in coded_mini: can't read temp1\n"); exit(-1); } if (TYPEFR) fputs(".type fr\n", fp3); if (ISYMB) { sprintf(string1,".i %d\n", inp_codelength + st_codelength); } else { sprintf(string1,".i %d\n", inputfield + st_codelength); } fputs(string1,fp3); /*printf("string1 = %s\n", string1);*/ sprintf(string1,".o %d\n", st_codelength + outputfield -1); fputs(string1,fp3); /*printf("string1 = %s\n", string1);*/ while ( fgets(line,MAXLINE,fp1) != (char *) 0) { linelength = strlen(line); /* skip blank lines , comment lines and command lines */ if ( (linelength == 1) || (myindex(line,"#") >= 0) || (myindex(line,".") >= 0) ) { ; } else { /* takes care of proper inputs */ if (ISYMB) { for (i = 0; i < inputnum; i++) { string2[i] = line[i]; } string2[inputnum] = '\0'; /*printf("string2 = %s\n", string2);*/ code_index = myindex(string2,"1"); /*printf("index = %d\n", code_index);*/ if ( code_index != -1 ) { strcpy(string2,inputs[code_index].code); } else { for (j = 0; j < inp_codelength; j++) { string2[j] = '-'; } string2[inp_codelength] = '\0'; } /*printf("string2 = %s\n", string2);*/ cursor = inputnum + 3; } else { for (i = 0; i < inputfield; i++) { string2[i] = line[i]; } string2[inputfield] = '\0'; /*printf("string2 = %s\n", string2);*/ cursor = inputfield + 3; } /* takes care of present states */ for (i = cursor; i < cursor + statenum; i++) { string3[i-cursor] = line[i]; } string3[statenum] = '\0'; /*printf("string3 = %s\n", string3);*/ notany_index = myindex(string3,"0"); /*printf("notany_index = %d\n", notany_index);*/ if ( notany_index != -1 ) { code_index = myindex(string3,"1"); /*printf("code_index = %d\n", code_index);*/ strcpy(string3,states[code_index].code); } else { for (j = 0; j < st_codelength; j++) { string3[j] = '-'; } string3[st_codelength] = '\0'; } /*printf("string3 = %s\n", string3);*/ cursor = i + 3; /* takes care of next states */ for (i = cursor; i < cursor + statenum; i++) { string4[i-cursor] = line[i]; } string4[statenum] = '\0'; /*printf("string4 = %s\n", string4);*/ notany_index = myindex(string4,"0"); /*printf("notany_index = %d\n", notany_index);*/ if ( notany_index != -1 ) { code_index = myindex(string4,"1"); /*printf("code_index = %d\n", code_index);*/ strcpy(string4,states[code_index].code); } else { for (j = 0; j < st_codelength; j++) { string4[j] = '-'; } string4[st_codelength] = '\0'; } /*printf("string4 = %s\n", string4);*/ cursor = i + 1; /* takes care of proper outputs */ for (i = cursor; i < cursor + outputfield; i++) { string5[i-cursor] = line[i]; } string5[outputfield] = '\0'; /*printf("string5 = %s\n", string5);*/ sprintf(string1,"%s %s %s %s\n", string2, string3, string4, string5); fputs(string1,fp3); } } fclose(fp1); fclose(fp3); if (VERBOSE) printf("\nRunning Espresso from coded_mini\n"); /*sprintf(command,"espresso -fr %s > %s", temp3, temp4);changed*/ sprintf(command,"espresso %s > %s", temp3, temp4); system(command); if (VERBOSE) printf("Espresso terminated\n"); }
/** * check_movement(void) * * @brief * @param void * @return void */ void check_movement(void) { if(is_trying_to_move()){ if(can_move()){ if(tempdata()->shift) player(myindex())->moving = MOVEMENT_RUNNING; else player(myindex())->moving = MOVEMENT_WALKING; switch(player(myindex())->dir){ case DIR_UP: send_player_move(); player(myindex())->offsety = PIC_SIZE; player(myindex())->y--; break; case DIR_DOWN: send_player_move(); player(myindex())->offsety = PIC_SIZE * -1; player(myindex())->y++; break; case DIR_LEFT: send_player_move(); player(myindex())->offsetx = PIC_SIZE; player(myindex())->x--; break; case DIR_RIGHT: send_player_move(); player(myindex())->offsetx = PIC_SIZE * -1; player(myindex())->x++; break; } if(player(myindex())->offsetx == 0 && player(myindex())->offsety == 0){ if(map()->tile[GETXY(player(myindex())->x,player(myindex())->y)].type == TILE_TYPE_WARP){ tempdata()->gettingmap = TRUE; tempdata()->canmovenow = FALSE; } } } } }
/** * can_move(void) * * @brief Determine if player is able to move * @param void * @return void */ sbool can_move(void) { uint32 d; sbool ismap = FALSE; if(player(myindex())->moving) return FALSE; if(tempdata()->castedspell){ if(gettickcount() > player(myindex())->attacktimer + 1) tempdata()->castedspell = FALSE; else return FALSE; } d = player(myindex())->dir; switch(tempdata()->dir){ case DIR_NONE: return FALSE; case DIR_UP: player(myindex())->dir = DIR_UP; if(player(myindex())->y <= 0){ if(map()->up) ismap = TRUE; return FALSE; } break; case DIR_DOWN: player(myindex())->dir = DIR_DOWN; if(player(myindex())->y >= MAX_MAPY - 1){ if(map()->down) ismap = TRUE; return FALSE; } break; case DIR_LEFT: player(myindex())->dir = DIR_LEFT; if(player(myindex())->x <= 0){ if(map()->left) ismap = TRUE; return FALSE; } break; case DIR_RIGHT: player(myindex())->dir = DIR_RIGHT; if(player(myindex())->x >= MAX_MAPX - 1){ if(map()->right) ismap = TRUE; return FALSE; } break; } if(ismap){ //map_editor_leave_map(); request_new_map(); tempdata()->gettingmap = TRUE; tempdata()->canmovenow = FALSE; return FALSE; } if(check_direction(player(myindex())->dir)){ if(d != player(myindex())->dir) send_player_dir(); return FALSE; } return TRUE; }
PetscErrorCode cHamiltonianMatrix::initial_state(){ gsl_matrix *H0 = gsl_matrix_alloc(L,L); gsl_matrix_set_zero(H0); for (int j = 0; j < L; ++j) { if (judgeB==1) { gsl_matrix_set(H0,j,j,gsl_vector_get(randV,j)); } if (j==0) { gsl_matrix_set(H0,j,j+1,-1.0); } else if(j==L-1){ gsl_matrix_set(H0,j,j-1,-1.0); } else { gsl_matrix_set(H0,j,j+1,-1.0); gsl_matrix_set(H0,j,j-1,-1.0); } } // for (int i = 0; i < L; ++i) { // for (int j = 0; j < L; ++j) { // cout << gsl_matrix_get(H0,i,j) << '\t' ; // } // cout << endl; // } gsl_vector *eval = gsl_vector_alloc (L); gsl_matrix *evec = gsl_matrix_alloc (L, L); gsl_eigen_symmv_workspace * w_symmv = gsl_eigen_symmv_alloc (L); gsl_eigen_symmv (H0, eval, evec, w_symmv); gsl_eigen_symmv_free (w_symmv); gsl_eigen_symmv_sort (eval, evec, GSL_EIGEN_SORT_VAL_ASC); // for (int i = 0; i < L; ++i) { // cout << i+1 << "th eigenvalue is " << gsl_vector_get (eval, i) << endl; // gsl_vector_view evec_i = gsl_matrix_column (evec, i); // gsl_vector_fprintf (stdout, &evec_i.vector, "%g"); // } // %initial state---zero temperature. ierr = VecCreate(PETSC_COMM_WORLD,&X1);CHKERRQ(ierr); ierr = VecSetSizes(X1,nlocal,DIM);CHKERRQ(ierr); ierr = VecSetFromOptions(X1);CHKERRQ(ierr); ierr = VecDuplicate(X1,&X2);CHKERRQ(ierr); gsl_vector * site2 = gsl_vector_alloc(N2); gsl_vector_set(site2,0,position); if (N2>1) for (int i = 1; i < N2; ++i) gsl_vector_set(site2,i,0); int p2 = myindex(site2,N2); //%index of impurity particle, also the position on the lattice rr = gsl_vector_alloc (DIM); // Translation of the matlab code... // rr=1-p2:1:L-p2; // mm=ones(dim,1); // rr=kron(rr',mm);%departure distance! for (int irr = 0; irr < dim2; ++irr) { for (int imm = 0; imm < dim; ++imm) { gsl_vector_set(rr,irr*dim+imm,1-p2+irr); } } // if (rank==0){ // for (int ivar = 0; ivar < DIM; ++ivar) { // cout << gsl_vector_get(rr,ivar) << endl; // } // } double val_det; gsl_matrix *slater = gsl_matrix_alloc(N,N); gsl_permutation *p = gsl_permutation_alloc(slater->size1); int signum; for (int jdim = 0; jdim < dim; ++jdim) { for (int j1 = 0; j1 < N; ++j1) { // row for (int j2 = 0; j2 < N; ++j2) { // col gsl_matrix_set(slater,j1,j2,gsl_matrix_get(evec, gsl_matrix_get(basis1,j1,jdim)-1,j2)); } } gsl_linalg_LU_decomp(slater , p , &signum); // cout << "rank " << rank << " has signum " << signum << endl; val_det = gsl_linalg_LU_det(slater , signum); // cout << jdim+1 << "th slater det is " << val_det << endl; ierr = VecSetValue(X1,(p2-1)*dim+jdim,val_det, INSERT_VALUES); // X1 is the initial state vector0. } ierr = VecAssemblyBegin(X1); CHKERRQ(ierr); ierr = VecAssemblyEnd(X1); CHKERRQ(ierr); // ierr = PetscViewerSetFormat(PETSC_VIEWER_STDOUT_WORLD,PETSC_VIEWER_ASCII_MATLAB); // ierr = VecView(X1,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr); gsl_permutation_free (p); gsl_vector_free(site2); gsl_matrix_free(slater); gsl_vector_free (eval); gsl_matrix_free (evec); gsl_matrix_free (H0); return ierr; }
void cHamiltonianMatrix::compute_hopping(int &nonzeros,const int spin_flag){ int _N, _dim, q, jdim; spin_flag_condition(_N,_dim,spin_flag); gsl_matrix *basis; if (spin_flag == 1) { // spin up basis = basis1; // (value of pointer is copied) jdim = _jdim1; } else if (spin_flag == 2) { // spin down basis = basis2; // (value of pointer is copied) jdim = _jdim2; } else { cerr << "Wrong spin flag configuration. Check construct_basis call in fock member function." << endl; exit(1); } gsl_vector * site = gsl_vector_alloc(_N); // TODO: why in construct basis member function, the alloc size is _N+1? // if (rank == 0){ // only root CPU prints the result to screen. // for (int i = 0; i < _N; ++i) { // for (int j = 0; j < _dim; ++j) { // cout << gsl_matrix_get(basis,i,j) << '\t'; // } // cout << "EOL" << endl; // } // } for (int jpar = 1; jpar <= _N; ++jpar) { // ------------- Start: Boundary term ------------- if (boundary==0){ // #Periodic Boundary Conditions // -------- boundary terms (at site L) ----------------- if (gsl_matrix_get(basis,jpar-1,jdim)==L && gsl_matrix_get(basis,0,jdim)!=1) { if (_N==1) { q = 1; } else { /* * nnn=2:N; site=basis1(:,jdim1); site(nnn)=site(nnn-1); site(1)=1; */ for (int nnn = 1; nnn < _N; ++nnn) { gsl_vector_set(site,nnn,gsl_matrix_get(basis,nnn-1,jdim)); } gsl_vector_set(site,0,1); // for (int i = 0; i < _N; ++i) { // cout << gsl_vector_get(site,i) << '\t'; // } // cout << endl; q = myindex(site,_N); // cout << "jpar = " << jpar << "q = " << q << endl; } compute_col_index(nonzeros,spin_flag,q);nonzeros++; } // -------- boundary terms (at site 1) ----------------- if (gsl_matrix_get(basis,jpar-1,jdim)==1 && gsl_matrix_get(basis,_N-1,jdim)!=L) { if (_N==1) { q = L; } else { /* * nnn=2:N; site=basis1(:,jdim1); site(nnn-1)=site(nnn); site(N)=L; */ for (int nnn = 1; nnn < _N; ++nnn) { gsl_vector_set(site,nnn-1,gsl_matrix_get(basis,nnn,jdim)); } gsl_vector_set(site,_N-1,L); q = myindex(site,_N); } compute_col_index(nonzeros,spin_flag,q);nonzeros++; } } //else { // TODO: Do we consider boundary==1 case or other? // ------------- End: Boundary term -------------. if ( (jpar< _N && gsl_matrix_get(basis,jpar-1,jdim)+1<gsl_matrix_get(basis,jpar,jdim)) || (jpar==_N && gsl_matrix_get(basis,jpar-1,jdim)<L) ) { // cout << "i am the first condition" << endl; // cout << "jpar = " << jpar << " jdim = " << jdim << endl; for (int nnn = 0; nnn < _N; ++nnn) { gsl_vector_set(site,nnn,gsl_matrix_get(basis,nnn,jdim)); } int tmpint = gsl_vector_get(site,jpar-1); gsl_vector_set(site,jpar-1,tmpint+1); // cout << "site is" << endl; // for (int var = 0; var < _N; ++var) { // cout << gsl_vector_get(site,var) << '\t'; // } // cout << endl; q=myindex(site,_N); compute_col_index(nonzeros,spin_flag,q);nonzeros++; } if ((jpar==1 && gsl_matrix_get(basis,jpar-1,jdim)>1) || (jpar>1 && gsl_matrix_get(basis,jpar-1,jdim)-1>gsl_matrix_get(basis,jpar-2,jdim))) { // cout << "i am the second condition" << endl; // cout << "jpar = " << jpar << " jdim = " << jdim << endl; for (int nnn = 0; nnn < _N; ++nnn) { gsl_vector_set(site,nnn,gsl_matrix_get(basis,nnn,jdim)); } int tmpint = gsl_vector_get(site,jpar-1); gsl_vector_set(site,jpar-1,tmpint-1); // cout << "site is" << endl; // for (int var = 0; var < _N; ++var) { // cout << gsl_vector_get(site,var) << '\t'; // } // cout << endl; q=myindex(site,_N); compute_col_index(nonzeros,spin_flag,q);nonzeros++; } //} } gsl_vector_free (site); }