@ -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 ;
}
vi 2d GetMapFileCoords ( int ln , int col ) {
vf 2d GetMapFileCoords ( int ln , int col ) {
return { col - 1 , ln - 3 } ;
}