| @@ -51,7 +51,10 @@ namespace THUAI6 | |||||
| Key3 = 1, | Key3 = 1, | ||||
| Key5 = 2, | Key5 = 2, | ||||
| Key6 = 3, | Key6 = 3, | ||||
| PropType4 = 4, | |||||
| AddSpeed = 4, | |||||
| AddLifeOrAp = 5, | |||||
| AddHpOrAp = 6, | |||||
| ShieldOrSpear = 7, | |||||
| }; | }; | ||||
| enum class BulletType : unsigned char | enum class BulletType : unsigned char | ||||
| @@ -323,6 +326,10 @@ namespace THUAI6 | |||||
| {PropType::Key3, "Key3"}, | {PropType::Key3, "Key3"}, | ||||
| {PropType::Key5, "Key5"}, | {PropType::Key5, "Key5"}, | ||||
| {PropType::Key6, "Key6"}, | {PropType::Key6, "Key6"}, | ||||
| {PropType::AddSpeed, "AddSpeed"}, | |||||
| {PropType::AddLifeOrAp, "AddLifeOrAp"}, | |||||
| {PropType::AddHpOrAp, "AddHpOrAp"}, | |||||
| {PropType::ShieldOrSpear, "ShieldOrSpear"}, | |||||
| }; | }; | ||||
| @@ -87,7 +87,10 @@ namespace Proto2THUAI6 | |||||
| {protobuf::PropType::KEY3, THUAI6::PropType::Key3}, | {protobuf::PropType::KEY3, THUAI6::PropType::Key3}, | ||||
| {protobuf::PropType::KEY5, THUAI6::PropType::Key5}, | {protobuf::PropType::KEY5, THUAI6::PropType::Key5}, | ||||
| {protobuf::PropType::KEY6, THUAI6::PropType::Key6}, | {protobuf::PropType::KEY6, THUAI6::PropType::Key6}, | ||||
| {protobuf::PropType::PTYPE4, THUAI6::PropType::PropType4}, | |||||
| {protobuf::PropType::ADD_SPEED, THUAI6::PropType::AddSpeed}, | |||||
| {protobuf::PropType::ADD_HP_OR_AP, THUAI6::PropType::AddHpOrAp}, | |||||
| {protobuf::PropType::ADD_LIFE_OR_AP, THUAI6::PropType::AddLifeOrAp}, | |||||
| {protobuf::PropType::SHIELD_OR_SPEAR, THUAI6::PropType::ShieldOrSpear}, | |||||
| }; | }; | ||||
| inline std::map<protobuf::PlayerType, THUAI6::PlayerType> playerTypeDict{ | inline std::map<protobuf::PlayerType, THUAI6::PlayerType> playerTypeDict{ | ||||
| @@ -338,7 +341,10 @@ namespace THUAI62Proto | |||||
| {THUAI6::PropType::Key3, protobuf::PropType::KEY3}, | {THUAI6::PropType::Key3, protobuf::PropType::KEY3}, | ||||
| {THUAI6::PropType::Key5, protobuf::PropType::KEY5}, | {THUAI6::PropType::Key5, protobuf::PropType::KEY5}, | ||||
| {THUAI6::PropType::Key6, protobuf::PropType::KEY6}, | {THUAI6::PropType::Key6, protobuf::PropType::KEY6}, | ||||
| {THUAI6::PropType::PropType4, protobuf::PropType::PTYPE4}, | |||||
| {THUAI6::PropType::AddHpOrAp, protobuf::PropType::ADD_HP_OR_AP}, | |||||
| {THUAI6::PropType::AddLifeOrAp, protobuf::PropType::ADD_LIFE_OR_AP}, | |||||
| {THUAI6::PropType::AddSpeed, protobuf::PropType::ADD_SPEED}, | |||||
| {THUAI6::PropType::ShieldOrSpear, protobuf::PropType::SHIELD_OR_SPEAR}, | |||||
| }; | }; | ||||
| inline std::map<THUAI6::PlayerType, protobuf::PlayerType> playerTypeDict{ | inline std::map<THUAI6::PlayerType, protobuf::PlayerType> playerTypeDict{ | ||||
| @@ -18,8 +18,10 @@ extern const THUAI6::StudentType studentType = THUAI6::StudentType::Athlete; | |||||
| void AI::play(IStudentAPI& api) | void AI::play(IStudentAPI& api) | ||||
| { | { | ||||
| api.Move(100, 1); | api.Move(100, 1); | ||||
| api.PrintSelfInfo(); | |||||
| } | } | ||||
| void AI::play(ITrickerAPI& api) | void AI::play(ITrickerAPI& api) | ||||
| { | { | ||||
| api.Move(100, 1); | |||||
| } | } | ||||
| @@ -26,6 +26,7 @@ StudentDebugAPI::StudentDebugAPI(ILogic& logic, bool file, bool print, bool warn | |||||
| if (warnOnly) | if (warnOnly) | ||||
| printLogger->set_level(spdlog::level::warn); | printLogger->set_level(spdlog::level::warn); | ||||
| logger = std::make_unique<spdlog::logger>("apiLogger", spdlog::sinks_init_list{fileLogger, printLogger}); | logger = std::make_unique<spdlog::logger>("apiLogger", spdlog::sinks_init_list{fileLogger, printLogger}); | ||||
| logger->flush_on(spdlog::level::warn); | |||||
| } | } | ||||
| TrickerDebugAPI::TrickerDebugAPI(ILogic& logic, bool file, bool print, bool warnOnly, int64_t playerID) : | TrickerDebugAPI::TrickerDebugAPI(ILogic& logic, bool file, bool print, bool warnOnly, int64_t playerID) : | ||||
| @@ -324,7 +324,13 @@ void Logic::ProcessMessage() | |||||
| } | } | ||||
| bufferState->gameMap = std::move(map); | bufferState->gameMap = std::move(map); | ||||
| currentState->gameMap = bufferState->gameMap; | currentState->gameMap = bufferState->gameMap; | ||||
| logger->info("Map loaded!"); | |||||
| } | } | ||||
| if (currentState->gameMap.empty()) | |||||
| { | |||||
| logger->error("Map not loaded!"); | |||||
| throw std::runtime_error("Map not loaded!"); | |||||
| } | |||||
| LoadBuffer(clientMsg); | LoadBuffer(clientMsg); | ||||
| AILoop = true; | AILoop = true; | ||||
| @@ -734,7 +740,6 @@ void Logic::Main(CreateAIFunc createAI, std::string IP, std::string port, bool f | |||||
| if (file) | if (file) | ||||
| { | { | ||||
| fileLogger->set_level(spdlog::level::trace); | fileLogger->set_level(spdlog::level::trace); | ||||
| spdlog::flush_every(std::chrono::seconds(1)); | |||||
| } | } | ||||
| else | else | ||||
| fileLogger->set_level(spdlog::level::off); | fileLogger->set_level(spdlog::level::off); | ||||
| @@ -745,6 +750,7 @@ void Logic::Main(CreateAIFunc createAI, std::string IP, std::string port, bool f | |||||
| if (warnOnly) | if (warnOnly) | ||||
| printLogger->set_level(spdlog::level::warn); | printLogger->set_level(spdlog::level::warn); | ||||
| logger = std::make_unique<spdlog::logger>("logicLogger", spdlog::sinks_init_list{fileLogger, printLogger}); | logger = std::make_unique<spdlog::logger>("logicLogger", spdlog::sinks_init_list{fileLogger, printLogger}); | ||||
| logger->flush_on(spdlog::level::warn); | |||||
| // 打印当前的调试信息 | // 打印当前的调试信息 | ||||
| logger->info("*********Basic Info*********"); | logger->info("*********Basic Info*********"); | ||||
| @@ -39,36 +39,38 @@ const char descriptor_table_protodef_MessageType_2eproto[] PROTOBUF_SECTION_VARI | |||||
| "SSROOM\020\004\022\010\n\004GATE\020\005\022\017\n\013HIDDEN_GATE\020\006\022\n\n\006W" | "SSROOM\020\004\022\010\n\004GATE\020\005\022\017\n\013HIDDEN_GATE\020\006\022\n\n\006W" | ||||
| "INDOW\020\007\022\t\n\005DOOR3\020\010\022\t\n\005DOOR5\020\t\022\t\n\005DOOR6\020\n" | "INDOW\020\007\022\t\n\005DOOR3\020\010\022\t\n\005DOOR5\020\t\022\t\n\005DOOR6\020\n" | ||||
| "\022\t\n\005CHEST\020\013*8\n\tShapeType\022\023\n\017NULL_SHAPE_T" | "\022\t\n\005CHEST\020\013*8\n\tShapeType\022\023\n\017NULL_SHAPE_T" | ||||
| "YPE\020\000\022\n\n\006CIRCLE\020\001\022\n\n\006SQUARE\020\002*H\n\010PropTyp" | |||||
| "e\022\022\n\016NULL_PROP_TYPE\020\000\022\010\n\004KEY3\020\001\022\010\n\004KEY5\020" | |||||
| "\002\022\010\n\004KEY6\020\003\022\n\n\006PTYPE4\020\004*f\n\017StudentBuffTy" | |||||
| "pe\022\023\n\017NULL_SBUFF_TYPE\020\000\022\016\n\nSBUFFTYPE1\020\001\022" | |||||
| "\016\n\nSBUFFTYPE2\020\002\022\016\n\nSBUFFTYPE3\020\003\022\016\n\nSBUFF" | |||||
| "TYPE4\020\004*\251\002\n\013PlayerState\022\017\n\013NULL_STATUS\020\000" | |||||
| "\022\010\n\004IDLE\020\001\022\014\n\010LEARNING\020\002\022\014\n\010ADDICTED\020\003\022\010" | |||||
| "\n\004QUIT\020\004\022\r\n\tGRADUATED\020\005\022\013\n\007TREATED\020\006\022\013\n\007" | |||||
| "RESCUED\020\007\022\013\n\007STUNNED\020\010\022\014\n\010TREATING\020\t\022\014\n\010" | |||||
| "RESCUING\020\n\022\014\n\010SWINGING\020\013\022\r\n\tATTACKING\020\014\022" | |||||
| "\013\n\007LOCKING\020\r\022\r\n\tRUMMAGING\020\016\022\014\n\010CLIMBING\020" | |||||
| "\017\022\023\n\017OPENING_A_CHEST\020\020\022\027\n\023USING_SPECIAL_" | |||||
| "SKILL\020\021\022\022\n\016OPENING_A_GATE\020\022*f\n\017TrickerBu" | |||||
| "ffType\022\023\n\017NULL_TBUFF_TYPE\020\000\022\016\n\nTBUFFTYPE" | |||||
| "1\020\001\022\016\n\nTBUFFTYPE2\020\002\022\016\n\nTBUFFTYPE3\020\003\022\016\n\nT" | |||||
| "BUFFTYPE4\020\004*J\n\nPlayerType\022\024\n\020NULL_PLAYER" | |||||
| "_TYPE\020\000\022\022\n\016STUDENT_PLAYER\020\001\022\022\n\016TRICKER_P" | |||||
| "LAYER\020\002*g\n\013StudentType\022\025\n\021NULL_STUDENT_T" | |||||
| "YPE\020\000\022\013\n\007ATHLETE\020\001\022\020\n\014STUDENTTYPE2\020\002\022\020\n\014" | |||||
| "STUDENTTYPE3\020\003\022\020\n\014STUDENTTYPE4\020\004*h\n\013Tric" | |||||
| "kerType\022\025\n\021NULL_TRICKER_TYPE\020\000\022\014\n\010ASSASS" | |||||
| "IN\020\001\022\020\n\014TRICKERTYPE2\020\002\022\020\n\014TRICKERTYPE3\020\003" | |||||
| "\022\020\n\014TRICKERTYPE4\020\004*P\n\tGameState\022\023\n\017NULL_" | |||||
| "GAME_STATE\020\000\022\016\n\nGAME_START\020\001\022\020\n\014GAME_RUN" | |||||
| "NING\020\002\022\014\n\010GAME_END\020\003b\006proto3"; | |||||
| "YPE\020\000\022\n\n\006CIRCLE\020\001\022\n\n\006SQUARE\020\002*\206\001\n\010PropTy" | |||||
| "pe\022\022\n\016NULL_PROP_TYPE\020\000\022\r\n\tADD_SPEED\020\001\022\022\n" | |||||
| "\016ADD_LIFE_OR_AP\020\002\022\020\n\014ADD_HP_OR_AP\020\003\022\023\n\017S" | |||||
| "HIELD_OR_SPEAR\020\004\022\010\n\004KEY3\020\005\022\010\n\004KEY5\020\006\022\010\n\004" | |||||
| "KEY6\020\007*f\n\017StudentBuffType\022\023\n\017NULL_SBUFF_" | |||||
| "TYPE\020\000\022\016\n\nSBUFFTYPE1\020\001\022\016\n\nSBUFFTYPE2\020\002\022\016" | |||||
| "\n\nSBUFFTYPE3\020\003\022\016\n\nSBUFFTYPE4\020\004*\251\002\n\013Playe" | |||||
| "rState\022\017\n\013NULL_STATUS\020\000\022\010\n\004IDLE\020\001\022\014\n\010LEA" | |||||
| "RNING\020\002\022\014\n\010ADDICTED\020\003\022\010\n\004QUIT\020\004\022\r\n\tGRADU" | |||||
| "ATED\020\005\022\013\n\007TREATED\020\006\022\013\n\007RESCUED\020\007\022\013\n\007STUN" | |||||
| "NED\020\010\022\014\n\010TREATING\020\t\022\014\n\010RESCUING\020\n\022\014\n\010SWI" | |||||
| "NGING\020\013\022\r\n\tATTACKING\020\014\022\013\n\007LOCKING\020\r\022\r\n\tR" | |||||
| "UMMAGING\020\016\022\014\n\010CLIMBING\020\017\022\023\n\017OPENING_A_CH" | |||||
| "EST\020\020\022\027\n\023USING_SPECIAL_SKILL\020\021\022\022\n\016OPENIN" | |||||
| "G_A_GATE\020\022*f\n\017TrickerBuffType\022\023\n\017NULL_TB" | |||||
| "UFF_TYPE\020\000\022\016\n\nTBUFFTYPE1\020\001\022\016\n\nTBUFFTYPE2" | |||||
| "\020\002\022\016\n\nTBUFFTYPE3\020\003\022\016\n\nTBUFFTYPE4\020\004*J\n\nPl" | |||||
| "ayerType\022\024\n\020NULL_PLAYER_TYPE\020\000\022\022\n\016STUDEN" | |||||
| "T_PLAYER\020\001\022\022\n\016TRICKER_PLAYER\020\002*g\n\013Studen" | |||||
| "tType\022\025\n\021NULL_STUDENT_TYPE\020\000\022\013\n\007ATHLETE\020" | |||||
| "\001\022\020\n\014STUDENTTYPE2\020\002\022\020\n\014STUDENTTYPE3\020\003\022\020\n" | |||||
| "\014STUDENTTYPE4\020\004*h\n\013TrickerType\022\025\n\021NULL_T" | |||||
| "RICKER_TYPE\020\000\022\014\n\010ASSASSIN\020\001\022\020\n\014TRICKERTY" | |||||
| "PE2\020\002\022\020\n\014TRICKERTYPE3\020\003\022\020\n\014TRICKERTYPE4\020" | |||||
| "\004*P\n\tGameState\022\023\n\017NULL_GAME_STATE\020\000\022\016\n\nG" | |||||
| "AME_START\020\001\022\020\n\014GAME_RUNNING\020\002\022\014\n\010GAME_EN" | |||||
| "D\020\003b\006proto3"; | |||||
| static ::_pbi::once_flag descriptor_table_MessageType_2eproto_once; | static ::_pbi::once_flag descriptor_table_MessageType_2eproto_once; | ||||
| const ::_pbi::DescriptorTable descriptor_table_MessageType_2eproto = { | const ::_pbi::DescriptorTable descriptor_table_MessageType_2eproto = { | ||||
| false, | false, | ||||
| false, | false, | ||||
| 1348, | |||||
| 1411, | |||||
| descriptor_table_protodef_MessageType_2eproto, | descriptor_table_protodef_MessageType_2eproto, | ||||
| "MessageType.proto", | "MessageType.proto", | ||||
| &descriptor_table_MessageType_2eproto_once, | &descriptor_table_MessageType_2eproto_once, | ||||
| @@ -171,6 +173,9 @@ namespace protobuf | |||||
| case 2: | case 2: | ||||
| case 3: | case 3: | ||||
| case 4: | case 4: | ||||
| case 5: | |||||
| case 6: | |||||
| case 7: | |||||
| return true; | return true; | ||||
| default: | default: | ||||
| return false; | return false; | ||||
| @@ -155,16 +155,19 @@ namespace protobuf | |||||
| enum PropType : int | enum PropType : int | ||||
| { | { | ||||
| NULL_PROP_TYPE = 0, | NULL_PROP_TYPE = 0, | ||||
| KEY3 = 1, | |||||
| KEY5 = 2, | |||||
| KEY6 = 3, | |||||
| PTYPE4 = 4, | |||||
| ADD_SPEED = 1, | |||||
| ADD_LIFE_OR_AP = 2, | |||||
| ADD_HP_OR_AP = 3, | |||||
| SHIELD_OR_SPEAR = 4, | |||||
| KEY3 = 5, | |||||
| KEY5 = 6, | |||||
| KEY6 = 7, | |||||
| PropType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(), | PropType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(), | ||||
| PropType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max() | PropType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max() | ||||
| }; | }; | ||||
| bool PropType_IsValid(int value); | bool PropType_IsValid(int value); | ||||
| constexpr PropType PropType_MIN = NULL_PROP_TYPE; | constexpr PropType PropType_MIN = NULL_PROP_TYPE; | ||||
| constexpr PropType PropType_MAX = PTYPE4; | |||||
| constexpr PropType PropType_MAX = KEY6; | |||||
| constexpr int PropType_ARRAYSIZE = PropType_MAX + 1; | constexpr int PropType_ARRAYSIZE = PropType_MAX + 1; | ||||
| const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PropType_descriptor(); | const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PropType_descriptor(); | ||||