for(var sp in this.stageObjectList)
{
//\8ae\8eíStageObject\82Ìdraw\82ð\8eÀ\8ds
- for(i = 0, li = this.stageObjectList[sp].length; i < li; i++){
+ for(var i = 0, li = this.stageObjectList[sp].length; i < li; i++){
var stgobj = this.stageObjectList[sp][i];
var px = stgobj.origin.x - x, py = stgobj.origin.y - y;
//\8aÖ\90\94f\82ªfalse\82ð\95Ô\82µ\82½\8fê\8d\87\81A\82»\82±\82Å\8eÀ\8ds\82ð\92\86\92f\82µ\82Äfalse\82ð\95Ô\82·\81B
for(var sp in this.stageObjectList)
{
- for(i = 0; i < this.stageObjectList[sp].length; i++){
+ for(var i = 0; i < this.stageObjectList[sp].length; i++){
var stgobj = this.stageObjectList[sp][i];
if(!f(stgobj)) return false;
//\8e©\95ª\8e©\90g\82ª\8f\8a\97L\82·\82é\83I\83u\83W\83F\83N\83g\82·\82×\82Ä\82É\91Î\82µ\82Ä\8aÖ\90\94f\82ð\93K\97p\82·\82é
for(var sp in this.stageObjectList)
{
- for(i = 0; i < this.stageObjectList[sp].length; i++){
+ for(var i = 0; i < this.stageObjectList[sp].length; i++){
var stgobj = this.stageObjectList[sp][i];
if(stgobj.ownerUID == this.manager.userID){
f(stgobj);
}
},
getGlobalStageObject: function(objid){
- for(i = 0; i < this.globalStageObjectList.length; i++){
+ for(var i = 0; i < this.globalStageObjectList.length; i++){
if(objid == this.globalStageObjectList[i].objectID){
return this.globalStageObjectList[i];
}
}
return null;
},
+ appendSyncDataTo: function(data){
+ for(var i = 0; i < this.globalStageObjectList.length; i++){
+ var anObj = this.globalStageObjectList[i];
+ if(anObj.ownerUID == this.manager.userID){
+ data.append(i, anObj.objectID + "|" + anObj.origin.x + "|" + anObj.origin.y + "|" + anObj.movingSpeed.x + "|" + anObj.movingSpeed.y+ "|" + anObj.attribute);
+ }
+ }
+ },
+ appendInitialSyncDataTo: function(data){
+ for(var i = 0; i < this.globalStageObjectList.length; i++){
+ anObj = this.globalStageObjectList[i];
+ data.append(i, anObj.origin.x.toString() + "|" + anObj.origin.y.toString() + "|" + anObj.movingSpeed.x.toString() + "|" + anObj.movingSpeed.y.toString() + "|" + anObj.className + "|" + parseArrayToStringSource(anObj.attribute) + "|" + parseArrayToStringSource(anObj.constructorArgs));
+ }
+ },
};
this.attribute = new Array();
this.constructorArgs = args;
this.opacity = 1.0; // \93§\96¾\93x\81@(\93§\96¾) 0.0 \81` 1.0 (\95s\93§\96¾)
- /*
- //\8fã\82Ì\8bL\8fq\82ð\88È\89º\82Ì\82æ\82¤\82É\82·\82ê\82Î\83R\83\93\83X\83g\83\89\83N\83^\82Ì\88ø\90\94\82ð\93ñ\82Â\82Ü\82Å\82É\8cÀ\82é\95K\97v\82ª\82È\82\82È\82é
- // \8fC\90³\8d\80\96Ú: core.js
- // StageObjectClass.js
-
- this.constructorArgs = arguments.slice(1); //arguments\82Ì\82¤\82¿ownerStage\82Í\82¢\82ç\82È\82¢\82Ì\82Å\8dí\82é
-
- */
this.ownerUID = 0;
this.objectID = 0;
//\8eÀ\91Ì\82ð\8e\9d\82½\82È\82¢\81A\82Â\82Ü\82è\8fÕ\93Ë\94»\92è\82ª\95K\97v\82È\82¢\8fê\8d\87\82Ítrue.
},
draw: function(x, y){
//\8eÀ\8dÛ\82Ì\95`\89æ\82Ì\82Ý\82ð\8ds\82¤\81B\8cv\8eZ\82Ítick\82Å\8ds\82¤\81B
-
+ //\83\86\81[\83U\81[\96¼\82ð\95\\8e¦
+ if(this.ownerUID != 0){
+ this.ownerStage.mainContext.save();
+ this.ownerStage.mainContext.fillStyle = "rgba(255,255,255,0.5)";
+ this.ownerStage.mainContext.strokeStyle = "rgba(0, 0, 0, 0.5)";
+ drawText(this.ownerStage.mainContext, this.ownerStage.manager.userManager.getUserNameByUID(this.ownerUID), x, y - 20);
+ this.ownerStage.mainContext.restore();
+ }
//\8fÕ\93Ë\83}\83b\83v\82É\95`\89æ
if(this.ownerStage.className == "HorizonalScrollStageClass"){
strokeRect(this.ownerStage.collisionMapContext, x, y, this.size.x, this.size.y);
//定数
//
-var URL_PCD_Root = "http://localhost/pcd2013dev/www/";
+//var URL_PCD_Root = "http://localhost/pcd2013dev/www/";
//var URL_PCD_Root = "http://192.168.6.242/pcd2013dev/www/";
-//var URL_PCD_Root = "http://192.168.0.3/PCD2013GSCL/www/";
+var URL_PCD_Root = "http://192.168.0.3/PCD2013GSCL/www/";
//var URL_PCD_Root = "http://192.168.6.242/pcd2013hikarupsp/pcd2013dev/www/";
var URL_PCD_Auth = URL_PCD_Root + "auth.php";
var URL_PCD_Audio = URL_PCD_Root + "audio/";
//
function GameManager(){
- //ユーザーID
this.userID = 0;
//サブマネージャーの設定
- this.networkManager = new NetworkManager();
- this.UIManager = new UIManager();
+ this.networkManager = new NetworkManager(this);
+ this.UIManager = new UIManager(this);
+ this.userManager = new UserManager(this);
//必要最低限のCanvasとコンテキストの設定
this.mainCanvas = createCanvas("MainCanvas", 640, 480, 0, 0, 1, "MainArea");
this.mainCanvas.style.border = "solid 1px";
this.runningWidghets = [];
//タイマーカウントを初期化
this.tickCount = 0;
- this.timeStamp = 0;
//タイマーカウントの秒あたりの回数を設定
this.tickPerSecond = 60;
- this.updateIntervalMs = 128;
// pauseStage()が呼ばれたときにnullじゃなくなる
this.stagePausedFunction = null;
//timerTick
timerTickEventListener.manager = this;
window.setInterval(timerTickEventListener, 1000/this.tickPerSecond);
- timeStampTimerTickEventListener.manager = this;
- window.setInterval(timeStampTimerTickEventListener, this.updateIntervalMs);
}
GameManager.prototype = {
timerTick: function(){
w.draw();
}
},
- timeStampTimerTick: function(){
- //ネットワーク同期を司る
- //サーバーとの同期カウンタ・タイマー
- this.timeStamp += this.updateIntervalMs;
- //サーバーに更新情報をアップロード
- if(this.userID != 0){
- //ユーザーIDが設定されている=オンライン状態
- request = this.networkManager.CreateRequestObject();
- //同期モード
- request.open('POST', URL_PCD_Root + "update.php?uid=" + this.userID + "&action=refresh", false);
- request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- //送信データを準備
- aData = new RequestData();
- for(i = 0; i < this.runningStage.globalStageObjectList.length; i++){
- anObj = this.runningStage.globalStageObjectList[i];
- if(anObj.ownerUID == this.userID){
- aData.append(i, anObj.objectID + "|" + anObj.origin.x + "|" + anObj.origin.y + "|" + anObj.movingSpeed.x + "|" + anObj.movingSpeed.y+ "|" + anObj.attribute);
- }
- }
- //送信
- this.networkManager.RequestObjectDisableCache(request);
- request.send(aData.data);
- //レスポンス確認
- if(request.status == 0){
- alert("ネットワークにアクセスできません。" + this.status + ":" + this.statusText);
- }else if((200 <= request.status && request.status < 300) || (request.status == 304)){
- var res = request.responseText;
- if(isValidResponseText(res)){
- var retArray = eval(res);
- this.timeStamp = retArray[0];
- //削除処理
- for(var i = 0; i < retArray[3].length; i++){
- this.debugOut("Network:removeObject:ObjectID=" + retArray[3][i] + "\n");
- var anObject = this.runningStage.getGlobalStageObject(retArray[3][i]);
- if(anObject){
- this.runningStage.removeStageObject(anObject);
- }
- }
- //更新処理
- for(var i = 0; i < retArray[1].length; i++){
- //this.debugOut("Network:refreshObject:ObjectID=" + retArray[1][i] + "\n");
- anArray = retArray[1][i];
- var anObject = this.runningStage.getGlobalStageObject(anArray[0]);
- if(anObject){
- anObject.origin.x = anArray[1];
- anObject.origin.y = anArray[2];
- anObject.movingSpeed.x = anArray[3];
- anObject.movingSpeed.y = anArray[4];
- }
- }
- //追加処理
- for(var i = 0; i < retArray[2].length; i++){
- anArray = retArray[2][i];
- var args = eval(anArray[7]);
- var anObject = eval("new " + anArray[5] + "(this.runningStage, args);");
- if(anObject){
- this.debugOut("Network:addObject:ObjectID=" + anArray[0] + "\n");
- anObject.objectID = anArray[0];
- anObject.origin.x = anArray[1];
- anObject.origin.y = anArray[2];
- anObject.movingSpeed.x = anArray[3];
- anObject.movingSpeed.y = anArray[4];
- this.runningStage.addStageObject(anObject, true);
- }
- }
- }
- }else{
- alert("サーバーがエラーを返しました。" + this.status + ":" + this.statusText);
- }
-
- }
- },
addWidghet: function(w){
this.runningWidghets.push(w);
},
stage.debugContext = this.debugContext
//GameStage側の初期化処理を行わせる。
stage.runStage();
- //サーバーに追加オブジェクトの情報をアップロード
- if(this.userID != 0){
- request = this.networkManager.CreateRequestObject();
- //同期モード
- request.open('POST', URL_PCD_Root + "update.php?uid=" + this.userID + "&action=add", false);
- request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- //送信データを準備
- aData = new RequestData();
- for(i = 0; i < stage.globalStageObjectList.length; i++){
- anObj = stage.globalStageObjectList[i];
- aData.append(i, anObj.origin.x.toString() + "|" + anObj.origin.y.toString() + "|" + anObj.movingSpeed.x.toString() + "|" + anObj.movingSpeed.y.toString() + "|" + anObj.className + "|" + parseArrayToStringSource(anObj.attribute) + "|" + parseArrayToStringSource(anObj.constructorArgs));
- }
- //送信
- this.networkManager.RequestObjectDisableCache(request);
- request.send(aData.data);
- //レスポンス確認
- if(request.status == 0){
- alert("ネットワークにアクセスできません。" + this.status + ":" + this.statusText);
- }else if((200 <= request.status && request.status < 300) || (request.status == 304)){
- var res = request.responseText;
- if(isValidResponseText(res)){
- var retArray = eval(res);
- this.timeStamp = retArray[0];
- //割り当てられたobjectIDを設定する
- for(var i = 0; i < stage.globalStageObjectList.length; i++){
- stage.globalStageObjectList[i].objectID = retArray[1][i];
- }
- //すでにステージ上にある他のユーザーのオブジェクトを追加する
- for(var i = 0; i < retArray[2].length; i++){
- var anArray = retArray[2][i];
- var args = eval(anArray[7]);
- var anObject = eval("new " + anArray[5] + "(stage, args);");
- if(anObject){
- this.debugOut("Network:addObject:ObjectID=" + anArray[0] + "\n");
- anObject.objectID = anArray[0];
- anObject.origin.x = anArray[1];
- anObject.origin.y = anArray[2];
- anObject.movingSpeed.x = anArray[3];
- anObject.movingSpeed.y = anArray[4];
- anObject.attribute = eval(anArray[6]);
- stage.addStageObject(anObject, true);
- }
- }
- }
- }else{
- alert("サーバーがエラーを返しました。" + this.status + ":" + this.statusText);
- }
-
- }
+ //ネットワーク同期初期化
+ this.networkManager.joinStage(stage);
//runningStageに登録することで、イベントの通知が開始され、GameStageは実行状態に入る。
- mainManager.runningStage = stage;
+ this.runningStage = stage;
},
pauseStage: function(func){
//ステージの実行を一時停止する。一時停止中、funcに指定された関数が毎tick毎に呼ばれる
}
},
loadStageFromLocal: function(code){
+ //各種パスをローカル用に変更
URL_PCD_Root = "./";
URL_PCD_Auth = URL_PCD_Root + "auth.php";
URL_PCD_Audio = URL_PCD_Root + "audio/";
URL_PCD_Stage = URL_PCD_Root + "stage/";
+
var stage = eval(code);
mainManager.runStage(stage);
},
//unknown
this.debugOut("Browser:Unknown\n");
}
- //this.debugOut(userAgent + "::" + appVersion + "\n");
//描画コンテキストからHTML5対応チェック
if(!this.mainCanvas || !this.mainCanvas.getContext){
//HTML5未対応の場合
return true;
},
setBackgroundMusic: function(name){
- //nameは拡張子を含まない
if(this.backgroundMusic){
//再生していたら止める
this.backgroundMusic.pause();
{
timerTickEventListener.manager.timerTick(event);
}
-
-function timeStampTimerTickEventListener(event)
-{
- timerTickEventListener.manager.timeStampTimerTick(event);
-}
//背景をfillStyle
//前景をstrokeStyleで塗りつぶした文字列を描画する
//塗りつぶし高さは20px固定
- //fillTextの座標は文字列の左下!
+ //座標は文字列の左上の座標となる
textsize = gcontext.measureText(text);
gcontext.fillRect(x, y, textsize.width, 20);
gcontext.save();
gcontext.fillStyle = gcontext.strokeStyle;
+ //fillTextの座標は文字列の左下!
gcontext.fillText(text, x, y + 20 - 1);
gcontext.restore();
}
//
//これらのクラスとメインマネージャーは直接プロパティを参照し合うので注意
-function NetworkManager(){
-
+function NetworkManager(mManager){
+ this.timeStamp = 0;
+ this.syncIntervalMs = 128;
+
+ window.setInterval(this.syncTimerTickEventListener, this.syncIntervalMs);
}
NetworkManager.prototype = {
//from http://hakuhin.jp/js/xmlhttprequest.html
rq.setRequestHeader('If-Modified-Since', 'Thu, 01 Jun 1970 00:00:00 GMT');
},
+ sync: function(){
+ //ネットワーク同期
+ //サーバーに更新情報をアップロード
+ if(mainManager.userID != 0){
+ //ユーザーIDが設定されている=オンライン状態
+ request = this.CreateRequestObject();
+ //同期モード
+ request.open('POST', URL_PCD_Root + "update.php?uid=" + mainManager.userID + "&action=refresh", false);
+ request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ //送信データを準備
+ aData = new RequestData();
+ if(mainManager.runningStage){
+ mainManager.runningStage.appendSyncDataTo(aData);
+ }
+ //送信
+ this.RequestObjectDisableCache(request);
+ request.send(aData.data);
+ //レスポンス確認
+ if(request.status == 0){
+ alert("ネットワークにアクセスできません。" + this.status + ":" + this.statusText);
+ } else if((200 <= request.status && request.status < 300) || (request.status == 304)){
+ var res = request.responseText;
+ if(isValidResponseText(res)){
+ var retArray = eval(res);
+ this.timeStamp = retArray[0];
+ //削除処理
+ for(var i = 0; i < retArray[3].length; i++){
+ mainManager.debugOut("Network:removeObject:ObjectID=" + retArray[3][i] + "\n");
+ var anObject = mainManager.runningStage.getGlobalStageObject(retArray[3][i]);
+ if(anObject){
+ mainManager.runningStage.removeStageObject(anObject);
+ }
+ }
+ //更新処理
+ for(var i = 0; i < retArray[1].length; i++){
+ //mainManager.debugOut("Network:refreshObject:ObjectID=" + retArray[1][i] + "\n");
+ var anArray = retArray[1][i];
+ var anObject = mainManager.runningStage.getGlobalStageObject(anArray[0]);
+ if(anObject){
+ anObject.origin.x = anArray[1];
+ anObject.origin.y = anArray[2];
+ anObject.movingSpeed.x = anArray[3];
+ anObject.movingSpeed.y = anArray[4];
+ }
+ }
+ //追加処理
+ for(var i = 0; i < retArray[2].length; i++){
+ var anArray = retArray[2][i];
+ var args = eval(anArray[7]);
+ var anObject = eval("new " + anArray[5] + "(mainManager.runningStage, args);");
+ if(anObject){
+ mainManager.debugOut("Network:addObject:ObjectID=" + anArray[0] + "\n");
+ anObject.objectID = anArray[0];
+ anObject.ownerUID = anArray[8];
+ anObject.origin.x = anArray[1];
+ anObject.origin.y = anArray[2];
+ anObject.movingSpeed.x = anArray[3];
+ anObject.movingSpeed.y = anArray[4];
+ mainManager.runningStage.addStageObject(anObject, true);
+ }
+ }
+ //ユーザーリスト
+ mainManager.userManager.userList = retArray[4];
+ return;
+ }
+ } else{
+ alert("サーバーがエラーを返しました。" + request.status + ":" + request.statusText);
+ }
+ }
+ },
+ joinStage: function(stage){
+ //サーバーに追加オブジェクトの情報をアップロード
+ if(mainManager.userID != 0){
+ request = this.CreateRequestObject();
+ //同期モード
+ request.open('POST', URL_PCD_Root + "update.php?uid=" + mainManager.userID + "&action=add", false);
+ request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ //送信データを準備
+ aData = new RequestData();
+ stage.appendInitialSyncDataTo(aData);
+ //送信
+ this.RequestObjectDisableCache(request);
+ request.send(aData.data);
+ //レスポンス確認
+ if(request.status == 0){
+ alert("ネットワークにアクセスできません。" + this.status + ":" + this.statusText);
+ }else if((200 <= request.status && request.status < 300) || (request.status == 304)){
+ var res = request.responseText;
+ if(isValidResponseText(res)){
+ var retArray = eval(res);
+ this.timeStamp = retArray[0];
+ //割り当てられたobjectIDを設定する
+ for(var i = 0; i < stage.globalStageObjectList.length; i++){
+ stage.globalStageObjectList[i].objectID = retArray[1][i];
+ }
+ //すでにステージ上にある他のユーザーのオブジェクトを追加する
+ for(var i = 0; i < retArray[2].length; i++){
+ var anArray = retArray[2][i];
+ var args = eval(anArray[7]);
+ var anObject = eval("new " + anArray[5] + "(stage, args);");
+ if(anObject){
+ mainManager.debugOut("Network:addObject:ObjectID=" + anArray[0] + "\n");
+ anObject.objectID = anArray[0];
+ anObject.ownerUID = anArray[8];
+ anObject.origin.x = anArray[1];
+ anObject.origin.y = anArray[2];
+ anObject.movingSpeed.x = anArray[3];
+ anObject.movingSpeed.y = anArray[4];
+ anObject.attribute = eval(anArray[6]);
+ stage.addStageObject(anObject, true);
+ }
+ }
+ }
+ }else{
+ alert("サーバーがエラーを返しました。" + this.status + ":" + this.statusText);
+ }
+
+ }
+ },
+ syncTimerTickEventListener: function(event){
+ mainManager.networkManager.sync();
+ },
}
-function UIManager(){
+function UIManager(mManager){
//ユーザー入出力関連
//キーボード状態を格納するプロパティの設定
this.keyState = new Object();
}
-function UserDataManager(){
- //Not implemented.
- //ユーザーID
- this.userID = 0;
-
+function UserManager(mManager){
+ this.userList = {};
}
-
-UserDataManager.prototype = {
-
+UserManager.prototype = {
+ loginAs: function(userNameStr){
+ request = mainManager.networkManager.CreateRequestObject();
+
+ var i = userNameStr.indexOf("@");
+ if(i != -1){
+ //任意ステージの実行
+ var userName = userNameStr.substring(0, i);
+ var stageName = userNameStr.substring(i + 1);
+ request.open('GET', URL_PCD_Auth + "?action=devjoin&name=" + encodeURIComponent(userName) + "&stage=" + encodeURIComponent(stageName), false);
+ } else{
+ //通常モード
+ request.open('GET', URL_PCD_Auth + "?action=join&name=" + encodeURIComponent(mainManager.runningStage.authform.userName.value), false);
+ }
+ mainManager.networkManager.RequestObjectDisableCache(request);
+ request.send(null);
+
+ if(request.status == 0){
+ alert("ネットワークへのアクセスに失敗しました。");
+ }else if((200 <= request.status && request.status < 300) || (request.status == 304)){
+ if(isValidResponseText(request.responseText)){
+ result = eval(request.responseText);
+ if(result[3] == 0){
+ alert("ログインできません。データベース通信エラーです。");
+ return;
+ } else if(result[3] == 11){
+ alert("すでにその名前は使われています。他の名前を試してください。");
+ return;
+ } else if(result[3] == 10){
+ alert("ID:" + result[0] + " でログインしました。");
+ mainManager.userID = result[0];
+ mainManager.timeStamp = result[1];
+ mainManager.loadStageFromNetwork(result[2]);
+ return;
+ }
+ }
+ } else{
+ alert("サーバーがエラーを返しました。" + request.status + ":" + request.statusText);
+ }
+ },
+ getUserNameByUID: function(uid){
+ if(uid in this.userList){
+ return this.userList[uid];
+ }
+ return "";
+ },
}
//
}
-function NetworkManager(){
-
-}
-
function RequestData(){
//FormDataがIEで動かないので代替
this.data = "";
define("QUERY_ADD_OBJECT_TYPES", "ddddssssiii");
define("QUERY_DELETE_USER_OBJECT_ALL", "delete from stageObjectTable where ownerUserID=?");
define("QUERY_DELETE_USER_OBJECT_ALL_TYPES", "i");
-define("QUERY_SELECT_ADDED_OBJECT", "SELECT id, locationX, locationY, velocityX, velocityY, className, objectAttribute, constructorArgs FROM stageObjectTable WHERE stageName=? AND ownerUserID<>? AND addedTimestamp>? AND objectAttribute<>'Deleted'");
+define("QUERY_SELECT_ADDED_OBJECT", "SELECT id, locationX, locationY, velocityX, velocityY, className, objectAttribute, constructorArgs, ownerUserID FROM stageObjectTable WHERE stageName=? AND ownerUserID<>? AND addedTimestamp>? AND objectAttribute<>'Deleted'");
define("QUERY_SELECT_ADDED_OBJECT_TYPES", "sii");
define("QUERY_SELECT_UPDATED_OBJECT", "SELECT id, locationX, locationY, velocityX, velocityY, className, objectAttribute FROM stageObjectTable WHERE stageName=? AND ownerUserID<>? AND modifiedTimestamp>=? AND addedTimestamp<? AND objectAttribute<>'Deleted'");
define("QUERY_SELECT_UPDATED_OBJECT_TYPES", "siii");
define("QUERY_SELECT_DELETED_OBJECT_TYPES", "sii");
define("QUERY_UPDATE_STAGE_OBJECT", "UPDATE stageObjectTable SET locationX=?, locationY=?, velocityX=?, velocityY=?, objectAttribute=?, modifiedTimestamp=? WHERE stageName=? AND id=? AND objectAttribute<>'Deleted'");
define("QUERY_UPDATE_STAGE_OBJECT_TYPES", "ddddsisi");
-define("QUERY_SELECT_ALL_OTHER_USER_OBJECT", "SELECT id, locationX, locationY, velocityX, velocityY, className, objectAttribute, constructorArgs FROM stageObjectTable WHERE stageName=? AND ownerUserID<>? AND modifiedTimestamp>? AND objectAttribute<>'Deleted'");
+define("QUERY_SELECT_ALL_OTHER_USER_OBJECT", "SELECT id, locationX, locationY, velocityX, velocityY, className, objectAttribute, constructorArgs, ownerUserID FROM stageObjectTable WHERE stageName=? AND ownerUserID<>? AND modifiedTimestamp>? AND objectAttribute<>'Deleted'");
define("QUERY_SELECT_ALL_OTHER_USER_OBJECT_TYPES", "sii");
define("QUERY_CHECK_AND_SET_DELETED_OBJECT", "UPDATE stageObjectTable SET objectAttribute='Deleted', modifiedTimestamp=? WHERE modifiedTimestamp<=? AND objectAttribute<>'Deleted'");
define("QUERY_CHECK_AND_SET_DELETED_OBJECT_TYPES", "ii");
this.authSubmitButton.onclick = this.submitAuth;
};
stage.submitAuth = function(){
- request = mainManager.networkManager.CreateRequestObject();
-
- var i = mainManager.runningStage.authform.userName.value.indexOf("@");
- if(i != -1){
- //任意ステージの実行
- var userName = mainManager.runningStage.authform.userName.value.substring(0, i);
- var stageName = mainManager.runningStage.authform.userName.value.substring(i + 1);
- request.open('GET', URL_PCD_Auth + "?action=devjoin&name=" + encodeURIComponent(userName) + "&stage=" + encodeURIComponent(stageName), false);
- } else{
- //通常モード
- request.open('GET', URL_PCD_Auth + "?action=join&name=" + encodeURIComponent(mainManager.runningStage.authform.userName.value), false);
- }
- mainManager.networkManager.RequestObjectDisableCache(request);
- request.send(null);
- console.log("submit");
-
- if(request.status == 0){
- alert("ネットワークへのアクセスに失敗しました。");
- }else if((200 <= request.status && request.status < 300) || (request.status == 304)){
- //alert(this.responseText);
- if(request.responseText.charAt(0) != "["){
- alert(request.responseText);
- } else{
- result = eval(request.responseText);
- if(result[3] == 0){
- alert("ログインできません。データベース通信エラーです。");
- } else if(result[3] == 11){
- alert("すでにその名前は使われています。他の名前を試してください。");
- } else if(result[3] == 10){
- alert("ID:" + result[0] + " でログインしました。");
- mainManager.userID = result[0];
- mainManager.timeStamp = result[1];
- mainManager.loadStageFromNetwork(result[2]);
- } else{
- alert("不明なエラーです。");
- }
- }
- }else{
- alert("サーバーがエラーを返しました。");
- //console.log("NAK");
- }
+ mainManager.userManager.loginAs(mainManager.runningStage.authform.userName.value);
return false; //常に送信しない。
};
//元々定義されていた、疑似スーパークラス(prototype)の関数を呼び出す。
GameStage.prototype.stopStage.apply();
};
-stage.timerTick = function(){
-
-};
stage;
stage.runStage = function(){
PCDSLStageClass.prototype.runStage.apply(this, []);
var main = new MainCharacterClass(stage, [["kuma1.png","kuma2.png","kuma3.png", "kuma4.png", "kuma3.png", "kuma2.png"], ["kumaready.png"]]);
- main.size.x = 64;
- main.size.y=64;
main.origin.x = 50;
main.origin.y =0;
main.ownerUID = stage.manager.userID;
$result = $stmt->get_result();
for($i = 0; $i < $result->num_rows; $i++){
$tmpAry = $result->fetch_array(MYSQLI_NUM);
- array_push($retv2, "[" . $tmpAry[0] . "," . $tmpAry[1] . "," . $tmpAry[2] . "," . $tmpAry[3] . "," . $tmpAry[4] . ",\"" . $tmpAry[5] . "\",\"" . $tmpAry[6] . "\",\"" . $tmpAry[7] . "\"]");
+ array_push($retv2, "[" . $tmpAry[0] . "," . $tmpAry[1] . "," . $tmpAry[2] . "," . $tmpAry[3] . "," . $tmpAry[4] . ",\"" . $tmpAry[5] . "\",\"" . $tmpAry[6] . "\",\"" . $tmpAry[7] . "\"," . $tmpAry[8] . "]");
}
$stmt->close();
//retv[1]:更新リスト
array_push($retv3, $tmpAry[0]);
}
$stmt->close();
+ //retv[4]:ユーザーリスト
+ //userID, userName
+ $retv4 = array();
+ $stmt = $db->prepare("select id, name from authUserTable");
+ $stmt->execute();
+ if($stmt->errno != 0){
+ exit("error5673");
+ }
+ $result = $stmt->get_result();
+ for($i = 0; $i < $result->num_rows; $i++){
+ $tmpAry = $result->fetch_array(MYSQLI_NUM);
+ array_push($retv4, $tmpAry[0] . ":\"" . $tmpAry[1] . "\"");
+ }
+ $stmt->close();
//出力
echo("[");
echo(getTimeStampMs());
foreach($retv3 as $v){
echo($v . ",");
}
- echo("]]");
+ echo("],{");
+ foreach($retv4 as $v){
+ echo($v . ",");
+ }
+ echo("}]");
}
updateUserTimestamp($db, $uid);
exit();
$result = $stmt->get_result();
for($i = 0; $i < $result->num_rows; $i++){
$tmpAry = $result->fetch_array(MYSQLI_NUM);
- array_push($retary, "[" . $tmpAry[0] . "," . $tmpAry[1] . "," . $tmpAry[2] . "," . $tmpAry[3] . "," . $tmpAry[4] . ",\"" . $tmpAry[5] . "\",\"" . $tmpAry[6] . "\",\"" . $tmpAry[7] . "\"]");
+ array_push($retary, "[" . $tmpAry[0] . "," . $tmpAry[1] . "," . $tmpAry[2] . "," . $tmpAry[3] . "," . $tmpAry[4] . ",\"" . $tmpAry[5] . "\",\"" . $tmpAry[6] . "\",\"" . $tmpAry[7] . "\"," . $tmpAry[8] . "]");
}
$stmt->close();
$retstr = "[";