OSDN Git Service

implement \x[noclear]
authorShyouzou Sugitani <shy@users.sourceforge.jp>
Sun, 20 Jan 2013 12:24:10 +0000 (21:24 +0900)
committerShyouzou Sugitani <shy@users.sourceforge.jp>
Sun, 20 Jan 2013 12:24:10 +0000 (21:24 +0900)
ChangeLog
lib/ninix/sakura.py
lib/ninix/script.py

index b9e9276..9afabf7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+Sun January 20 2013   Shyouzou Sugitani <shy@users.sourceforge.jp>
+       * SakuraScriptの\x[noclear]を実装した.
+
 Wed January 16 2013   Shyouzou Sugitani <shy@users.sourceforge.jp>
        * サーフェスエイリアス用の正規表現を修正した.
 
index bb34df5..ee09060 100644 (file)
@@ -81,10 +81,11 @@ class Sakura:
     PAUSE_TIMEOUT  = 30  # [sec]
     SILENT_TIME    = 15  # [sec]
     # script modes
-    BROWSE_MODE = 1
-    SELECT_MODE = 2
-    PAUSE_MODE  = 3
-    WAIT_MODE   = 4 
+    BROWSE_MODE        = 1
+    SELECT_MODE        = 2
+    PAUSE_MODE         = 3
+    WAIT_MODE          = 4 
+    PAUSE_NOCLEAR_MODE = 5
     # script origins
     FROM_SSTP_CLIENT = 1
     FROM_GHOST       = 2
@@ -464,7 +465,7 @@ class Sakura:
         return self.__running
 
     def is_paused(self):
-        return self.script_mode == self.PAUSE_MODE
+        return self.script_mode in {self.PAUSE_MODE, self.PAUSE_NOCLEAR_MODE}
 
     def is_talking(self):
         return int(bool(self.processed_script or self.processed_text))
@@ -842,6 +843,8 @@ class Sakura:
             self.balloon.clear_text_all()
             self.balloon.hide_all()
             self.script_side = 0
+        elif self.script_mode == self.PAUSE_NOCLEAR_MODE:
+            self.script_mode = self.BROWSE_MODE
         elif button == 1 and click == 1:
             self.raise_all()
         if self.vanished:
@@ -1327,7 +1330,7 @@ class Sakura:
             self.old_otherghostname = otherghostname
         if not self.__running:
             pass
-        elif self.script_mode == self.PAUSE_MODE:
+        elif self.script_mode in {self.PAUSE_MODE, self.PAUSE_NOCLEAR_MODE}:
             ##if idle > self.PAUSE_TIMEOUT:
             ##    self.script_mode = self.BROWSE_MODE
             pass
@@ -1701,7 +1704,10 @@ class Sakura:
 
     def __yen_x(self, args):
         if self.script_mode == self.BROWSE_MODE:
-            self.script_mode = self.PAUSE_MODE
+            if len(args) > 0 and self.expand_meta(args[0]) == 'noclear':
+                self.script_mode = self.PAUSE_NOCLEAR_MODE
+            else:
+                self.script_mode = self.PAUSE_MODE
 
     def __yen_a(self, args):
         self.start_script(self.getaistringrandom())
index 423a6ec..0639774 100644 (file)
@@ -196,7 +196,7 @@ class Parser:
                 self.script.append((SCRIPT_TEXT, tuple(text), self.column))
                 text = []
             if lexeme in ['\\a', '\\c', '\\e', '\\t', '\\_e',
-                          '\\v', '\\x', '\\y', '\\z', '\\_q',
+                          '\\v', '\\y', '\\z', '\\_q',
                           '\\4', '\\5', '\\6', '\\7',
                           '\\2', '\\*', '\\-', '\\+', '\\_+',
                           '\\_n', '\\_V', '\\__c', '\\__t',
@@ -229,7 +229,7 @@ class Parser:
                             '\\3', '\\8', '\\9']:
                 argument = self.read_sbra_text()
                 self.script.append((SCRIPT_TAG, lexeme, argument, self.column))
-            elif lexeme in ['\\n']:
+            elif lexeme in ['\\n', '\\x']:
                 if self.tokens and self.tokens[0][0] == TOKEN_OPENED_SBRA:
                     argument = self.read_sbra_text()
                     self.script.append((SCRIPT_TAG, lexeme, argument,