Blizzard / s2client-api

StarCraft II Client - C++ library supported on Windows, Linux and Mac designed for building scripted bots and research using the SC2API.
MIT License
1.66k stars 282 forks source link

Support for CloackedAllied #310

Closed mboedigh closed 5 years ago

mboedigh commented 5 years ago

all_tests fails because observation implementation cannot convert all cloacked states I don't know how to make pull request but in sc2_unit.h add new enum CloackedAllied

    //! Unit cloak state.
    enum CloakState {
        //! Cloaked, invisible to enemies until detected.
        Cloaked = 1,
        //! Cloaked enemy, but detected.
        CloakedDetected = 2,
        //! No cloaking.
        NotCloaked = 3,
        //! Cloacked ally, but detected, as always 
        CloackedAllied = 5,
        //! Could not determine cloaking state.
        Unknown = 5,
    };

And in sc2_proto_to_pods.cc add case statement to switch statement and convert the raw observation

bool Convert(const SC2APIProtocol::CloakState& cloak_proto, Unit::CloakState& cloak) {
    switch (cloak_proto) {
        case SC2APIProtocol::CloakState::Cloaked:         cloak = Unit::Cloaked; return true;
        case SC2APIProtocol::CloakState::CloakedDetected: cloak = Unit::CloakedDetected; return true;
        case SC2APIProtocol::CloakState::NotCloaked:      cloak = Unit::NotCloaked; return true;
        case SC2APIProtocol::CloakState::CloakedAllied:   cloak = Unit::CloackedAllied; return true;
        case SC2APIProtocol::CloakState::CloakedUnknown:  cloak = Unit::Unknown; return true;
    }
    return false;
}
mboedigh commented 5 years ago

I believe this might be closed by #306

piroxiljin commented 5 years ago

In fact #306 added only CloakedUnknown = 0 state.

But I will try to check this issue and will update my PR.