tyrano.plugin.kag.menu = {
tyrano : null,
kag : null,
snap : null,
init : function() {
},
showMenu : function(call_back) {
if (this.kag.layer.layer_event.css("display") == "none" && this.kag.stat.is_strong_stop != true) {
return false;
}
//wait中の時
if(this.kag.stat.is_wait == true){
return false;
}
var that = this;
this.kag.stat.is_skip = false;
this.kag.stat.is_auto = false;
this.kag.stat.is_auto_wait = false;
var layer_menu = this.kag.layer.getMenuLayer();
layer_menu.empty();
var button_clicked = false;
this.kag.html("menu", {
"novel" : $.novel
}, function(html_str) {
var j_menu = $(html_str);
layer_menu.append(j_menu);
layer_menu.find(".menu_skip").click(function(e) {
//スキップを開始する
layer_menu.html("");
layer_menu.hide();
if (that.kag.stat.visible_menu_button == true) {
$(".button_menu").show();
}
//nextOrder にして、
that.kag.stat.is_skip = true;
///処理待ち状態の時は、実行してはいけない
if (that.kag.layer.layer_event.css("display") == "none") {
//alert("今、スキップしない");
//that.kag.ftag.nextOrder();
} else {
//alert("スキップするよ");
that.kag.ftag.nextOrder();
}
e.stopPropagation();
});
layer_menu.find(".menu_close").click(function(e) {
layer_menu.hide();
if (that.kag.stat.visible_menu_button == true) {
$(".button_menu").show();
}
e.stopPropagation();
});
layer_menu.find(".menu_window_close").click(function(e) {
//ウィンドウ消去
that.kag.layer.hideMessageLayers();
layer_menu.hide();
if (that.kag.stat.visible_menu_button == true) {
$(".button_menu").show();
}
e.stopPropagation();
});
layer_menu.find(".menu_save").click(function(e) {
//連続クリック対策
if(button_clicked==true){
return;
}
button_clicked = true;
that.displaySave();
e.stopPropagation();
});
layer_menu.find(".menu_load").click(function(e) {
//連続クリック対策
if(button_clicked==true){
return;
}
button_clicked = true;
that.displayLoad();
e.stopPropagation();
});
//タイトルに戻る
layer_menu.find(".menu_back_title").click(function() {
that.kag.backTitle();
/*
if (!confirm($.lang("go_title"))) {
return false;
}
*/
//first.ks の *start へ戻ります
//location.reload();
});
$.preloadImgCallback(j_menu,function(){
layer_menu.fadeIn(300);
$(".button_menu").hide();
},that);
});
},
displaySave : function(cb) {
//セーブ画面作成
var that = this;
this.kag.stat.is_skip = false;
var array_save = that.getSaveData();
var array = array_save.data;
//セーブデータ配列
var layer_menu = that.kag.layer.getMenuLayer();
for (var i = 0; i < array.length; i++) {
array[i].num = i;
}
this.kag.html("save", {
array_save : array,
"novel" : $.novel
}, function(html_str) {
var j_save = $(html_str);
//フォントをゲームで指定されているフォントにする。
j_save.find(".save_list").css("font-family", that.kag.config.userFace);
j_save.find(".save_display_area").each(function() {
$(this).click(function(e) {
var num = $(this).attr("data-num");
that.snap = null;
var layer_menu = that.kag.layer.getMenuLayer();
layer_menu.hide();
layer_menu.empty();
if (that.kag.stat.visible_menu_button == true) {
$(".button_menu").show();
}
that.doSave(num,function(){
if(typeof cb=="function"){
cb();
}
});
});
});
//スマホの場合はボタンの上下でスクロールできるようにする
j_save.find(".button_smart").hide();
if($.userenv()!="pc"){
j_save.find(".button_smart").show();
j_save.find(".button_arrow_up").click(function(){
var now = j_save.find(".area_save_list").scrollTop();
var pos = now - 160;
layer_menu.find(".area_save_list").animate({scrollTop:pos},{queue:false});
});
j_save.find(".button_arrow_down").click(function(){
var now = j_save.find(".area_save_list").scrollTop();
var pos = now + 160;
j_save.find(".area_save_list").animate({scrollTop:pos},{queue:false});
});
}
var layer_menu = that.kag.layer.getMenuLayer();
that.setMenu(j_save,cb);
});
//背景素材挿入
/*
var j_menu_save_img =$("
");
j_menu_save_img.css("width",this.kag.config.scWidth);
j_menu_save_img.css("height",this.kag.config.scHeight);
j_save.append(j_menu_save_img);
*/
},
//セーブを実行する
doSave : function(num,cb) {
var array_save = this.getSaveData();
var data = {};
var that = this;
if (this.snap == null) {
//ここはサムネイルイメージ作成のため、callback指定する
this.snapSave(this.kag.stat.current_save_str, function() {
//現在、停止中のステータスなら、[_s]ポジションからセーブデータ取得
/*
if(that.snap.stat.is_strong_stop == true){
alert("ここではセーブできません");
return false;
}
*/
data = that.snap;
data.save_date = $.getNowDate() + " " + $.getNowTime();
array_save.data[num] = data;
$.setStorage(that.kag.config.projectID + "_tyrano_data", array_save, that.kag.config.configSave);
if(typeof cb=="function"){
//終わったタイミングでコールバックを返す
cb();
}
});
}else{
if(typeof cb=="function"){
//終わったタイミングでコールバックを返す
cb();
}
}
},
setQuickSave : function() {
var that = this;
var saveTitle = that.kag.stat.current_save_str;
that.kag.menu.snapSave(saveTitle, function() {
var data = that.snap;
data.save_date = $.getNowDate() + " " + $.getNowTime();
$.setStorage(that.kag.config.projectID + "_tyrano_quick_save", data, that.kag.config.configSave);
});
},
loadQuickSave : function() {
var data = $.getStorage(this.kag.config.projectID + "_tyrano_quick_save", this.kag.config.configSave);
if (data) {
data = JSON.parse(data);
} else {
return false;
}
this.loadGameData($.extend(true, {}, data));
},
//doSaveSnap 自動セーブのデータを保存する
doSetAutoSave : function() {
var data = this.snap;
data.save_date = $.getNowDate() + " " + $.getNowTime();
$.setStorage(this.kag.config.projectID + "_tyrano_auto_save", data, this.kag.config.configSave);
},
//自動保存のデータを読み込む
loadAutoSave : function() {
var data = $.getStorage(this.kag.config.projectID + "_tyrano_auto_save",this.kag.config.configSave);
if (data) {
data = JSON.parse(data);
} else {
return false;
}
this.loadGameData($.extend(true, {}, data),{"auto_next":"yes"});
},
//セーブ状態のスナップを保存します。
snapSave : function(title, call_back,flag_thumb) {
var that = this;
//画面のキャプチャも取るよ
var _current_order_index = that.kag.ftag.current_order_index - 1;
var _stat = $.extend(true, {}, $.cloneObject(that.kag.stat));
if(typeof flag_thumb =="undefined"){
flag_thumb = this.kag.config.configThumbnail;
}
if (flag_thumb == "false") {
//サムネデータを保存しない
var img_code = "";
var data = {};
data.title = title;
data.stat = _stat;
data.current_order_index = _current_order_index;
//1つ前
data.save_date = $.getNowDate() + " " + $.getNowTime();
data.img_data = img_code;
//レイヤ部分のHTMLを取得
var layer_obj = that.kag.layer.getLayeyHtml();
data.layer = layer_obj;
that.snap = $.extend(true, {}, $.cloneObject(data));
if (call_back) {
call_back();
}
} else {
$("#tyrano_base").find(".layer_blend_mode").css("display","none");
setTimeout(function() {
var completeImage = function(img_code){
var data = {};
data.title = title;
data.stat = _stat;
data.current_order_index = _current_order_index;
//1つ前
data.save_date = $.getNowDate() + " " + $.getNowTime();
data.img_data = img_code;
//レイヤ部分のHTMLを取得
var layer_obj = that.kag.layer.getLayeyHtml();
data.layer = layer_obj;
that.snap = $.extend(true, {}, $.cloneObject(data));
if (call_back) {
call_back();
}
};
if(that.kag.stat.save_img !=""){
var img = new Image();
img.src=_stat.save_img
img.onload = function(){
var canvas = document.createElement('canvas');
canvas.width = that.kag.config.scWidth;
canvas.height = that.kag.config.scHeight;
// Draw Image
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
// To Base64
var img_code = that.createImgCode(canvas);
completeImage(img_code);
};
}else{
var tmp_base = $("#tyrano_base");
var tmp_left = tmp_base.css("left");
var tmp_top = tmp_base.css("top");
var tmp_trans = tmp_base.css("transform");
tmp_base.css("left",0);
tmp_base.css("top",0);
tmp_base.css("transform", "");
html2canvas(tmp_base.get(0), {
onrendered : function(canvas) {
$("#tyrano_base").find(".layer_blend_mode").css("display","");
// canvas is the final rendered