mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-04 10:26:16 -04:00
optimized code and removed bugs
This commit is contained in:
@@ -4549,7 +4549,6 @@ public:
|
||||
/* 0x03850 */ daAlink_procFunc mpProcFunc;
|
||||
|
||||
#if TARGET_PC
|
||||
void handleGamepadColor();
|
||||
void handleWolfHowl();
|
||||
void handleQuickTransform();
|
||||
bool checkGyroAimContext();
|
||||
|
||||
@@ -4,120 +4,6 @@
|
||||
#include "d/d_meter2_draw.h"
|
||||
#include "d/d_meter2_info.h"
|
||||
|
||||
cXyz currentGamepadColor = {0, 0, 0};
|
||||
cXyz currentGamepadFlashColor = {0, 0, 0};
|
||||
cXyz finalGamepadColor = {0, 0, 0};
|
||||
float lerpSpeed = 0.0f;
|
||||
const cXyz duskColor = {45, 45, -45};
|
||||
|
||||
const cXyz heartColor1 = {255, 0, 0};
|
||||
const cXyz heartColor2 = {155, 5, 5};
|
||||
const cXyz heartColor3 = {55, 5, 5};
|
||||
|
||||
float lerp(float a, float b, float t) {
|
||||
return a + t * (b - a);
|
||||
}
|
||||
|
||||
cXyz LerpColor(cXyz a, cXyz b, float t) {
|
||||
return {lerp(a.x, b.x, t), lerp(a.y, b.y, t), lerp(a.z, b.z, t)};
|
||||
}
|
||||
|
||||
void FadeLED(cXyz newColor, float speed) {
|
||||
finalGamepadColor = newColor;
|
||||
lerpSpeed = speed / 30.0f;
|
||||
}
|
||||
|
||||
void SetLED(cXyz newColor) {
|
||||
currentGamepadColor = newColor;
|
||||
finalGamepadColor = newColor;
|
||||
}
|
||||
|
||||
void AddGamepadCurrentColor(cXyz addColor) {
|
||||
finalGamepadColor.x += addColor.x;
|
||||
finalGamepadColor.y += addColor.y;
|
||||
finalGamepadColor.z += addColor.z;
|
||||
}
|
||||
|
||||
void daAlink_c::handleGamepadColor() {
|
||||
bool setColor = false;
|
||||
|
||||
fopAc_ac_c* zhint = dComIfGp_att_getZHint();
|
||||
if (zhint != NULL) {
|
||||
FadeLED({50, 50, 175}, 2.0f);
|
||||
setColor = true;
|
||||
}
|
||||
|
||||
if (!checkEventRun()) {
|
||||
u8 linkHp = Z2GetLink()->getLinkHp();
|
||||
if (linkHp <= 2) {
|
||||
FadeLED(heartColor1, 2.0f);
|
||||
setColor = true;
|
||||
} else if (linkHp <= 4) {
|
||||
FadeLED(heartColor2, 2.0f);
|
||||
setColor = true;
|
||||
} else if (linkHp <= 6) {
|
||||
FadeLED(heartColor3, 2.0f);
|
||||
setColor = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!setColor) {
|
||||
if (checkWolf()) {
|
||||
FadeLED({115, 115, 75}, 5.0f);
|
||||
setColor = true;
|
||||
} else {
|
||||
switch (dComIfGs_getSelectEquipClothes()) {
|
||||
case dItemNo_WEAR_KOKIRI_e:
|
||||
FadeLED({0, 100, 0}, 5.0f);
|
||||
setColor = true;
|
||||
break;
|
||||
case dItemNo_WEAR_ZORA_e:
|
||||
FadeLED({0, 0, 100}, 5.0f);
|
||||
setColor = true;
|
||||
break;
|
||||
case dItemNo_ARMOR_e:
|
||||
if (checkMagicArmorHeavy()) {
|
||||
FadeLED({5, 100, 100}, 5.0f);
|
||||
} else {
|
||||
FadeLED({100, 0, 5}, 5.0f);
|
||||
}
|
||||
setColor = true;
|
||||
break;
|
||||
default:
|
||||
FadeLED({235, 230, 115}, 5.0f);
|
||||
setColor = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (dKy_darkworld_check()) {
|
||||
AddGamepadCurrentColor(duskColor);
|
||||
}
|
||||
|
||||
AddGamepadCurrentColor(currentGamepadFlashColor);
|
||||
|
||||
if (finalGamepadColor.x > 255)
|
||||
finalGamepadColor.x = 255;
|
||||
if (finalGamepadColor.x < 0)
|
||||
finalGamepadColor.x = 0;
|
||||
|
||||
if (finalGamepadColor.y > 255)
|
||||
finalGamepadColor.y = 255;
|
||||
if (finalGamepadColor.y < 0)
|
||||
finalGamepadColor.y = 0;
|
||||
|
||||
if (finalGamepadColor.z > 255)
|
||||
finalGamepadColor.z = 255;
|
||||
if (finalGamepadColor.z < 0)
|
||||
finalGamepadColor.z = 0;
|
||||
|
||||
currentGamepadColor = LerpColor(currentGamepadColor, finalGamepadColor, lerpSpeed);
|
||||
PADSetColor(PAD_CHAN0, (u8)currentGamepadColor.x, (u8)currentGamepadColor.y,
|
||||
(u8)currentGamepadColor.z);
|
||||
}
|
||||
|
||||
void daAlink_c::handleWolfHowl() {
|
||||
if (checkWolf()) {
|
||||
if (!dusk::getSettings().game.sunsSong) {
|
||||
|
||||
+105
-3
@@ -733,10 +733,112 @@ static void fapGm_AfterRecord() {
|
||||
fapGm_After();
|
||||
}
|
||||
|
||||
static void duskExecute() {
|
||||
if (const auto link = g_dComIfG_gameInfo.play.getPlayer(0)) {
|
||||
dynamic_cast<daAlink_c*>(link)->handleGamepadColor();
|
||||
cXyz currentGamepadColor = {0, 0, 0};
|
||||
cXyz finalGamepadColor = {0, 0, 0};
|
||||
cXyz additionalGamepadColor = {0, 0, 0};
|
||||
|
||||
float lerpSpeed = 0.0f;
|
||||
|
||||
const cXyz duskColor = {50, 50, -50};
|
||||
const cXyz noColor = {0, 0, 0};
|
||||
|
||||
float lerp(float a, float b, float t) {
|
||||
return a + t * (b - a);
|
||||
}
|
||||
|
||||
cXyz LerpColor(cXyz a, cXyz b, float t) {
|
||||
return {lerp(a.x, b.x, t), lerp(a.y, b.y, t), lerp(a.z, b.z, t)};
|
||||
}
|
||||
|
||||
void FadeLED(cXyz newColor, float speed) {
|
||||
finalGamepadColor = newColor;
|
||||
lerpSpeed = speed / 30.0f;
|
||||
}
|
||||
|
||||
void SetLED(cXyz newColor) {
|
||||
currentGamepadColor = newColor;
|
||||
finalGamepadColor = newColor;
|
||||
}
|
||||
|
||||
void SetGamepadAdditionalColor(cXyz addColor) {
|
||||
additionalGamepadColor.x = addColor.x;
|
||||
additionalGamepadColor.y = addColor.y;
|
||||
additionalGamepadColor.z = addColor.z;
|
||||
}
|
||||
|
||||
void handleGamepadColor() {
|
||||
bool setColor = false;
|
||||
|
||||
fopAc_ac_c* zhint = dComIfGp_att_getZHint();
|
||||
if (zhint != NULL) {
|
||||
FadeLED({50, 50, 175}, 2.0f);
|
||||
setColor = true;
|
||||
}
|
||||
|
||||
daPy_py_c* player = daPy_getPlayerActorClass();
|
||||
daAlink_c* link = daAlink_getAlinkActorClass();
|
||||
|
||||
if (link != nullptr && !setColor) {
|
||||
if (link->checkWolf()) {
|
||||
FadeLED({115, 115, 75}, 5.0f);
|
||||
setColor = true;
|
||||
} else {
|
||||
switch (dComIfGs_getSelectEquipClothes()) {
|
||||
case dItemNo_WEAR_KOKIRI_e:
|
||||
FadeLED({0, 100, 0}, 5.0f);
|
||||
setColor = true;
|
||||
break;
|
||||
case dItemNo_WEAR_ZORA_e:
|
||||
FadeLED({0, 0, 100}, 5.0f);
|
||||
setColor = true;
|
||||
break;
|
||||
case dItemNo_ARMOR_e:
|
||||
if (link->checkMagicArmorHeavy()) {
|
||||
FadeLED({5, 100, 100}, 5.0f);
|
||||
} else {
|
||||
FadeLED({100, 0, 5}, 5.0f);
|
||||
}
|
||||
setColor = true;
|
||||
break;
|
||||
case dItemNo_WEAR_CASUAL_e:
|
||||
FadeLED({235, 230, 115}, 5.0f);
|
||||
setColor = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (dKy_darkworld_check()) {
|
||||
SetGamepadAdditionalColor(duskColor);
|
||||
} else {
|
||||
SetGamepadAdditionalColor(noColor);
|
||||
}
|
||||
|
||||
f32 finalRed = finalGamepadColor.x + additionalGamepadColor.x;
|
||||
f32 finalGreen = finalGamepadColor.y + additionalGamepadColor.y;
|
||||
f32 finalBlue = finalGamepadColor.z + additionalGamepadColor.z;
|
||||
|
||||
if (finalRed > 255)
|
||||
finalRed = 255;
|
||||
if (finalRed < 0)
|
||||
finalRed = 0;
|
||||
|
||||
if (finalGreen > 255)
|
||||
finalGreen = 255;
|
||||
if (finalGreen < 0)
|
||||
finalGreen = 0;
|
||||
|
||||
if (finalBlue > 255)
|
||||
finalBlue = 255;
|
||||
if (finalBlue < 0)
|
||||
finalBlue = 0;
|
||||
|
||||
currentGamepadColor = LerpColor(currentGamepadColor, cXyz{finalRed, finalGreen, finalBlue}, lerpSpeed);
|
||||
PADSetColor(PAD_CHAN0, (u8)currentGamepadColor.x, (u8)currentGamepadColor.y, (u8)currentGamepadColor.z);
|
||||
}
|
||||
|
||||
static void duskExecute() {
|
||||
handleGamepadColor();
|
||||
|
||||
if (mDoCPd_c::getHoldR(PAD_1) && mDoCPd_c::getTrigX(PAD_1)) {
|
||||
if (const auto link = g_dComIfG_gameInfo.play.getPlayer(0)) {
|
||||
|
||||
Reference in New Issue
Block a user