📄 movie.cpp
字号:
#include "ls.h"
#include "text.cpp"
char *reads[10]={
"梦回到那纵横捭阖的历史",
"太古神剑将再次演义战国风云",
};
int fade_view(int x,int y,char *s)
{ int i;
for (i=0;i<13;i++) {
world.noop(game_delay*2);
lsetColor(light_map.data[i*255/15][15]);
louttextxy(x,y,s);
}
return 0;
}
int GAME::MovieEnd()
{ int i,j,k;
extern char *text_end[];
voc.stopmidi();
for (i=0;i<63;i++) {
world.noop(game_delay/2);
laddPal(-i,pal0,pal);
lsetPal(pal);
}
lClearSurface(&layer.layers[0],0);
game_blit(-1,1);
lActiveSurface(NULL);
lsetPal(pal0);
for (i=0;i<10;i++) {
fade_view(160-strlen(text_end[i])*4,8+i*18,text_end[i]);
world.noop(game_delay*35);
}
while (!game_key(0));
for (i=0;i<63;i++) {
world.noop(game_delay/2);
laddPal(-i,pal0,pal);
lsetPal(pal);
}
lClearSurface(&layer.layers[0],0);
game_blit(-1,1);
lsetPal(pal0);
layer.active(0);
return 0;
}
int GAME::MovieShip()
{ int i,j,k;
char *bitmap;
char *ship;
char name[80];
RGB tpal[256];
extern char *text_penglai[];
game_getfname(NAME_TITLE,6,name);
bitmap=lrPicFile(name,0,tpal);
if (!bitmap) {
voc.regist_msg("error load %s in MoveShip()",name);
}
voc.playmidi(6,0);
for (i=0;i<63;i++) {
world.noop(game_delay/2);
laddPal(-i,pal0,pal);
lsetPal(pal);
}
layer.active(0);
lClearSurface(&layer.layers[0],0);
lgPutImage(0,0,319,239,bitmap);
game_blit(-1,1);
for (i=0;i<64;i++) {
world.noop(game_delay/2);
laddPal(-63+i,tpal,pal);
lsetPal(pal);
}
ship=express.syspic.LpcImage[24];
for (i=-20;i<340;i++) {
world.noop(game_delay);
lgPutImage(0,0,319,239,bitmap);
lputImage(i,37,ship);
game_blit(-1,1);
}
voc.stopmidi();
for (i=0;i<63;i++) {
world.noop(game_delay/2);
laddPal(-i,tpal,pal);
lsetPal(pal);
}
lClearSurface(&layer.layers[0],0);
game_blit(-1,1);
lsetPal(pal0);
lActiveSurface(NULL);
for (i=0;i<2;i++) {
fade_view(160-strlen(text_penglai[i])*4,60+i*28,text_penglai[i]);
world.noop(game_delay*80);
}
world.noop(game_delay*80);
for (i=0;i<63;i++) {
world.noop(game_delay/2);
laddPal(-i,tpal,pal);
lsetPal(pal);
}
lClearSurface(&layer.layers[0],0);
game_blit(-1,1);
layer.active(0);
lsetPal(pal0);
delete bitmap;
return 0;
}
int GAME::GameMovie()
{ int i,j,k,ok,key,x,y;
int y0,y1,end_y0=50,end_y1=200;
int time_pass=0;
char name[100],*bitmap;
char text[100]="无名鸟工作室荣誉制作";
RGB pal[256];
RGB tpal[256];
FILE *f;
static struct
{ int x,y,len,wid;
} rect[200];
game_reset_all(-1,-1,1,-1);
if (game_debug==1) return 0;
lsetPal(pal0);
lActiveSurface(NULL);
fade_view(160-13*8+16,75,reads[0]);
world.noop(game_delay*60);
fade_view(160-13*8,120,reads[1]);
world.noop(game_delay*100);
for (i=0;i<60;i++) {
world.noop(game_delay/3);
laddPal(-i,pal0,tpal);
lsetPal(tpal);
}
game_getfname(NAME_TITLE,4,name);
bitmap=lrPicFile(name,0,pal);
if (!bitmap) {
voc.regist_msg("error load %s",name);
return -5;
}
lActiveSurface(NULL);
lputBlock(0,0,bitmap);
delete bitmap;
for (i=-63;i<=0;i++) {
world.noop(game_delay/4);
laddPal(i,pal,tpal);
lsetPal(tpal);
if (i==-15) voc.playdigi(4);
}
world.noop(game_delay*100);
for (i=0;i<70;i++) {
world.noop(game_delay/2);
ldecPal(1,tpal);
lsetPal(tpal);
}
game_getfname(NAME_TITLE,0,name);
bitmap=lrPicFile(name,0,pal);
if (!bitmap) {
voc.regist_msg("error load %s",name);
return -1;
}
layer.active(2);
lputBlock(0,0,bitmap);
delete bitmap;
game_getfname(NAME_TITLE,1,name);
bitmap=lrPicFile(name,0,NULL);
if (!bitmap) {
voc.regist_msg("error load %s",name);
return -2;
}
layer.active(1);
lputBlock(0,240,bitmap);
delete bitmap;
game_getfname(NAME_TITLE,2,name);
bitmap=lrPicFile(name,0,NULL);
if (!bitmap) {
voc.regist_msg("error load %s",name);
return -3;
}
layer.active(0);
lputBlock(0,240,bitmap);
delete bitmap;
game_getfname(NAME_TITLE,3,name);
if ((f=fopen(name,"rb"))==NULL)
{ voc.regist_msg("error load %s",name);
return -4;
}
fread(rect,sizeof(rect[0]),100,f);
fclose(f);
layer.datas[1].x=layer.datas[2].x=0;
layer.datas[1].y=layer.datas[2].y=0;
layer.datas[0].x=layer.datas[0].y=0;
layer.datas[1].y=240;
layer.datas[2].y=240;
voc.playmidi(0,1);
world.color_change=0;
bitmap=layer.layers[0].memory;
for (i=0;i<320*200;i++) if (bitmap[i+320*240]) bitmap[i+320*240]=10;
for (ok=0,i=-70,y0=230,y1=20,key=0;ok==0;time_pass++)
{ world.noop(game_delay*2);
if (game_key(0)==0) key=1;
if (y0==end_y0&&game_key(0)&&key) ok=1,key=0;
if (y1==end_y1&&game_key(1)&&key) ok=-1,key=0;
laddPal(i,pal,tpal);
lsetPal(tpal);
layer.datas[2].y=(y0>=0)? y0 : 0;
layer.datas[1].y=(y1>=0)? y1 : 0;
game_blit(1,1);
if (y1<end_y1) y1++;
if (y0>end_y0) y0--;
if (i<0&&(time_pass&1)==0) i++;
if (time_pass>180) ok=1;
}
lsetPal(10,36,1,1);
lBlitFast(&layer.layers[1],0,0, 0,0,319,239,&layer.layers[0],0);
for (i=0;i<100;i++)
{ world.noop(game_delay/2);
lBlitFast(&layer.layers[0],rect[i].x,rect[i].y, rect[i].x,rect[i].y+240,
rect[i].x+rect[i].len-1,rect[i].y+240+rect[i].wid-1,&layer.layers[0],1);
lOutToScr(&layer.layers[0], 0,0, 0,0,319,239);
}
while (!game_key(0));
for (i=36,j=1,k=0,ok=0,time_pass=0;ok==0;time_pass++)
{ world.noop(game_delay);
lBlitFast(&layer.layers[0],0,0, 0,0,319,239,&layer.layers[1],0);
lBlitFast(&layer.layers[0],0,-k, 0,240,319,479,&layer.layers[0],1);
lOutToScr(&layer.layers[0],0,0, 0,0,319,239);
if (j<52) j+=1; else ok=1;
if (i<52) i+=1;
if (k<20&&time_pass%2==0) k++;
for (y=0;y<2;y++) for (x=0;x<256;x++) {
if (pal[x].r>0) pal[x].r--;
if (pal[x].g>0) pal[x].g--;
if (pal[x].b>0) pal[x].b--;
}
pal[10].r=i; pal[10].g=pal[10].b=j;
lsetPal(pal);
}
layer.active(0);
lBlitFast(&layer.layers[0],0,0, 0,240,319,479, &layer.layers[0],0);
lBlitFast(&layer.layers[0],0,-20, 0,240,319,479, &layer.layers[0],0);
lgetBlock(0,0,319,239,title);
world.noop(game_delay*45);
lloadPal(pal);
for (i=0,k=255;i<60;i++,k-=4) {
if (k<0) k=0;
voc.volume(k,k);
world.noop(game_delay/6);
ldecPal(1,pal);
lsetPal(pal);
}
voc.volume(255,255);
game_reset_all(-1,-1,1,-1);
game_blit(1,1);
lsetPal(pal0);
for (i=0;i<320*240;i++) if (title[i+4]==10) title[i+4]=22;
else title[i+4]=0;
world.color_change=1;
return 0;
}
int GAME::MovieNew()
{ char name[100];
char *bitmap;
int x,y,i,j,k;
int textcolor,texty;
short len,wid,ok;
int pal_t,key;
int light[20],lstep=11;
RGB pal[256],tpal[256];
if (game_debug==1) return 0;
game_getfname(NAME_TITLE,5,name);
world.color_change=0;
bitmap=lrPicFile(name,0,pal);
if (!bitmap) {
voc.regist_msg("error load bitmap %s",name);
return -1;
}
textcolor=lpBestfitColor(pal,44,44,44);
for (i=0,j=44;i<lstep;i++,j-=44/lstep) {
if (j<0) j=0;
light[i]=lpBestfitColor(pal,j,j,j);
}
layer.active(2);
lgetSize(&len,&wid,bitmap);
lputBlock(0,0,bitmap);
delete bitmap;
voc.playmidi(2,1);
for (ok=0,pal_t=-60,texty=220,y=40,x=0,j=0,key=0;ok==0;j++)
{ world.noop(game_delay*4);
if (key==0&&(game_key(0)==0&&game_key(1)==0)) key=1;
if (key==1&&(game_key(0)==1||game_key(1)==1)) ok=1;
laddPal(pal_t,pal,tpal);
lsetPal(tpal); if (++pal_t>=0) pal_t=0;
layer.active(0);
lBlitFast(&layer.layers[0],x,y, 0,0,len-1,wid-1,&layer.layers[2],0);
lsetColor(0);
lbar(0,y-30,319,y-1);
lbar(0,y+wid,319,y+wid+30);
for (i=0;text_game_start[i];i++) {
lsetColor(textcolor);
k=texty+i*20;
if (k>-16&&k<250) {
lsetColor(0);
louttextxy(10+1,texty+i*18+1,text_game_start[i]);
lsetColor(textcolor);
louttextxy(10,texty+i*18,text_game_start[i]);
}
}
for (i=0;i<lstep;i++) {
for (k=0;k<320;k++) if (lrpixel(k,y-1-i)) lpixel(k,y-1-i,light[i]);
for (k=0;k<320;k++) if (lrpixel(k,y+wid+i)) lpixel(k,y+wid+i,light[i]);
}
lsetColor(0);
lbar(0,0,319,y-lstep);
lbar(0,y+wid+lstep,319,239);
lOutToScr(&layer.layers[0],0,0, 0,0,319,239);
if (--texty<-108) ok=1;
if ((j%4)==0) if (x>320-len) x--;
}
world.noop(game_delay*60);
voc.stopmidi();
for (i=0;i>-63;i--) {
laddPal(i,pal,tpal);
lsetPal(tpal);
world.noop(game_delay*2/3);
}
game_reset_all(-1,-1,1,-1);
game_blit(1,1);
lsetPal(pal0);
world.color_change=1;
return 0;
}
int GAME::MovieAbout()
{ int i,j;
char name[100];
world.color_change=0;
world.color_change=1;
return 0;
}
int GAME::MovieGameOver()
{ int i,j,k;
char *bitmap;
bitmap=new char[320*240+8];
delete bitmap;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -