author | imm <imm> | 2002-09-20 21:17:49 (UTC) |
---|---|---|
committer | imm <imm> | 2002-09-20 21:17:49 (UTC) |
commit | 20c93734a4eada53d056f13558cbf60d6eff5bac (patch) (unidiff) | |
tree | 6ee73a9d1e5f9f5426ada0cb58ff60ad74bc876b | |
parent | 7027b4c29de455d457b7d62f52511216a8b76b9c (diff) | |
download | opie-20c93734a4eada53d056f13558cbf60d6eff5bac.zip opie-20c93734a4eada53d056f13558cbf60d6eff5bac.tar.gz opie-20c93734a4eada53d056f13558cbf60d6eff5bac.tar.bz2 |
changed keys
-rw-r--r-- | noncore/games/kpacman/referee.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/noncore/games/kpacman/referee.cpp b/noncore/games/kpacman/referee.cpp index 9edaabd..70916f0 100644 --- a/noncore/games/kpacman/referee.cpp +++ b/noncore/games/kpacman/referee.cpp | |||
@@ -605,473 +605,478 @@ void Referee::confTiming(bool defGroup) | |||
605 | introPostAnimationMS = cfg->readNumEntry("IntroPostAnimationMS", 1000); | 605 | introPostAnimationMS = cfg->readNumEntry("IntroPostAnimationMS", 1000); |
606 | if (defGroup || cfg->hasKey("LevelUpPreAnimationMS")) | 606 | if (defGroup || cfg->hasKey("LevelUpPreAnimationMS")) |
607 | levelUpPreAnimationMS = cfg->readNumEntry("LevelUpPreAnimationMS", 2000); | 607 | levelUpPreAnimationMS = cfg->readNumEntry("LevelUpPreAnimationMS", 2000); |
608 | if (defGroup || cfg->hasKey("LevelUpAnimationMS")) | 608 | if (defGroup || cfg->hasKey("LevelUpAnimationMS")) |
609 | levelUpAnimationMS = cfg->readNumEntry("LevelUpAnimationMS", 2000); | 609 | levelUpAnimationMS = cfg->readNumEntry("LevelUpAnimationMS", 2000); |
610 | if (defGroup || cfg->hasKey("EnergizerAnimationMS")) | 610 | if (defGroup || cfg->hasKey("EnergizerAnimationMS")) |
611 | energizerAnimationMS = cfg->readNumEntry("EnergizerAnimationMS", 200); | 611 | energizerAnimationMS = cfg->readNumEntry("EnergizerAnimationMS", 200); |
612 | APP_CONFIG_END( cfg ); | 612 | APP_CONFIG_END( cfg ); |
613 | } | 613 | } |
614 | 614 | ||
615 | void Referee::confScoring(bool defGroup) | 615 | void Referee::confScoring(bool defGroup) |
616 | { | 616 | { |
617 | APP_CONFIG_BEGIN( cfg ); | 617 | APP_CONFIG_BEGIN( cfg ); |
618 | if (defGroup || cfg->hasKey("PointScore")) | 618 | if (defGroup || cfg->hasKey("PointScore")) |
619 | pointScore = cfg->readNumEntry("PointScore", 10); | 619 | pointScore = cfg->readNumEntry("PointScore", 10); |
620 | if (defGroup || cfg->hasKey("EnergizerScore")) | 620 | if (defGroup || cfg->hasKey("EnergizerScore")) |
621 | energizerScore = cfg->readNumEntry("EnergizerScore", 50); | 621 | energizerScore = cfg->readNumEntry("EnergizerScore", 50); |
622 | if (defGroup || cfg->hasKey("FruitScore")) | 622 | if (defGroup || cfg->hasKey("FruitScore")) |
623 | fillArray(fruitScore, cfg->readEntry("FruitScore", "100,300,500,,700,,1000,,2000,,3000,,5000"), maxLevel+1); | 623 | fillArray(fruitScore, cfg->readEntry("FruitScore", "100,300,500,,700,,1000,,2000,,3000,,5000"), maxLevel+1); |
624 | if (defGroup || cfg->hasKey("MonsterScore")) | 624 | if (defGroup || cfg->hasKey("MonsterScore")) |
625 | fillArray(monsterScore, cfg->readEntry("MonsterScore", "200,400,800,1600"), 4); | 625 | fillArray(monsterScore, cfg->readEntry("MonsterScore", "200,400,800,1600"), 4); |
626 | if (defGroup || cfg->hasKey("ExtraLifeScore")) | 626 | if (defGroup || cfg->hasKey("ExtraLifeScore")) |
627 | fillArray(extraLifeScore, cfg->readEntry("ExtraLifeScore", "10000"), -1); | 627 | fillArray(extraLifeScore, cfg->readEntry("ExtraLifeScore", "10000"), -1); |
628 | APP_CONFIG_END( cfg ); | 628 | APP_CONFIG_END( cfg ); |
629 | } | 629 | } |
630 | 630 | ||
631 | void Referee::confScheme() | 631 | void Referee::confScheme() |
632 | { | 632 | { |
633 | APP_CONFIG_BEGIN( cfg ); | 633 | APP_CONFIG_BEGIN( cfg ); |
634 | SAVE_CONFIG_GROUP( cfg, oldgroup ); | 634 | SAVE_CONFIG_GROUP( cfg, oldgroup ); |
635 | QString newgroup; | 635 | QString newgroup; |
636 | 636 | ||
637 | // if not set, read mode and scheme from the configfile | 637 | // if not set, read mode and scheme from the configfile |
638 | if (mode == -1 && scheme == -1) { | 638 | if (mode == -1 && scheme == -1) { |
639 | scheme = cfg->readNumEntry("Scheme", -1); | 639 | scheme = cfg->readNumEntry("Scheme", -1); |
640 | mode = cfg->readNumEntry("Mode", -1); | 640 | mode = cfg->readNumEntry("Mode", -1); |
641 | 641 | ||
642 | // if mode is not set in the defGroup-group, lookup the scheme group | 642 | // if mode is not set in the defGroup-group, lookup the scheme group |
643 | if (scheme != -1 || mode == -1) { | 643 | if (scheme != -1 || mode == -1) { |
644 | newgroup.sprintf("Scheme %d", scheme); | 644 | newgroup.sprintf("Scheme %d", scheme); |
645 | cfg->setGroup(newgroup); | 645 | cfg->setGroup(newgroup); |
646 | 646 | ||
647 | mode = cfg->readNumEntry("Mode", -1); | 647 | mode = cfg->readNumEntry("Mode", -1); |
648 | RESTORE_CONFIG_GROUP( cfg, oldgroup ); | 648 | RESTORE_CONFIG_GROUP( cfg, oldgroup ); |
649 | } | 649 | } |
650 | } | 650 | } |
651 | 651 | ||
652 | confLevels(); | 652 | confLevels(); |
653 | 653 | ||
654 | if (mode != -1) { | 654 | if (mode != -1) { |
655 | newgroup.sprintf("Mode %d", mode); | 655 | newgroup.sprintf("Mode %d", mode); |
656 | cfg->setGroup(newgroup); | 656 | cfg->setGroup(newgroup); |
657 | 657 | ||
658 | confLevels(FALSE); | 658 | confLevels(FALSE); |
659 | } | 659 | } |
660 | 660 | ||
661 | if (scheme != -1) { | 661 | if (scheme != -1) { |
662 | newgroup.sprintf("Scheme %d", scheme); | 662 | newgroup.sprintf("Scheme %d", scheme); |
663 | cfg->setGroup(newgroup); | 663 | cfg->setGroup(newgroup); |
664 | 664 | ||
665 | confLevels(FALSE); | 665 | confLevels(FALSE); |
666 | } | 666 | } |
667 | 667 | ||
668 | RESTORE_CONFIG_GROUP( cfg, oldgroup ); | 668 | RESTORE_CONFIG_GROUP( cfg, oldgroup ); |
669 | 669 | ||
670 | confMisc(); | 670 | confMisc(); |
671 | confTiming(); | 671 | confTiming(); |
672 | confScoring(); | 672 | confScoring(); |
673 | 673 | ||
674 | if (mode != -1) { | 674 | if (mode != -1) { |
675 | newgroup.sprintf("Mode %d", mode); | 675 | newgroup.sprintf("Mode %d", mode); |
676 | cfg->setGroup(newgroup); | 676 | cfg->setGroup(newgroup); |
677 | 677 | ||
678 | confMisc(FALSE); | 678 | confMisc(FALSE); |
679 | confTiming(FALSE); | 679 | confTiming(FALSE); |
680 | confScoring(FALSE); | 680 | confScoring(FALSE); |
681 | } | 681 | } |
682 | 682 | ||
683 | if (scheme != -1) { | 683 | if (scheme != -1) { |
684 | newgroup.sprintf("Scheme %d", scheme); | 684 | newgroup.sprintf("Scheme %d", scheme); |
685 | cfg->setGroup(newgroup); | 685 | cfg->setGroup(newgroup); |
686 | 686 | ||
687 | confMisc(FALSE); | 687 | confMisc(FALSE); |
688 | confTiming(FALSE); | 688 | confTiming(FALSE); |
689 | confScoring(FALSE); | 689 | confScoring(FALSE); |
690 | } | 690 | } |
691 | 691 | ||
692 | fillMapName(); | 692 | fillMapName(); |
693 | 693 | ||
694 | RESTORE_CONFIG_GROUP( cfg, oldgroup ); | 694 | RESTORE_CONFIG_GROUP( cfg, oldgroup ); |
695 | APP_CONFIG_END( cfg ); | 695 | APP_CONFIG_END( cfg ); |
696 | } | 696 | } |
697 | 697 | ||
698 | void Referee::setScheme(int Scheme, int Mode, Bitfont *font) | 698 | void Referee::setScheme(int Scheme, int Mode, Bitfont *font) |
699 | { | 699 | { |
700 | mode = Mode; | 700 | mode = Mode; |
701 | scheme = Scheme; | 701 | scheme = Scheme; |
702 | 702 | ||
703 | confScheme(); | 703 | confScheme(); |
704 | 704 | ||
705 | pix->setScheme(scheme, mode, font); | 705 | pix->setScheme(scheme, mode, font); |
706 | 706 | ||
707 | pacman->setMaxPixmaps(pix->maxPixmaps(PacmanPix)); | 707 | pacman->setMaxPixmaps(pix->maxPixmaps(PacmanPix)); |
708 | fruit->setMaxPixmaps(pix->maxPixmaps(FruitPix)); | 708 | fruit->setMaxPixmaps(pix->maxPixmaps(FruitPix)); |
709 | 709 | ||
710 | for (Monster *m = monsters->first(); m != 0; m = monsters->next()) | 710 | for (Monster *m = monsters->first(); m != 0; m = monsters->next()) |
711 | if (m) | 711 | if (m) |
712 | m->setMaxPixmaps(pix->maxPixmaps(MonsterPix), pix->maxPixmaps(EyesPix)); | 712 | m->setMaxPixmaps(pix->maxPixmaps(MonsterPix), pix->maxPixmaps(EyesPix)); |
713 | 713 | ||
714 | for (Energizer *e = energizers->first(); e != 0; e = energizers->next()) | 714 | for (Energizer *e = energizers->first(); e != 0; e = energizers->next()) |
715 | if (e) | 715 | if (e) |
716 | e->setMaxPixmaps(pix->maxPixmaps(EnergizerPix)); | 716 | e->setMaxPixmaps(pix->maxPixmaps(EnergizerPix)); |
717 | 717 | ||
718 | if (gameState.testBit(Introducing)) | 718 | if (gameState.testBit(Introducing)) |
719 | for (int i = 0; i < (gameState.testBit(Init) ? timerCount : 15); i++) | 719 | for (int i = 0; i < (gameState.testBit(Init) ? timerCount : 15); i++) |
720 | introPaint(i); | 720 | introPaint(i); |
721 | 721 | ||
722 | setFixedSize(pix->levelPix().size()); | 722 | setFixedSize(pix->levelPix().size()); |
723 | repaint(); | 723 | repaint(); |
724 | } | 724 | } |
725 | 725 | ||
726 | void Referee::keyPressEvent( QKeyEvent *k ) | 726 | void Referee::keyPressEvent( QKeyEvent *k ) |
727 | { | 727 | { |
728 | uint key = k->key(); | 728 | uint key = k->key(); |
729 | #ifdef QWS | 729 | #ifdef QWS |
730 | // "OK" => new game | 730 | // "OK" => new game |
731 | if ( key == Key_F33 || key == Key_F2 || key == Key_Enter ) | 731 | if ( key == Key_F33 || key == Key_F2 || key == Key_Enter ) |
732 | play(); | 732 | play(); |
733 | else if ( !gameState.testBit(Playing) && key == Key_Space ) | 733 | else if ( !gameState.testBit(Playing) && |
734 | key == Key_Up || | ||
735 | key == Key_Down || | ||
736 | key == Key_Right || | ||
737 | key == Key_Left ) | ||
734 | play(); | 738 | play(); |
735 | // "Space" => pause | 739 | // "Space" => pause |
736 | //else if ( key == Key_Space || key == Key_F3 ) | 740 | //else if ( key == Key_Space || key == Key_F3 ) |
737 | // pause(); | 741 | // pause(); |
738 | // "Menu" => hall of fame | 742 | // "Menu" => hall of fame |
739 | //else if ( key == Key_F11 || key == Key_F4 ) | 743 | //else if ( key == Key_F11 || key == Key_F4 ) |
740 | // toggleHallOfFame(); | 744 | // toggleHallOfFame(); |
741 | #endif | 745 | #endif |
742 | 746 | ||
743 | if (gameState.testBit(Paused) || gameState.testBit(HallOfFame) || | 747 | if (gameState.testBit(Paused) || gameState.testBit(HallOfFame) || |
744 | gameState.testBit(Demonstration) || gameState.testBit(Dying) || | 748 | gameState.testBit(Demonstration) || gameState.testBit(Dying) || |
745 | gameState.testBit(Ready) || gameState.testBit(LevelDone) || | 749 | gameState.testBit(Ready) || gameState.testBit(LevelDone) || |
746 | !gameState.testBit(Playing)) | 750 | !gameState.testBit(Playing)) |
747 | return; | 751 | return; |
748 | 752 | ||
749 | if (key == UpKey) | 753 | if (key == UpKey) |
750 | pacman->setDirection(N); | 754 | pacman->setDirection(N); |
751 | else if (key == DownKey) | 755 | else if (key == DownKey) |
752 | pacman->setDirection(S); | 756 | pacman->setDirection(S); |
753 | else if (key == RightKey) | 757 | else if (key == RightKey) |
754 | pacman->setDirection(E); | 758 | pacman->setDirection(E); |
755 | else if (key == LeftKey) | 759 | else if (key == LeftKey) |
756 | pacman->setDirection(W); | 760 | pacman->setDirection(W); |
757 | 761 | ||
758 | #ifdef CHEATS | 762 | #ifdef CHEATS |
759 | else if (key == Key_L) { printf("levelUp()\n"); levelUp(); } | 763 | else if (key == Key_L) { printf("levelUp()\n"); levelUp(); } |
760 | else if (key == Key_F) { printf("fruit->move(TRUE)\n"); fruit->move(TRUE); repaint(FALSE); } | 764 | else if (key == Key_F) { printf("fruit->move(TRUE)\n"); fruit->move(TRUE); repaint(FALSE); } |
761 | else if (key == Key_E) { printf("setLifes(++lifes)\n"); emit setLifes(++lifes); } | 765 | else if (key == Key_E) { printf("setLifes(++lifes)\n"); emit setLifes(++lifes); } |
762 | #endif | 766 | #endif |
763 | 767 | ||
764 | else { | 768 | else { |
765 | k->ignore(); | 769 | k->ignore(); |
766 | return; | 770 | return; |
767 | } | 771 | } |
768 | k->accept(); | 772 | k->accept(); |
769 | } | 773 | } |
770 | 774 | ||
771 | void Referee::score(int p) | 775 | void Referee::score(int p) |
772 | { | 776 | { |
773 | if (!gameState.testBit(Playing)) | 777 | if (!gameState.testBit(Playing)) |
774 | return; | 778 | return; |
775 | 779 | ||
776 | if ((points += p) < 0) | 780 | if ((points += p) < 0) |
777 | points = 0; | 781 | points = 0; |
778 | 782 | ||
779 | emit setPoints(points); | 783 | emit setPoints(points); |
780 | 784 | ||
781 | if (points >= nextExtraLifeScore) { | 785 | if (points >= nextExtraLifeScore) { |
782 | emit setLifes(++lifes); | 786 | emit setLifes(++lifes); |
783 | if (extraLifeScoreIndex < (int) extraLifeScore.size()-1) | 787 | if (extraLifeScoreIndex < (int) extraLifeScore.size()-1) |
784 | extraLifeScoreIndex++; | 788 | extraLifeScoreIndex++; |
785 | if (extraLifeScore[extraLifeScoreIndex] < 0) | 789 | if (extraLifeScore[extraLifeScoreIndex] < 0) |
786 | nextExtraLifeScore = extraLifeScore[extraLifeScoreIndex] * -1; | 790 | nextExtraLifeScore = extraLifeScore[extraLifeScoreIndex] * -1; |
787 | else | 791 | else |
788 | nextExtraLifeScore += extraLifeScore[extraLifeScoreIndex]; | 792 | nextExtraLifeScore += extraLifeScore[extraLifeScoreIndex]; |
789 | } | 793 | } |
790 | } | 794 | } |
791 | 795 | ||
792 | void Referee::eaten() | 796 | void Referee::eaten() |
793 | { | 797 | { |
794 | if (gameState.testBit(Ready)) | 798 | if (gameState.testBit(Ready)) |
795 | return; | 799 | return; |
796 | 800 | ||
797 | stop(); | 801 | stop(); |
798 | 802 | ||
799 | if (monstersEaten < 4) | 803 | if (monstersEaten < 4) |
800 | monstersEaten++; | 804 | monstersEaten++; |
801 | 805 | ||
802 | gameState.setBit(Scoring); | 806 | gameState.setBit(Scoring); |
803 | score(monsterScore[monstersEaten-1]); | 807 | score(monsterScore[monstersEaten-1]); |
804 | 808 | ||
805 | repaint(pix->rect(pix->rect(pacman->position(), MonsterPix), | 809 | repaint(pix->rect(pix->rect(pacman->position(), MonsterPix), |
806 | pix->rect(pacman->position(), MonsterScorePix, monstersEaten-1))); | 810 | pix->rect(pacman->position(), MonsterScorePix, monstersEaten-1))); |
807 | 811 | ||
808 | if (--timerCount > 0) | 812 | if (--timerCount > 0) |
809 | QTimer::singleShot( monsterScoreDurMS, this, SLOT(eaten())); | 813 | QTimer::singleShot( monsterScoreDurMS, this, SLOT(eaten())); |
810 | else { | 814 | else { |
811 | for (Monster *m = monsters->first(); m != 0; m = monsters->next()) | 815 | for (Monster *m = monsters->first(); m != 0; m = monsters->next()) |
812 | if (m && m->direction() == X && !gameState.testBit(Introducing)) | 816 | if (m && m->direction() == X && !gameState.testBit(Introducing)) |
813 | m->setDirection(N); | 817 | m->setDirection(N); |
814 | if (monstersEaten != 4 || !gameState.testBit(Introducing)) | 818 | if (monstersEaten != 4 || !gameState.testBit(Introducing)) |
815 | QTimer::singleShot( monsterScoreDurMS, this, SLOT(start())); | 819 | QTimer::singleShot( monsterScoreDurMS, this, SLOT(start())); |
816 | } | 820 | } |
817 | } | 821 | } |
818 | 822 | ||
819 | void Referee::toggleHallOfFame() | 823 | void Referee::toggleHallOfFame() |
820 | { | 824 | { |
821 | gameState.toggleBit(HallOfFame); | 825 | gameState.toggleBit(HallOfFame); |
822 | } | 826 | } |
823 | 827 | ||
824 | void Referee::hallOfFame() | 828 | void Referee::hallOfFame() |
825 | { | 829 | { |
826 | if (gameState.testBit(HallOfFame)) // If the HallOfFame is switched on manually, toggle the | 830 | if (gameState.testBit(HallOfFame)) // If the HallOfFame is switched on manually, toggle the |
827 | toggleHallOfFame(); // bit twice. | 831 | toggleHallOfFame(); // bit twice. |
828 | 832 | ||
829 | emit setLevel(0); // Clear status display for hall of fame | 833 | emit setLevel(0); // Clear status display for hall of fame |
830 | emit setScore(level, 0); | 834 | emit setScore(level, 0); |
831 | emit forcedHallOfFame(TRUE); | 835 | emit forcedHallOfFame(TRUE); |
832 | } | 836 | } |
833 | 837 | ||
834 | void Referee::pause() | 838 | void Referee::pause() |
835 | { | 839 | { |
836 | static int pausedTimer = 0; | 840 | static int pausedTimer = 0; |
837 | 841 | ||
838 | if (!gameState.testBit(Paused)) { | 842 | if (!gameState.testBit(Paused)) { |
839 | pausedTimer = gameTimer; | 843 | pausedTimer = gameTimer; |
840 | stop(); | 844 | stop(); |
841 | stopEnergizer(); | 845 | stopEnergizer(); |
842 | gameState.setBit(Paused); | 846 | gameState.setBit(Paused); |
843 | repaint(pix->rect((BoardWidth*BoardHeight)/2-BoardWidth, tr("PAUSED")), FALSE); | 847 | repaint(pix->rect((BoardWidth*BoardHeight)/2-BoardWidth, tr("PAUSED")), FALSE); |
844 | } else { | 848 | } else { |
845 | gameState.clearBit(Paused); | 849 | gameState.clearBit(Paused); |
846 | repaint(pix->rect((BoardWidth*BoardHeight)/2-BoardWidth, tr("PAUSED")), FALSE); | 850 | repaint(pix->rect((BoardWidth*BoardHeight)/2-BoardWidth, tr("PAUSED")), FALSE); |
847 | if (pausedTimer) { | 851 | if (pausedTimer) { |
848 | pausedTimer = 0; | 852 | pausedTimer = 0; |
849 | start(); | 853 | start(); |
850 | } | 854 | } |
851 | } | 855 | } |
852 | emit togglePaused(); | 856 | emit togglePaused(); |
853 | } | 857 | } |
854 | 858 | ||
855 | void Referee::intro() | 859 | void Referee::intro() |
856 | { | 860 | { |
857 | stop(); | 861 | stop(); |
858 | stopEnergizer(); | 862 | stopEnergizer(); |
859 | bool paused = gameState.testBit(Paused); | 863 | bool paused = gameState.testBit(Paused); |
860 | 864 | ||
861 | gameState.fill(FALSE); | 865 | gameState.fill(FALSE); |
862 | gameState.setBit(Introducing); | 866 | gameState.setBit(Introducing); |
863 | gameState.setBit(Init); | 867 | gameState.setBit(Init); |
864 | 868 | ||
865 | if (paused) | 869 | if (paused) |
866 | gameState.setBit(Paused); | 870 | gameState.setBit(Paused); |
867 | 871 | ||
868 | level = 0; | 872 | level = 0; |
869 | emit setLevel(level); | 873 | emit setLevel(level); |
870 | 874 | ||
871 | board->init(Intro); | 875 | board->init(Intro); |
872 | pix->setLevel(level); | 876 | pix->setLevel(level); |
873 | 877 | ||
874 | initPacman(); | 878 | initPacman(); |
875 | initFruit(); | 879 | initFruit(); |
876 | initMonsters(); | 880 | initMonsters(); |
877 | initEnergizers(); | 881 | initEnergizers(); |
878 | 882 | ||
879 | repaint(); | 883 | repaint(); |
880 | 884 | ||
881 | monstersEaten = 0; | 885 | monstersEaten = 0; |
882 | timerCount = 0; | 886 | timerCount = 0; |
883 | introPlay(); | 887 | introPlay(); |
884 | } | 888 | } |
885 | 889 | ||
886 | void Referee::introMonster(int id) | 890 | void Referee::introMonster(int id) |
887 | { | 891 | { |
888 | Monster *m = new Monster(board, id); | 892 | Monster *m = new Monster(board, id); |
889 | 893 | ||
890 | m->setPosition((10+id*6)*BoardWidth+10); | 894 | m->setPosition((10+id*6)*BoardWidth+10); |
891 | m->setDirection(E); | 895 | m->setDirection(E); |
892 | m->setDangerous(dangerousTicks[level], monsterIQ[level]); | 896 | m->setDangerous(dangerousTicks[level], monsterIQ[level]); |
893 | m->setMaxPixmaps(pix->maxPixmaps(MonsterPix), pix->maxPixmaps(EyesPix)); | 897 | m->setMaxPixmaps(pix->maxPixmaps(MonsterPix), pix->maxPixmaps(EyesPix)); |
894 | 898 | ||
895 | if (m->body() != -1) | 899 | if (m->body() != -1) |
896 | pix->draw(m->position(), RoomPix, MonsterPix, m->body()); | 900 | pix->draw(m->position(), RoomPix, MonsterPix, m->body()); |
897 | if (m->eyes() != -1) | 901 | if (m->eyes() != -1) |
898 | pix->draw(m->position(), RoomPix, EyesPix, m->eyes()); | 902 | pix->draw(m->position(), RoomPix, EyesPix, m->eyes()); |
899 | 903 | ||
900 | repaint(pix->rect(m->position(), MonsterPix), FALSE); | 904 | repaint(pix->rect(m->position(), MonsterPix), FALSE); |
901 | m->setPosition(OUT); | 905 | m->setPosition(OUT); |
902 | } | 906 | } |
903 | 907 | ||
904 | void Referee::introPaint(int t) | 908 | void Referee::introPaint(int t) |
905 | { | 909 | { |
906 | QString pts; | 910 | QString pts; |
907 | 911 | ||
908 | switch (t) { | 912 | switch (t) { |
909 | case 0 : repaint(pix->draw(16, 6, RoomPix, tr("CHARACTER"), WHITE, QColor(), AlignLeft), FALSE); | 913 | case 0 : repaint(pix->draw(16, 6, RoomPix, tr("CHARACTER"), WHITE, QColor(), AlignLeft), FALSE); |
910 | repaint(pix->draw(36, 6, RoomPix, tr("/"), WHITE, QColor(), AlignLeft), FALSE); | 914 | repaint(pix->draw(36, 6, RoomPix, tr("/"), WHITE, QColor(), AlignLeft), FALSE); |
911 | repaint(pix->draw(40, 6, RoomPix, tr("NICKNAME"), WHITE, QColor(), AlignLeft), FALSE); | 915 | repaint(pix->draw(40, 6, RoomPix, tr("NICKNAME"), WHITE, QColor(), AlignLeft), FALSE); |
912 | break; | 916 | break; |
913 | case 1 : introMonster(0); | 917 | case 1 : introMonster(0); |
914 | break; | 918 | break; |
915 | case 2 : repaint(pix->draw(16, 10, RoomPix, tr("-SHADOW"), RED, QColor(), AlignLeft), FALSE); | 919 | case 2 : repaint(pix->draw(16, 10, RoomPix, tr("-SHADOW"), RED, QColor(), AlignLeft), FALSE); |
916 | break; | 920 | break; |
917 | case 3 : repaint(pix->draw(38, 10, RoomPix, tr("\"BLINKY\""), RED, QColor(), AlignLeft), FALSE); | 921 | case 3 : repaint(pix->draw(38, 10, RoomPix, tr("\"BLINKY\""), RED, QColor(), AlignLeft), FALSE); |
918 | break; | 922 | break; |
919 | case 4 : introMonster(1); | 923 | case 4 : introMonster(1); |
920 | break; | 924 | break; |
921 | case 5 : repaint(pix->draw(16, 16, RoomPix, tr("-SPEEDY"), PINK, QColor(), AlignLeft), FALSE); | 925 | case 5 : repaint(pix->draw(16, 16, RoomPix, tr("-SPEEDY"), PINK, QColor(), AlignLeft), FALSE); |
922 | break; | 926 | break; |
923 | case 6 : repaint(pix->draw(38, 16, RoomPix, tr("\"PINKY\""), PINK, QColor(), AlignLeft), FALSE); | 927 | case 6 : repaint(pix->draw(38, 16, RoomPix, tr("\"PINKY\""), PINK, QColor(), AlignLeft), FALSE); |
924 | break; | 928 | break; |
925 | case 7 : introMonster(2); | 929 | case 7 : introMonster(2); |
926 | break; | 930 | break; |
927 | case 8 : repaint(pix->draw(16, 22, RoomPix, tr("-BASHFUL"), CYAN, QColor(), AlignLeft), FALSE); | 931 | case 8 : repaint(pix->draw(16, 22, RoomPix, tr("-BASHFUL"), CYAN, QColor(), AlignLeft), FALSE); |
928 | break; | 932 | break; |
929 | case 9 : repaint(pix->draw(38, 22, RoomPix, tr("\"INKY\""), CYAN, QColor(), AlignLeft), FALSE); | 933 | case 9 : repaint(pix->draw(38, 22, RoomPix, tr("\"INKY\""), CYAN, QColor(), AlignLeft), FALSE); |
930 | break; | 934 | break; |
931 | case 10 : introMonster(3); | 935 | case 10 : introMonster(3); |
932 | break; | 936 | break; |
933 | case 11 : repaint(pix->draw(16, 28, RoomPix, tr("-POKEY"), ORANGE, QColor(), AlignLeft), FALSE); | 937 | case 11 : repaint(pix->draw(16, 28, RoomPix, tr("-POKEY"), ORANGE, QColor(), AlignLeft), FALSE); |
934 | break; | 938 | break; |
935 | case 12 : repaint(pix->draw(38, 28, RoomPix, tr("\"CLYDE\""), ORANGE, QColor(), AlignLeft), FALSE); | 939 | case 12 : repaint(pix->draw(38, 28, RoomPix, tr("\"CLYDE\""), ORANGE, QColor(), AlignLeft), FALSE); |
936 | break; | 940 | break; |
937 | case 13 : pts.sprintf("%d", pointScore); | 941 | case 13 : pts.sprintf("%d", pointScore); |
938 | repaint(pix->draw(28, 44, RoomPix, pts.data(), WHITE, QColor(), AlignRight), FALSE); | 942 | repaint(pix->draw(28, 44, RoomPix, pts.data(), WHITE, QColor(), AlignRight), FALSE); |
939 | repaint(pix->draw(31, 44, RoomPix, "\x1C\x1D\x1E", WHITE, QColor(), AlignLeft), FALSE); | 943 | repaint(pix->draw(31, 44, RoomPix, "\x1C\x1D\x1E", WHITE, QColor(), AlignLeft), FALSE); |
940 | pts.sprintf("%d", energizerScore); | 944 | pts.sprintf("%d", energizerScore); |
941 | repaint(pix->draw(28, 48, RoomPix, pts.data(), WHITE, QColor(), AlignRight), FALSE); | 945 | repaint(pix->draw(28, 48, RoomPix, pts.data(), WHITE, QColor(), AlignRight), FALSE); |
942 | repaint(pix->draw(31, 48, RoomPix, "\x1C\x1D\x1E", WHITE, QColor(), AlignLeft), FALSE); | 946 | repaint(pix->draw(31, 48, RoomPix, "\x1C\x1D\x1E", WHITE, QColor(), AlignLeft), FALSE); |
943 | break; | 947 | break; |
944 | case 14 : // "@ 1980 MIDWAY MFG.CO." | 948 | case 14 : // "@ 1980 MIDWAY MFG.CO." |
945 | #if defined( KDE2_PORT ) | 949 | #if defined( KDE2_PORT ) |
946 | repaint(pix->draw(30, 58, RoomPix, "© 1998-2002 J.THÖNNISSEN", PINK), FALSE); | 950 | repaint(pix->draw(30, 58, RoomPix, "© 1998-2002 J.THÖNNISSEN", PINK), FALSE); |
947 | #elif defined( QPE_PORT ) | 951 | #elif defined( QPE_PORT ) |
948 | repaint(pix->draw(30, 55, RoomPix, "© 1998-2002 J.THÖNNISSEN", PINK), FALSE); | 952 | repaint(pix->draw(30, 55, RoomPix, "© 1998-2002 J.THÖNNISSEN", PINK), FALSE); |
949 | repaint(pix->draw(29, 60, RoomPix, "Qtopia port: Catalin CLIMOV", GREEN), FALSE); | 953 | repaint(pix->draw(29, 58, RoomPix, tr("QTOPIA PORT: CATALIN CLIMOV"), GREEN), FALSE); |
954 | repaint(pix->draw(29, 61, RoomPix, tr("PRESS CURSOR TO START"), GREEN), FALSE); | ||
950 | #endif | 955 | #endif |
951 | break; | 956 | break; |
952 | } | 957 | } |
953 | } | 958 | } |
954 | 959 | ||
955 | void Referee::introPlay() | 960 | void Referee::introPlay() |
956 | { | 961 | { |
957 | if (!gameState.testBit(Introducing) || gameState.testBit(Ready)) | 962 | if (!gameState.testBit(Introducing) || gameState.testBit(Ready)) |
958 | return; | 963 | return; |
959 | if (gameState.testBit(Paused) || gameState.testBit(HallOfFame)) { | 964 | if (gameState.testBit(Paused) || gameState.testBit(HallOfFame)) { |
960 | QTimer::singleShot(afterPauseMS, this, SLOT(introPlay())); | 965 | QTimer::singleShot(afterPauseMS, this, SLOT(introPlay())); |
961 | return; | 966 | return; |
962 | } | 967 | } |
963 | 968 | ||
964 | if (!gameState.testBit(Init)) { | 969 | if (!gameState.testBit(Init)) { |
965 | if (monstersEaten == 4) { | 970 | if (monstersEaten == 4) { |
966 | stop(); | 971 | stop(); |
967 | QTimer::singleShot(introPostAnimationMS, this, SLOT(demo())); | 972 | QTimer::singleShot(introPostAnimationMS, this, SLOT(demo())); |
968 | } | 973 | } |
969 | if (pacman->direction() == W) { | 974 | if (pacman->direction() == W) { |
970 | int id = -1; | 975 | int id = -1; |
971 | if (pacman->position() == 37*BoardWidth-6) | 976 | if (pacman->position() == 37*BoardWidth-6) |
972 | id = 0; | 977 | id = 0; |
973 | else | 978 | else |
974 | if (board->isMonster(37*BoardWidth-6)) | 979 | if (board->isMonster(37*BoardWidth-6)) |
975 | for (Monster *m = monsters->first(); m != 0; m = monsters->next()) | 980 | for (Monster *m = monsters->first(); m != 0; m = monsters->next()) |
976 | if (m && m->position() == 37*BoardWidth-6) { | 981 | if (m && m->position() == 37*BoardWidth-6) { |
977 | id = m->id(); | 982 | id = m->id(); |
978 | id++; | 983 | id++; |
979 | break; | 984 | break; |
980 | } | 985 | } |
981 | 986 | ||
982 | if (id >= 0 && id <= 4) | 987 | if (id >= 0 && id <= 4) |
983 | for (Monster *m = monsters->first(); m != 0; m = monsters->next()) | 988 | for (Monster *m = monsters->first(); m != 0; m = monsters->next()) |
984 | if (m && m->id() == id && m->position() == OUT) { | 989 | if (m && m->id() == id && m->position() == OUT) { |
985 | m->setPosition(37*BoardWidth-1); | 990 | m->setPosition(37*BoardWidth-1); |
986 | m->setDirection(W); | 991 | m->setDirection(W); |
987 | m->setDangerous(dangerousTicks[level], monsterIQ[level]); | 992 | m->setDangerous(dangerousTicks[level], monsterIQ[level]); |
988 | board->set(37*BoardWidth-1, monsterhome, id); | 993 | board->set(37*BoardWidth-1, monsterhome, id); |
989 | repaint(pix->rect(m->position(), MonsterPix)); | 994 | repaint(pix->rect(m->position(), MonsterPix)); |
990 | break; | 995 | break; |
991 | } | 996 | } |
992 | } | 997 | } |
993 | return; | 998 | return; |
994 | } | 999 | } |
995 | 1000 | ||
996 | if (timerCount < 15) | 1001 | if (timerCount < 15) |
997 | introPaint(timerCount); | 1002 | introPaint(timerCount); |
998 | 1003 | ||
999 | switch (timerCount) { | 1004 | switch (timerCount) { |
1000 | case 13 : board->set(44*BoardWidth+22, Point); | 1005 | case 13 : board->set(44*BoardWidth+22, Point); |
1001 | pix->drawPoint(44*BoardWidth+22); | 1006 | pix->drawPoint(44*BoardWidth+22); |
1002 | repaint(pix->rect(44*BoardWidth+22, PointPix), FALSE); | 1007 | repaint(pix->rect(44*BoardWidth+22, PointPix), FALSE); |
1003 | energizers->at(0)->setPosition(48*BoardWidth+22); | 1008 | energizers->at(0)->setPosition(48*BoardWidth+22); |
1004 | energizers->at(0)->setOn(); | 1009 | energizers->at(0)->setOn(); |
1005 | repaint(pix->rect(48*BoardWidth+22, EnergizerPix), FALSE); | 1010 | repaint(pix->rect(48*BoardWidth+22, EnergizerPix), FALSE); |
1006 | break; | 1011 | break; |
1007 | case 14 : energizers->at(1)->setPosition(36*BoardWidth+10); | 1012 | case 14 : energizers->at(1)->setPosition(36*BoardWidth+10); |
1008 | energizers->at(1)->setOn(); | 1013 | energizers->at(1)->setOn(); |
1009 | repaint(pix->rect(36*BoardWidth+10, EnergizerPix), FALSE); | 1014 | repaint(pix->rect(36*BoardWidth+10, EnergizerPix), FALSE); |
1010 | for (int pos = 8; pos < BoardWidth; pos++) { | 1015 | for (int pos = 8; pos < BoardWidth; pos++) { |
1011 | board->set(34*BoardWidth+pos, out); | 1016 | board->set(34*BoardWidth+pos, out); |
1012 | board->set(38*BoardWidth+pos, out); | 1017 | board->set(38*BoardWidth+pos, out); |
1013 | } | 1018 | } |
1014 | board->set(36*BoardWidth+8, out); | 1019 | board->set(36*BoardWidth+8, out); |
1015 | break; | 1020 | break; |
1016 | case 15 : gameState.clearBit(Init); | 1021 | case 15 : gameState.clearBit(Init); |
1017 | initPacman(); | 1022 | initPacman(); |
1018 | pacman->setDemo(TRUE); | 1023 | pacman->setDemo(TRUE); |
1019 | pacman->setPosition(37*BoardWidth-1); | 1024 | pacman->setPosition(37*BoardWidth-1); |
1020 | repaintFigures(); | 1025 | repaintFigures(); |
1021 | start(); | 1026 | start(); |
1022 | return; | 1027 | return; |
1023 | } | 1028 | } |
1024 | 1029 | ||
1025 | if (timerCount++ < 15) | 1030 | if (timerCount++ < 15) |
1026 | QTimer::singleShot(introAnimationMS, this, SLOT(introPlay())); | 1031 | QTimer::singleShot(introAnimationMS, this, SLOT(introPlay())); |
1027 | } | 1032 | } |
1028 | 1033 | ||
1029 | void Referee::demo() | 1034 | void Referee::demo() |
1030 | { | 1035 | { |
1031 | if (gameState.testBit(Ready)) | 1036 | if (gameState.testBit(Ready)) |
1032 | return; | 1037 | return; |
1033 | 1038 | ||
1034 | if (gameState.testBit(Paused) || gameState.testBit(HallOfFame)) { | 1039 | if (gameState.testBit(Paused) || gameState.testBit(HallOfFame)) { |
1035 | QTimer::singleShot(afterPauseMS, this, SLOT(demo())); | 1040 | QTimer::singleShot(afterPauseMS, this, SLOT(demo())); |
1036 | return; | 1041 | return; |
1037 | } | 1042 | } |
1038 | 1043 | ||
1039 | stop(); | 1044 | stop(); |
1040 | stopEnergizer(); | 1045 | stopEnergizer(); |
1041 | 1046 | ||
1042 | gameState.fill(FALSE); | 1047 | gameState.fill(FALSE); |
1043 | gameState.setBit(Init); | 1048 | gameState.setBit(Init); |
1044 | gameState.setBit(Demonstration); | 1049 | gameState.setBit(Demonstration); |
1045 | 1050 | ||
1046 | level = 0; | 1051 | level = 0; |
1047 | emit setLevel(level); | 1052 | emit setLevel(level); |
1048 | 1053 | ||
1049 | board->init(Demo, mapName.at(0)); | 1054 | board->init(Demo, mapName.at(0)); |
1050 | pix->setLevel(level); | 1055 | pix->setLevel(level); |
1051 | 1056 | ||
1052 | initPacman(); | 1057 | initPacman(); |
1053 | initFruit(); | 1058 | initFruit(); |
1054 | initMonsters(); | 1059 | initMonsters(); |
1055 | initEnergizers(); | 1060 | initEnergizers(); |
1056 | 1061 | ||
1057 | gameState.clearBit(Init); | 1062 | gameState.clearBit(Init); |
1058 | 1063 | ||
1059 | repaint(); | 1064 | repaint(); |
1060 | 1065 | ||
1061 | timerCount = 0; | 1066 | timerCount = 0; |
1062 | QTimer::singleShot(playerDurMS, this, SLOT(start())); | 1067 | QTimer::singleShot(playerDurMS, this, SLOT(start())); |
1063 | } | 1068 | } |
1064 | 1069 | ||
1065 | void Referee::play() | 1070 | void Referee::play() |
1066 | { | 1071 | { |
1067 | stop(); | 1072 | stop(); |
1068 | stopEnergizer(); | 1073 | stopEnergizer(); |
1069 | 1074 | ||
1070 | gameState.fill(FALSE); | 1075 | gameState.fill(FALSE); |
1071 | gameState.setBit(Init); | 1076 | gameState.setBit(Init); |
1072 | gameState.setBit(Playing); | 1077 | gameState.setBit(Playing); |
1073 | gameState.setBit(Player); | 1078 | gameState.setBit(Player); |
1074 | gameState.setBit(Ready); | 1079 | gameState.setBit(Ready); |
1075 | 1080 | ||
1076 | lifes = 3; | 1081 | lifes = 3; |
1077 | level = 1; | 1082 | level = 1; |