summaryrefslogtreecommitdiffstats
path: root/mbbsd/pmore.c
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-06-06 03:40:19 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-06-06 03:40:19 +0800
commit54e2b9acd94fd7f1fa17c8e55c4214465fb649b1 (patch)
tree0c54d2776e1f62b92508c6f9f6042f5b15b299f1 /mbbsd/pmore.c
parent9676c9c3ec69d2da5410d7d14f8c766954d9b255 (diff)
downloadpttbbs-54e2b9acd94fd7f1fa17c8e55c4214465fb649b1.tar
pttbbs-54e2b9acd94fd7f1fa17c8e55c4214465fb649b1.tar.gz
pttbbs-54e2b9acd94fd7f1fa17c8e55c4214465fb649b1.tar.bz2
pttbbs-54e2b9acd94fd7f1fa17c8e55c4214465fb649b1.tar.lz
pttbbs-54e2b9acd94fd7f1fa17c8e55c4214465fb649b1.tar.xz
pttbbs-54e2b9acd94fd7f1fa17c8e55c4214465fb649b1.tar.zst
pttbbs-54e2b9acd94fd7f1fa17c8e55c4214465fb649b1.zip
pmore: ascii art movie: compat24 mode
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2773 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/pmore.c')
-rw-r--r--mbbsd/pmore.c62
1 files changed, 53 insertions, 9 deletions
diff --git a/mbbsd/pmore.c b/mbbsd/pmore.c
index cea54237..eece3e39 100644
--- a/mbbsd/pmore.c
+++ b/mbbsd/pmore.c
@@ -264,10 +264,20 @@ enum {
MFDISP_MOVIE_PLAYING_OLD,
} _MFDISP_MOVIE_MODES;
+/*
+typedef struct {
+ int mode,
+ compat24;
+} MF_Movie;
+
+MF_Movie mfmov;
+*/
+
unsigned char * mf_movieFrameHeader(unsigned char *p);
int pmore_wait_input(float secs);
int mf_movieNextFrame(float* newsec);
int moviemode = MFDISP_MOVIE_UNKNOWN;
+int moviecompat24 = 1;
#endif
// --------------------------------------------- </Optional Modules>
@@ -913,6 +923,13 @@ mf_disp()
}
#ifdef PMORE_USE_ASCII_MOVIE
+ if(moviemode == MFDISP_MOVIE_PLAYING_OLD &&
+ moviecompat24)
+ {
+ if(mf.dispedlines == 23)
+ return;
+ }
+ else
if(moviemode == MFDISP_MOVIE_UNKNOWN ||
moviemode == MFDISP_MOVIE_PLAYING)
{
@@ -1362,6 +1379,7 @@ pmore(char *fpath, int promptend)
#ifdef PMORE_USE_ASCII_MOVIE
float frameclk = 1.0f;
+ moviecompat24 = 1;
moviemode = MFDISP_MOVIE_UNKNOWN;
#endif
@@ -1452,30 +1470,38 @@ pmore(char *fpath, int promptend)
{
if(!mf_movieNextFrame(&frameclk))
{
+ moviemode = MFDISP_MOVIE_YES; // nothing more
mf_determinemaxdisps(MFNAV_PAGE, 0);
mf_forward(0);
- moviemode = MFDISP_MOVIE_YES; // nothing more
}
}
else if(moviemode == MFDISP_MOVIE_PLAYING_OLD)
{
if(mf_viewedAll())
+ {
moviemode = MFDISP_MOVIE_NO;
+ mf_determinemaxdisps(MFNAV_PAGE, 0);
+ mf_forward(0);
+ }
else
- PMORE_UINAV_FORWARDPAGE();
+ {
+ if(!moviecompat24)
+ PMORE_UINAV_FORWARDPAGE();
+ else
+ mf_forward(22);
+ }
}
} else {
igetch();
/* TODO simple navigation here? */
if(moviemode == MFDISP_MOVIE_PLAYING)
- {
- mf_determinemaxdisps(MFNAV_PAGE, 0);
- mf_forward(0);
moviemode = MFDISP_MOVIE_YES;
- }
else if(moviemode == MFDISP_MOVIE_PLAYING_OLD)
moviemode = MFDISP_MOVIE_NO;
+
+ mf_determinemaxdisps(MFNAV_PAGE, 0);
+ mf_forward(0);
}
continue;
}
@@ -1916,17 +1942,35 @@ pmore(char *fpath, int promptend)
else if (moviemode == MFDISP_MOVIE_NO)
{
static char buf[10]="1";
- move(b_lines-1, 0);
+ //move(b_lines-1, 0);
+ pmore_clrtoeol(b_lines-1, 0);
getdata_buf(b_lines - 1, 0,
- "這不是已知的動畫檔格式,"
- "若要直接播放請輸入播放速度(單位為秒): ",
+ "這不是已知的動畫檔格式, "
+ "若要直接播放請輸入速度(秒): "
+ ,
buf, 8, LCECHO);
if(buf[0])
{
sscanf(buf, "%f", &frameclk);
if(frameclk < 0.1f)
frameclk = 0.1f;
+ moviecompat24 = 0;
+ /* are we really going to start? check termsize! */
+ if (t_lines != 24)
+ {
+ char ans[4];
+ pmore_clrtoeol(b_lines-1, 0);
+ getdata(b_lines - 1, 0,
+ "傳統動畫是以 24 行為單位設計的, "
+ "要模擬 24 行嗎? (否則會用現在的行數)[Yn] "
+ , ans, 3, LCECHO);
+ if(ans[0] == 'n')
+ moviecompat24 = 0;
+ else
+ moviecompat24 = 1;
+ }
moviemode = MFDISP_MOVIE_PLAYING_OLD;
+ mf_determinemaxdisps(0, 0); // display until last line
MFDISP_DIRTY();
}
}