- Timestamp:
- Dec 10, 2014, 4:15:08 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/minigame4DHS14/src/modules/mini4Dgame/Mini4DgameBoard.cc
r10156 r10168 64 64 for(int l=0;l<4;l++){ 65 65 this->board[i][j][k][l]=mini4DgamePlayerColor::none; 66 this->blinkingBillboards[i][j][k][l] = 0; 66 67 } 67 68 } 68 69 } 69 70 } 70 71 this->player_toggle_ = false; 71 72 this->checkGametype(); 72 73 } 73 74 74 /**75 @brief76 Destructor.77 */78 Mini4DgameBoard::~Mini4DgameBoard()79 {80 if (this->isInitialized())81 {82 83 }84 }85 75 86 76 //xml port for loading sounds … … 89 79 SUPER(Mini4DgameBoard, XMLPort, xmlelement, mode); 90 80 } 91 92 /**93 @brief94 Register variables to synchronize over the network.95 96 void Mini4DgameBoard::registerVariables()97 {98 registerVariable( this->fieldWidth_ );99 registerVariable( this->fieldHeight_ );100 registerVariable( this->batlength_ );101 registerVariable( this->speed_ );102 registerVariable( this->relMercyOffset_ );103 registerVariable( this->batID_[0] );104 registerVariable( this->batID_[1], VariableDirection::ToClient, new NetworkCallback<PongBall>( this, &PongBall::applyBats) );105 }106 */107 81 108 82 /** … … 112 86 bool Mini4DgameBoard::isValidMove(const Vector4 move) 113 87 { 114 return (this->board[(int)move.x][(int)move.y][(int)move.z][(int)move.w] == mini4DgamePlayerColor::none); 88 return (move.x<4 && move.y<4 && move.z<4 && move.w<4 89 && move.x>=0 && move.y>=0 && move.z>=0 && move.w>=0 90 && this->board[(int)move.x][(int)move.y][(int)move.z][(int)move.w] == mini4DgamePlayerColor::none); 115 91 } 116 92 117 93 void Mini4DgameBoard::undoMove() 94 { 95 Vector4 move = moves.back(); 96 moves.pop_back(); 97 this->board[(int)move.x][(int)move.y][(int)move.z][(int)move.w] = mini4DgamePlayerColor::none; 98 this->blinkingBillboards[(int)move.x][(int)move.y][(int)move.z][(int)move.w]->destroy(); 99 this->blinkingBillboards[(int)move.x][(int)move.y][(int)move.z][(int)move.w] = 0; 100 if(player_toggle_){ 101 this->player_toggle_ = false; 102 }else{ 103 this->player_toggle_ = true; 104 } 105 } 118 106 119 107 /** … … 121 109 @param the position where to put the stone plus the player who makes the move 122 110 */ 123 void Mini4DgameBoard::makeMove(const Vector4 move , const int playerColor)111 void Mini4DgameBoard::makeMove(const Vector4 move) 124 112 { 125 113 if(this->isValidMove(move)) 126 114 { 115 if(!moves.empty()) 116 { 117 //stop blinking of last move 118 Vector4 lastMove = moves.back(); 119 this->blinkingBillboards[(int)lastMove.x][(int)lastMove.y][(int)lastMove.z][(int)lastMove.w] 120 ->setActive(false); 121 this->blinkingBillboards[(int)lastMove.x][(int)lastMove.y][(int)lastMove.z][(int)lastMove.w] 122 ->setScale(0.1); 123 } 124 125 moves.push_back(move); 126 mini4DgamePlayerColor::color playerColor = mini4DgamePlayerColor::none; 127 if(player_toggle_){ 128 playerColor = mini4DgamePlayerColor::blue; 129 this->player_toggle_ = false; 130 }else{ 131 playerColor = mini4DgamePlayerColor::green; 132 this->player_toggle_ = true; 133 } 134 127 135 this->board[(int)move.x][(int)move.y][(int)move.z][(int)move.w] = (mini4DgamePlayerColor::color) playerColor; 128 BlinkingBillboard* bb = new BlinkingBillboard(this->getContext()); 129 orxout(user_status) << "Mini4Dgame: move.x " << move.x << endl; 130 131 bb->setPosition(60*(int)move.x-90,60*(int)move.y-90,60*(int)move.z-90); 132 bb->setFrequency(0.6); 136 137 BlinkingBillboard* bb = new BlinkingBillboard(this->getContext()); 138 bb->setFrequency(0.3); 133 139 bb->setAmplitude(0.1); 134 //bb->setMaterial("Flares/lensflare"); 135 bb->setMaterial("Numbers/One"); 136 bb->setColour(ColourValue(0,1,0)); 140 141 switch((int)move.w){ 142 case 0: bb->setMaterial("Numbers/One"); 143 bb->setPosition(60*(int)move.x-95,60*(int)move.y-95,60*(int)move.z-95); 144 break; 145 case 1: bb->setMaterial("Numbers/Two"); 146 bb->setPosition(60*(int)move.x-85,60*(int)move.y-85,60*(int)move.z-95); 147 break; 148 case 2: bb->setMaterial("Numbers/Three"); 149 bb->setPosition(60*(int)move.x-85,60*(int)move.y-95,60*(int)move.z-85); 150 break; 151 case 3: bb->setMaterial("Numbers/Four"); 152 bb->setPosition(60*(int)move.x-85,60*(int)move.y-85,60*(int)move.z-85); 153 break; 154 } 155 156 switch(playerColor){ 157 case mini4DgamePlayerColor::red: 158 bb->setColour(ColourValue(1,0,0)); break; 159 case mini4DgamePlayerColor::green: 160 bb->setColour(ColourValue(0,1,0)); break; 161 case mini4DgamePlayerColor::blue: 162 bb->setColour(ColourValue(0,0,1)); break; 163 default: break; 164 } 137 165 138 166 this->attach(bb); 167 this->blinkingBillboards[(int)move.x][(int)move.y][(int)move.z][(int)move.w] = bb; 139 168 140 169 … … 143 172 { 144 173 orxout(user_status) << "Mini4Dgame: win!!!!!!!" << endl; 145 //win(winner); 174 for(int i=0;i<4;i++){ 175 BlinkingBillboard* redFlare = new BlinkingBillboard(this->getContext()); 176 redFlare->setFrequency(0.5); 177 redFlare->setAmplitude(3); 178 redFlare->setPosition(60*(int)winner.winningRow[i]-90, 179 60*(int)winner.winningColumn[i]-90, 180 60*(int)winner.winningHeight[i]-90); 181 redFlare->setMaterial("Flares/lensflare"); 182 redFlare->setColour(ColourValue(1,0,0)); 183 this->attach(redFlare); 184 BlinkingBillboard* bb = this->blinkingBillboards[winner.winningRow[i]] 185 [winner.winningColumn[i]] 186 [winner.winningHeight[i]] 187 [winner.winningNumber[i]]; 188 bb->setActive(true);//start blinking 189 } 146 190 } 191 }else{ 192 orxout(internal_error) << "Mini4Dgame: not a valid move"<< endl; 147 193 } 148 194 }
Note: See TracChangeset
for help on using the changeset viewer.