syntax = "proto2";
import "game_event.proto";

// Sent by the server to signal a single card was moved to update the client state
message Event_MoveCard {
    extend GameEvent {
        optional Event_MoveCard ext = 2009;
    }

    // The card id in the original zone
    optional sint32 card_id = 1 [default = -1];

    // The name of the card in case it was not known yet
    optional string card_name = 2;

    // The player whose zone the card started in
    optional sint32 start_player_id = 3 [default = -1];

    // The original zone
    optional string start_zone = 4;

    // The original position that the card was at.
    // In zones without y coordinate, this corresponds with the previous x coordinate of the card.
    // In zones with y coordinate, this value is not used.
    optional sint32 position = 5 [default = -1];

    // The player who owns the new zone the card is in
    optional sint32 target_player_id = 6 [default = -1];

    // The new zone the card is in
    optional string target_zone = 7;

    // The new x coordinate (or new position for zones with no y coordinate)
    optional sint32 x = 8 [default = -1];

    // The new y coordinate
    optional sint32 y = 9 [default = -1];

    // The new id of the card if the card moved zone
    optional sint32 new_card_id = 10 [default = -1];

    // If the card is face down, face down cards will not show their name
    optional bool face_down = 11;

    // The provider id of the card in case it was not known yet.
    // Extends the name to supply a specific printing of that type of card.
    optional string new_card_provider_id = 12;
}
