kgoldrunner
kgrobject.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "kgrobject.h"
00019
00020 #include "kgrconsts.h"
00021 #include "kgrcanvas.h"
00022
00023 #include <stdio.h>
00024
00025 KGrObject::KGrObject (char objType)
00026 {
00027 iamA = objType;
00028 searchValue = 0;
00029 blocker = false;
00030 if ((objType == BRICK) || (objType == BETON) || (objType == FBRICK)) {
00031 blocker = true;
00032 }
00033 xpos = 0;
00034 ypos = 0;
00035 objectView = NULL;
00036 }
00037
00038 bool KGrObject::frozen = false;
00039 bool KGrObject::bugFixed = false;
00040 bool KGrObject::logging = false;
00041
00042 char KGrObject::whatIam ()
00043 {
00044 return iamA;
00045 }
00046
00047 void KGrObject::showState (int i, int j)
00048 {
00049 printf("(%02d,%02d) - Object [%c] search %d", i, j, iamA, searchValue);
00050 if (blocker) printf(" blocker");
00051 printf("\n");
00052 }
00053
00054 KGrObject :: ~KGrObject ()
00055 {
00056 }
00057
00058 KGrEditable::KGrEditable (char editType) : KGrObject (editType)
00059 {
00060 }
00061
00062 void KGrEditable::setType (char editType)
00063 {
00064 iamA = editType;
00065 }
00066
00067 KGrEditable::~KGrEditable ()
00068 {
00069 }
00070
00071 KGrFree::KGrFree (char objType, int i, int j, KGrCanvas * view)
00072 : KGrObject (objType)
00073 {
00074 xpos = i;
00075 ypos = j;
00076 objectView = view;
00077 theRealMe = FREE;
00078 }
00079
00080 void KGrFree::setNugget(bool nug)
00081 {
00082
00083 if (! nug) {
00084 iamA = theRealMe;
00085 objectView->paintCell (xpos, ypos, FREE);
00086 }
00087 else {
00088 iamA = NUGGET;
00089 objectView->paintCell (xpos, ypos, NUGGET);
00090 }
00091 }
00092
00093 KGrFree :: ~KGrFree ()
00094 {
00095 }
00096
00097
00098
00099 KGrBrick::KGrBrick (char objType, int i, int j, KGrCanvas * view)
00100 : KGrObject (objType)
00101 {
00102 xpos = i;
00103 ypos = j;
00104 objectView = view;
00105 dig_counter = 0;
00106 holeFrozen = false;
00107 iamA = BRICK;
00108 timer = new QTimer (this);
00109 connect (timer, SIGNAL (timeout ()), SLOT (timeDone ()));
00110 }
00111
00112 void KGrBrick::dig (void)
00113 {
00114 dig_counter = 1;
00115 hole_counter = HOLETIME;
00116 iamA = HOLE;
00117 objectView->paintCell (xpos, ypos, BRICK, dig_counter);
00118 timer->setSingleShot(true);
00119 timer->start ((DIGDELAY * NSPEED) / speed);
00120 }
00121
00122 void KGrBrick::doStep() {
00123 if (holeFrozen) {
00124 holeFrozen = false;
00125 timeDone();
00126 }
00127 }
00128
00129 void KGrBrick::showState (int i, int j)
00130 {
00131 printf ("(%02d,%02d) - Brick [%c] search %d dig-counter %d",
00132 i, j, iamA, searchValue, dig_counter);
00133 if (blocker)
00134 printf (" blocker");
00135 printf ("\n");
00136 }
00137
00138 void KGrBrick::timeDone ()
00139 {
00140 if (KGrObject::frozen) {holeFrozen = true; return;}
00141
00142
00143 if (dig_counter == 5) {
00144 hole_counter--;
00145 if (hole_counter > 0) {
00146 timer->setSingleShot(true);
00147 timer->start ((DIGDELAY * NSPEED) / speed);
00148 return;
00149 }
00150 }
00151 if (dig_counter < 9) {
00152 dig_counter++;
00153 timer->setSingleShot(true);
00154 timer->start ((DIGDELAY * NSPEED) / speed);
00155 if (dig_counter >= 8)
00156 iamA = BRICK;
00157 }
00158 else
00159 dig_counter = 0;
00160
00161
00162 objectView->paintCell (xpos, ypos, BRICK, dig_counter);
00163 }
00164
00165 void KGrBrick::useHole() {
00166 if (iamA == HOLE)
00167 iamA = USEDHOLE;
00168 }
00169
00170 void KGrBrick::unUseHole() {
00171 if (iamA == USEDHOLE)
00172 iamA = HOLE;
00173 }
00174
00175 KGrBrick :: ~KGrBrick ()
00176 {
00177 delete timer;
00178 }
00179
00180 KGrHladder::KGrHladder (char objType, int i, int j, KGrCanvas * view)
00181 : KGrFree (objType, i, j, view)
00182
00183 {
00184 theRealMe = HLADDER;
00185 }
00186
00187 void KGrHladder::showLadder()
00188 {
00189 iamA = LADDER;
00190 objectView->paintCell (xpos, ypos, LADDER);
00191 }
00192
00193 KGrHladder :: ~KGrHladder ()
00194 {
00195 }
00196
00197 #include "kgrobject.moc"