天气:晴

This commit is contained in:
ckcz123 2021-07-30 14:57:17 +08:00
parent 6e26dccaa5
commit 3ca3abe083
9 changed files with 39 additions and 17 deletions

View File

@ -3963,8 +3963,8 @@ UnaryOperator_List
/*UnaryOperator_List ['Math.floor', 'Math.ceil', 'Math.round', 'Math.trunc', 'Math.abs', 'Math.sqrt', 'typeof']*/; /*UnaryOperator_List ['Math.floor', 'Math.ceil', 'Math.round', 'Math.trunc', 'Math.abs', 'Math.sqrt', 'typeof']*/;
Weather_List Weather_List
: '无'|'雨'|'雪'|'雾'|'云' : '无'|'雨'|'雪'|'晴'|'雾'|'云'
/*Weather_List ['null','rain','snow','fog','cloud']*/; /*Weather_List ['null','rain','snow','sun','fog','cloud']*/;
B_0_List B_0_List
: '不改变'|'不可通行'|'可以通行' : '不改变'|'不可通行'|'可以通行'

View File

@ -515,7 +515,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_leaf": true, "_leaf": true,
"_type": "textarea", "_type": "textarea",
"_docs": "天气", "_docs": "天气",
"_data": "该层的默认天气。本项可忽略表示晴天,如果写则第一项为\"rain\"\"snow\"或\"fog\"代表雨雪雾第二项为1-10之间的数代表强度。\n如[\"rain\", 8]代表8级雨天。" "_data": "该层的默认天气。本项可忽略表示晴天,如果写则第一项为\"rain\"\"snow\", \"sun\", \"fog\", \"cloud\“代表对应的天气第二项为1-10之间的数代表强度。\n如[\"rain\", 8]代表8级雨天。"
}, },
"bgm": { "bgm": {
"_leaf": true, "_leaf": true,
@ -528,7 +528,8 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
}).toString(), }).toString(),
"_onconfirm": (function (previous, current) { "_onconfirm": (function (previous, current) {
if (current.length == 0) return null; if (current.length == 0) return null;
return current[0]; if (current.length == 1) return current[0];
return current;
}).toString(), }).toString(),
"_docs": "背景音乐", "_docs": "背景音乐",
"_data": "到达该层后默认播放的BGM" "_data": "到达该层后默认播放的BGM"

View File

@ -243,7 +243,7 @@ control.prototype._animationFrame_weather_snow = function () {
ctx.moveTo(p.x - ox, p.y - oy); ctx.moveTo(p.x - ox, p.y - oy);
ctx.arc(p.x - ox, p.y - oy, p.r, 0, Math.PI * 2, true); ctx.arc(p.x - ox, p.y - oy, p.r, 0, Math.PI * 2, true);
// update // update
p.x += Math.sin(angle) * 2; p.x += Math.sin(angle) * core.animateFrame.weather.level;
p.y += Math.cos(angle + p.d) + 1 + p.r / 2; p.y += Math.cos(angle + p.d) + 1 + p.r / 2;
if (p.x > core.bigmap.width*32 + 5 || p.x < -5 || p.y > core.bigmap.height*32) { if (p.x > core.bigmap.width*32 + 5 || p.x < -5 || p.y > core.bigmap.height*32) {
if (Math.random() > 1 / 3) { if (Math.random() > 1 / 3) {
@ -308,6 +308,10 @@ control.prototype._animationFrame_weather_cloud = function () {
this.__animateFrame_weather_image(core.animateFrame.weather.cloud); this.__animateFrame_weather_image(core.animateFrame.weather.cloud);
} }
control.prototype._animationFrame_weather_sun = function () {
// do nothing here.
}
control.prototype._animateFrame_tip = function (timestamp) { control.prototype._animateFrame_tip = function (timestamp) {
if (core.animateFrame.tip == null) return; if (core.animateFrame.tip == null) return;
var tip = core.animateFrame.tip; var tip = core.animateFrame.tip;
@ -2536,22 +2540,24 @@ control.prototype.setWeather = function (type, level) {
core.animateFrame.weather.nodes = []; core.animateFrame.weather.nodes = [];
return; return;
} }
// 当前天气:则忽略 if (level == null) level = core.animateFrame.weather.level;
if (type==core.animateFrame.weather.type && level == null) return;
level = core.clamp(parseInt(level) || 5, 1, 10); level = core.clamp(parseInt(level) || 5, 1, 10);
level *= parseInt(20*core.bigmap.width*core.bigmap.height/(core.__SIZE__*core.__SIZE__)); // 当前天气:则忽略
if (type==core.animateFrame.weather.type && level == core.animateFrame.weather.level) return;
// 计算当前的宽高 // 计算当前的宽高
core.createCanvas('weather', 0, 0, core.__PIXELS__, core.__PIXELS__, 80); core.createCanvas('weather', 0, 0, core.__PIXELS__, core.__PIXELS__, 80);
core.animateFrame.weather.type = type; core.animateFrame.weather.type = type;
core.animateFrame.weather.level = level;
core.animateFrame.weather.nodes = []; core.animateFrame.weather.nodes = [];
this._setWeather_createNodes(type, level); this._setWeather_createNodes(type, level);
} }
control.prototype._setWeather_createNodes = function (type, level) { control.prototype._setWeather_createNodes = function (type, level) {
var number = level * parseInt(20*core.bigmap.width*core.bigmap.height/(core.__SIZE__*core.__SIZE__));
switch (type) { switch (type) {
case 'rain': case 'rain':
for (var a=0;a<level;a++) { for (var a=0;a<number;a++) {
core.animateFrame.weather.nodes.push({ core.animateFrame.weather.nodes.push({
'x': Math.random()*core.bigmap.width*32, 'x': Math.random()*core.bigmap.width*32,
'y': Math.random()*core.bigmap.height*32, 'y': Math.random()*core.bigmap.height*32,
@ -2562,7 +2568,7 @@ control.prototype._setWeather_createNodes = function (type, level) {
} }
break; break;
case 'snow': case 'snow':
for (var a=0;a<level;a++) { for (var a=0;a<number;a++) {
core.animateFrame.weather.nodes.push({ core.animateFrame.weather.nodes.push({
'x': Math.random()*core.bigmap.width*32, 'x': Math.random()*core.bigmap.width*32,
'y': Math.random()*core.bigmap.height*32, 'y': Math.random()*core.bigmap.height*32,
@ -2574,7 +2580,7 @@ control.prototype._setWeather_createNodes = function (type, level) {
case 'fog': case 'fog':
if (core.animateFrame.weather.fog) { if (core.animateFrame.weather.fog) {
core.animateFrame.weather.nodes = [{ core.animateFrame.weather.nodes = [{
'level': level, 'level': number,
'x': 0, 'x': 0,
'y': -core.__PIXELS__ / 2, 'y': -core.__PIXELS__ / 2,
'dx': -Math.random() * 1.5, 'dx': -Math.random() * 1.5,
@ -2586,7 +2592,7 @@ control.prototype._setWeather_createNodes = function (type, level) {
case 'cloud': case 'cloud':
if (core.animateFrame.weather.cloud) { if (core.animateFrame.weather.cloud) {
core.animateFrame.weather.nodes = [{ core.animateFrame.weather.nodes = [{
'level': level, 'level': number,
'x': 0, 'x': 0,
'y': -core.__PIXELS__ / 2, 'y': -core.__PIXELS__ / 2,
'dx': -Math.random() * 1.5, 'dx': -Math.random() * 1.5,
@ -2595,6 +2601,15 @@ control.prototype._setWeather_createNodes = function (type, level) {
}]; }];
} }
break; break;
case 'sun':
if (core.animateFrame.weather.sun) {
// 直接绘制
core.clearMap('weather');
core.setAlpha('weather', level / 10);
core.drawImage('weather', core.animateFrame.weather.sun, 0, 0, core.animateFrame.weather.sun.width, core.animateFrame.weather.sun.height, 0, 0, core.__PIXELS__, core.__PIXELS__);
core.setAlpha('weather', 1);
}
break;
} }
} }

View File

@ -46,9 +46,12 @@ function core() {
'weather': { 'weather': {
'time': 0, 'time': 0,
'type': null, 'type': null,
'level': 1,
'nodes': [], 'nodes': [],
'data': null, 'data': null,
'fog': null, 'fog': null,
'cloud': null,
'sun': null
}, },
"tip": null, "tip": null,
"asyncId": {} "asyncId": {}
@ -429,6 +432,7 @@ core.prototype._init_others = function () {
core.bigmap.cacheCanvas = document.createElement('canvas').getContext('2d'); core.bigmap.cacheCanvas = document.createElement('canvas').getContext('2d');
core.loadImage("materials", 'fog', function (name, img) { core.animateFrame.weather.fog = img; }); core.loadImage("materials", 'fog', function (name, img) { core.animateFrame.weather.fog = img; });
core.loadImage("materials", "cloud", function (name, img) { core.animateFrame.weather.cloud = img; }) core.loadImage("materials", "cloud", function (name, img) { core.animateFrame.weather.cloud = img; })
core.loadImage("materials", "sun", function (name, img) { core.animateFrame.weather.sun = img; })
core.loadImage("materials", 'keyboard', function (name, img) {core.material.images.keyboard = img; }); core.loadImage("materials", 'keyboard', function (name, img) {core.material.images.keyboard = img; });
// 记录存档编号 // 记录存档编号
core.saves.saveIndex = core.getLocalStorage('saveIndex', 1); core.saves.saveIndex = core.getLocalStorage('saveIndex', 1);

View File

@ -411,7 +411,8 @@ enemys.prototype._getCurrentEnemys_addEnemy = function (enemyId, enemys, used, x
e.damage = this.getDamage(enemy, x, y, floorId); e.damage = this.getDamage(enemy, x, y, floorId);
e.critical = critical[0]; e.critical = critical[0];
e.criticalDamage = critical[1]; e.criticalDamage = critical[1];
e.defDamage = this.getDefDamage(enemy, 1, x, y, floorId); var ratio = core.status.maps[floorId || core.status.floorId].ratio || 1;
e.defDamage = this.getDefDamage(enemy, ratio, x, y, floorId);
enemys.push(e); enemys.push(e);
} }

View File

@ -1635,7 +1635,7 @@ events.prototype._action_screenFlash = function (data, x, y, prefix) {
events.prototype._action_setWeather = function (data, x, y, prefix) { events.prototype._action_setWeather = function (data, x, y, prefix) {
core.setWeather(data.name, data.level); core.setWeather(data.name, data.level);
if (data.keep && ['rain', 'snow', 'fog', 'cloud'].indexOf(data.name) >= 0) if (data.keep && ['rain', 'snow', 'sun', 'fog', 'cloud'].indexOf(data.name) >= 0)
core.setFlag('__weather__', [data.name, data.level]); core.setFlag('__weather__', [data.name, data.level]);
else core.removeFlag('__weather__'); else core.removeFlag('__weather__');
core.doAction(); core.doAction();

View File

@ -2053,6 +2053,7 @@ ui.prototype._drawBook_drawEmpty = function () {
ui.prototype._drawBook_drawOne = function (floorId, index, enemy, pageinfo, selected) { ui.prototype._drawBook_drawOne = function (floorId, index, enemy, pageinfo, selected) {
// --- 区域规划每个区域总高度默认为62宽度为 PIXEL // --- 区域规划每个区域总高度默认为62宽度为 PIXEL
var top = pageinfo.per_height * index + pageinfo.padding_top; // 最上面margin默认是12px var top = pageinfo.per_height * index + pageinfo.padding_top; // 最上面margin默认是12px
enemy.floorId = floorId;
// 横向规划: // 横向规划:
// 22 + 42 = 64 是头像框 // 22 + 42 = 64 是头像框
this._drawBook_drawBox(index, enemy, top, pageinfo); this._drawBook_drawBox(index, enemy, top, pageinfo);
@ -2210,7 +2211,7 @@ ui.prototype._drawBook_drawRow3 = function (index, enemy, top, left, width, posi
core.fillText('ui', core.formatBigNumber(enemy.critical||0), col1 + 30, position, null, b13); core.fillText('ui', core.formatBigNumber(enemy.critical||0), col1 + 30, position, null, b13);
core.fillText('ui', '减伤', col2, position, null, f13); core.fillText('ui', '减伤', col2, position, null, f13);
core.fillText('ui', core.formatBigNumber(enemy.criticalDamage||0), col2 + 30, position, null, b13); core.fillText('ui', core.formatBigNumber(enemy.criticalDamage||0), col2 + 30, position, null, b13);
core.fillText('ui', '1防', col3, position, null, f13); core.fillText('ui', '防', col3, position, null, f13);
core.fillText('ui', core.formatBigNumber(enemy.defDamage||0), col3 + 30, position, null, b13); core.fillText('ui', core.formatBigNumber(enemy.defDamage||0), col3 + 30, position, null, b13);
} }

BIN
project/materials/sun.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

4
runtime.d.ts vendored
View File

@ -554,10 +554,10 @@ declare class control {
/** /**
* 使core.events._action_setWeather() * 使core.events._action_setWeather()
* @example core.setWeather('fog', 10); // 设置十级大雾天 * @example core.setWeather('fog', 10); // 设置十级大雾天
* @param type * @param type
* @param level 105 * @param level 105
*/ */
setWeather(type?: 'rain' | 'snow' | 'fog' | 'cloud', level?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10): void setWeather(type?: 'rain' | 'snow' | 'sun' | 'fog' | 'cloud', level?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10): void
/** /**
* 使core.events._action_setCurtain() * 使core.events._action_setCurtain()