From 5682f4dee271696d42cce6645d9b72f1375430a3 Mon Sep 17 00:00:00 2001
From: piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>
Date: Sun, 5 Jun 2005 15:12:17 +0000
Subject: pmore: play old ascii art movie

git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2769 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
---
 mbbsd/pmore.c | 46 ++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 38 insertions(+), 8 deletions(-)

(limited to 'mbbsd')

diff --git a/mbbsd/pmore.c b/mbbsd/pmore.c
index f4940782..73eb76c3 100644
--- a/mbbsd/pmore.c
+++ b/mbbsd/pmore.c
@@ -258,6 +258,7 @@ enum {
     MFDISP_MOVIE_YES,
     MFDISP_MOVIE_NO,
     MFDISP_MOVIE_PLAYING,
+    MFDISP_MOVIE_PLAYING_OLD,
 }  _MFDISP_MOVIE_MODES;
 
 unsigned char * mf_movieFrameHeader(unsigned char *p);
@@ -1312,7 +1313,7 @@ PMORE_UINAV_FORWARDPAGE()
 }
 
 inline static void
-PMORE_UINAV_FORWARLINE()
+PMORE_UINAV_FORWARDLINE()
 {
     if(mf_viewedAll())
 	return;
@@ -1403,6 +1404,7 @@ pmore(char *fpath, int promptend)
 		}
 		break;
 
+	    case MFDISP_MOVIE_PLAYING_OLD:
 	    case MFDISP_MOVIE_PLAYING:
 		{
 		    int w = t_columns - 1;
@@ -1417,13 +1419,24 @@ pmore(char *fpath, int promptend)
 		    /* user did not hit anything.
 		     * play next frame.
 		     */
-		    if(!mf_movieNextFrame(&frameclk))
+		    if(moviemode == MFDISP_MOVIE_PLAYING)
 		    {
-			/* nothing more */
-			moviemode = MFDISP_MOVIE_YES;
+			if(!mf_movieNextFrame(&frameclk))
+			    moviemode = MFDISP_MOVIE_YES; // nothing more
 		    }
-		} else
-		    moviemode = MFDISP_MOVIE_YES;
+		    else if(moviemode == MFDISP_MOVIE_PLAYING_OLD)
+		    {
+			if(mf_viewedAll())
+			    moviemode = MFDISP_MOVIE_NO;
+			else
+			    PMORE_UINAV_FORWARDPAGE();
+		    }
+		} else {
+		    if(moviemode == MFDISP_MOVIE_PLAYING)
+			moviemode = MFDISP_MOVIE_YES;
+		    else if(moviemode == MFDISP_MOVIE_PLAYING_OLD)
+			moviemode = MFDISP_MOVIE_NO;
+		}
 		continue;
 	}
 #endif
@@ -1612,7 +1625,7 @@ pmore(char *fpath, int promptend)
 		mf_backward(1);
 		break;
 	    case 'j': case 'J':
-		PMORE_UINAV_FORWARLINE();
+		PMORE_UINAV_FORWARDLINE();
 		break;
 
 	    case Ctrl('F'):
@@ -1643,7 +1656,7 @@ pmore(char *fpath, int promptend)
 			(promptend == 2 && (ch == '\r' || ch == '\n')))
 		    flExit = 1, retval = READ_NEXT;
 		else
-		    PMORE_UINAV_FORWARLINE();
+		    PMORE_UINAV_FORWARDLINE();
 		break;
 
 	    case ' ':
@@ -1816,6 +1829,23 @@ pmore(char *fpath, int promptend)
 		    moviemode = MFDISP_MOVIE_PLAYING;
 		    mf_movieNextFrame(&frameclk);
 		    MFDISP_DIRTY();
+		} 
+		else if (moviemode == MFDISP_MOVIE_NO)
+		{
+		    static char buf[10]="1";
+		    move(b_lines-1, 0);
+		    getdata_buf(b_lines - 1, 0, 
+			    "�o���O�w�����ʵe�ɮ榡�A"
+			    "�Y�n��������п�J����t��(��쬰��): ",
+			    buf, 8, LCECHO);
+		    if(buf[0])
+		    {
+			sscanf(buf, "%f", &frameclk);
+			if(frameclk < 0.1f)
+			    frameclk = 0.1f;
+			moviemode = MFDISP_MOVIE_PLAYING_OLD;
+			MFDISP_DIRTY();
+		    }
 		}
 		break;
 #endif
-- 
cgit v1.2.3