First part of cutscene completed with activating particle effect.

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 3 years ago
parent e4432895b4
commit 346ac249db
  1. 76
      SeasonsOfLoneliness.cpp
  2. BIN
      Seasons_of_Loneliness

@ -737,6 +737,9 @@ public:
PLAYER_COORDS[0]=16;
PLAYER_COORDS[1]=6;
}break;
case cutscene::RAINING_IN_DOME:{
applyPixelEffect(HURRICANE,GetMapFileCoords(7,11));
}break;
}
for (int i=0;i<8;i++) {
CUTSCENE_FLAGS[i]=false;
@ -958,15 +961,15 @@ public:
PIXEL_EFFECT_TRANSPARENCY=0;
if (BATTLE_CURRENT_TURN_ENTITY==-1) {
if (PLAYER_SELECTED_TARGET==-2) {
applyPixelEffect(BATTLE_CARD_SELECTION,PLAYER_COORDS[0],PLAYER_COORDS[1]);
applyPixelEffect(BATTLE_CARD_SELECTION,{PLAYER_COORDS[0],PLAYER_COORDS[1]});
} else {
applyPixelEffect(BATTLE_CARD_SELECTION,CURRENT_ENCOUNTER.x+CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET]->x,CURRENT_ENCOUNTER.y+CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET]->y);
applyPixelEffect(BATTLE_CARD_SELECTION,{CURRENT_ENCOUNTER.x+CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET]->x,CURRENT_ENCOUNTER.y+CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET]->y});
}
} else {
if (CURRENT_ENCOUNTER.entities[BATTLE_CURRENT_TURN_ENTITY]->selectedMove->damage<0) {
applyPixelEffect(CURRENT_ENCOUNTER.entities[BATTLE_CURRENT_TURN_ENTITY]->selectedMove,CURRENT_ENCOUNTER.x+CURRENT_ENCOUNTER.entities[BATTLE_CURRENT_TURN_ENTITY]->x,CURRENT_ENCOUNTER.y+CURRENT_ENCOUNTER.entities[BATTLE_CURRENT_TURN_ENTITY]->y);
applyPixelEffect(CURRENT_ENCOUNTER.entities[BATTLE_CURRENT_TURN_ENTITY]->selectedMove,{CURRENT_ENCOUNTER.x+CURRENT_ENCOUNTER.entities[BATTLE_CURRENT_TURN_ENTITY]->x,CURRENT_ENCOUNTER.y+CURRENT_ENCOUNTER.entities[BATTLE_CURRENT_TURN_ENTITY]->y});
} else {
applyPixelEffect(CURRENT_ENCOUNTER.entities[BATTLE_CURRENT_TURN_ENTITY]->selectedMove,PLAYER_COORDS[0],PLAYER_COORDS[1]);
applyPixelEffect(CURRENT_ENCOUNTER.entities[BATTLE_CURRENT_TURN_ENTITY]->selectedMove,{PLAYER_COORDS[0],PLAYER_COORDS[1]});
}
}
}
@ -1002,25 +1005,10 @@ public:
effectRadius({PLAYER_COORDS[0],PLAYER_COORDS[1]},ref,false);
}
}
for (int i=0;i<PIXEL_LIMIT;i++) {
pixels[i]->pos+=pixels[i]->spd;
if (pixels[i]->pos.x<PIXEL_POS.x) {
pixels[i]->pos.x=PIXEL_POS.x+PIXEL_SIZE.x;
}
if (pixels[i]->pos.x>PIXEL_POS.x+PIXEL_SIZE.x) {
pixels[i]->pos.x=PIXEL_POS.x;
}
if (pixels[i]->pos.y<PIXEL_POS.y) {
pixels[i]->pos.y=PIXEL_POS.y+PIXEL_SIZE.y;
}
if (pixels[i]->pos.y>PIXEL_POS.y+PIXEL_SIZE.y) {
pixels[i]->pos.y=PIXEL_POS.y;
}
pixels[i]->a=pixels[i]->o_a*PIXEL_EFFECT_TRANSPARENCY;
}
if (EFFECT_TIMER>ref->effectTime) {
BATTLE_STATE=battle::DAMAGE_RESOLUTION;
EFFECT_TIMER=0;
clearPixelEffect();
}
}break;
case battle::DAMAGE_RESOLUTION:{
@ -1099,7 +1087,7 @@ public:
CUTSCENE_OBJS[0]->x-=MOVE_SPD;
}
if (MoveCameraTowardsPoint(GetMapFileCoords(7,11))) {
//Go to next part of cutscene.
PlayCutscene(cutscene::RAINING_IN_DOME);
}
}break;
}
@ -1162,6 +1150,25 @@ public:
}
}break;
}
if (PIXEL_EFFECT_TRANSPARENCY>0) {
for (int i=0;i<PIXEL_LIMIT;i++) {
pixels[i]->pos+=pixels[i]->spd;
if (pixels[i]->pos.x<PIXEL_POS.x) {
pixels[i]->pos.x=PIXEL_POS.x+PIXEL_SIZE.x;
}
if (pixels[i]->pos.x>PIXEL_POS.x+PIXEL_SIZE.x) {
pixels[i]->pos.x=PIXEL_POS.x;
}
if (pixels[i]->pos.y<PIXEL_POS.y) {
pixels[i]->pos.y=PIXEL_POS.y+PIXEL_SIZE.y;
}
if (pixels[i]->pos.y>PIXEL_POS.y+PIXEL_SIZE.y) {
pixels[i]->pos.y=PIXEL_POS.y;
}
pixels[i]->a=pixels[i]->o_a*PIXEL_EFFECT_TRANSPARENCY;
}
}
}
void advanceMessageBox() {
@ -1265,15 +1272,6 @@ public:
} else {
DrawWrappedText({4,4},CURRENT_ENCOUNTER.entities[BATTLE_CURRENT_TURN_ENTITY]->name+" "+(char)('A'+BATTLE_CURRENT_TURN_ENTITY)+" with "+CURRENT_ENCOUNTER.entities[BATTLE_CURRENT_TURN_ENTITY]->selectedMove->name,WIDTH-8,WHITE,{2,2});
}
SetDrawTarget(nullptr);
for (int i=0;i<PIXEL_LIMIT;i++) {
if (pixels[i]->size.x==1&&pixels[i]->size.y==1) {
Draw(pixels[i]->pos,{pixels[i]->r,pixels[i]->g,pixels[i]->b,pixels[i]->a});
} else {
FillRectDecal(pixels[i]->pos,pixels[i]->size,{pixels[i]->r,pixels[i]->g,pixels[i]->b,pixels[i]->a});
}
}
SetDrawTarget(1);
FillRectDecal({0,0},{WIDTH,HEIGHT},Pixel(ORIGINAL_FOREGROUND_EFFECT_COLOR.r,ORIGINAL_FOREGROUND_EFFECT_COLOR.g,ORIGINAL_FOREGROUND_EFFECT_COLOR.b,ORIGINAL_FOREGROUND_EFFECT_COLOR.a*PIXEL_EFFECT_TRANSPARENCY));
}break;
}
@ -1294,6 +1292,17 @@ public:
//std::cout<<numb->x<<"/"<<numb->y<<" "<<(((numb->x-PLAYER_COORDS[0])*32+WIDTH/2)-GetTextSize(display).x/2)<<","<<(((numb->y-PLAYER_COORDS[1])*32+HEIGHT/2)-8-GetTextSize(display).y/2)<<": ("<<numb->alpha<<")"<<display<<"\n";
}
}
if (PIXEL_EFFECT_TRANSPARENCY>0) {
SetDrawTarget(nullptr);
for (int i=0;i<PIXEL_LIMIT;i++) {
if (pixels[i]->size.x==1&&pixels[i]->size.y==1) {
Draw(pixels[i]->pos,{pixels[i]->r,pixels[i]->g,pixels[i]->b,pixels[i]->a});
} else {
FillRectDecal(pixels[i]->pos,pixels[i]->size,{pixels[i]->r,pixels[i]->g,pixels[i]->b,pixels[i]->a});
}
}
SetDrawTarget(1);
}
if (messageBoxVisible) {
DrawDialogBox({4,HEIGHT-60},{WIDTH/2,16},Pixel(18, 0, 33,180));
DrawDialogBox({0,HEIGHT-48},{WIDTH,48},Pixel(18, 0, 33,180));
@ -1753,12 +1762,12 @@ public:
CUTSCENE_DISPLAYED_CARD=POWER;
}
void applyPixelEffect(WEATHER_POWER*power,int x,int y) {
void applyPixelEffect(WEATHER_POWER*power,vf2d pos) {
SetDrawTarget(nullptr);
Clear(BLANK);
SetDrawTarget(1);
applyPixelEffect(
{(x-PLAYER_COORDS[0])*32+WIDTH/2-16-power->effect->effectSize.x/2,(y-PLAYER_COORDS[1])*32+HEIGHT/2-16-power->effect->effectSize.y/2},
{(pos.x-PLAYER_COORDS[0])*32+WIDTH/2-16-power->effect->effectSize.x/2,(pos.y-PLAYER_COORDS[1])*32+HEIGHT/2-16-power->effect->effectSize.y/2},
power->effect->effectSize,
power->effect->pos_low,
power->effect->pos_high,
@ -1793,6 +1802,7 @@ public:
void clearPixelEffect() {
PIXEL_LIMIT=0;
PIXEL_EFFECT_TRANSPARENCY=0;
}
//Returns a number between 0.0 and X.
@ -1804,7 +1814,7 @@ public:
return random(val2-val1)+val1;
}
vi2d GetMapFileCoords(int ln,int col) {
vf2d GetMapFileCoords(int ln,int col) {
return {col-1,ln-3};
}

Binary file not shown.
Loading…
Cancel
Save