Changeset 575


Ignore:
Timestamp:
May 2, 2011, 1:41:49 PM (7 years ago)
Author:
Sam Hocevar
Message:

game: merge fade_in and fade_out into a single template.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • abuse/trunk/src/game.cpp

    r562 r575  
    11621162extern int start_doubled;
    11631163
     1164static template<int N> Fade(image *im, int steps)
     1165{
     1166    palette *old_pal = pal->copy();
     1167
     1168    if (im)
     1169    {
     1170        screen->clear();
     1171        im->put_image(screen, (xres + 1) / 2 - im->Size().x / 2,
     1172                              (yres + 1) / 2 - im->Size().y / 2);
     1173    }
     1174
     1175    for (int i = 0; i < steps; i++)
     1176    {
     1177        uint8_t *sl1 = (uint8_t *)pal->addr();
     1178        uint8_t *sl2 = (uint8_t *)old_pal->addr();
     1179        int v = (N ? i + 1 : steps - i) * 256 / steps;
     1180        for (int j = 0; j < 256; j++)
     1181        {
     1182            *sl1 = (int)*sl2++ * v / 256;
     1183            *sl1 = (int)*sl2++ * v / 256;
     1184            *sl1 = (int)*sl2++ * v / 256;
     1185        }
     1186        pal->load();
     1187        wm->flush_screen();
     1188        milli_wait(25);
     1189    }
     1190
     1191    if (N == 0)
     1192    {
     1193        screen->clear();
     1194        wm->flush_screen();
     1195        old_pal->load();
     1196    }
     1197    delete pal;
     1198    pal = old_pal;
     1199}
     1200
    11641201void fade_in(image *im, int steps)
    11651202{
    1166   palette *old_pal = pal->copy();
    1167   int i;
    1168   if(im)
    1169   {
    1170     screen->clear();
    1171     im->put_image(screen, (xres + 1)/2 - im->Size().x/2, (yres + 1)/2 - im->Size().y/2);
    1172   }
    1173 
    1174   for(i = 0; i < steps; i++)
    1175   {
    1176     uint8_t *sl1=(uint8_t *)pal->addr();
    1177     uint8_t *sl2=(uint8_t *)old_pal->addr();
    1178     int j;
    1179     int v=(i + 1)*256 / steps;
    1180     for(j = 0; j < 256; j++)
    1181     {
    1182       *(sl1)=((int)*(sl2))*v / 256;  sl1++; sl2++;
    1183       *(sl1)=((int)*(sl2))*v / 256;  sl1++; sl2++;
    1184       *(sl1)=((int)*(sl2))*v / 256;  sl1++; sl2++;
    1185     }
    1186     pal->load();
    1187     wm->flush_screen();
    1188     milli_wait(25);
    1189   }
    1190   delete pal;
    1191   pal = old_pal;
     1203    Fade<1>(NULL, steps);
    11921204}
    11931205
    11941206void fade_out(int steps)
    11951207{
    1196   palette *old_pal = pal->copy();
    1197   int i;
    1198   for(i = 0; i < steps; i++)
    1199   {
    1200     uint8_t *sl1=(uint8_t *)pal->addr();
    1201     uint8_t *sl2=(uint8_t *)old_pal->addr();
    1202     int j;
    1203     int v=(steps - i)*256 / steps;
    1204     for(j = 0; j < 256; j++)
    1205     {
    1206       *(sl1)=((int)*(sl2))*v / 256;  sl1++; sl2++;
    1207       *(sl1)=((int)*(sl2))*v / 256;  sl1++; sl2++;
    1208       *(sl1)=((int)*(sl2))*v / 256;  sl1++; sl2++;
    1209     }
    1210     pal->load();
    1211     wm->flush_screen();
    1212     milli_wait(25);
    1213   }
    1214   screen->clear();
    1215   wm->flush_screen();
    1216   delete pal;
    1217   pal = old_pal;
    1218 
    1219   pal->load();
     1208    Fade<0>(NULL, steps);
    12201209}
    12211210
Note: See TracChangeset for help on using the changeset viewer.