OSDN Git Service

コマンド受信時に落ちる問題が直っていなかったのを修正
authorh2so5 <h2so5@git.sourceforge.jp>
Thu, 13 Sep 2012 15:50:13 +0000 (00:50 +0900)
committerh2so5 <h2so5@git.sourceforge.jp>
Thu, 13 Sep 2012 15:50:13 +0000 (00:50 +0900)
チャットコマンドにダイス機能を追加

client/Client.cpp
client/bin/cards/textchat/main.js

index e202dc0..e61878d 100644 (file)
@@ -250,12 +250,13 @@ void Client::Close()
 std::shared_ptr<Command> Client::PopCommand()
 {
     boost::mutex::scoped_lock lock(mutex_);
-       std::shared_ptr<Command> command;
+       std::shared_ptr<Command> command_ptr;
        if (!command_queue_.empty()) {
-               command = std::make_shared<Command>(command_queue_.front());
+               Command command = command_queue_.front();
+               command_ptr = std::make_shared<Command>(command);
                command_queue_.pop();
        }
-       return command;
+       return command_ptr;
 }
 
 bool Client::command_empty()
index 96933ce..8002336 100644 (file)
@@ -94,6 +94,21 @@ Player.onLogout = function(player) {
 // チャットメッセージ送信
 InputBox.onEnter = function (text) {
 
+       //サイコロ用
+       var dice_parsed_text = text.match(/^\/(\d+)[Dd](\d+)/)
+       if (dice_parsed_text) {
+               var time = dice_parsed_text[1]
+        var size = dice_parsed_text[2]
+        var msg = "【ダイス /" + time + "D" + size + "】\n "
+        for (var i = 0; i < time; i++) {
+               msg += Number.random(1, size) + ", "
+        }
+        
+        var msgObject = { body: msg };
+        Network.sendAll(msgObject);
+               return;
+       }
+
     // コマンドを解析
     var parsed_text = text.match(/^\/(\w{1,8})\s?(\S*)/)
     if (parsed_text) {
@@ -117,13 +132,19 @@ InputBox.onEnter = function (text) {
             case "escape":
                 Player.escape();
                 break;
+                
+            // リロード
             case "reload":
                 Model.rebuild();
                 break;
+                
+            // システム
             case "system":
                 var msgObject = { system: args.trim() };
                 Network.sendAll(msgObject);
                 break;
+                
+            // プライベート
             case "private":
                 args.trim();
                 var tok = args.split(" ");