24 #include <interfaces/GameStateInterface.h>
26 #include <core/exceptions/software.h>
78 GameStateInterface::GameStateInterface() : Interface()
80 data_size =
sizeof(GameStateInterface_data_t);
82 data = (GameStateInterface_data_t *)
data_ptr;
85 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
86 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
87 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
88 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
89 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
90 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
91 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
92 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
93 enum_map_if_gamestate_role_t[(int)ROLE_GOALIE] =
"ROLE_GOALIE";
94 enum_map_if_gamestate_role_t[(int)ROLE_DEFENDER] =
"ROLE_DEFENDER";
95 enum_map_if_gamestate_role_t[(int)ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
96 enum_map_if_gamestate_role_t[(int)ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
97 enum_map_if_gamestate_role_t[(int)ROLE_ATTACKER] =
"ROLE_ATTACKER";
99 add_fieldinfo(
IFT_ENUM,
"state_team", 1, &data->state_team,
"if_gamestate_team_t", &enum_map_if_gamestate_team_t);
100 add_fieldinfo(
IFT_ENUM,
"our_team", 1, &data->our_team,
"if_gamestate_team_t", &enum_map_if_gamestate_team_t);
101 add_fieldinfo(
IFT_ENUM,
"our_goal_color", 1, &data->our_goal_color,
"if_gamestate_goalcolor_t", &enum_map_if_gamestate_goalcolor_t);
102 add_fieldinfo(
IFT_ENUM,
"half", 1, &data->half,
"if_gamestate_half_t", &enum_map_if_gamestate_half_t);
104 add_fieldinfo(
IFT_ENUM,
"role", 1, &data->role,
"if_gamestate_role_t", &enum_map_if_gamestate_role_t);
110 unsigned char tmp_hash[] = {0xf5, 0x19, 0x26, 0x77, 0x6, 0x54, 0x44, 0xb4, 0xe1, 0x61, 0x40, 0x2a, 0x65, 0xfc, 0xaf, 0xa1};
115 GameStateInterface::~GameStateInterface()
131 default:
return "UNKNOWN";
144 default:
return "UNKNOWN";
157 default:
return "UNKNOWN";
168 case ROLE_GOALIE:
return "ROLE_GOALIE";
169 case ROLE_DEFENDER:
return "ROLE_DEFENDER";
170 case ROLE_MID_LEFT:
return "ROLE_MID_LEFT";
171 case ROLE_MID_RIGHT:
return "ROLE_MID_RIGHT";
172 case ROLE_ATTACKER:
return "ROLE_ATTACKER";
173 default:
return "UNKNOWN";
184 return data->game_state;
204 data->game_state = new_game_state;
235 data->state_team = new_state_team;
266 data->our_team = new_our_team;
297 data->our_goal_color = new_our_goal_color;
328 data->half = new_half;
339 return data->kickoff;
359 data->kickoff = new_kickoff;
390 data->role = new_role;
401 return data->score_cyan;
421 data->score_cyan = new_score_cyan;
432 return data->score_magenta;
452 data->score_magenta = new_score_magenta;
460 if ( strncmp(
"SetTeamColorMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
462 }
else if ( strncmp(
"SetKickoffMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
464 }
else if ( strncmp(
"SetStateTeamMessage",
type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
465 return new SetStateTeamMessage();
467 throw UnknownTypeException(
"The given type '%s' does not match any known "
468 "message type for this interface type.",
type);
479 const GameStateInterface *oi =
dynamic_cast<const GameStateInterface *
>(other);
481 throw TypeMismatchException(
"Can only copy values from interface of same type (%s vs. %s)",
482 type(), other->type());
484 memcpy(data, oi->data,
sizeof(GameStateInterface_data_t));
490 if (strcmp(enumtype,
"if_gamestate_team_t") == 0) {
491 return tostring_if_gamestate_team_t((if_gamestate_team_t)val);
493 if (strcmp(enumtype,
"if_gamestate_goalcolor_t") == 0) {
496 if (strcmp(enumtype,
"if_gamestate_half_t") == 0) {
497 return tostring_if_gamestate_half_t((if_gamestate_half_t)val);
499 if (strcmp(enumtype,
"if_gamestate_role_t") == 0) {
500 return tostring_if_gamestate_role_t((if_gamestate_role_t)val);
502 throw UnknownTypeException(
"Unknown enum type %s", enumtype);
518 data_size =
sizeof(SetTeamColorMessage_data_t);
521 data = (SetTeamColorMessage_data_t *)
data_ptr;
523 data->our_team = ini_our_team;
524 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
525 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
526 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
527 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
528 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
529 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
530 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
531 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
532 enum_map_if_gamestate_role_t[(int)
ROLE_GOALIE] =
"ROLE_GOALIE";
533 enum_map_if_gamestate_role_t[(int)
ROLE_DEFENDER] =
"ROLE_DEFENDER";
534 enum_map_if_gamestate_role_t[(int)
ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
535 enum_map_if_gamestate_role_t[(int)
ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
536 enum_map_if_gamestate_role_t[(int)
ROLE_ATTACKER] =
"ROLE_ATTACKER";
537 add_fieldinfo(
IFT_ENUM,
"our_team", 1, &data->our_team,
"if_gamestate_team_t", &enum_map_if_gamestate_team_t);
542 data_size =
sizeof(SetTeamColorMessage_data_t);
545 data = (SetTeamColorMessage_data_t *)
data_ptr;
547 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
548 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
549 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
550 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
551 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
552 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
553 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
554 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
555 enum_map_if_gamestate_role_t[(int)
ROLE_GOALIE] =
"ROLE_GOALIE";
556 enum_map_if_gamestate_role_t[(int)
ROLE_DEFENDER] =
"ROLE_DEFENDER";
557 enum_map_if_gamestate_role_t[(int)
ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
558 enum_map_if_gamestate_role_t[(int)
ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
559 enum_map_if_gamestate_role_t[(int)
ROLE_ATTACKER] =
"ROLE_ATTACKER";
560 add_fieldinfo(
IFT_ENUM,
"our_team", 1, &data->our_team,
"if_gamestate_team_t", &enum_map_if_gamestate_team_t);
577 data = (SetTeamColorMessage_data_t *)
data_ptr;
609 data->our_team = new_our_team;
634 data_size =
sizeof(SetKickoffMessage_data_t);
637 data = (SetKickoffMessage_data_t *)
data_ptr;
639 data->kickoff = ini_kickoff;
640 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
641 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
642 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
643 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
644 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
645 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
646 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
647 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
648 enum_map_if_gamestate_role_t[(int)
ROLE_GOALIE] =
"ROLE_GOALIE";
649 enum_map_if_gamestate_role_t[(int)
ROLE_DEFENDER] =
"ROLE_DEFENDER";
650 enum_map_if_gamestate_role_t[(int)
ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
651 enum_map_if_gamestate_role_t[(int)
ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
652 enum_map_if_gamestate_role_t[(int)
ROLE_ATTACKER] =
"ROLE_ATTACKER";
658 data_size =
sizeof(SetKickoffMessage_data_t);
661 data = (SetKickoffMessage_data_t *)
data_ptr;
663 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
664 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
665 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
666 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
667 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
668 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
669 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
670 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
671 enum_map_if_gamestate_role_t[(int)
ROLE_GOALIE] =
"ROLE_GOALIE";
672 enum_map_if_gamestate_role_t[(int)
ROLE_DEFENDER] =
"ROLE_DEFENDER";
673 enum_map_if_gamestate_role_t[(int)
ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
674 enum_map_if_gamestate_role_t[(int)
ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
675 enum_map_if_gamestate_role_t[(int)
ROLE_ATTACKER] =
"ROLE_ATTACKER";
693 data = (SetKickoffMessage_data_t *)
data_ptr;
705 return data->kickoff;
725 data->kickoff = new_kickoff;
750 data_size =
sizeof(SetStateTeamMessage_data_t);
753 data = (SetStateTeamMessage_data_t *)
data_ptr;
755 data->state_team = ini_state_team;
756 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
757 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
758 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
759 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
760 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
761 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
762 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
763 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
764 enum_map_if_gamestate_role_t[(int)
ROLE_GOALIE] =
"ROLE_GOALIE";
765 enum_map_if_gamestate_role_t[(int)
ROLE_DEFENDER] =
"ROLE_DEFENDER";
766 enum_map_if_gamestate_role_t[(int)
ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
767 enum_map_if_gamestate_role_t[(int)
ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
768 enum_map_if_gamestate_role_t[(int)
ROLE_ATTACKER] =
"ROLE_ATTACKER";
769 add_fieldinfo(
IFT_ENUM,
"state_team", 1, &data->state_team,
"if_gamestate_team_t", &enum_map_if_gamestate_team_t);
774 data_size =
sizeof(SetStateTeamMessage_data_t);
777 data = (SetStateTeamMessage_data_t *)
data_ptr;
779 enum_map_if_gamestate_team_t[(int)
TEAM_NONE] =
"TEAM_NONE";
780 enum_map_if_gamestate_team_t[(int)
TEAM_CYAN] =
"TEAM_CYAN";
781 enum_map_if_gamestate_team_t[(int)
TEAM_MAGENTA] =
"TEAM_MAGENTA";
782 enum_map_if_gamestate_team_t[(int)
TEAM_BOTH] =
"TEAM_BOTH";
783 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_BLUE] =
"GOAL_BLUE";
784 enum_map_if_gamestate_goalcolor_t[(int)
GOAL_YELLOW] =
"GOAL_YELLOW";
785 enum_map_if_gamestate_half_t[(int)
HALF_FIRST] =
"HALF_FIRST";
786 enum_map_if_gamestate_half_t[(int)
HALF_SECOND] =
"HALF_SECOND";
787 enum_map_if_gamestate_role_t[(int)
ROLE_GOALIE] =
"ROLE_GOALIE";
788 enum_map_if_gamestate_role_t[(int)
ROLE_DEFENDER] =
"ROLE_DEFENDER";
789 enum_map_if_gamestate_role_t[(int)
ROLE_MID_LEFT] =
"ROLE_MID_LEFT";
790 enum_map_if_gamestate_role_t[(int)
ROLE_MID_RIGHT] =
"ROLE_MID_RIGHT";
791 enum_map_if_gamestate_role_t[(int)
ROLE_ATTACKER] =
"ROLE_ATTACKER";
792 add_fieldinfo(
IFT_ENUM,
"state_team", 1, &data->state_team,
"if_gamestate_team_t", &enum_map_if_gamestate_team_t);
809 data = (SetStateTeamMessage_data_t *)
data_ptr;
841 data->state_team = new_state_team;
869 const SetStateTeamMessage *m2 =
dynamic_cast<const SetStateTeamMessage *
>(message);
877 EXPORT_INTERFACE(GameStateInterface)