Files
tww/src/d/d_kankyo_wether.cpp
T
Jasper St. Pierre 5e06ae88f2 d_kankyo_rain work
2024-01-14 12:47:23 -08:00

1399 lines
44 KiB
C++

//
// Generated by dtk
// Translation Unit: d_kankyo_wether.cpp
//
#include "d/d_kankyo_wether.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "d/d_com_inf_game.h"
#include "d/d_kankyo.h"
#include "d/d_kankyo_rain.h"
#include "f_op/f_op_camera_mng.h"
#include "m_Do/m_Do_audio.h"
/* 80086F74-80086FC4 .text dKyw_setDrawPacketList__FP9J3DPacketi */
J3DPacket* dKyw_setDrawPacketList(J3DPacket* i_packet, int) {
if (i_packet == NULL) {
return NULL;
} else {
dComIfGd_getListFilter()->entryImm(i_packet, 0);
return i_packet;
}
}
/* 80086FC4-80087054 .text dKyw_setDrawPacketListSky__FP9J3DPacketi */
J3DPacket* dKyw_setDrawPacketListSky(J3DPacket* i_packet, int i_type) {
if (i_packet == NULL) {
return NULL;
} else {
dComIfGd_setListSky();
j3dSys.getDrawBuffer(i_type)->entryImm(i_packet, 0);
dComIfGd_setList();
return i_packet;
}
}
/* 80087054-800870DC .text dKyw_setDrawPacketListXluBg__FP9J3DPacketi */
J3DPacket* dKyw_setDrawPacketListXluBg(J3DPacket* i_packet, int i_type) {
if (i_packet == NULL) {
return NULL;
} else {
dComIfGd_setXluListBG();
j3dSys.getDrawBuffer(i_type)->entryImm(i_packet, 0);
dComIfGd_setList();
return i_packet;
}
}
/* 800870DC-80087130 .text dKyw_setDrawPacketListXluZPos__FP9J3DPacketP4cXyz */
J3DPacket* dKyw_setDrawPacketListXluZPos(J3DPacket* i_packet, cXyz* param_1) {
if (i_packet == NULL) {
return NULL;
} else {
dComIfGd_entryZSortXluList(i_packet, *param_1);
return i_packet;
}
}
/* 80087130-80087168 .text draw__18dKankyo_sun_PacketFv */
void dKankyo_sun_Packet::draw() {
dKyr_drawSun(j3dSys.getViewMtx(), mPos, mColor, mpTextureData);
}
/* 80087168-800871A0 .text draw__22dKankyo_sunlenz_PacketFv */
void dKankyo_sunlenz_Packet::draw() {
dKyr_drawLenzflare(j3dSys.getViewMtx(), mPositions, mColorTmp, &mpTexSnow01);
}
/* 800871A0-800871DC .text __dt__8RAIN_EFFFv */
RAIN_EFF::~RAIN_EFF() {}
/* 800871DC-800871E0 .text __ct__8RAIN_EFFFv */
RAIN_EFF::RAIN_EFF() {}
/* 800871E0-80087228 .text draw__19dKankyo_rain_PacketFv */
void dKankyo_rain_Packet::draw() {
dKyr_drawSibuki(j3dSys.getViewMtx(), &mpTxSnow01);
dKyr_drawRain(j3dSys.getViewMtx(), &mpTxSnow01);
}
/* 80087228-80087264 .text __dt__8SNOW_EFFFv */
SNOW_EFF::~SNOW_EFF() {}
/* 80087264-80087268 .text __ct__8SNOW_EFFFv */
SNOW_EFF::SNOW_EFF() {}
/* 80087268-80087298 .text draw__19dKankyo_snow_PacketFv */
void dKankyo_snow_Packet::draw() {
dKyr_drawSnow(j3dSys.getViewMtx(), &mpTexture);
}
/* 80087298-800872D4 .text __dt__8STAR_EFFFv */
STAR_EFF::~STAR_EFF() {}
/* 800872D4-800872D8 .text __ct__8STAR_EFFFv */
STAR_EFF::STAR_EFF() {}
/* 800872D8-80087308 .text draw__19dKankyo_star_PacketFv */
void dKankyo_star_Packet::draw() {
dKyr_drawStar(j3dSys.getViewMtx(), &mpTexture);
}
/* 80087308-80087344 .text __dt__10POISON_EFFFv */
POISON_EFF::~POISON_EFF() {}
/* 80087344-80087348 .text __ct__10POISON_EFFFv */
POISON_EFF::POISON_EFF() {}
/* 80087348-8008737C .text draw__21dKankyo_poison_PacketFv */
void dKankyo_poison_Packet::draw() {
drawPoison(j3dSys.getViewMtx(), &mpTexture);
}
/* 8008737C-800873B8 .text __dt__9CLOUD_EFFFv */
CLOUD_EFF::~CLOUD_EFF() {}
/* 800873B8-800873BC .text __ct__9CLOUD_EFFFv */
CLOUD_EFF::CLOUD_EFF() {}
/* 800873BC-800873EC .text draw__20dKankyo_cloud_PacketFv */
void dKankyo_cloud_Packet::draw() {
drawCloudShadow(j3dSys.getViewMtx(), &mpTexture);
}
/* 800873EC-80087428 .text __dt__9HOUSI_EFFFv */
HOUSI_EFF::~HOUSI_EFF() {}
/* 80087428-8008742C .text __ct__9HOUSI_EFFFv */
HOUSI_EFF::HOUSI_EFF() {}
/* 8008742C-8008745C .text draw__20dKankyo_housi_PacketFv */
void dKankyo_housi_Packet::draw() {
dKyr_drawHousi(j3dSys.getViewMtx(), &mpTex);
}
/* 8008745C-80087498 .text __dt__10VRKUMO_EFFFv */
VRKUMO_EFF::~VRKUMO_EFF() {}
/* 80087498-8008749C .text __ct__10VRKUMO_EFFFv */
VRKUMO_EFF::VRKUMO_EFF() {}
/* 8008749C-800874D0 .text draw__21dKankyo_vrkumo_PacketFv */
void dKankyo_vrkumo_Packet::draw() {
drawVrkumo(j3dSys.getViewMtx(), mColorTmp, &mpCloudTx1);
}
/* 800874D0-8008750C .text __dt__8WAVE_EFFFv */
WAVE_EFF::~WAVE_EFF() {}
/* 8008750C-80087510 .text __ct__8WAVE_EFFFv */
WAVE_EFF::WAVE_EFF() {}
/* 80087510-80087540 .text draw__19dKankyo_wave_PacketFv */
void dKankyo_wave_Packet::draw() {
drawWave(j3dSys.getViewMtx(), &mpTexUsonami);
}
/* 80087540-80087570 .text dKyw_drawSun__Fi */
void dKyw_drawSun(int i_type) {
dKyw_setDrawPacketListSky(g_env_light.mpSunPacket, i_type);
}
/* 80087570-80087594 .text dKyw_Sun_Draw__Fv */
void dKyw_Sun_Draw() {
dKyw_drawSun(1);
}
/* 80087594-800875D8 .text dKyw_drawSunlenz__Fi */
void dKyw_drawSunlenz(int i_type) {
if (!g_env_light.mpSunlenzPacket->mbDrawLenzInSky) {
dKyw_setDrawPacketList(g_env_light.mpSunlenzPacket, i_type);
} else {
dKyw_setDrawPacketListSky(g_env_light.mpSunlenzPacket, i_type);
}
}
/* 800875D8-800875FC .text dKyw_Sunlenz_Draw__Fv */
void dKyw_Sunlenz_Draw() {
dKyw_drawSunlenz(1);
}
/* 800875FC-8008762C .text dKyw_drawRain__Fi */
void dKyw_drawRain(int i_type) {
dKyw_setDrawPacketList(g_env_light.mpRainPacket, i_type);
}
/* 8008762C-80087650 .text dKyw_Rain_Draw__Fv */
void dKyw_Rain_Draw() {
dKyw_drawRain(1);
}
/* 80087650-80087680 .text dKyw_drawSnow__Fi */
void dKyw_drawSnow(int i_type) {
dKyw_setDrawPacketList(g_env_light.mpSnowPacket, i_type);
}
/* 80087680-800876A4 .text dKyw_Snow_Draw__Fv */
void dKyw_Snow_Draw() {
dKyw_drawSnow(1);
}
/* 800876A4-800876D4 .text dKyw_drawStar__Fi */
void dKyw_drawStar(int i_type) {
dKyw_setDrawPacketListSky(g_env_light.mpStarPacket, i_type);
}
/* 800876D4-800876F8 .text dKyw_Star_Draw__Fv */
void dKyw_Star_Draw() {
dKyw_drawStar(1);
}
/* 800876F8-8008772C .text dKyw_drawPoison__Fi */
void dKyw_drawPoison(int i_type) {
dKyw_setDrawPacketListXluZPos(g_env_light.mpPoisonPacket,
&g_env_light.mpPoisonPacket->field_0xbb9c);
}
/* 8008772C-80087750 .text dKyw_Poison_Draw__Fv */
void dKyw_Poison_Draw() {
dKyw_drawPoison(1);
}
/* 80087750-80087780 .text dKyw_drawHousi__Fi */
void dKyw_drawHousi(int i_type) {
dKyw_setDrawPacketList(g_env_light.mpHousiPacket, i_type);
}
/* 80087780-800877A4 .text dKyw_Housi_Draw__Fv */
void dKyw_Housi_Draw() {
dKyw_drawHousi(1);
}
/* 800877A4-800877D4 .text dKyw_drawCloud__Fi */
void dKyw_drawCloud(int i_type) {
dKyw_setDrawPacketList(g_env_light.mpMoyaPacket, i_type);
}
/* 800877D4-800877F8 .text dKyw_Cloud_Draw__Fv */
void dKyw_Cloud_Draw() {
dKyw_drawCloud(1);
}
/* 800877F8-80087828 .text dKyw_drawVrkumo__Fi */
void dKyw_drawVrkumo(int i_type) {
dKyw_setDrawPacketListSky(g_env_light.mpVrkumoPacket, i_type);
}
/* 80087828-8008784C .text dKyw_Vrkumo_Draw__Fv */
void dKyw_Vrkumo_Draw() {
dKyw_drawVrkumo(1);
}
/* 8008784C-8008787C .text dKyw_drawWave__Fi */
void dKyw_drawWave(int i_type) {
dKyw_setDrawPacketListXluBg(g_env_light.mpWavePacket, i_type);
}
/* 8008787C-800878A0 .text dKyw_Wave_Draw__Fv */
void dKyw_Wave_Draw() {
dKyw_drawWave(1);
}
/* 800878A0-8008792C .text dKyw_wether_init__Fv */
void dKyw_wether_init() {
g_env_light.mbSunInitialized = false;
g_env_light.mThunderEff.mStatus = 0;
g_env_light.mThunderEff.mMode = 0;
g_env_light.mbRainInitialized = false;
g_env_light.mRainCount = 0;
g_env_light.mbSnowInitialized = false;
g_env_light.mSnowCount = 0;
g_env_light.mbStarInitialized = false;
g_env_light.mStarCount = 0;
g_env_light.mStarCountTarget = 0.0f;
g_env_light.mMoyaInitialized = false;
g_env_light.mMoyaCount = 0;
g_env_light.mMoyaMode = 0;
g_env_light.mbHousiInitialized = false;
g_env_light.mHousiCount = 0;
g_env_light.mbPoisonInitialized = false;
g_env_light.mPoisonCount = 0;
g_env_light.mWind.mCustomWindPower = 0.0f;
g_env_light.mWaveInitialized = false;
g_env_light.field_0xa1c = 0;
g_env_light.mbWindlineInitialized = false;
g_env_light.mWindlineCount = 0;
dKyw_wind_init();
dKyw_pntwind_init();
}
/* 8008792C-80087944 .text dKyw_wether_init2__Fv */
void dKyw_wether_init2() {
g_env_light.mVrkumoStatus = 0;
g_env_light.mVrkumoCount = 0;
}
/* 80087944-80087C28 .text dKyw_wether_delete__Fv */
void dKyw_wether_delete() {
if (g_env_light.mbSunInitialized) {
delete g_env_light.mpSunPacket;
delete g_env_light.mpSunlenzPacket;
}
if (g_env_light.mbRainInitialized) {
delete g_env_light.mpRainPacket;
}
if (g_env_light.mbSnowInitialized) {
delete g_env_light.mpSnowPacket;
}
if (g_env_light.mbStarInitialized) {
delete g_env_light.mpStarPacket;
}
if (g_env_light.mbPoisonInitialized) {
delete g_env_light.mpPoisonPacket;
}
if (g_env_light.mbHousiInitialized) {
delete g_env_light.mpHousiPacket;
}
if (g_env_light.mMoyaInitialized) {
delete g_env_light.mpMoyaPacket;
}
if (g_env_light.mWaveInitialized) {
delete g_env_light.mpWavePacket;
}
if (g_env_light.mbWindlineInitialized) {
WINDEFF_SET* wind_p = g_env_light.mpWind;
for (int i = 0; i < 30; i++) {
if (wind_p->mWindEff[i].mpEmitter != NULL) {
wind_p->mWindEff[i].mpEmitter->deleteAllParticle();
wind_p->mWindEff[i].mpEmitter->becomeInvalidEmitter();
wind_p->mWindEff[i].mpEmitter = NULL;
}
}
for (int i = 0; i < 2; i++) {
if (wind_p->mKamomeEff[i].mpEmitter != NULL) {
wind_p->mKamomeEff[i].mpEmitter->deleteAllParticle();
wind_p->mKamomeEff[i].mpEmitter->becomeInvalidEmitter();
wind_p->mKamomeEff[i].mpEmitter = NULL;
}
}
delete g_env_light.mpWind;
}
}
/* 80087C28-80087C64 .text __dt__8WIND_EFFFv */
WIND_EFF::~WIND_EFF() {}
/* 80087C64-80087CA0 .text __dt__10KAMOME_EFFFv */
KAMOME_EFF::~KAMOME_EFF() {}
/* 80087CA0-80087D24 .text __dt__19dKankyo_wave_PacketFv */
dKankyo_wave_Packet::~dKankyo_wave_Packet() {}
/* 80087D24-80087DA8 .text __dt__20dKankyo_cloud_PacketFv */
dKankyo_cloud_Packet::~dKankyo_cloud_Packet() {}
/* 80087DA8-80087E2C .text __dt__20dKankyo_housi_PacketFv */
dKankyo_housi_Packet::~dKankyo_housi_Packet() {}
/* 80087E2C-80087EB0 .text __dt__21dKankyo_poison_PacketFv */
dKankyo_poison_Packet::~dKankyo_poison_Packet() {}
/* 80087EB0-80087F34 .text __dt__19dKankyo_star_PacketFv */
dKankyo_star_Packet::~dKankyo_star_Packet() {}
/* 80087F34-80087FB8 .text __dt__19dKankyo_snow_PacketFv */
dKankyo_snow_Packet::~dKankyo_snow_Packet() {}
/* 80087FB8-8008803C .text __dt__19dKankyo_rain_PacketFv */
dKankyo_rain_Packet::~dKankyo_rain_Packet() {}
/* 8008803C-800880C0 .text __dt__22dKankyo_sunlenz_PacketFv */
dKankyo_sunlenz_Packet::~dKankyo_sunlenz_Packet() {}
/* 800880C0-80088144 .text __dt__18dKankyo_sun_PacketFv */
dKankyo_sun_Packet::~dKankyo_sun_Packet() {}
/* 80088144-80088194 .text dKyw_wether_delete2__Fv */
void dKyw_wether_delete2() {
if (g_env_light.mVrkumoStatus != 0) {
delete g_env_light.mpVrkumoPacket;
}
}
/* 80088194-80088218 .text __dt__21dKankyo_vrkumo_PacketFv */
dKankyo_vrkumo_Packet::~dKankyo_vrkumo_Packet() {}
/* 80088218-800883D4 .text wether_move_windline__Fv */
void wether_move_windline() {
dStage_FileList_dt_c* fili_p = NULL;
int roomNo = dComIfGp_roomControl_getStayNo();
if (roomNo >= 0) {
fili_p = dComIfGp_roomControl_getStatusRoomDt(roomNo)->getFileListInfo();
}
g_env_light.mWindlineCount = 0;
if (fili_p != NULL && dStage_FileList_dt_ChkPathWindEffect(fili_p) &&
strcmp(dComIfGp_getStartStageName(), "GTower") != 0)
{
g_env_light.mWindlineCount = dKyw_get_wind_pow() * 10.0f;
}
if (g_env_light.mWind.field_0x8.y < 10000000.0f) {
g_env_light.mWindlineCount = 0;
g_env_light.mWind.field_0x8.y = 10000000.0f;
}
switch (g_env_light.mbWindlineInitialized) {
case 0:
if (g_env_light.mWindlineCount != 0) {
g_env_light.mpWind = new (0x20) WINDEFF_SET();
if (g_env_light.mpWind == NULL) {
return;
}
for (int i = 0; i < 30; i++) {
g_env_light.mpWind->mWindEff[i].mState = 0;
g_env_light.mpWind->mWindEff[i].mpEmitter = NULL;
}
dKyr_wind_init();
dKyr_wind_move();
g_env_light.mbWindlineInitialized = true;
}
break;
case 1:
dKyr_wind_move();
break;
}
}
/* 800883D4-800883D8 .text __ct__10KAMOME_EFFFv */
KAMOME_EFF::KAMOME_EFF() {}
/* 800883D8-800883DC .text __ct__8WIND_EFFFv */
WIND_EFF::WIND_EFF() {}
/* 800883DC-80088444 .text wether_move_thunder__Fv */
void wether_move_thunder() {
switch (g_env_light.mThunderEff.mStatus) {
case 0:
if (g_env_light.mThunderEff.mMode != 0) {
dKyr_thunder_init();
g_env_light.mThunderEff.mStatus = true;
}
break;
case 1:
dKyr_thunder_move();
break;
}
}
/* 80088444-80088468 .text dKyw_wether_move__Fv */
void dKyw_wether_move() {
wether_move_thunder();
wether_move_windline();
}
/* 80088468-8008878C .text wether_move_sun__Fv */
void wether_move_sun() {
if (dComIfGp_checkStatus(1) && !g_env_light.mbVrboxInvisible) {
switch (g_env_light.mbSunInitialized) {
case 0:
g_env_light.mpSunPacket = new (0x20) dKankyo_sun_Packet();
g_env_light.mpSunlenzPacket = new (0x20) dKankyo_sunlenz_Packet();
if (g_env_light.mpSunPacket != NULL && g_env_light.mpSunlenzPacket != NULL) {
g_env_light.mpSunPacket->mpTextureData[0] =
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_TUKI_AS);
g_env_light.mpSunPacket->mpTextureData[1] =
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_TUKI_BS);
g_env_light.mpSunPacket->mpTextureData[2] =
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_TUKI_CS);
g_env_light.mpSunPacket->mpTextureData[3] =
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_TUKI_DS);
g_env_light.mpSunPacket->mpTextureData[4] =
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_TAIYO);
g_env_light.mpSunPacket->field_0x3c = 0;
g_env_light.mpSunPacket->field_0x3d = 0;
g_env_light.mpSunPacket->mVisibility = 0.0f;
g_env_light.mpSunPacket->mSunAlpha = 0.0f;
g_env_light.mpSunPacket->mMoonAlpha = 0.0f;
g_env_light.mpSunPacket->mVizChkData[0] = 0;
g_env_light.mpSunPacket->mVizChkData[1] = 0;
g_env_light.mpSunPacket->mVizChkData[2] = 0;
g_env_light.mpSunPacket->mVizChkData[3] = 0;
g_env_light.mpSunlenzPacket->mpTexSnow01 =
(u8*)dComIfG_getObjectRes("Always", ALWAYS_I8_TX_SNOW01);
g_env_light.mpSunlenzPacket->mpTexLensHalf =
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_LENS_32HALF);
g_env_light.mpSunlenzPacket->mpTexRingHalf =
(u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_RING_A_32HAFE);
g_env_light.mpSunlenzPacket->field_0x88 = 1000000000.0f;
g_env_light.mpSunlenzPacket->field_0x8c = 0.0f;
g_env_light.mpSunlenzPacket->mDistFalloff = 0.0f;
g_env_light.mpSunlenzPacket->mbDrawLenzInSky = false;
dKyr_sun_move();
dKyr_lenzflare_move();
g_env_light.mbSunInitialized = true;
}
break;
case 1:
dKyr_sun_move();
dKyr_lenzflare_move();
break;
}
}
}
/* 8008878C-80088978 .text wether_move_rain__Fv */
void wether_move_rain() {
switch (g_env_light.mbRainInitialized) {
case 0:
if (g_env_light.mRainCount != 0) {
g_env_light.mpRainPacket = new (0x20) dKankyo_rain_Packet();
if (g_env_light.mpRainPacket == NULL) {
return;
}
dKyr_rain_init();
dKyr_rain_move();
g_env_light.mbRainInitialized = true;
if (g_env_light.mRainCount != 250) {
mDoAud_seStart(JA_SE_ATM_RAIN_START);
}
}
break;
case 1:
dKyr_rain_move();
if (g_env_light.mSnowCount == 0) {
if (g_env_light.mRainCount < 125.0f) {
mDoAud_rainPlay(0);
} else {
mDoAud_rainPlay(1);
}
}
if (g_env_light.mRainCount == 0) {
g_env_light.mbRainInitialized = false;
mDoAud_seStart(JA_SE_ATM_RAIN_END);
delete g_env_light.mpRainPacket;
}
break;
}
}
/* 80088978-80088A50 .text wether_move_snow__Fv */
void wether_move_snow() {
switch (g_env_light.mbSnowInitialized) {
case 0:
if (g_env_light.mSnowCount != 0) {
dKyr_snow_init();
if (g_env_light.mpSnowPacket == NULL) {
return;
}
if (strcmp(dComIfGp_getStartStageName(), "Adanmae") != 0) {
dKyr_snow_move();
} else {
dKyr_kazanbai_move();
}
g_env_light.mbSnowInitialized = true;
}
break;
case 1:
if (strcmp(dComIfGp_getStartStageName(), "Adanmae") != 0) {
dKyr_snow_move();
} else {
dKyr_kazanbai_move();
}
break;
}
}
/* 80088A50-80088D08 .text wether_move_star__Fv */
void wether_move_star() {
if (dComIfGp_checkStatus(1) && (!g_env_light.mbVrboxInvisible &&
strcmp(dComIfGp_getStartStageName(), "M_DragB") != 0) ||
strcmp(dComIfGp_getStartStageName(), "Name") == 0)
{
f32 time = g_env_light.getDaytime();
f32 target;
if (strcmp(dComIfGp_getStartStageName(), "Name") == 0) {
if (time >= 315.0f || time < 60.0f) {
target = 1.0f;
} else if (time > 270.0f) {
target = 1.0f - (315.0f - time) * (1 / 45.0f);
} else if (time < 75.0f) {
target = (75.0f - time) * (1 / 15.0f);
} else {
target = 0.0f;
}
} else if (time >= 330.0f || time < 90.0f) {
target = 1.0f;
} else if (time > 300.0f) {
target = 1.0f - (330.0f - time) * (1 / 30.0f);
} else if (time < 105.0f) {
target = (105.0f - time) * (1 / 15.0f);
} else {
target = 0.0f;
}
if (g_env_light.mColpatWeather != 0) {
target = 0.0f;
}
if (g_env_light.mColpatCurr != 0 && g_env_light.mColPatBlend > 0.5f) {
target = 0.0f;
}
cLib_addCalc(&g_env_light.mStarCountTarget, target, 0.1f, 0.01f, 0.000001f);
g_env_light.mStarCount = (s16)(g_env_light.mStarCountTarget * 1000.0f);
switch (g_env_light.mbStarInitialized) {
case 0:
if (g_env_light.mStarCount != 0) {
dKyr_star_init();
if (g_env_light.mpStarPacket == NULL) {
return;
}
dKyr_star_move();
g_env_light.mbStarInitialized = true;
}
break;
case 1:
dKyr_star_move();
if (g_env_light.mStarCount == 0) {
g_env_light.mbStarInitialized = false;
delete g_env_light.mpStarPacket;
}
break;
}
}
}
/* 80088D08-80088DA4 .text wether_move_poison__Fv */
void wether_move_poison() {
if (strcmp(dComIfGp_getStartStageName(), "M_Dai") == 0) {
g_env_light.mPoisonCount = 500;
}
switch (g_env_light.mbPoisonInitialized) {
case 0:
if (g_env_light.mPoisonCount != 0) {
poison_init();
g_env_light.mbPoisonInitialized = true;
}
break;
case 1:
poison_move();
break;
}
}
/* 80088DA4-80088F3C .text wether_move_housi__Fv */
void wether_move_housi() {
switch (g_env_light.mbHousiInitialized) {
case 0:
if (g_env_light.mHousiCount != 0) {
g_env_light.mpHousiPacket = new (0x20) dKankyo_housi_Packet();
if (g_env_light.mpHousiPacket == NULL) {
return;
}
g_env_light.mpHousiPacket->mpTex = (u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_AK_HOUSHI00);
g_env_light.mpHousiPacket->field_0x5ddc = 0.0f;
for (int i = 0; i < 300; i++) {
g_env_light.mpHousiPacket->mEff[i].mState = 0;
}
dKyr_housi_move();
g_env_light.mbHousiInitialized = true;
}
break;
case 1:
if (g_env_light.mHousiCount == 0 && g_env_light.mpHousiPacket->field_0x5ddc <= 0.0f) {
g_env_light.mbHousiInitialized = false;
delete g_env_light.mpHousiPacket;
} else {
dKyr_housi_move();
g_env_light.mHousiCount = 0;
}
break;
}
}
/* 80088F3C-800891A8 .text wether_move_moya__Fv */
void wether_move_moya() {
switch (g_env_light.mMoyaInitialized) {
case 0:
if (g_env_light.mMoyaCount != 0) {
g_env_light.mpMoyaPacket = new (0x20) dKankyo_cloud_Packet();
if (g_env_light.mpMoyaPacket == NULL) {
return;
}
g_env_light.mpMoyaPacket->mpTexture = (u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_MOYA_B_64);
for (int i = 0; i < 100; i++) {
g_env_light.mpMoyaPacket->mEff[i].mStatus = 0;
}
g_env_light.mpMoyaPacket->mCount = 0;
cloud_shadow_move();
g_env_light.mMoyaInitialized++;
}
break;
case 1:
if (g_env_light.mMoyaMode == 0 && dKyw_get_wind_pow() > 0.2f && g_env_light.mMoyaCount != 0)
{
if (strcmp(dComIfGp_getStartStageName(), "M_NewD2") == 0) {
if (g_env_light.mbVrboxInvisible) {
g_env_light.mMoyaSE = JA_SE_ATM_WIND_HOT;
} else {
g_env_light.mMoyaSE = JA_SE_ATM_WIND_1;
}
}
} else if (g_env_light.mMoyaMode == 1) {
g_env_light.mMoyaSE = JA_SE_ATM_WIND_HOT;
} else if (g_env_light.mMoyaMode == 2 &&
strcmp(dComIfGp_getStartStageName(), "A_mori") == 0)
{
g_env_light.mMoyaSE = JA_SE_ATM_WIND_GRASS;
}
cloud_shadow_move();
if (g_env_light.mMoyaCount == 0 && g_env_light.mpMoyaPacket->mCount == 0) {
g_env_light.mMoyaInitialized = false;
delete g_env_light.mpMoyaPacket;
}
break;
}
}
/* 800891A8-80089698 .text wether_move_vrkumo__Fv */
void wether_move_vrkumo() {
camera_process_class* camera_p = dComIfGp_getCamera(0);
static cXyz r09o(-180000.0f, 750.0f, -200000.0f);
if (strcmp(dComIfGp_getStartStageName(), "Name") != 0) {
if (dComIfGp_checkStatus(1) && !g_env_light.mbVrboxInvisible) {
g_env_light.mVrkumoCount = 50;
if ((g_env_light.mColpatCurr == 1 && g_env_light.mColPatBlend > 0.0f) ||
(g_env_light.mColpatPrev == 1 && g_env_light.mColPatBlend < 1.0f) ||
(g_env_light.mColpatCurr == 2 && g_env_light.mColPatBlend > 0.0f) ||
(g_env_light.mColpatPrev == 2 && g_env_light.mColPatBlend < 1.0f))
{
cLib_addCalc(&g_env_light.mVrkumoStrength, 1.0f, 0.1f, 0.003f, 0.0000001f);
} else {
cLib_addCalc(&g_env_light.mVrkumoStrength, 0.0f, 0.08f, 0.002f, 0.00000001f);
}
if (strcmp(dComIfGp_getStartStageName(), "sea") == 0 &&
dComIfGp_roomControl_getStayNo() == 9)
{
if (camera_p->mLookat.mEye.abs(r09o) < 2500.0f) {
g_env_light.mVrkumoStrength = 1.0f;
}
}
g_env_light.mVrkumoCount = (s16)(g_env_light.mVrkumoStrength * 50.0f + 50.0f);
if (strcmp(dComIfGp_getStartStageName(), "GTower") == 0) {
g_env_light.mVrkumoCount = 0;
}
} else {
g_env_light.mVrkumoCount = 0;
}
} else {
g_env_light.mVrkumoCount = 70;
}
switch (g_env_light.mVrkumoStatus) {
case 0:
if (g_env_light.mVrkumoCount != 0) {
g_env_light.mpVrkumoPacket = new (0x20) dKankyo_vrkumo_Packet();
if (g_env_light.mpVrkumoPacket == NULL) {
return;
}
if (dComIfG_getStageRes("Stage", "vr_box.bmd") != NULL ||
dComIfG_getStageRes("Stage", "vr_box.bdl"))
{
g_env_light.mpVrkumoPacket->mpCloudTx1 =
(u8*)dComIfG_getStageRes("Stage", "cloud_01.bti");
g_env_light.mpVrkumoPacket->mpCloudTx2 =
(u8*)dComIfG_getStageRes("Stage", "cloud_02.bti");
g_env_light.mpVrkumoPacket->mpCloudTx3 =
(u8*)dComIfG_getStageRes("Stage", "cloud_03.bti");
} else {
g_env_light.mpVrkumoPacket->mpCloudTx1 =
(u8*)dComIfG_getStageRes("Stage", "cloudtx_01.bti");
g_env_light.mpVrkumoPacket->mpCloudTx2 =
(u8*)dComIfG_getStageRes("Stage", "cloudtx_02.bti");
g_env_light.mpVrkumoPacket->mpCloudTx3 =
(u8*)dComIfG_getStageRes("Stage", "cloudtx_03.bti");
}
if (g_env_light.mpVrkumoPacket->mpCloudTx1 == NULL) {
g_env_light.mVrkumoStatus = 99;
}
for (int i = 0; i < 100; i++) {
g_env_light.mpVrkumoPacket->mInst[i].mStatus = 0;
}
vrkumo_move();
g_env_light.mVrkumoStatus++;
}
break;
case 1:
vrkumo_move();
break;
}
}
/* 80089698-8008982C .text wether_move_wave__Fv */
void wether_move_wave() {
switch (g_env_light.mWaveInitialized) {
case 0:
if (g_env_light.mWaveChan.mWaveCount != 0) {
g_env_light.mpWavePacket = new (0x20) dKankyo_wave_Packet();
if (g_env_light.mpWavePacket == NULL) {
return;
}
g_env_light.mpWavePacket->mpTexUsonami = (u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_USONAMI_256_64MIP);
g_env_light.mpWavePacket->mpTexUsonamiM = (u8*)dComIfG_getObjectRes("Always", ALWAYS_BTI_TXA_USONAMI_M_256_64MIP);
for (int i = 0; i < 300; i++) {
g_env_light.mpWavePacket->mEff[i].mStatus = 0;
}
wave_move();
g_env_light.mWaveInitialized = true;
}
break;
case 1:
if (g_env_light.mWaveChan.mWaveCount == 0) {
g_env_light.mWaveInitialized = false;
delete g_env_light.mpWavePacket;
}
wave_move();
break;
}
}
/* 8008982C-800898E0 .text dKyw_wether_move_draw__Fv */
void dKyw_wether_move_draw() {
g_env_light.mMoyaSE = 0;
if (strcmp(dComIfGp_getStartStageName(), "Name") != 0) {
wether_move_sun();
wether_move_rain();
wether_move_snow();
}
wether_move_star();
if (strcmp(dComIfGp_getStartStageName(), "Name") != 0) {
wether_move_poison();
wether_move_housi();
wether_move_moya();
}
if (strcmp(dComIfGp_getStartStageName(), "Name") != 0) {
wether_move_wave();
}
}
/* 800898E0-80089900 .text dKyw_wether_move_draw2__Fv */
void dKyw_wether_move_draw2() {
wether_move_vrkumo();
}
/* 80089900-80089A48 .text dKyw_wether_draw__Fv */
void dKyw_wether_draw() {
if (strcmp(dComIfGp_getStartStageName(), "Name") != 0) {
if (g_env_light.mbPoisonInitialized) {
dKyw_Poison_Draw();
}
if (g_env_light.mWaveInitialized) {
dKyw_Wave_Draw();
}
if (g_env_light.mMoyaInitialized) {
dKyw_Cloud_Draw();
}
}
if (strcmp(dComIfGp_getStartStageName(), "Name") != 0 && g_env_light.mbSunInitialized) {
dKyw_Sun_Draw();
dKyw_Sunlenz_Draw();
}
if (g_env_light.mbStarInitialized) {
dKyw_Star_Draw();
}
if (strcmp(dComIfGp_getStartStageName(), "Name") != 0) {
if (g_env_light.mbRainInitialized) {
dKyw_Rain_Draw();
}
if (g_env_light.mbSnowInitialized) {
dKyw_Snow_Draw();
}
if (g_env_light.mbHousiInitialized) {
dKyw_Housi_Draw();
}
}
}
/* 80089A48-80089A84 .text dKyw_wether_draw2__Fv */
void dKyw_wether_draw2() {
if (g_env_light.mVrkumoStatus != 0 && g_env_light.mVrkumoStatus < 99) {
dKyw_Vrkumo_Draw();
}
}
/* 80089A84-80089AA4 .text dKyw_wether_proc__Fv */
void dKyw_wether_proc() {
squal_proc();
}
/* 80089AA4-80089B48 .text dKyw_wind_init__Fv */
void dKyw_wind_init() {
g_env_light.mWind.mWindVec.x = -1.0f;
g_env_light.mWind.mWindVec.y = 0.0f;
g_env_light.mWind.mWindVec.z = 0.0f;
g_env_light.mWind.mWindPower = 0.0f;
if (dComIfGs_getWindX() == -1 && dComIfGs_getWindY() == -1) {
g_env_light.mWind.mTactWindAngleFlags = 0;
g_env_light.mWind.mTactWindAngleX = 0;
g_env_light.mWind.mTactWindAngleY = 0;
} else {
g_env_light.mWind.mTactWindAngleFlags = 1;
g_env_light.mWind.mTactWindAngleX = dComIfGs_getWindX();
g_env_light.mWind.mTactWindAngleY = dComIfGs_getWindY();
}
g_env_light.mWind.mpWindVecOverride = NULL;
g_env_light.mWind.mWindStrengthOverride = 0.0f;
g_env_light.mWind.mEvtWindSet = 0;
g_env_light.mWind.field_0x8.x = 10000000.0f;
g_env_light.mWind.field_0x8.y = 10000000.0f;
g_env_light.mWind.field_0x8.z = 10000000.0f;
}
/* 80089B48-80089E50 .text dKyw_wind_set__Fv */
void dKyw_wind_set() {
cXyz wind_vec;
f32 strength;
if (g_env_light.mWind.mpWindVecOverride != NULL) {
wind_vec = *g_env_light.mWind.mpWindVecOverride;
strength = g_env_light.mWind.mWindStrengthOverride;
cM_atan2s(wind_vec.x, wind_vec.z);
cM_atan2s(wind_vec.absXZ(), wind_vec.y);
} else {
dStage_FileList_dt_c* fili_p = NULL;
int wind_level = 0;
s32 roomNo = dComIfGp_roomControl_getStayNo();
if (roomNo >= 0) {
fili_p = dComIfGp_roomControl_getStatusRoomDt(roomNo)->getFileListInfo();
}
s16 tact_wind_x;
s16 tact_wind_y;
if (g_env_light.mWind.mEvtWindSet != 0 && g_env_light.mWind.mEvtWindSet != 0xFF) {
tact_wind_x = g_env_light.mWind.mEvtWindAngleX;
tact_wind_y = g_env_light.mWind.mEvtWindAngleY;
} else if (g_env_light.mWind.mTactWindAngleFlags != 0) {
tact_wind_x = g_env_light.mWind.mTactWindAngleX;
tact_wind_y = g_env_light.mWind.mTactWindAngleY;
} else {
tact_wind_x = 0;
tact_wind_y = 0;
}
wind_vec.x = cM_scos(tact_wind_x) * cM_scos(tact_wind_y);
wind_vec.y = cM_ssin(tact_wind_x);
wind_vec.z = cM_scos(tact_wind_x) * cM_ssin(tact_wind_y);
if (fili_p != NULL) {
wind_level = dStage_FileList_dt_GlobalWindLevel(fili_p);
}
switch (wind_level) {
case 0:
strength = 0.3f;
break;
case 1:
strength = 0.6f;
break;
case 2:
strength = 0.9f;
break;
default:
strength = 0.0f;
break;
}
}
if (g_env_light.mWind.mCustomWindPower > 0.0f) {
strength = g_env_light.mWind.mCustomWindPower;
g_env_light.mWind.mWindPower = g_env_light.mWind.mCustomWindPower;
}
if (g_env_light.mWind.mEvtWindSet == 2) {
strength = 0.0f;
}
if (strength > 1.0f) {
strength = 1.0f;
}
if (g_env_light.mInitAnimTimer != 0) {
g_env_light.mWind.mWindVec = wind_vec;
g_env_light.mWind.mWindPower = strength;
} else {
cLib_addCalc(&g_env_light.mWind.mWindVec.x, wind_vec.x, 0.1f, 2.0f, 0.001f);
cLib_addCalc(&g_env_light.mWind.mWindVec.y, wind_vec.y, 0.1f, 2.0f, 0.001f);
cLib_addCalc(&g_env_light.mWind.mWindVec.z, wind_vec.z, 0.1f, 2.0f, 0.001f);
cLib_addCalc(&g_env_light.mWind.mWindPower, strength, 0.1f, 1.0f, 0.005f);
}
}
/* 80089E50-80089E60 .text dKyw_get_wind_vec__Fv */
cXyz* dKyw_get_wind_vec() {
return &g_env_light.mWind.mWindVec;
}
/* 80089E60-80089E70 .text dKyw_get_wind_pow__Fv */
f32 dKyw_get_wind_pow() {
return g_env_light.mWind.mWindPower;
}
/* 80089E70-80089E80 .text dKyw_get_wind_power__Fv */
f32* dKyw_get_wind_power() {
return &g_env_light.mWind.mWindPower;
}
/* 80089E80-80089EE4 .text dKyw_get_wind_vecpow__Fv */
cXyz dKyw_get_wind_vecpow() {
cXyz vecpow = g_env_light.mWind.mWindVec * g_env_light.mWind.mWindPower;
return vecpow;
}
/* 80089EE4-80089FDC .text dKyw_squal_set__FP4cXyzssfffff */
void dKyw_squal_set(cXyz* i_pos, s16 i_x, s16 i_y, f32 i_radius, f32 i_minRadius, f32 i_strength,
f32 i_speed, f32 i_maxStrength) {
dScnKy_env_light_c& env_light = dKy_getEnvlight();
for (int i = 0; i < 5; i++) {
if (!env_light.mWindInfluenceEntity[i].mbInUse) {
env_light.mWindInfluenceEntity[i].mbInUse = true;
env_light.mWindInfluenceEntity[i].mMinRadius = i_minRadius;
env_light.mWindInfluenceEntity[i].mSpeed = i_speed;
env_light.mWindInfluenceEntity[i].mStrengthMaxVel = i_maxStrength;
WIND_INFLUENCE* influence = &env_light.mWindInfluenceEntity[i].mInfluence;
influence->mPos = *i_pos;
influence->mDir.x = cM_scos(i_x) * cM_ssin(i_y);
influence->mDir.y = cM_ssin(i_x);
influence->mDir.z = cM_scos(i_x) * cM_scos(i_y);
influence->mRadius = i_radius;
influence->field_0x20 = influence->mRadius;
influence->mStrength = i_strength;
dKyw_pntwind_set(influence);
return;
}
}
}
/* 80089FDC-8008A0F0 .text squal_proc__Fv */
void squal_proc() {
dScnKy_env_light_c& env_light = dKy_getEnvlight();
WIND_INFLUENCE* influence;
for (int i = 0; i < 5; i++) {
influence = &env_light.mWindInfluenceEntity[i].mInfluence;
switch (env_light.mWindInfluenceEntity[i].mbInUse) {
case 0:
break;
case 1:
influence->mPos.x += influence->mDir.x * env_light.mWindInfluenceEntity[i].mSpeed;
influence->mPos.y += influence->mDir.y * env_light.mWindInfluenceEntity[i].mSpeed;
influence->mPos.z += influence->mDir.z * env_light.mWindInfluenceEntity[i].mSpeed;
cLib_addCalc(&influence->mStrength, 0.0f, 0.2f,
env_light.mWindInfluenceEntity[i].mStrengthMaxVel, 0.001f);
f32 speed = 1.0f - influence->mStrength;
f32 target = env_light.mWindInfluenceEntity[i].mMinRadius;
cLib_addCalc(&influence->mRadius, target, speed, speed * target * 0.05f, 0.01f);
if (influence->mStrength < 0.01f) {
dKyw_pntwind_cut(influence);
env_light.mWindInfluenceEntity[i].mbInUse = false;
}
break;
}
}
}
/* 8008A0F0-8008A144 .text dKyw_pntwind_init__Fv */
void dKyw_pntwind_init() {
for (int i = 0; i < 30; i++) {
g_env_light.mpWindInfluence[i] = NULL;
}
for (int i = 0; i < 5; i++) {
g_env_light.mWindInfluenceEntity[i].mbInUse = false;
}
}
/* 8008A144-8008A1A8 .text pntwind_set__FP14WIND_INFLUENCE */
void pntwind_set(WIND_INFLUENCE* i_influence) {
int i = 0;
for (; i < ARRAY_SIZE(g_env_light.mpWindInfluence); i++) {
if (g_env_light.mpWindInfluence[i] == NULL) {
g_env_light.mpWindInfluence[i] = i_influence;
g_env_light.mpWindInfluence[i]->mRegistIdx = i;
break;
}
}
if (i >= 30) {
i_influence->mRegistIdx = 9999;
}
}
/* 8008A1A8-8008A1D0 .text dKyw_pntwind_set__FP14WIND_INFLUENCE */
void dKyw_pntwind_set(WIND_INFLUENCE* i_influence) {
i_influence->mbConstant = 0;
pntwind_set(i_influence);
}
/* 8008A1D0-8008A1F8 .text dKyw_pwind_cylinder_set__FP14WIND_INFLUENCE */
void dKyw_pwind_cylinder_set(WIND_INFLUENCE* i_influence) {
i_influence->mbConstant = 0;
pntwind_set(i_influence);
}
/* 8008A1F8-8008A230 .text dKyw_pntwind_cut__FP14WIND_INFLUENCE */
void dKyw_pntwind_cut(WIND_INFLUENCE* i_influence) {
if (i_influence != NULL) {
if (i_influence->mRegistIdx >= 0 && i_influence->mRegistIdx < 30) {
g_env_light.mpWindInfluence[i_influence->mRegistIdx] = NULL;
}
}
}
/* 8008A230-8008A4C8 .text dKyw_pntwind_get_info__FP4cXyzP4cXyzPf */
void dKyw_pntwind_get_info(cXyz* param_0, cXyz* i_dir, f32* i_power) {
i_dir->x = 0.0f;
i_dir->y = 0.0f;
i_dir->z = 0.0f;
*i_power = 0.0f;
WIND_INFLUENCE* influence;
s32 influence_count = ARRAY_SIZE(g_env_light.mpWindInfluence);
for (int i = 0; i < influence_count; i++) {
influence = g_env_light.mpWindInfluence[i];
if (influence != NULL) {
f32 dist = param_0->abs(influence->mPos);
if (influence->mbConstant == 0) {
if (dist < influence->mRadius && influence->mStrength > 0.0f && dist != 0.0f) {
f32 temp_f0;
if (influence->mRadius > 0.0f) {
f32 temp_f0_4 = (dist / influence->mRadius);
temp_f0 = 1.0f - (temp_f0_4 * temp_f0_4);
} else {
temp_f0 = 1.0f;
}
*i_power = influence->mStrength * temp_f0;
cXyz sp10;
sp10.x = influence->mPos.x + -(influence->mDir.x) * influence->mRadius;
sp10.y = influence->mPos.y + -(influence->mDir.y) * influence->mRadius;
sp10.z = influence->mPos.z + -(influence->mDir.z) * influence->mRadius;
dKyr_get_vectle_calc(&sp10, param_0, i_dir);
if (param_0->abs(sp10) < influence->mRadius) {
i_dir->x = 0.0f;
i_dir->y = 0.0f;
i_dir->z = 0.0f;
}
return;
}
} else {
if (dist < influence->mRadius && influence->mStrength > 0.0f && dist != 0.0f) {
f32 temp_f0;
if (influence->mRadius > 0.0f) {
temp_f0 = 1.0f - (dist / influence->mRadius);
} else {
temp_f0 = 1.0f;
}
i_dir->x = influence->mDir.x;
i_dir->y = influence->mDir.y;
i_dir->z = influence->mDir.z;
*i_power = influence->mStrength * temp_f0;
return;
}
}
}
}
}
/* 8008A4C8-8008A53C .text dKyw_pntwind_get_vecpow__FP4cXyz */
cXyz dKyw_pntwind_get_vecpow(cXyz* param_0) {
cXyz direction;
f32 power;
dKyw_pntwind_get_info(param_0, &direction, &power);
direction = direction * power;
return direction;
}
/* 8008A53C-8008A6F4 .text dKyw_get_AllWind_vec__FP4cXyzP4cXyzPf */
void dKyw_get_AllWind_vec(cXyz* param_0, cXyz* i_direction, f32* i_power) {
dScnKy_env_light_c& env_light = dKy_getEnvlight();
dKyw_pntwind_get_info(param_0, i_direction, i_power);
cXyz sp54;
cXyz sp30;
cXyz sp24;
sp30 = env_light.mWind.mWindVec * (env_light.mWind.mWindPower * (1.0f - *i_power));
sp24 = *i_direction * (*i_power * 5.0f);
sp54 = sp30 + sp24;
*i_power = sp54.abs();
sp54 = sp54.normZP();
if (sp54 != cXyz::Zero) {
i_direction->x = sp54.x;
i_direction->y = sp54.y;
i_direction->z = sp54.z;
} else {
i_direction->x = env_light.mWind.mWindVec.x;
i_direction->y = env_light.mWind.mWindVec.y;
i_direction->z = env_light.mWind.mWindVec.z;
}
}
/* 8008A6F4-8008A7D0 .text dKyw_get_AllWind_vecpow__FP4cXyz */
cXyz dKyw_get_AllWind_vecpow(cXyz* param_0) {
cXyz vecpow;
cXyz sp24;
cXyz sp18;
cXyz direction;
f32 power;
dKyw_pntwind_get_info(param_0, &direction, &power);
sp24 = g_env_light.mWind.mWindVec * (g_env_light.mWind.mWindPower * (1.0f - power));
sp18 = direction * (power * 5.0f);
vecpow = sp24 + sp18;
return vecpow;
}
/* 8008A7D0-8008A870 .text dKyw_tact_wind_set__Fss */
void dKyw_tact_wind_set(s16 i_windX, s16 i_windY) {
dScnKy_env_light_c& env_light = dKy_getEnvlight();
cXyz* wind_vec = dKyw_get_wind_vec();
env_light.mWind.mTactWindAngleX = i_windX;
env_light.mWind.mTactWindAngleY = i_windY;
dComIfGs_setWindX(i_windX);
dComIfGs_setWindY(i_windY);
i_windY = -(cM_atan2s(wind_vec->x, wind_vec->z) + 0x4000);
env_light.mWind.mTactWindAngleFlags = 1;
if ((s16)(i_windY - env_light.mWind.mTactWindAngleY) < 0) {
env_light.mWind.mTactWindAngleFlags |= 0x80;
}
}
/* 8008A870-8008A890 .text dKyw_tact_wind_set_go__Fv */
void dKyw_tact_wind_set_go() {
g_env_light.mWind.mTactWindAngleFlags |= 1;
g_env_light.mWind.mEvtWindSet = 0xFF;
}
/* 8008A890-8008A8B0 .text dKyw_get_tactwind_dir__Fv */
int dKyw_get_tactwind_dir() {
int ret = 0;
if ((g_env_light.mWind.mTactWindAngleFlags & 0x80) != 0) {
ret = 1;
}
return ret;
}
/* 8008A8B0-8008A8C0 .text dKyw_custom_windpower__Ff */
void dKyw_custom_windpower(f32 i_windpower) {
g_env_light.mWind.mCustomWindPower = i_windpower;
}
/* 8008A8C0-8008A944 .text dKyw_get_windsdir__Fv */
int dKyw_get_windsdir() {
struct wind_tbl {
u16 min_angle;
u16 max_angle;
int direction;
};
static const wind_tbl wind_table[] = {
{0x0000, 0x1000, 0}, {0x1000, 0x3000, 1}, {0x3000, 0x5000, 2},
{0x5000, 0x7000, 3}, {0x7000, 0x9000, 4}, {0x9000, 0xB000, 5},
{0xB000, 0xD000, 6}, {0xD000, 0xF000, 7}, {0xF000, 0xFFFF, 0},
};
cXyz* wind_vec = dKyw_get_wind_vec();
u16 t = -(cM_atan2s(wind_vec->x, wind_vec->z) + 0x4000);
int dir;
for (int i = 0; i < 9; i++) {
if (t >= wind_table[i].min_angle && t < wind_table[i].max_angle) {
dir = wind_table[i].direction;
}
}
return dir;
}
/* 8008A944-8008A958 .text dKyw_evt_wind_set__Fss */
void dKyw_evt_wind_set(s16 i_windX, s16 i_windY) {
g_env_light.mWind.mEvtWindAngleX = i_windX;
g_env_light.mWind.mEvtWindAngleY = i_windY;
}
/* 8008A958-8008A96C .text dKyw_evt_wind_set_go__Fv */
void dKyw_evt_wind_set_go() {
g_env_light.mWind.mEvtWindSet = 1;
}
/* 8008A96C-8008A9F8 .text dKyw_gbwind_use_check__Fv */
BOOL dKyw_gbwind_use_check() {
dStage_FileList_dt_c* fili_p = NULL;
int rt = 0;
if (g_env_light.mWind.mpWindVecOverride == NULL) {
s32 roomNo = dComIfGp_roomControl_getStayNo();
if (roomNo >= 0) {
fili_p = dComIfGp_roomControl_getStatusRoomDt(roomNo)->getFileListInfo();
}
if (fili_p != NULL && dStage_FileList_dt_GlobalWindLevel(fili_p) <= 2) {
rt = 1;
}
}
return rt;
}
/* 8008A9F8-8008AA1C .text dKyw_tornado_Notice__FP4cXyz */
void dKyw_tornado_Notice(cXyz* param_0) {
g_env_light.mWind.field_0x8 = *param_0;
}
/* 8008AA1C-8008AA30 .text dKyw_rain_set__Fi */
void dKyw_rain_set(int i_count) {
g_env_light.mRainCount = i_count;
g_env_light.mRainCountOrig = i_count;
}