//=============================================================================
// ww_BaoCun.js
//=============================================================================
/*:
* @plugindesc baocun保存
* @author wangwang
*
* @param 版本
* @desc 0.3
* @default 0.3
*
* @param path_name
* @desc 默认保存文件夹的名称
* @default chucun
*
* @param data_name
* @desc 默认保存数据的文件名称
* @default data.txt
*
* @param json_name
* @desc 默认保存对象的文件名称
* @default jsonsj.json
*
* @param png_name
* @desc 默认保存图片的文件名称
* @default tupian.png
*
* @param jietu
* @desc 截图按键 117 是 F6 ,如果不填,则无截图功能
* @default 117
*
* @help
* 版本: 0.3
* 更新菜单截图修正
* 添加网络支持?
*
* 截图 F6(默认)
* ww_BaoCun.SaveData(data,name,dirPath) 保存数据
* ww_BaoCun.LoadData(name,dirPath) 读取数据
* ww_BaoCun.SaveJson(json,name,dirPath) 保存对象
* ww_BaoCun.LoadJson(name,dirPath) 读取对象
* ww_BaoCun.SavePng(bitmap,name,dirPath) 保存图片(bitmap) 为png格式
* 特殊例子: ww_BaoCun.SavePng(ww_BaoCun.Bitmap_snap(SceneManager._scene),"jietu.png") 截图保存
* ww_BaoCun.SaveDataURLtoPng(dataurl,name,dirPath) 保存DataURL到png
*/
(function() {
ww_BaoCun = {}
ww_BaoCun.jieTuKey = parseInt(PluginManager.parameters("ww_BaoCun")["jietu"], 10);
ww_BaoCun.path_name = PluginManager.parameters("ww_BaoCun")["path_name"];
ww_BaoCun.data_name = PluginManager.parameters("ww_BaoCun")["data_name"];
ww_BaoCun.png_name = PluginManager.parameters("ww_BaoCun")["png_name"];
ww_BaoCun.json_name = PluginManager.parameters("ww_BaoCun")["json_name"];
ww_BaoCun._loadListeners = []
ww_BaoCun._loadinput = document.createElement("input");
ww_BaoCun._loadinput.type ="file"
ww_BaoCun._loadinput.style.zIndex = 12;
ww_BaoCun._loadinput.style.position = 'absolute';
ww_BaoCun._loadinput.style.margin = 'auto';
ww_BaoCun._SceneManager_onKeyDown = SceneManager.onKeyDown
SceneManager.onKeyDown = function(event) {
if (!isNaN(ww_BaoCun.jieTuKey) && !event.ctrlKey && !event.altKey) {
if (event.keyCode == ww_BaoCun.jieTuKey) { // 117 = F6
if (Utils.isNwjs()) {
if (SceneManager._scene) {
ww_BaoCun.SavePng(ww_BaoCun.Bitmap_snap(SceneManager._scene), "jietu" + ww_BaoCun.getHouZhui() + ".png")
};
}
}
}
ww_BaoCun._SceneManager_onKeyDown.call(this, event)
};
ww_BaoCun.istype =function () {
return StorageManager.isLocalMode()
}
//保存数据(数据,文件名,文件夹名)
ww_BaoCun.SaveData = function(data, name, wzname) {
//如果 是本地模式
if (this.istype()){
ww_BaoCun.SaveData2(data, name, wzname)
}else{
ww_BaoCun.SaveData1(data, name)
}
};
//保存对象 (对象,文件名,文件夹名)
ww_BaoCun.SaveJson = function(json, name, wzname) {
if (this.istype()){
ww_BaoCun.SaveJson2(json, name, wzname)
}else{
ww_BaoCun.SaveJson1(json, name)
}
};
//读取数据
ww_BaoCun.LoadData2 = function() {
this._loadinput.onchange=function () {
ww_BaoCun.loadingData()
}
document.body.appendChild(this._loadinput);
}
ww_BaoCun.LoadJson2 = function() {
this._loadinput.onchange=function () {
ww_BaoCun.loadingJson()
}
document.body.appendChild(this._loadinput);
}
ww_BaoCun.loadingData = function() {
var file = this._loadinput.files[0];
var reader = new FileReader();
//将文件以文本形式读入页面
reader.readAsText(file);
this._loadinput.remove()
reader.onload=function(f){
ww_BaoCun._data = this.result;
ww_BaoCun.loaded()
}
}
ww_BaoCun.loadingJson = function() {
var file = this._loadinput.files[0];
var reader = new FileReader();
//将文件以文本形式读入页面
reader.readAsText(file);
this._loadinput.remove()
reader.onload=function(f){
ww_BaoCun._json =JSON.parse(this.result)
ww_BaoCun.loaded()
}
}
ww_BaoCun.loaded = function() {
while (this._loadListeners.length > 0) {
var listener = this._loadListeners.shift();
listener();
}
}
//保存DataURL到png格式(数据,文件名,文件夹名)
ww_BaoCun.SaveDataURL2png= function(dataURL, name, wzname) {
if (this.istype()){
ww_BaoCun.SaveDataURL2png2(dataURL, name, wzname)
}else{
ww_BaoCun.SaveDataURL2png1(dataURL, name)
}
}
//保存图片到png格式(图片,文件名,文件夹名)
ww_BaoCun.SavePng = function(bitmap, name, wzname) {
if (this.istype()){
ww_BaoCun.SavePng2(bitmap, name, wzname)
}else{
ww_BaoCun.SavePng1(bitmap, name)
}
}
ww_BaoCun.SaveData1 = function(data, name) {
var name = name || this.data_name || 'data.txt';
/**
* 在本地进行文件保存
* @param {String} data 要保存到本地的数据
* @param {String} filename 文件名
*/
var saveFile = function(data, filename){
var urlObject = window.URL || window.webkitURL || window;
var export_blob = new Blob([data]);
var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
save_link.href = urlObject.createObjectURL(export_blob);
save_link.download = filename;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
};
// download
saveFile(data,name);
return data;
}
//保存对象 (对象,文件名,文件夹名)
ww_BaoCun.SaveJson1 = function(json, name) {
var name = name || this.json_name || 'jsonsj.json';
var data = JSON.stringify(json);
/**
* 在本地进行文件保存
* @param {String} data 要保存到本地的数据
* @param {String} filename 文件名
*/
var saveFile = function(data, filename){
var urlObject = window.URL || window.webkitURL || window;
var export_blob = new Blob([data]);
var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
save_link.href = urlObject.createObjectURL(export_blob);
save_link.download = filename;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
};
// download
saveFile(data,name);
return data;
};
ww_BaoCun.SavePng1 = function(bitmap, name) {
var name = name || this.png_name || 'tupian.png';
var type = 'png';
var imgData = bitmap.canvas.toDataURL(type);
/**
* 获取mimeType
* @param {String} type the old mime-type
* @return the new mime-type
*/
var _fixType = function(type) {
type = type.toLowerCase().replace(/jpg/i, 'jpeg');
var r = type.match(/png|jpeg|bmp|gif/)[0];
return 'image/' + r;
};
// 加工image data,替换mime type
imgData = imgData.replace(_fixType(type),'image/octet-stream');
/**
* 在本地进行文件保存
* @param {String} data 要保存到本地的图片数据
* @param {String} filename 文件名
*/
var saveFile = function(data, filename){
var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href = data;
save_link.download = filename;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
};
// 下载后的文件名
var filename = 'baidufe_' + (new Date()).getTime() + '.' + type;
// download
saveFile(imgData,filename);
return imgData;
}
//保存DataURL到png格式(数据,文件名,文件夹名)
ww_BaoCun.SaveDataURL2png1 = function(dataURL, name, wzname) {
var name = name || this.png_name || 'tupian.png';
var type = 'png';
if (!dataURL) {
return dataURL
};
var imgData = dataURL;
/**
* 获取mimeType
* @param {String} type the old mime-type
* @return the new mime-type
*/
var _fixType = function(type) {
type = type.toLowerCase().replace(/jpg/i, 'jpeg');
var r = type.match(/png|jpeg|bmp|gif/)[0];
return 'image/' + r;
};
// 加工image data,替换mime type
imgData = imgData.replace(_fixType(type),'image/octet-stream');
/**
* 在本地进行文件保存
* @param {String} data 要保存到本地的图片数据
* @param {String} filename 文件名
*/
var saveFile = function(data, filename){
var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href = data;
save_link.download = filename;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
};
// 下载后的文件名
var filename = 'baidufe_' + (new Date()).getTime() + '.' + type;
// download
saveFile(imgData,filename);
return imgData;
}
//文件夹位置
ww_BaoCun.dirPath = function(name) {
var weizhi_name = name || this.path_name || 'chucun';
var weizhi = '/' + weizhi_name + '/';
var path = window.location.pathname.replace(/(\/www|)\/[^\/]*$/, weizhi);
if (path.match(/^\/([A-Z]\:)/)) {
path = path.slice(1);
}
var dirpath = decodeURIComponent(path);
var fs = require('fs');
if (!fs.existsSync(dirpath)) {
fs.mkdirSync(dirpath);
}
return dirpath;
}
//保存数据(数据,文件名,文件夹名)
ww_BaoCun.SaveData2 = function(data, name, wzname) {
var name = name || this.data_name || 'data.txt';
var filePath = this.dirPath(wzname) + name;
var fs = require('fs');
fs.writeFileSync(filePath, data);
return data;
};
//保存对象 (对象,文件名,文件夹名)
ww_BaoCun.SaveJson2 = function(json, name, wzname) {
var name = name || this.json_name || 'jsonsj.json';
var data = JSON.stringify(json);
var filePath = this.dirPath(wzname) + name;
var fs = require('fs');
fs.writeFileSync(filePath, data);
return data;
};
//保存DataURL到png格式(数据,文件名,文件夹名)
ww_BaoCun.SaveDataURL2png2 = function(dataURL, name, wzname) {
var name = name || this.png_name || 'tupian.png';
if (!dataURL) {
return dataURL
};
var imgData = dataURL;
var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
var dataBuffer = new Buffer(base64Data, 'base64');
var filePath = dirPath(wzname) + name;
var fs = require("fs");
fs.writeFile(filePath, dataBuffer, function(err) {
if (err) {
return false;
} else {
return true;
}
});
return imgData;
}
//保存图片到png格式(图片,文件名,文件夹名)
ww_BaoCun.SavePng2 = function(bitmap, name, wzname) {
var name = name || this.png_name || 'tupian.png';
if (!bitmap || !bitmap.canvas) {
return bitmap
};
var imgData = bitmap.canvas.toDataURL();
var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
var dataBuffer = new Buffer(base64Data, 'base64');
var filePath = this.dirPath(wzname) + name;
var fs = require("fs");
fs.writeFile(filePath, dataBuffer, function(err) {
if (err) {
return false;
} else {
return true;
}
});
return imgData;
}
//读取数据 (文件名,文件夹名)
ww_BaoCun.LoadData = function(name, wzname) {
var name = name || 'data.txt';
var filePath = this.dirPath(wzname) + name;
var fs = require('fs');
if (fs.existsSync(filePath)) {
data = fs.readFileSync(filePath, {
encoding: 'utf8'
});
};
return data;
}
//读取对象 (文件名,文件夹名)
ww_BaoCun.LoadJson = function(name, wzname) {
var name = name || 'jsonsj.json';
var filePath = this.dirPath(wzname) + name;
var fs = require('fs');
if (fs.existsSync(filePath)) {
json = fs.readFileSync(filePath, {
encoding: 'utf8'
});
data = json ? JSON.parse(json) : json;
};
return data;
}
ww_BaoCun.Snap = function() {
return this.SavePng(this.Bitmap_snap(SceneManager._scene), "jietu" + ww_BaoCun.getHouZhui() + ".png")
}
ww_BaoCun.Bitmap_snap = function(stage) {
var width = Graphics.width;
var height = Graphics.height;
var bitmap = new Bitmap(width, height);
var context = bitmap._context;
var canvas = document.createElement('canvas');
var options = { view: canvas };
var renderTexture = new PIXI.CanvasRenderer(width, height, options);
if (stage) {
renderTexture.render(stage);
stage.worldTransform.identity();
}
context.drawImage(canvas, 0, 0);
bitmap._setDirty();
return bitmap;
};
//无用产物...
ww_BaoCun.getHouZhui = function() {
var myDate = new Date();
var ye = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
var mo = myDate.getMonth(); //获取当前月份(0-11,0代表1月)
var d = myDate.getDate(); //获取当前日(1-31)
var h = myDate.getHours(); //获取当前小时数(0-23)
var m = myDate.getMinutes(); //获取当前分钟数(0-59)
var s = myDate.getSeconds(); //获取当前秒数(0-59)
var ms = myDate.getMilliseconds(); //获取当前毫秒数(0-999)
var houzhui = '';
if (arguments[0]) {
houzhui += ye + '-' + (mo + 1) + '-' + d + '-' + h + '-' + m + '-' + s + '-' + ms;
} else {
houzhui += ye + '' + (mo + 1) + '' + d + '' + h + '' + m + '' + s + '' + ms;
};
return houzhui;
}
})();