Exemple #1
0
    def set_button_state(self, button_state: Buttons.Logical):
        diff = self.prev ^ button_state  # prev XOR new
        press = diff & button_state  # Send press for: diff AND new
        release = diff & self.prev  # Send release for: diff AND pref
        # keep = self.prev & button_state # Keep pressing: prev AND new
        self.prev = press

        # Release old buttons
        for i in bits(release):
            self.release_button(Buttons.Logical(i))

        # Press new buttons
        for i in bits(press):
            self.press_button(Buttons.Logical(i))

        return press, release
Exemple #2
0
    def as_slippi_bitmask(self) -> Buttons.Logical:
        """Return action(s) as Slippi bitmask."""
        res = Buttons.Logical(Buttons.Logical.NONE)
        for i, mask in enumerate(STATE_TO_SLIPPI):
            if self.state[i]:
                res |= mask

        return res