Skip to content

Commit

Permalink
card placement and messages OK, no colour
Browse files Browse the repository at this point in the history
  • Loading branch information
r3w0p committed May 24, 2024
1 parent 9413f90 commit 53e87c3
Show file tree
Hide file tree
Showing 5 changed files with 220 additions and 82 deletions.
2 changes: 2 additions & 0 deletions include/caravan/core/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ typedef struct GameCommand {
uint8_t pos_hand {0};
CaravanName caravan_name {NO_CARAVAN};
uint8_t pos_caravan {0};
Card hand{};
Card board{};
} GameCommand;

/*
Expand Down
7 changes: 2 additions & 5 deletions include/caravan/model/table.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,17 @@ class Table {

void close();

Caravan* get_caravan(CaravanName cvname);
void clear_caravan(CaravanName cvname);

// TODO remove caravan convenience functions
uint16_t get_caravan_bid(CaravanName cvname);

Slot get_slot_at(CaravanName cvname, uint8_t pos);

Direction get_caravan_direction(CaravanName cvname);

uint8_t get_caravan_size(CaravanName cvname);

Suit get_caravan_suit(CaravanName cvname);

void play_face_card(CaravanName cvname, Card card, uint8_t pos);

void play_numeral_card(CaravanName cvname, Card card);
};

Expand Down
9 changes: 8 additions & 1 deletion src/caravan/model/game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -245,11 +245,15 @@ void Game::option_clear(Player *pptr, GameCommand* command) {
void Game::option_discard(Player *pptr, GameCommand* command) {
Card c_hand;
c_hand = pptr->discard_from_hand_at(command->pos_hand);

command->hand = c_hand; // Log to command
}

void Game::option_play(Player *pptr, GameCommand* command) {
Card c_hand = pptr->get_from_hand_at(command->pos_hand);

command->hand = c_hand; // Log to command

bool in_start_stage = pptr->get_moves_count() < MOVES_START_ROUND;
bool pa_playing_num_onto_pa_caravans;
bool pb_playing_num_onto_pb_caravans;
Expand Down Expand Up @@ -281,12 +285,15 @@ void Game::option_play(Player *pptr, GameCommand* command) {

table_ptr->play_numeral_card(command->caravan_name, c_hand);

} else {
} else { // is a face card
if (in_start_stage)
throw CaravanGameException(
"A face card cannot be played during the "
"Start round.");

// Log to command
command->board = table_ptr->get_slot_at(command->caravan_name, command->pos_caravan).card;

table_ptr->play_face_card(
command->caravan_name,
c_hand,
Expand Down
19 changes: 19 additions & 0 deletions src/caravan/model/table.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,25 @@ void Table::close() {
}
}

Caravan* Table::get_caravan(CaravanName cvname) {
switch (cvname) {
case CARAVAN_A:
return a;
case CARAVAN_B:
return b;
case CARAVAN_C:
return c;
case CARAVAN_D:
return d;
case CARAVAN_E:
return e;
case CARAVAN_F:
return f;
default:
throw CaravanFatalException("Invalid caravan name.");
}
}

/**
* @param cvname The caravan to clear.
*
Expand Down
Loading

0 comments on commit 53e87c3

Please sign in to comment.