From 9454fdc54e930f7ffc03bcacceb63596fec2df6d Mon Sep 17 00:00:00 2001 From: sirrow Date: Fri, 18 Sep 2020 22:17:12 +0900 Subject: [PATCH] implement hitbox compatible SOCD. --- connect_switch.ino | 107 +++++++++++++++++++++------------------------ 1 file changed, 51 insertions(+), 56 deletions(-) diff --git a/connect_switch.ino b/connect_switch.ino index 8629e40..fbfa24d 100644 --- a/connect_switch.ino +++ b/connect_switch.ino @@ -145,68 +145,63 @@ void loop() for (int i=0; i<4; i++){ arrowTable[i].current = digitalRead(arrowTable[i].pinNumber); - - struct arrow *newestArrow; - if(i % 2 == 0){ // Y axis - newestArrow = &newestYArrow; - } - else { // X axis - newestArrow = &newestXArrow; - } - - if(arrowTable[i].prev==1 && arrowTable[i].current==0){ - // add arrow to the tail of linked list - arrowTable[i].older = newestArrow->older; - arrowTable[i].newer = newestArrow; - newestArrow->older->newer = &(arrowTable[i]); - newestArrow->older = &(arrowTable[i]); - } - else if (arrowTable[i].prev==0 && arrowTable[i].current==1){ - arrowTable[i].newer->older = arrowTable[i].older; - arrowTable[i].older->newer = arrowTable[i].newer; - arrowTable[i].newer = NULL; - arrowTable[i].older = NULL; - } - arrowTable[i].prev = arrowTable[i].current; } - - if(newestYArrow.older->arrowSymbol == Hat::TOP){ - if(newestXArrow.older->arrowSymbol == Hat::LEFT){ - SwitchControlLibrary().MoveHat(static_cast(Hat::TOP_LEFT)); + + if(arrowTable[1].current == 0){ + if(arrowTable[3].current == 0){ + if(arrowTable[0].current == 0){ + SwitchControlLibrary().MoveHat(static_cast(Hat::TOP)); + } + else{ + if(arrowTable[2].current == 0){ + SwitchControlLibrary().MoveHat(static_cast(Hat::BOTTOM)); + } + else{ + SwitchControlLibrary().MoveHat(static_cast(Hat::CENTER)); + } + } } - else if(newestXArrow.older->arrowSymbol == Hat::CENTER) { - SwitchControlLibrary().MoveHat(static_cast(Hat::TOP)); - } - else { // Hat::RIGHT - SwitchControlLibrary().MoveHat(static_cast(Hat::TOP_RIGHT)); - } - } - if(newestYArrow.older->arrowSymbol == Hat::CENTER){ - if(newestXArrow.older->arrowSymbol == Hat::LEFT){ - SwitchControlLibrary().MoveHat(static_cast(Hat::LEFT)); - } - else if(newestXArrow.older->arrowSymbol == Hat::CENTER) { - SwitchControlLibrary().MoveHat(static_cast(Hat::CENTER)); - } - else { // Hat::RIGHT - SwitchControlLibrary().MoveHat(static_cast(Hat::RIGHT)); + else{ + if(arrowTable[0].current == 0){ + SwitchControlLibrary().MoveHat(static_cast(Hat::TOP_LEFT)); + } + else{ + if(arrowTable[2].current == 0){ + SwitchControlLibrary().MoveHat(static_cast(Hat::BOTTOM_LEFT)); + } + else{ + SwitchControlLibrary().MoveHat(static_cast(Hat::LEFT)); + } + } } } - if(newestYArrow.older->arrowSymbol == Hat::BOTTOM){ - if(newestXArrow.older->arrowSymbol == Hat::LEFT){ - SwitchControlLibrary().MoveHat(static_cast(Hat::BOTTOM_LEFT)); + else{ + if(arrowTable[3].current == 0){ + if(arrowTable[0].current == 0){ + SwitchControlLibrary().MoveHat(static_cast(Hat::TOP_RIGHT)); + } + else{ + if(arrowTable[2].current == 0){ + SwitchControlLibrary().MoveHat(static_cast(Hat::BOTTOM_RIGHT)); + } + else{ + SwitchControlLibrary().MoveHat(static_cast(Hat::RIGHT)); + } + } } - else if(newestXArrow.older->arrowSymbol == Hat::CENTER) { - SwitchControlLibrary().MoveHat(static_cast(Hat::BOTTOM)); - } - else { // Hat::RIGHT - SwitchControlLibrary().MoveHat(static_cast(Hat::BOTTOM_RIGHT)); + else{ + if(arrowTable[0].current == 0){ + SwitchControlLibrary().MoveHat(static_cast(Hat::TOP)); + } + else{ + if(arrowTable[2].current == 0){ + SwitchControlLibrary().MoveHat(static_cast(Hat::BOTTOM)); + } + else{ + SwitchControlLibrary().MoveHat(static_cast(Hat::CENTER)); + } + } } } - - - //SwitchControlLibrary().MoveHat(static_cast(newestArrow.older->arrowSymbol)); - - }