OSDN Git Service

ネットワーク関連。ゲーム終了後もキャラクタ設定が保持されるようになった。
author西田 耀 <hikarupsp@users.sourceforge.jp>
Fri, 6 Sep 2013 12:09:19 +0000 (21:09 +0900)
committer西田 耀 <hikarupsp@users.sourceforge.jp>
Fri, 6 Sep 2013 12:09:19 +0000 (21:09 +0900)
また、ユーザー設定消去までの時間を3分に延長した。

www/auth.php
www/corelib/coresubc.js
www/header.php
www/stage/cselect.js

index b59eb44..4230f37 100644 (file)
@@ -138,14 +138,21 @@ if(isset($_GET['action'])){
                                }
                        }
                } else if(strcmp($action, 'chstg') == 0){
-                               //ステージ移動
-                               if(!isset($_GET['id'])){
-                                       exit("eee");
-                               }
-                               $id = $_GET['id'];
-                               //deleteUserStageObjectAll($db, $id);
-                               updateUserStage($db, $id, $name);
-                               exit("success");
+                       //ステージ移動
+                       if(!isset($_GET['id'])){
+                               exit("eee");
+                       }
+                       $id = $_GET['id'];
+                       //deleteUserStageObjectAll($db, $id);
+                       updateUserStage($db, $id, $name);
+                       exit("success");
+               } else if(strcmp($action, 'chcharacter') == 0){
+                       if(!isset($_GET['id'])){
+                               exit("eee");
+                       }
+                       $id = $_GET['id'];
+                       updateUserCharacterClass($db,$id,$name);
+                       exit("success");
                }
        }
 }
@@ -170,7 +177,7 @@ function responseNewUser($db, $userID)
 {
        updateUserTimestamp($db, $userID);
        updateUserStage($db, $userID, DEFAULT_START_STAGE);
-       exit("[" . $userID . "," . getTimeStampMs() . ",\"" . DEFAULT_START_STAGE . "\", 10]");
+       exit("[" . $userID . "," . getTimeStampMs() . ",\"" . DEFAULT_START_STAGE . "\", 10, null]");
 }
 
 function responseExistUser($db, $userID, $stageName)
@@ -179,11 +186,11 @@ function responseExistUser($db, $userID, $stageName)
        $ts -= getTimeStampMs();
        if(-$ts < USER_ALIVE_TIME_MS){
                // info == 11: すでにユーザーがログインしている。ログインできない。
-               exit("[" . $userID . "," . getTimeStampMs() . ",\"" . $stageName . "\", 11];");
+               exit("[" . $userID . "," . getTimeStampMs() . ",\"" . $stageName . "\", 11, \"" . getUserCharacterClass($db, $userID) . "\"];");
        }
        deleteUserStageObjectAll($db, $userID);
        updateUserTimestamp($db, $userID);
-       exit("[" . $userID . "," . getTimeStampMs() . ",\"" . $stageName . "\", 10]");
+       exit("[" . $userID . "," . getTimeStampMs() . ",\"" . $stageName . "\", 10, \"" . getUserCharacterClass($db, $userID) . "\"]");
 }
 
 //
@@ -222,6 +229,38 @@ function getUserStage($db, $userID)
        return $stgName;
 }
 
+function updateUserCharacterClass($db, $userID, $className)
+{
+       $stmt = $db->prepare(QUERY_UPDATE_USER_CCLASS);
+       $stmt->bind_param(QUERY_UPDATE_USER_CCLASS_TYPES, $className, $userID);
+       $stmt->execute();
+       //エラーチェック省略
+       if($stmt->errno != 0){
+               exit("error573");
+       }
+       $stmt->close();
+}
+
+function getUserCharacterClass($db, $userID)
+{
+       $className = "unknown";
+       $stmt = $db->prepare(QUERY_SELECT_USER_CCLASS);
+       $stmt->bind_param(QUERY_SELECT_USER_CCLASS_TYPES, $userID);
+       $stmt->execute();
+       if($stmt->errno == 0){
+               //クエリ成功
+               $stmt->store_result();
+               // 結果の個数を確認
+               if($stmt->num_rows != 0){
+                       //結果格納
+                       $stmt->bind_result($className);
+                       $stmt->fetch();
+               }
+       }
+       $stmt->close();
+       return $className;
+}
+
 function deleteUserStageObjectAll($db, $userID)
 {
        $stmt = $db->prepare(QUERY_DELETE_USER_OBJECT_ALL);
index 8ed383f..a243635 100644 (file)
@@ -340,6 +340,12 @@ UserManager.prototype = {
                                alert("ID:" + result[0] + " でログインしました。");
                                mainManager.userID = result[0];
                                mainManager.timeStamp = result[1];
+                               if(result[4]){
+                                       var r = eval(result[4]);
+                                       if(r){
+                                               this.characterBaseClass = r;
+                                       }
+                               }
                                mainManager.loadStageFromNetwork(result[2]);
                                return;
                        }
index 1946f81..8d33e3f 100644 (file)
@@ -31,6 +31,10 @@ define("QUERY_SELECT_USER_TIMESTAMP", "SELECT lastResponseTimestamp from authUse
 define("QUERY_SELECT_USER_TIMESTAMP_TYPES", "i");
 define("QUERY_DELETE_OFFLINE_USER", "DELETE from authUserTable WHERE lastResponseTimestamp<=?");
 define("QUERY_DELETE_OFFLINE_USER_TYPES", "i");
+define("QUERY_SELECT_USER_CCLASS", "SELECT userCharacterBaseClass from authUserTable where id=?");
+define("QUERY_SELECT_USER_CCLASS_TYPES", "i");
+define("QUERY_UPDATE_USER_CCLASS", "UPDATE authUserTable SET userCharacterBaseClass=? where id=?");
+define("QUERY_UPDATE_USER_CCLASS_TYPES", "si");
 //SQL文 for stageObjectTable
 define("QUERY_ADD_OBJECT", "insert into stageObjectTable (locationX, locationY, velocityX, velocityY, stageName, className, objectAttribute, constructorArgs, ownerUserID, modifiedTimestamp, addedTimestamp) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
 define("QUERY_ADD_OBJECT_TYPES", "ddddssssiii");
@@ -57,7 +61,7 @@ define("DEFAULT_START_STAGE", "cselect");
 define("OBJECT_ALIVE_TIME_MS", 2000);
 define("OBJECT_DELETE_TIME_MS", 30000);
 define("USER_ALIVE_TIME_MS", 2000);
-define("USER_DELETE_TIME_MS", 30000);
+define("USER_DELETE_TIME_MS", 180000);
 
 function escapeMySQLArgumentString(&$str)
 {
index 3fcfcb6..2e29ce8 100644 (file)
@@ -21,8 +21,11 @@ stage.runStage = function(){
                        sw.enableCancel = false;
                        mainManager.addWidget(sw);
                } else{
-                       //次のステージへ移動
+                       //キャラクターを設定
                        mainManager.userManager.characterBaseClass = retv[0].characterBaseClass;
+                       //データベースに設定を反映
+                       mainManager.networkManager.sendRequestSync("GET", URL_PCD_Auth + "?action=chcharacter&id=" + mainManager.userID + "&name=" + retv[0].characterBaseClass.prototype.className, null);
+                       //次のステージへ移動
                        mainManager.loadStageFromNetwork("onieasy");
                }
        };