slicing files

This commit is contained in:
YouWei Zhao 2019-03-19 13:19:13 -04:00
parent bb8182d589
commit d017c5e549
5 changed files with 98 additions and 64 deletions

View File

@ -8,6 +8,7 @@ editor_file = function (editor, callback) {
'data.comment': 'dataComment', 'data.comment': 'dataComment',
'functions.comment': 'functionsComment', 'functions.comment': 'functionsComment',
'events.comment': 'eventsComment', 'events.comment': 'eventsComment',
'plugins.comment': 'pluginsComment',
} }
for (var key in commentjs) { for (var key in commentjs) {
(function (key) { (function (key) {

View File

@ -0,0 +1,27 @@
var plugins_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
{
"_type": "object",
"_data": function (key) {
var obj = {
"test": {
"_leaf": true,
"_type": "textarea",
"_range": "thiseval instanceof Array",
"_data": "插件函数执行测试, 这个函数在导入后被直接执行(因此不允许删除)"
},
"drawLight": {
"_leaf": true,
"_type": "textarea",
"_range": "thiseval instanceof Array || thiseval==null",
"_data": "绘制灯光/漆黑层效果"
},
}
if (obj[key]) return obj[key];
return {
"_leaf": true,
"_type": "textarea",
"_range": "thiseval instanceof Array || thiseval==null",
"_data": "自定义插件"
}
}
}

View File

@ -76,7 +76,7 @@ function main() {
'loader', 'control', 'utils', 'items', 'icons', 'maps', 'enemys', 'events', 'actions', 'data', 'ui', 'core' 'loader', 'control', 'utils', 'items', 'icons', 'maps', 'enemys', 'events', 'actions', 'data', 'ui', 'core'
]; ];
this.pureData = [ this.pureData = [
'data', 'enemys', 'icons', 'maps', 'items', 'functions', 'events' 'data', 'enemys', 'icons', 'maps', 'items', 'functions', 'events', 'plugins'
]; ];
this.materials = [ this.materials = [
'animates', 'enemys', 'hero', 'items', 'npcs', 'terrains', 'enemy48', 'npc48' 'animates', 'enemys', 'hero', 'items', 'npcs', 'terrains', 'enemy48', 'npc48'

View File

@ -1422,78 +1422,22 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
}, },
"plugin": function () { "plugin": function () {
////// 插件编写,可以在这里写自己额外需要执行的脚本 ////// ////// 插件编写,此处会导入插件编写中的所有函数 //////
// 在这里写的代码,在所有模块加载完毕后,游戏开始前会被执行 // 在这里写的代码,在所有模块加载完毕后,游戏开始前会被执行
console.log("插件编写测试"); console.log("插件编写测试");
// 可以写一些其他的被直接执行的代码 // 可以写一些其他的被直接执行的代码
// 在这里写所有需要自定义的函数 var pluginsData=plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1
// 写法必须是 this.xxx = function (args) { ... for(var functionName in pluginsData){
// 如果不写this的话函数将无法被外部所访问 this[functionName]=pluginsData[functionName]
this.test = function () {
console.log("插件函数执行测试");
};
// 绘制灯光/漆黑层效果。调用方式 core.plugin.drawLight(...)
// 【参数说明】
// name必填要绘制到的画布名可以是一个系统画布或者是个自定义画布如果不存在则创建
// color可选只能是一个0~1之间的数为不透明度的值。不填则默认为0.9。
// lights可选一个数组定义了每个独立的灯光。
// 其中每一项是三元组 [x,y,r] x和y分别为该灯光的横纵坐标r为该灯光的半径。
// lightDec可选0到1之间光从多少百分比才开始衰减在此范围内保持全亮不设置默认为0。
// 比如lightDec为0.5代表每个灯光部分内圈50%的范围全亮50%以后才开始快速衰减。
// 【调用样例】
// core.plugin.drawLight('curtain'); // 在curtain层绘制全图不透明度0.9,等价于更改画面色调为[0,0,0,0.9]。
// core.plugin.drawLight('ui', 0.95, [[25,11,46]]); // 在ui层绘制全图不透明度0.95,其中在(25,11)点存在一个半径为46的灯光效果。
// core.plugin.drawLight('test', 0.2, [[25,11,46,0.1]]); // 创建一个test图层不透明度0.2,其中在(25,11)点存在一个半径为46的灯光效果灯光中心不透明度0.1。
// core.plugin.drawLight('test2', 0.9, [[25,11,46],[105,121,88],[301,221,106]]); // 创建test2图层且存在三个灯光效果分别是中心(25,11)半径46中心(105,121)半径88中心(301,221)半径106。
// core.plugin.drawLight('xxx', 0.3, [[25,11,46],[105,121,88,0.2]], 0.4); // 存在两个灯光效果它们在内圈40%范围内保持全亮且40%后才开始衰减。
this.drawLight = function (name, color, lights, lightDec) {
// 清空色调层也可以修改成其它层比如animate/weather层或者用自己创建的canvas
var ctx = core.getContextByName(name);
if (ctx == null) {
if (typeof name == 'string')
ctx = core.createCanvas(name, 0, 0, core.__PIXELS__, core.__PIXELS__, 98);
else return;
}
ctx.mozImageSmoothingEnabled = false;
ctx.webkitImageSmoothingEnabled = false;
ctx.msImageSmoothingEnabled = false;
ctx.imageSmoothingEnabled = false;
core.clearMap(name);
// 绘制色调层,默认不透明度
if (color == null) color = 0.9;
ctx.fillStyle = "rgba(0,0,0,"+color+")";
ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
lightDec = core.clamp(lightDec, 0, 1);
// 绘制每个灯光效果
ctx.globalCompositeOperation = 'destination-out';
lights.forEach(function (light) {
// 坐标,半径,中心不透明度
var x = light[0], y = light[1], r = light[2];
// 计算衰减距离
var decDistance = parseInt(r * lightDec);
// 正方形区域的直径和左上角坐标
var grd=ctx.createRadialGradient(x,y,decDistance,x,y,r);
grd.addColorStop(0, "rgba(0,0,0,1)");
grd.addColorStop(1, "rgba(0,0,0,0)");
ctx.beginPath();
ctx.fillStyle=grd;
ctx.arc(x,y,r,0,2*Math.PI);
ctx.fill();
});
ctx.globalCompositeOperation = 'source-over';
} }
// 可以在任何地方如afterXXX或自定义脚本事件调用函数方法为 core.plugin.xxx(); // 可以在任何地方如afterXXX或自定义脚本事件调用函数方法为 core.plugin.xxx();
// 可以在此处直接执行插件编写中的函数
core.plugin.test();
} }
} }
} }

62
project/plugins.js Normal file
View File

@ -0,0 +1,62 @@
var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
{
"test": function(){
console.log("插件函数执行测试");
},
"drawLight" : function (name, color, lights, lightDec) {
// 绘制灯光/漆黑层效果。调用方式 core.plugin.drawLight(...)
// 【参数说明】
// name必填要绘制到的画布名可以是一个系统画布或者是个自定义画布如果不存在则创建
// color可选只能是一个0~1之间的数为不透明度的值。不填则默认为0.9。
// lights可选一个数组定义了每个独立的灯光。
// 其中每一项是三元组 [x,y,r] x和y分别为该灯光的横纵坐标r为该灯光的半径。
// lightDec可选0到1之间光从多少百分比才开始衰减在此范围内保持全亮不设置默认为0。
// 比如lightDec为0.5代表每个灯光部分内圈50%的范围全亮50%以后才开始快速衰减。
// 【调用样例】
// core.plugin.drawLight('curtain'); // 在curtain层绘制全图不透明度0.9,等价于更改画面色调为[0,0,0,0.9]。
// core.plugin.drawLight('ui', 0.95, [[25,11,46]]); // 在ui层绘制全图不透明度0.95,其中在(25,11)点存在一个半径为46的灯光效果。
// core.plugin.drawLight('test', 0.2, [[25,11,46,0.1]]); // 创建一个test图层不透明度0.2,其中在(25,11)点存在一个半径为46的灯光效果灯光中心不透明度0.1。
// core.plugin.drawLight('test2', 0.9, [[25,11,46],[105,121,88],[301,221,106]]); // 创建test2图层且存在三个灯光效果分别是中心(25,11)半径46中心(105,121)半径88中心(301,221)半径106。
// core.plugin.drawLight('xxx', 0.3, [[25,11,46],[105,121,88,0.2]], 0.4); // 存在两个灯光效果它们在内圈40%范围内保持全亮且40%后才开始衰减。
// 清空色调层也可以修改成其它层比如animate/weather层或者用自己创建的canvas
var ctx = core.getContextByName(name);
if (ctx == null) {
if (typeof name == 'string')
ctx = core.createCanvas(name, 0, 0, core.__PIXELS__, core.__PIXELS__, 98);
else return;
}
ctx.mozImageSmoothingEnabled = false;
ctx.webkitImageSmoothingEnabled = false;
ctx.msImageSmoothingEnabled = false;
ctx.imageSmoothingEnabled = false;
core.clearMap(name);
// 绘制色调层,默认不透明度
if (color == null) color = 0.9;
ctx.fillStyle = "rgba(0,0,0,"+color+")";
ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
lightDec = core.clamp(lightDec, 0, 1);
// 绘制每个灯光效果
ctx.globalCompositeOperation = 'destination-out';
lights.forEach(function (light) {
// 坐标,半径,中心不透明度
var x = light[0], y = light[1], r = light[2];
// 计算衰减距离
var decDistance = parseInt(r * lightDec);
// 正方形区域的直径和左上角坐标
var grd=ctx.createRadialGradient(x,y,decDistance,x,y,r);
grd.addColorStop(0, "rgba(0,0,0,1)");
grd.addColorStop(1, "rgba(0,0,0,0)");
ctx.beginPath();
ctx.fillStyle=grd;
ctx.arc(x,y,r,0,2*Math.PI);
ctx.fill();
});
ctx.globalCompositeOperation = 'source-over';
// 可以在任何地方如afterXXX或自定义脚本事件调用函数方法为 core.plugin.xxx();
}
}