summary refs log tree commit diff stats
path: root/hslist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'hslist.cpp')
-rw-r--r--hslist.cpp144
1 files changed, 72 insertions, 72 deletions
diff --git a/hslist.cpp b/hslist.cpp index ed7f3ca..f71d8be 100644 --- a/hslist.cpp +++ b/hslist.cpp
@@ -40,7 +40,7 @@ SDL_Surface* HighscoreList::render()
40 for (hslist_t::iterator it = hslist.begin(); it != hslist.end(); ++it, ++i) 40 for (hslist_t::iterator it = hslist.begin(); it != hslist.end(); ++it, ++i)
41 { 41 {
42 Highscore* h = *it; 42 Highscore* h = *it;
43 43
44 int posw, posh; 44 int posw, posh;
45 char pos[4]; // 2 max characters in rank plus the colon at the end, plus terminator 45 char pos[4]; // 2 max characters in rank plus the colon at the end, plus terminator
46 sprintf(pos, "%d:", h->getRank()); 46 sprintf(pos, "%d:", h->getRank());
@@ -196,12 +196,12 @@ int LocalHighscoreList::addHighscore(Highscore* h)
196 hslist.push_back(h); 196 hslist.push_back(h);
197 std::sort(hslist.begin(), hslist.end(), hslist_comp_i); 197 std::sort(hslist.begin(), hslist.end(), hslist_comp_i);
198 resetRanks(hslist); 198 resetRanks(hslist);
199 199
200 if (hslist.size() > 10) 200 if (hslist.size() > 10)
201 { 201 {
202 hslist.resize(10); 202 hslist.resize(10);
203 } 203 }
204 204
205 return h->getRank(); 205 return h->getRank();
206} 206}
207 207
@@ -236,7 +236,7 @@ GlobalHighscoreList::GlobalHighscoreList()
236GlobalHighscoreList::GlobalHighscoreList(Highscore* h) 236GlobalHighscoreList::GlobalHighscoreList(Highscore* h)
237{ 237{
238 fail = false; 238 fail = false;
239 239
240 try 240 try
241 { 241 {
242 IPaddress ipaddress; 242 IPaddress ipaddress;
@@ -302,7 +302,7 @@ GlobalHighscoreList::GlobalHighscoreList(Highscore* h)
302 this->hslist.push_back(h); 302 this->hslist.push_back(h);
303 std::sort(this->hslist.begin(), this->hslist.end(), hslist_comp_i); 303 std::sort(this->hslist.begin(), this->hslist.end(), hslist_comp_i);
304 resetRanks(this->hslist); 304 resetRanks(this->hslist);
305 305
306 if (this->hslist.size() > 10) 306 if (this->hslist.size() > 10)
307 { 307 {
308 this->hslist.resize(10); 308 this->hslist.resize(10);
@@ -345,14 +345,14 @@ State* ChooseHighscoreListState::operator() (SDL_Window* window, SDL_Renderer* r
345 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp"); 345 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp");
346 int selection = 0; 346 int selection = 0;
347 SDL_Event e; 347 SDL_Event e;
348 348
349 for (;;) 349 for (;;)
350 { 350 {
351 SDL_RenderClear(renderer); 351 SDL_RenderClear(renderer);
352 SDL_RenderCopy(renderer, background, NULL, NULL); 352 SDL_RenderCopy(renderer, background, NULL, NULL);
353 applyTexture(renderer, pointer, 127, selection==0?306:(selection==1?336:396)); 353 applyTexture(renderer, pointer, 127, selection==0?306:(selection==1?336:396));
354 SDL_RenderPresent(renderer); 354 SDL_RenderPresent(renderer);
355 355
356 while (SDL_PollEvent(&e)) 356 while (SDL_PollEvent(&e))
357 { 357 {
358 if (e.type == SDL_QUIT) 358 if (e.type == SDL_QUIT)
@@ -383,7 +383,7 @@ State* ChooseHighscoreListState::operator() (SDL_Window* window, SDL_Renderer* r
383State* DisplayLocalHighscoreListState::operator() (SDL_Window* window, SDL_Renderer* renderer) 383State* DisplayLocalHighscoreListState::operator() (SDL_Window* window, SDL_Renderer* renderer)
384{ 384{
385 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp"); 385 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp");
386 386
387 LocalHighscoreList* lhl = new LocalHighscoreList(); 387 LocalHighscoreList* lhl = new LocalHighscoreList();
388 SDL_Surface* list_s = lhl->render(); 388 SDL_Surface* list_s = lhl->render();
389 SDL_Color fontColor = {0, 0, 0, 0}; 389 SDL_Color fontColor = {0, 0, 0, 0};
@@ -396,12 +396,12 @@ State* DisplayLocalHighscoreListState::operator() (SDL_Window* window, SDL_Rende
396 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h}; 396 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h};
397 SDL_BlitSurface(options_s, NULL, list_s, &oSpace); 397 SDL_BlitSurface(options_s, NULL, list_s, &oSpace);
398 SDL_FreeSurface(options_s); 398 SDL_FreeSurface(options_s);
399 399
400 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s); 400 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s);
401 SDL_FreeSurface(list_s); 401 SDL_FreeSurface(list_s);
402 402
403 SDL_Event e; 403 SDL_Event e;
404 404
405 for (;;) 405 for (;;)
406 { 406 {
407 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); 407 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
@@ -409,7 +409,7 @@ State* DisplayLocalHighscoreListState::operator() (SDL_Window* window, SDL_Rende
409 SDL_RenderCopy(renderer, list, NULL, NULL); 409 SDL_RenderCopy(renderer, list, NULL, NULL);
410 applyTexture(renderer, pointer, 137, 449); 410 applyTexture(renderer, pointer, 137, 449);
411 SDL_RenderPresent(renderer); 411 SDL_RenderPresent(renderer);
412 412
413 while (SDL_PollEvent(&e)) 413 while (SDL_PollEvent(&e))
414 { 414 {
415 if (e.type == SDL_QUIT) 415 if (e.type == SDL_QUIT)
@@ -429,7 +429,7 @@ State* DisplayLocalHighscoreListState::operator() (SDL_Window* window, SDL_Rende
429State* DisplayAndReturnLocalHighscoreListState::operator() (SDL_Window* window, SDL_Renderer* renderer) 429State* DisplayAndReturnLocalHighscoreListState::operator() (SDL_Window* window, SDL_Renderer* renderer)
430{ 430{
431 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp"); 431 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp");
432 432
433 LocalHighscoreList* lhl = new LocalHighscoreList(); 433 LocalHighscoreList* lhl = new LocalHighscoreList();
434 SDL_Surface* list_s = lhl->render(); 434 SDL_Surface* list_s = lhl->render();
435 SDL_Color fontColor = {0, 0, 0, 0}; 435 SDL_Color fontColor = {0, 0, 0, 0};
@@ -442,13 +442,13 @@ State* DisplayAndReturnLocalHighscoreListState::operator() (SDL_Window* window,
442 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h}; 442 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h};
443 SDL_BlitSurface(options_s, NULL, list_s, &oSpace); 443 SDL_BlitSurface(options_s, NULL, list_s, &oSpace);
444 SDL_FreeSurface(options_s); 444 SDL_FreeSurface(options_s);
445 445
446 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s); 446 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s);
447 SDL_FreeSurface(list_s); 447 SDL_FreeSurface(list_s);
448 448
449 int selection = 0; 449 int selection = 0;
450 SDL_Event e; 450 SDL_Event e;
451 451
452 for (;;) 452 for (;;)
453 { 453 {
454 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); 454 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
@@ -456,7 +456,7 @@ State* DisplayAndReturnLocalHighscoreListState::operator() (SDL_Window* window,
456 SDL_RenderCopy(renderer, list, NULL, NULL); 456 SDL_RenderCopy(renderer, list, NULL, NULL);
457 applyTexture(renderer, pointer, selection==0?52:225, 447); 457 applyTexture(renderer, pointer, selection==0?52:225, 447);
458 SDL_RenderPresent(renderer); 458 SDL_RenderPresent(renderer);
459 459
460 while (SDL_PollEvent(&e)) 460 while (SDL_PollEvent(&e))
461 { 461 {
462 if (e.type == SDL_QUIT) 462 if (e.type == SDL_QUIT)
@@ -486,11 +486,11 @@ State* DisplayAndReturnLocalHighscoreListState::operator() (SDL_Window* window,
486State* DisplayGlobalHighscoreListState::operator() (SDL_Window* window, SDL_Renderer* renderer) 486State* DisplayGlobalHighscoreListState::operator() (SDL_Window* window, SDL_Renderer* renderer)
487{ 487{
488 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp"); 488 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp");
489 489
490 // Display loading message 490 // Display loading message
491 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); 491 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
492 SDL_RenderClear(renderer); 492 SDL_RenderClear(renderer);
493 493
494 SDL_Surface* list_s = SDL_CreateRGBSurface(0, 480, 480, 32, 0,0,0,0); 494 SDL_Surface* list_s = SDL_CreateRGBSurface(0, 480, 480, 32, 0,0,0,0);
495 Uint32 bgColor = SDL_MapRGB(list_s->format, 255, 255, 255); 495 Uint32 bgColor = SDL_MapRGB(list_s->format, 255, 255, 255);
496 SDL_FillRect(list_s, NULL, bgColor); 496 SDL_FillRect(list_s, NULL, bgColor);
@@ -511,18 +511,18 @@ State* DisplayGlobalHighscoreListState::operator() (SDL_Window* window, SDL_Rend
511 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h}; 511 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h};
512 SDL_BlitSurface(options_s, NULL, list_s, &oSpace); 512 SDL_BlitSurface(options_s, NULL, list_s, &oSpace);
513 SDL_FreeSurface(options_s); 513 SDL_FreeSurface(options_s);
514 514
515 list = SDL_CreateTextureFromSurface(renderer, list_s); 515 list = SDL_CreateTextureFromSurface(renderer, list_s);
516 SDL_FreeSurface(list_s); 516 SDL_FreeSurface(list_s);
517 517
518 m = SDL_CreateMutex(); 518 m = SDL_CreateMutex();
519 519
520 // Start downloading scores 520 // Start downloading scores
521 SDL_CreateThread(&LoadHighscoreList, "LoadHighscoreList", this); 521 SDL_CreateThread(&LoadHighscoreList, "LoadHighscoreList", this);
522 522
523 // Parse keyboard events 523 // Parse keyboard events
524 SDL_Event e; 524 SDL_Event e;
525 525
526 for (;;) 526 for (;;)
527 { 527 {
528 if (SDL_LockMutex(m) == 0) 528 if (SDL_LockMutex(m) == 0)
@@ -541,35 +541,35 @@ State* DisplayGlobalHighscoreListState::operator() (SDL_Window* window, SDL_Rend
541 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h}; 541 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h};
542 SDL_BlitSurface(options_s, NULL, list_s, &oSpace); 542 SDL_BlitSurface(options_s, NULL, list_s, &oSpace);
543 SDL_FreeSurface(options_s); 543 SDL_FreeSurface(options_s);
544 544
545 list = SDL_CreateTextureFromSurface(renderer, list_s); 545 list = SDL_CreateTextureFromSurface(renderer, list_s);
546 SDL_FreeSurface(list_s); 546 SDL_FreeSurface(list_s);
547 547
548 lhl = NULL; 548 lhl = NULL;
549 } 549 }
550 550
551 SDL_UnlockMutex(m); 551 SDL_UnlockMutex(m);
552 } 552 }
553 553
554 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); 554 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
555 SDL_RenderClear(renderer); 555 SDL_RenderClear(renderer);
556 SDL_RenderCopy(renderer, list, NULL, NULL); 556 SDL_RenderCopy(renderer, list, NULL, NULL);
557 applyTexture(renderer, pointer, 137, 449); 557 applyTexture(renderer, pointer, 137, 449);
558 SDL_RenderPresent(renderer); 558 SDL_RenderPresent(renderer);
559 559
560 while (SDL_PollEvent(&e)) 560 while (SDL_PollEvent(&e))
561 { 561 {
562 if (e.type == SDL_QUIT) 562 if (e.type == SDL_QUIT)
563 { 563 {
564 SDL_DestroyMutex(m); 564 SDL_DestroyMutex(m);
565 565
566 return NULL; 566 return NULL;
567 } else if (e.type == SDL_KEYDOWN) 567 } else if (e.type == SDL_KEYDOWN)
568 { 568 {
569 if (e.key.keysym.sym == SDLK_RETURN) 569 if (e.key.keysym.sym == SDLK_RETURN)
570 { 570 {
571 SDL_DestroyMutex(m); 571 SDL_DestroyMutex(m);
572 572
573 return new ChooseHighscoreListState(); 573 return new ChooseHighscoreListState();
574 } 574 }
575 } 575 }
@@ -583,7 +583,7 @@ int DisplayGlobalHighscoreListState::LoadHighscoreList(void* pParam)
583 if (SDL_LockMutex(parent->m) == 0) 583 if (SDL_LockMutex(parent->m) == 0)
584 { 584 {
585 parent->lhl = new GlobalHighscoreList(); 585 parent->lhl = new GlobalHighscoreList();
586 586
587 SDL_UnlockMutex(parent->m); 587 SDL_UnlockMutex(parent->m);
588 } else { 588 } else {
589 printf("Couldn't lock mutex: %s\n", SDL_GetError()); 589 printf("Couldn't lock mutex: %s\n", SDL_GetError());
@@ -598,16 +598,16 @@ EnterHighscoreState::EnterHighscoreState(int level)
598State* EnterHighscoreState::operator() (SDL_Window* window, SDL_Renderer* renderer) 598State* EnterHighscoreState::operator() (SDL_Window* window, SDL_Renderer* renderer)
599{ 599{
600 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp"); 600 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp");
601 601
602 // Render highscore list 602 // Render highscore list
603 LocalHighscoreList* lhl = new LocalHighscoreList(); 603 LocalHighscoreList* lhl = new LocalHighscoreList();
604 char* emp = new char[1]; 604 char* emp = new char[1];
605 emp[0] = 0; 605 emp[0] = 0;
606 Highscore* h = new Highscore(emp, level); 606 Highscore* h = new Highscore(emp, level);
607 int newpos = lhl->addHighscore(h); 607 int newpos = lhl->addHighscore(h);
608 608
609 SDL_Surface* list_s = lhl->render(); 609 SDL_Surface* list_s = lhl->render();
610 610
611 SDL_Color fontColor = {0, 0, 0, 0}; 611 SDL_Color fontColor = {0, 0, 0, 0};
612 SDL_Surface* title = TTF_RenderText_Blended(loadFont(40), "New Highscore!", fontColor); 612 SDL_Surface* title = TTF_RenderText_Blended(loadFont(40), "New Highscore!", fontColor);
613 SDL_Rect tSpace = {240-(title->w/2), 0, title->w, title->h}; 613 SDL_Rect tSpace = {240-(title->w/2), 0, title->w, title->h};
@@ -621,13 +621,13 @@ State* EnterHighscoreState::operator() (SDL_Window* window, SDL_Renderer* render
621 SDL_Rect oSpace = {240-(text->w/2), 440, text->w, text->h}; 621 SDL_Rect oSpace = {240-(text->w/2), 440, text->w, text->h};
622 SDL_BlitSurface(text, NULL, list_s, &oSpace); 622 SDL_BlitSurface(text, NULL, list_s, &oSpace);
623 SDL_FreeSurface(text); 623 SDL_FreeSurface(text);
624 624
625 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s); 625 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s);
626 SDL_FreeSurface(list_s); 626 SDL_FreeSurface(list_s);
627 627
628 int selection = 0; 628 int selection = 0;
629 SDL_Event e; 629 SDL_Event e;
630 630
631 int posw, posh; 631 int posw, posh;
632 char pos[3]; // 2 max characters in rank plus the colon at the end 632 char pos[3]; // 2 max characters in rank plus the colon at the end
633 sprintf(pos, "%d:", newpos); 633 sprintf(pos, "%d:", newpos);
@@ -642,7 +642,7 @@ State* EnterHighscoreState::operator() (SDL_Window* window, SDL_Renderer* render
642 rntSpace.h = newName_s->h; 642 rntSpace.h = newName_s->h;
643 newName = SDL_CreateTextureFromSurface(renderer, newName_s); 643 newName = SDL_CreateTextureFromSurface(renderer, newName_s);
644 SDL_FreeSurface(newName_s); 644 SDL_FreeSurface(newName_s);
645 645
646 for (;;) 646 for (;;)
647 { 647 {
648 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); 648 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
@@ -651,12 +651,12 @@ State* EnterHighscoreState::operator() (SDL_Window* window, SDL_Renderer* render
651 SDL_Rect eSpace = {0, newpos*40, 480, 40}; 651 SDL_Rect eSpace = {0, newpos*40, 480, 40};
652 SDL_SetRenderDrawColor(renderer, 255, 255, 0, 255); 652 SDL_SetRenderDrawColor(renderer, 255, 255, 0, 255);
653 SDL_RenderFillRect(renderer, &eSpace); 653 SDL_RenderFillRect(renderer, &eSpace);
654 654
655 SDL_RenderCopy(renderer, list, NULL, NULL); 655 SDL_RenderCopy(renderer, list, NULL, NULL);
656 SDL_RenderCopy(renderer, newName, NULL, &rntSpace); 656 SDL_RenderCopy(renderer, newName, NULL, &rntSpace);
657 657
658 SDL_RenderPresent(renderer); 658 SDL_RenderPresent(renderer);
659 659
660 while (SDL_PollEvent(&e)) 660 while (SDL_PollEvent(&e))
661 { 661 {
662 if (e.type == SDL_QUIT) 662 if (e.type == SDL_QUIT)
@@ -682,7 +682,7 @@ State* EnterHighscoreState::operator() (SDL_Window* window, SDL_Renderer* render
682 Highscore* h2 = new Highscore(hsname, level); 682 Highscore* h2 = new Highscore(hsname, level);
683 lhl->addHighscore(h2); 683 lhl->addHighscore(h2);
684 lhl->writeHighscores(); 684 lhl->writeHighscores();
685 685
686 return new NewHighscoreState(h2); 686 return new NewHighscoreState(h2);
687 } 687 }
688 } else if (e.type == SDL_TEXTINPUT) 688 } else if (e.type == SDL_TEXTINPUT)
@@ -714,17 +714,17 @@ NewHighscoreState::NewHighscoreState(Highscore* h)
714State* NewHighscoreState::operator() (SDL_Window* window, SDL_Renderer* renderer) 714State* NewHighscoreState::operator() (SDL_Window* window, SDL_Renderer* renderer)
715{ 715{
716 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp"); 716 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp");
717 717
718 // Render highscore list 718 // Render highscore list
719 LocalHighscoreList* lhl = new LocalHighscoreList(); 719 LocalHighscoreList* lhl = new LocalHighscoreList();
720 SDL_Surface* list_s = lhl->render(); 720 SDL_Surface* list_s = lhl->render();
721 721
722 SDL_Color fontColor = {0, 0, 0, 0}; 722 SDL_Color fontColor = {0, 0, 0, 0};
723 SDL_Surface* title = TTF_RenderText_Blended(loadFont(40), "New Highscore!", fontColor); 723 SDL_Surface* title = TTF_RenderText_Blended(loadFont(40), "New Highscore!", fontColor);
724 SDL_Rect tSpace = {240-(title->w/2), 0, title->w, title->h}; 724 SDL_Rect tSpace = {240-(title->w/2), 0, title->w, title->h};
725 SDL_BlitSurface(title, NULL, list_s, &tSpace); 725 SDL_BlitSurface(title, NULL, list_s, &tSpace);
726 SDL_FreeSurface(title); 726 SDL_FreeSurface(title);
727 727
728 SDL_Surface* options_s = SDL_LoadBMP("resources/hlo_passartm.bmp"); 728 SDL_Surface* options_s = SDL_LoadBMP("resources/hlo_passartm.bmp");
729 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h}; 729 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h};
730 SDL_BlitSurface(options_s, NULL, list_s, &oSpace); 730 SDL_BlitSurface(options_s, NULL, list_s, &oSpace);
@@ -732,10 +732,10 @@ State* NewHighscoreState::operator() (SDL_Window* window, SDL_Renderer* renderer
732 732
733 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s); 733 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s);
734 SDL_FreeSurface(list_s); 734 SDL_FreeSurface(list_s);
735 735
736 int selection = 0; 736 int selection = 0;
737 SDL_Event e; 737 SDL_Event e;
738 738
739 for (;;) 739 for (;;)
740 { 740 {
741 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); 741 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
@@ -744,11 +744,11 @@ State* NewHighscoreState::operator() (SDL_Window* window, SDL_Renderer* renderer
744 SDL_Rect eSpace = {0, h->getRank()*40, 480, 40}; 744 SDL_Rect eSpace = {0, h->getRank()*40, 480, 40};
745 SDL_SetRenderDrawColor(renderer, 255, 255, 0, 255); 745 SDL_SetRenderDrawColor(renderer, 255, 255, 0, 255);
746 SDL_RenderFillRect(renderer, &eSpace); 746 SDL_RenderFillRect(renderer, &eSpace);
747 747
748 SDL_RenderCopy(renderer, list, NULL, NULL); 748 SDL_RenderCopy(renderer, list, NULL, NULL);
749 applyTexture(renderer, pointer, selection==0?13:(selection==1?138:284), 448); 749 applyTexture(renderer, pointer, selection==0?13:(selection==1?138:284), 448);
750 SDL_RenderPresent(renderer); 750 SDL_RenderPresent(renderer);
751 751
752 while (SDL_PollEvent(&e)) 752 while (SDL_PollEvent(&e))
753 { 753 {
754 if (e.type == SDL_QUIT) 754 if (e.type == SDL_QUIT)
@@ -798,30 +798,30 @@ State* SubmitHighscoreState::operator() (SDL_Window* window, SDL_Renderer* rende
798 SDL_Rect tSpace = {240-(title->w/2), 0, title->w, title->h}; 798 SDL_Rect tSpace = {240-(title->w/2), 0, title->w, title->h};
799 SDL_BlitSurface(title, NULL, list_s, &tSpace); 799 SDL_BlitSurface(title, NULL, list_s, &tSpace);
800 SDL_FreeSurface(title); 800 SDL_FreeSurface(title);
801 801
802 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s); 802 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s);
803 SDL_FreeSurface(list_s); 803 SDL_FreeSurface(list_s);
804 804
805 // Start submitting score 805 // Start submitting score
806 m = SDL_CreateMutex(); 806 m = SDL_CreateMutex();
807 SDL_CreateThread(&SubmitHighscore, "SubmitHighscore", this); 807 SDL_CreateThread(&SubmitHighscore, "SubmitHighscore", this);
808 808
809 SDL_Event e; 809 SDL_Event e;
810 810
811 for (;;) 811 for (;;)
812 { 812 {
813 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); 813 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
814 SDL_RenderClear(renderer); 814 SDL_RenderClear(renderer);
815 SDL_RenderCopy(renderer, list, NULL, NULL); 815 SDL_RenderCopy(renderer, list, NULL, NULL);
816 SDL_RenderPresent(renderer); 816 SDL_RenderPresent(renderer);
817 817
818 if (SDL_LockMutex(m) == 0) 818 if (SDL_LockMutex(m) == 0)
819 { 819 {
820 if (lhl != NULL) 820 if (lhl != NULL)
821 { 821 {
822 SDL_UnlockMutex(m); 822 SDL_UnlockMutex(m);
823 SDL_DestroyMutex(m); 823 SDL_DestroyMutex(m);
824 824
825 if (lhl->didFail()) 825 if (lhl->didFail())
826 { 826 {
827 return new FailedSubmittingHighscoreState(h); 827 return new FailedSubmittingHighscoreState(h);
@@ -832,13 +832,13 @@ State* SubmitHighscoreState::operator() (SDL_Window* window, SDL_Renderer* rende
832 SDL_UnlockMutex(m); 832 SDL_UnlockMutex(m);
833 } 833 }
834 } 834 }
835 835
836 while (SDL_PollEvent(&e)) 836 while (SDL_PollEvent(&e))
837 { 837 {
838 if (e.type == SDL_QUIT) 838 if (e.type == SDL_QUIT)
839 { 839 {
840 SDL_DestroyMutex(m); 840 SDL_DestroyMutex(m);
841 841
842 return NULL; 842 return NULL;
843 } 843 }
844 } 844 }
@@ -851,7 +851,7 @@ int SubmitHighscoreState::SubmitHighscore(void* pParam)
851 if (SDL_LockMutex(parent->m) == 0) 851 if (SDL_LockMutex(parent->m) == 0)
852 { 852 {
853 parent->lhl = new GlobalHighscoreList(parent->h); 853 parent->lhl = new GlobalHighscoreList(parent->h);
854 854
855 SDL_UnlockMutex(parent->m); 855 SDL_UnlockMutex(parent->m);
856 } else { 856 } else {
857 printf("Could not lock mutex: %s\n", SDL_GetError()); 857 printf("Could not lock mutex: %s\n", SDL_GetError());
@@ -875,7 +875,7 @@ State* FailedSubmittingHighscoreState::operator() (SDL_Window* window, SDL_Rende
875 SDL_Rect tSpace = {240-(text->w/2), 240-(text->h/2), text->w, text->h}; 875 SDL_Rect tSpace = {240-(text->w/2), 240-(text->h/2), text->w, text->h};
876 SDL_BlitSurface(text, NULL, list_s, &tSpace); 876 SDL_BlitSurface(text, NULL, list_s, &tSpace);
877 SDL_FreeSurface(text); 877 SDL_FreeSurface(text);
878 878
879 SDL_Surface* title = TTF_RenderText_Blended(loadFont(40), "Highscore List", fontColor); 879 SDL_Surface* title = TTF_RenderText_Blended(loadFont(40), "Highscore List", fontColor);
880 SDL_Rect aSpace = {240-(title->w/2), 0, title->w, title->h}; 880 SDL_Rect aSpace = {240-(title->w/2), 0, title->w, title->h};
881 SDL_BlitSurface(title, NULL, list_s, &aSpace); 881 SDL_BlitSurface(title, NULL, list_s, &aSpace);
@@ -885,14 +885,14 @@ State* FailedSubmittingHighscoreState::operator() (SDL_Window* window, SDL_Rende
885 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h}; 885 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h};
886 SDL_BlitSurface(options_s, NULL, list_s, &oSpace); 886 SDL_BlitSurface(options_s, NULL, list_s, &oSpace);
887 SDL_FreeSurface(options_s); 887 SDL_FreeSurface(options_s);
888 888
889 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s); 889 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s);
890 SDL_FreeSurface(list_s); 890 SDL_FreeSurface(list_s);
891 891
892 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp"); 892 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp");
893 int selection = 0; 893 int selection = 0;
894 SDL_Event e; 894 SDL_Event e;
895 895
896 for (;;) 896 for (;;)
897 { 897 {
898 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); 898 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
@@ -900,7 +900,7 @@ State* FailedSubmittingHighscoreState::operator() (SDL_Window* window, SDL_Rende
900 SDL_RenderCopy(renderer, list, NULL, NULL); 900 SDL_RenderCopy(renderer, list, NULL, NULL);
901 applyTexture(renderer, pointer, selection==0?13:(selection==1?138:284), 448); 901 applyTexture(renderer, pointer, selection==0?13:(selection==1?138:284), 448);
902 SDL_RenderPresent(renderer); 902 SDL_RenderPresent(renderer);
903 903
904 while (SDL_PollEvent(&e)) 904 while (SDL_PollEvent(&e))
905 { 905 {
906 if (e.type == SDL_QUIT) 906 if (e.type == SDL_QUIT)
@@ -937,44 +937,44 @@ SubmittedHighscoreState::SubmittedHighscoreState(GlobalHighscoreList* lhl, Highs
937State* SubmittedHighscoreState::operator() (SDL_Window* window, SDL_Renderer* renderer) 937State* SubmittedHighscoreState::operator() (SDL_Window* window, SDL_Renderer* renderer)
938{ 938{
939 SDL_Surface* list_s = lhl->render(); 939 SDL_Surface* list_s = lhl->render();
940 940
941 SDL_Color fontColor = {0, 0, 0, 0}; 941 SDL_Color fontColor = {0, 0, 0, 0};
942 SDL_Surface* title = TTF_RenderText_Blended(loadFont(40), "Highscore List", fontColor); 942 SDL_Surface* title = TTF_RenderText_Blended(loadFont(40), "Highscore List", fontColor);
943 SDL_Rect tSpace = {240-(title->w/2), 0, title->w, title->h}; 943 SDL_Rect tSpace = {240-(title->w/2), 0, title->w, title->h};
944 SDL_BlitSurface(title, NULL, list_s, &tSpace); 944 SDL_BlitSurface(title, NULL, list_s, &tSpace);
945 SDL_FreeSurface(title); 945 SDL_FreeSurface(title);
946 946
947 SDL_Surface* options_s = SDL_LoadBMP("resources/hlo_paartm.bmp"); 947 SDL_Surface* options_s = SDL_LoadBMP("resources/hlo_paartm.bmp");
948 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h}; 948 SDL_Rect oSpace = {0, 440, options_s->w, options_s->h};
949 SDL_BlitSurface(options_s, NULL, list_s, &oSpace); 949 SDL_BlitSurface(options_s, NULL, list_s, &oSpace);
950 SDL_FreeSurface(options_s); 950 SDL_FreeSurface(options_s);
951 951
952 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s); 952 SDL_Texture* list = SDL_CreateTextureFromSurface(renderer, list_s);
953 SDL_FreeSurface(list_s); 953 SDL_FreeSurface(list_s);
954 954
955 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp"); 955 SDL_Texture* pointer = loadImage(renderer, "resources/pointer.bmp");
956 int selection = 0; 956 int selection = 0;
957 SDL_Event e; 957 SDL_Event e;
958 958
959 int newpos = h->getRank(); 959 int newpos = h->getRank();
960 if (newpos > 10) 960 if (newpos > 10)
961 { 961 {
962 newpos = 10; 962 newpos = 10;
963 } 963 }
964 964
965 for (;;) 965 for (;;)
966 { 966 {
967 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); 967 SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
968 SDL_RenderClear(renderer); 968 SDL_RenderClear(renderer);
969 969
970 SDL_Rect eSpace = {0, newpos*40, 480, 40}; 970 SDL_Rect eSpace = {0, newpos*40, 480, 40};
971 SDL_SetRenderDrawColor(renderer, 255, 255, 0, 255); 971 SDL_SetRenderDrawColor(renderer, 255, 255, 0, 255);
972 SDL_RenderFillRect(renderer, &eSpace); 972 SDL_RenderFillRect(renderer, &eSpace);
973 973
974 SDL_RenderCopy(renderer, list, NULL, NULL); 974 SDL_RenderCopy(renderer, list, NULL, NULL);
975 applyTexture(renderer, pointer, selection==0?52:225, 447); 975 applyTexture(renderer, pointer, selection==0?52:225, 447);
976 SDL_RenderPresent(renderer); 976 SDL_RenderPresent(renderer);
977 977
978 while (SDL_PollEvent(&e)) 978 while (SDL_PollEvent(&e))
979 { 979 {
980 if (e.type == SDL_QUIT) 980 if (e.type == SDL_QUIT)