mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-02 00:03:54 -04:00
add various cosmetic options
This commit is contained in:
@@ -58,12 +58,9 @@
|
||||
#include "res/Object/Alink.h"
|
||||
#include <cstring>
|
||||
#include <dusk/string.hpp>
|
||||
#endif
|
||||
|
||||
#include "dusk/cosmetics/color_utils.hpp"
|
||||
#include "dusk/randomizer/game/flags.h"
|
||||
#include "dusk/randomizer/game/stages.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/randomizer/game/tools.h"
|
||||
#endif
|
||||
|
||||
@@ -4238,6 +4235,25 @@ int daAlink_c::createHeap() {
|
||||
if (mpHIO == NULL) {
|
||||
return 0;
|
||||
}
|
||||
#if TARGET_PC
|
||||
const auto& lanternColor = dusk::getSettings().cosmetics.lanternGlowColor.getValue();
|
||||
if (dusk::cosmetics::is_valid_hex_color_str(lanternColor)) {
|
||||
u8 r = std::stoi(lanternColor.substr(0, 2), nullptr, 16);
|
||||
u8 g = std::stoi(lanternColor.substr(2, 2), nullptr, 16);
|
||||
u8 b = std::stoi(lanternColor.substr(4, 2), nullptr, 16);
|
||||
auto& lanternAmbience = mpHIO->mItem.mLanternPL.m;
|
||||
auto& lanternSphere = mpHIO->mItem.mLantern.m;
|
||||
lanternAmbience.mColorR = r;
|
||||
lanternAmbience.mColorG = g;
|
||||
lanternAmbience.mColorB = b;
|
||||
lanternSphere.mColorReg1R = r;
|
||||
lanternSphere.mColorReg1G = g;
|
||||
lanternSphere.mColorReg1B = b;
|
||||
lanternSphere.mColorReg2R = r;
|
||||
lanternSphere.mColorReg2G = g;
|
||||
lanternSphere.mColorReg2B = b;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!(mpWlChangeModel = initModel(dRes_ID_ALINK_BMD_WL_CHANGE_e, 0))) {
|
||||
return 0;
|
||||
|
||||
@@ -1624,7 +1624,7 @@ const daAlinkHIO_bomb_c1 daAlinkHIO_bomb_c0::m = {
|
||||
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
const daAlinkHIO_huLight_c1 daAlinkHIO_huLight_c0::m = {
|
||||
IF_NOT_DUSK(const) daAlinkHIO_huLight_c1 daAlinkHIO_huLight_c0::m = {
|
||||
0,
|
||||
3,
|
||||
0,
|
||||
@@ -1638,8 +1638,25 @@ const daAlinkHIO_huLight_c1 daAlinkHIO_huLight_c0::m = {
|
||||
0.0f,
|
||||
};
|
||||
#pragma pop
|
||||
#if TARGET_PC
|
||||
// Save original lantern colors incase player reverts to default
|
||||
const daAlinkHIO_huLight_c1 daAlinkHIO_huLight_c0::original = {
|
||||
0,
|
||||
3,
|
||||
0,
|
||||
181,
|
||||
112,
|
||||
40,
|
||||
-70,
|
||||
1.0f,
|
||||
50.0f,
|
||||
350.0f,
|
||||
0.0f,
|
||||
};
|
||||
#endif
|
||||
|
||||
const daAlinkHIO_kandelaar_c1 daAlinkHIO_kandelaar_c0::m = {
|
||||
|
||||
IF_NOT_DUSK(const) daAlinkHIO_kandelaar_c1 daAlinkHIO_kandelaar_c0::m = {
|
||||
{
|
||||
30,
|
||||
1.1f,
|
||||
@@ -1672,6 +1689,42 @@ const daAlinkHIO_kandelaar_c1 daAlinkHIO_kandelaar_c0::m = {
|
||||
0.5f,
|
||||
};
|
||||
|
||||
#if TARGET_PC
|
||||
// Save original lantern colors incase player reverts to default
|
||||
const daAlinkHIO_kandelaar_c1 daAlinkHIO_kandelaar_c0::original = {
|
||||
{
|
||||
30,
|
||||
1.1f,
|
||||
2.0f,
|
||||
3.0f,
|
||||
17.0f,
|
||||
},
|
||||
{
|
||||
11,
|
||||
1.0f,
|
||||
0.0f,
|
||||
3.0f,
|
||||
12.0f,
|
||||
},
|
||||
{
|
||||
17,
|
||||
1.0f,
|
||||
0.0f,
|
||||
3.0f,
|
||||
18.0f,
|
||||
},
|
||||
80,
|
||||
40,
|
||||
20,
|
||||
40,
|
||||
30,
|
||||
10,
|
||||
3,
|
||||
200,
|
||||
0.5f,
|
||||
};
|
||||
#endif
|
||||
|
||||
const daAlinkHIO_fmChain_c1 daAlinkHIO_fmChain_c0::m = {
|
||||
{
|
||||
20,
|
||||
|
||||
@@ -1191,6 +1191,19 @@ void daAlink_c::setLightningSwordEffect() {
|
||||
emitter = setEmitter(&field_0x327c[i], effName[i], ¤t.pos, &shape_angle);
|
||||
if (emitter != NULL) {
|
||||
emitter->setGlobalRTMatrix(mSwordModel->getBaseTRMtx());
|
||||
#if TARGET_PC
|
||||
// Apply custom light sword glow if applicable
|
||||
const auto& lightSwordGlowColor = dusk::getSettings().cosmetics.lightSwordGlowColor.getValue();
|
||||
if (dusk::cosmetics::is_valid_hex_color_str(lightSwordGlowColor)) {
|
||||
GXColor color = dusk::cosmetics::hex_color_str_to_gx_color(lightSwordGlowColor);
|
||||
emitter->setGlobalEnvColor(color.r, color.g, color.b);
|
||||
emitter->setGlobalPrmColor(color.r, color.g, color.b);
|
||||
} else if (lightSwordGlowColor == "Rainbow") {
|
||||
GXColor color = dusk::cosmetics::get_rainbow_rgb(127.5f);
|
||||
emitter->setGlobalEnvColor(color.r, color.g, color.b);
|
||||
emitter->setGlobalPrmColor(color.r, color.g, color.b);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -884,7 +884,7 @@ dItem_fieldItemResource dItem_data::field_item_res_randomizer[] = {
|
||||
/* 0x2E */ {"F_gD_rupy", 0x0004,-0x0001,-0x0001, 0xFF, 0x1000},
|
||||
/* 0x2F */ {"F_gD_rupy", 0x0004,-0x0001,-0x0001, 0xFF, 0x1000},
|
||||
/* 0x30 */ {"O_gD_marm", 0x0003,-0x0001,-0x0001, 0xFF, 0x1000},
|
||||
/* 0x31 */ {"O_gD_ZORA", 0x0003,-0x0001,-0x0001, 0xFF, 0x1000},
|
||||
/* 0x31 */ {"O_gD_zora", 0x0003,-0x0001,-0x0001, 0xFF, 0x1000},
|
||||
/* 0x32 */ {"O_gD_Injy", 0x0003,-0x0001,-0x0001, 0xFF, 0x1000},
|
||||
/* 0x33 */ {"O_gD_TKS", 0x0008,-0x0001,-0x0001, 0xFF, 0x1000},
|
||||
/* 0x34 */ {"O_gD_puL2", 0x0003,-0x0001,-0x0001, 0xFF, 0x1000},
|
||||
|
||||
@@ -7,6 +7,11 @@
|
||||
#include "d/d_meter_HIO.h"
|
||||
#include "d/d_pane_class.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#include "d/actor/d_a_alink.h"
|
||||
#include "dusk/cosmetics/color_utils.hpp"
|
||||
#endif
|
||||
|
||||
dKantera_icon_c::dKantera_icon_c() {
|
||||
initiate();
|
||||
}
|
||||
@@ -50,6 +55,23 @@ void dKantera_icon_c::setScale(f32 h, f32 v) {
|
||||
|
||||
void dKantera_icon_c::setNowGauge(u16 h, u16 v) {
|
||||
mpGauge->scale((f32)v / (f32)h, 1.0f);
|
||||
#if TARGET_PC
|
||||
// Apply custom lantern glow if necessary
|
||||
const auto& lanternColorStr = dusk::getSettings().cosmetics.lanternGlowColor.getValue();
|
||||
if (dusk::cosmetics::is_valid_hex_color_str(lanternColorStr)) {
|
||||
auto color = dusk::cosmetics::hex_color_str_to_gx_color(lanternColorStr);
|
||||
mpGauge->setBlackWhite(JUtility::TColor(color.r, color.g, color.b, 255),
|
||||
JUtility::TColor(color.r, color.g, color.b, 255));
|
||||
} else if (lanternColorStr == "Rainbow") {
|
||||
auto lv = &daAlink_getAlinkActorClass()->mpHIO->mItem.mLantern.m;
|
||||
mpGauge->setBlackWhite(JUtility::TColor(lv->mColorReg1R, lv->mColorReg1G, lv->mColorReg1B, 255),
|
||||
JUtility::TColor(lv->mColorReg1R, lv->mColorReg1G, lv->mColorReg1B, 255));
|
||||
} else {
|
||||
// Smaller gauge is just pure yellow
|
||||
mpGauge->setBlackWhite(JUtility::TColor(255, 255, 0, 255),
|
||||
JUtility::TColor(255, 255, 0, 255));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void dDlst_KanteraIcon_c::draw() {
|
||||
|
||||
+35
-3
@@ -20,10 +20,11 @@
|
||||
#include "d/d_msg_class.h"
|
||||
#include "d/d_msg_object.h"
|
||||
#include "d/d_pane_class.h"
|
||||
#include "dusk/frame_interpolation.h"
|
||||
#include <cstring>
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/cosmetics/color_utils.hpp"
|
||||
#include "dusk/frame_interpolation.h"
|
||||
#include "dusk/settings.h"
|
||||
#include "dusk/ui/icon_provider.hpp"
|
||||
#include <algorithm>
|
||||
@@ -1676,8 +1677,39 @@ void dMeter2Draw_c::drawKanteraScreen(u8 i_meterType) {
|
||||
mpMagicMeter->setBlackWhite(black, mpMagicMeter->getInitWhite());
|
||||
setAlphaMagicChange(true);
|
||||
} else if (i_meterType == 1) {
|
||||
mpMagicMeter->setBlackWhite(JUtility::TColor(255, 255, 140, 255),
|
||||
JUtility::TColor(230, 170, 0, 255));
|
||||
#if TARGET_PC
|
||||
// Apply custom lantern glow if necessary
|
||||
const auto& lanternColorStr = dusk::getSettings().cosmetics.lanternGlowColor.getValue();
|
||||
auto lv = &daAlink_getAlinkActorClass()->mpHIO->mItem.mLantern.m;
|
||||
auto hlv = &daAlink_getAlinkActorClass()->mpHIO->mItem.mLanternPL.m;
|
||||
if (dusk::cosmetics::is_valid_hex_color_str(lanternColorStr)) {
|
||||
auto color = dusk::cosmetics::hex_color_str_to_gx_color(lanternColorStr);
|
||||
mpMagicMeter->setBlackWhite(JUtility::TColor(color.r, color.g, color.b, 255),
|
||||
JUtility::TColor(color.r, color.g, color.b, 255));
|
||||
} else if (lanternColorStr == "Rainbow") {
|
||||
GXColor color = dusk::cosmetics::get_rainbow_rgb(127.5f);
|
||||
lv->mColorReg1R = color.r / 2;
|
||||
lv->mColorReg1G = color.g / 2;
|
||||
lv->mColorReg1B = color.b / 2;
|
||||
lv->mColorReg2R = color.r / 2;
|
||||
lv->mColorReg2G = color.g / 2;
|
||||
lv->mColorReg2B = color.b / 2;
|
||||
hlv->mColorR = color.r / 2;
|
||||
hlv->mColorG = color.g / 2;
|
||||
hlv->mColorB = color.b / 2;
|
||||
|
||||
mpMagicMeter->setBlackWhite(JUtility::TColor(color.r/2, color.g/2, color.b/2, 255),
|
||||
JUtility::TColor(color.r/2, color.g/2, color.b/2, 255));
|
||||
} else {
|
||||
// Set back original colors if no valid cosmetic choice
|
||||
*lv = daAlink_getAlinkActorClass()->mpHIO->mItem.mLantern.original;
|
||||
*hlv = daAlink_getAlinkActorClass()->mpHIO->mItem.mLanternPL.original;
|
||||
#endif
|
||||
mpMagicMeter->setBlackWhite(JUtility::TColor(255, 255, 140, 255),
|
||||
JUtility::TColor(230, 170, 0, 255));
|
||||
#if TARGET_PC
|
||||
}
|
||||
#endif
|
||||
setAlphaKanteraChange(true);
|
||||
} else if (i_meterType == 2) {
|
||||
f32 oxygen_percent = (f32)dComIfGp_getOxygen() / (f32)dComIfGp_getMaxOxygen();
|
||||
|
||||
Reference in New Issue
Block a user