Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- script typedef ffc struct;
- script typedef ffc class;
- stuct script locations
- {
- enum{ curDMAP, curSCREEN, pvsDMAP, pvsSCREEN, locLAST};
- int data[locLAST];
- void run(){}
- void clear() for ( int q = 0; q < locLAST; ++q ) data[q] = 0;
- bool changed() { return ( Game->GetCurDMap() != data[curDMAP] || Game->GetCurScreen() != data[curSCREEN] ); }
- bool dmapchanged() { return ( Game->GetCurDMap() != data[curDMAP] ); }
- bool screenchanged() { return ( Game->GetCurScreen() != data[curSCREEN] ); }
- int priorDMap() { return ( data[pvsDMAP] );
- void update()
- {
- data[pvsSCREEN] = data[curSCREEN];
- data[pvsDMAP] = data[curDMAP];
- data[curSCREEN] = Game->GetCurScreen();
- data[curDMAP] = Game->GetCurDMap();
- }
- void update_dmap()
- {
- data[pvsDMAP] = data[curDMAP];
- data[curDMAP] = Game->GetCurDMap();
- }
- void update_screen()
- {
- data[pvsSCREEN] = data[curSCREEN];
- data[curSCREEN] = Game->GetCurScreen();
- }
- }
- class script screenintros
- {
- const int REGISTER = 6;
- const int BIT = 2;
- void run(){}
- void clear()
- {
- for ( int q = 0; q < 0x80; ++q )
- {
- SetScreenDBit(locations.data[pvsDMAP], q, REG, BIT, false);
- }
- }
- void update()
- {
- if ( locations.dmapchanged() )
- {
- locations.update_dmap();
- clear(); /Re-display after changing dmaps, like DMap intros repeat, but for screens.
- }
- }
- }
- link script active
- {
- void run()
- {
- while(1)
- {
- screenintros.update();
- Waitframe();
- }
- }
- }
- //Does not repeat if you revisit the screen, unless you change dmaps.
- ffc script screenmessage
- {
- const int REGISTER = 6;
- const int BIT = 2;
- const int DELAY_DEFAULT = 150;
- void run(int msg, int delay, int reg )
- {
- reg = ( reg > 0 ) ? reg : REGISTER;
- delay = ( delay > 0 ) ? delay : DELAY_DEFAULT;
- while(1)
- {
- if ( !(GetScreenDBit(Game->GetCurDMap(), Game->GetCurScreen(), REG, BIT)); )
- {
- Waitframes(delay);
- Screen->Message(msg);
- SetScreenDBit(Game->GetCurDMap(), Game->GetCurScreen(), REG, BIT, true);
- }
- Waitframe();
- }
- }
- }
- link script init
- {
- void run()
- {
- locations.clear();
- locations.clear(); //Call twice to push the previous screen down.
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement