//============================================================================= // Overlay.js //============================================================================= /*: * @plugindesc Overlay Mapping script by SWEBOK v1.3 * @author SWEBOK * * @param Light Switch * @desc Turn on/off light layer * @default 1 * * @param Parallax Switch * @desc Turn on/off parallax layer * @default 2 * * @param Ground Switch * @desc Turn on/off ground layer * @default 3 * * @param Light Variable * @desc Switch to another light * @default 1 * * @param Parallax Variable * @desc Switch to another parallax * @default 2 * * @param Ground Variable * @desc Switch to another ground * @default 3 * * @help This plugin does not provide plugin commands. * * Last Updated: 02/11/2017 * v1.0 - 10/24/2015 - first release. * v1.1 - 10/27/2015 - upper tilemap layer problem solved * v1.2 - 07/10/2016 - add map note tag settings, remove load pic error process * v1.3 - 02/11/2017 - fixed a problem about ground pic wrong position * * This script will automatically load map's overlay by map's note, and a map can have more than * one image per layer, so you don't have to create two or more map just for day/night or * when an event occur. * * Create a folder in img and name it overlay. * Put all of your overlay into img/overlay. * Your overlay file will have the name set in map's note + "-" + Number. * Number is 1, 2, 3, ... using for Overlay Variables. * * Example: img/overlay/ground2-1.png * * Map note example: * <OVERLAY> * LIGHT = light1 * PARALLAX = par1 * GROUND = ground1 * </OVERLAY> * * when variable are 1, the map loads light1-1.png, par1-1.png, ground1-1.png from overlay folder. * * Tips: * All pictures must be .png * Do not use "=" in the names of pictures */ (function() { var parameters = PluginManager.parameters('Overlay'); var lightSwitch = Number(parameters['Light Switch'] || 1); var parallaxSwitch = Number(parameters['Parallax Switch'] || 2); var groundSwitch = Number(parameters['Ground Switch'] || 3); var lightVariable = Number(parameters['Light Variable'] || 1); var parallaxVariable = Number(parameters['Parallax Variable'] || 2); var groundVariable = Number(parameters['Ground Variable'] || 3); Game_Map.prototype.processMapNotetags = function () { var note1 = /<(?:OVERLAY)>/i; var note2 = /<\/(?:OVERLAY)>/i; var notedata = $dataMap.note.split(/[\r\n]+/); this.layerNameEval = ''; var layerNameEval = false; this._layerName = ['', '', '']; for (var i = 0; i < notedata.length; i++) { var line = notedata[i]; console.log(line); if (line.match(note1)) { layerNameEval = true; } else if (line.match(note2)) { layerNameEval = false; } else if (layerNameEval) { this.layerNameEval = line; var layerClass = this.layerNameEval.split('=')[0].trim(); var index = 1; if (index != -1) { switch (layerClass) { case 'LIGHT': this._layerName[0] = this.layerNameEval.split('=')[1].trim(); break; case 'PARALLAX': this._layerName[1] = this.layerNameEval.split('=')[1].trim(); break; case 'GROUND': this._layerName[2] = this.layerNameEval.split('=')[1].trim(); break; } console.log(this.layerNameEval.split('=')[1].trim()); } } } }; ImageManager.loadOverlay = function(filename, hue) { return this.loadBitmap('img/overlay/', filename, hue, false); }; Spriteset_Map.prototype.initialize = function() { Spriteset_Base.prototype.initialize.call(this); this.processMapNotetags(); }; Spriteset_Map.prototype.createLowerLayer = function() { Spriteset_Base.prototype.createLowerLayer.call(this); this.createParallax(); this.createTilemap(); this.createOverlayGround(); this.createCharacters(); this.createOverlayParallax(); this.createShadow(); this.createOverlayLight(); this.createDestination(); this.createWeather(); }; Spriteset_Map.prototype.update = function() { Spriteset_Base.prototype.update.call(this); this.updateTileset(); this.updateParallax(); this.updateTilemap(); this.updateOverlayGround(); this.updateOverlayParallax(); this.updateShadow(); this.updateOverlayLight(); this.updateWeather(); }; Spriteset_Map.prototype.processMapNotetags = function() { $gameMap.processMapNotetags(); }; Spriteset_Map.prototype.createOverlayGround = function() { this._overlayGround = new TilingSprite(); this._overlayGround.move(0, 0, Graphics.width, Graphics.height); // 2017.2.11 create new layer in tilemap for overlay ground, z = 1 var groundLayer = new Sprite(); this._tilemap.addChild(groundLayer); groundLayer.z = 1; groundLayer.addChild(this._overlayGround); }; Spriteset_Map.prototype.createCharacters = function() { this._characterSprites = []; $gameMap.events().forEach(function(event) { this._characterSprites.push(new Sprite_Character(event)); }, this); $gameMap.vehicles().forEach(function(vehicle) { this._characterSprites.push(new Sprite_Character(vehicle)); }, this); $gamePlayer.followers().reverseEach(function(follower) { this._characterSprites.push(new Sprite_Character(follower)); }, this); this._characterSprites.push(new Sprite_Character($gamePlayer)); for (var i = 0; i < this._characterSprites.length; i++) { this._tilemap.addChild(this._characterSprites[i]); } }; Spriteset_Map.prototype.createOverlayParallax = function() { this._overlayParallax = new TilingSprite(); this._overlayParallax.move(0, 0, Graphics.width, Graphics.height); this._baseSprite.addChild(this._overlayParallax); }; Spriteset_Map.prototype.createOverlayLight = function() { this._overlayLight = new TilingSprite(); this._overlayLight.move(0, 0, Graphics.width, Graphics.height); this._baseSprite.addChild(this._overlayLight); }; Spriteset_Map.prototype.updateOverlayGround = function() { var gndSwitch = $gameSwitches.value(groundSwitch); if (gndSwitch) { var groundIndex = $gameVariables.value(groundVariable); if (this._overlayGroundName !== $gameMap._layerName[2] + '-' + groundIndex) { this._overlayGroundName = $gameMap._layerName[2] + '-' + groundIndex; if ($gameMap._layerName[2] !== '') { this._overlayGround.bitmap = ImageManager.loadOverlay(this._overlayGroundName); } else { this._overlayGround.bitmap = ImageManager.loadEmptyBitmap(); } } if (this._overlayGround.bitmap) { this._overlayGround.origin.x = $gameMap.displayX() * $gameMap.tileWidth(); this._overlayGround.origin.y = $gameMap.displayY() * $gameMap.tileHeight(); } } else { if (this._overlayGroundName !== '') { this._overlayGroundName = ''; this._overlayGround.bitmap = ImageManager.loadEmptyBitmap(); } } }; Spriteset_Map.prototype.updateOverlayParallax = function() { var parSwitch = $gameSwitches.value(parallaxSwitch); if (parSwitch) { var parIndex = $gameVariables.value(parallaxVariable); if (this._overlayParallaxName !== $gameMap._layerName[1] + '-' + parIndex) { this._overlayParallaxName = $gameMap._layerName[1] + '-' + parIndex; if ($gameMap._layerName[1] !== '') { this._overlayParallax.bitmap = ImageManager.loadOverlay(this._overlayParallaxName); } else { this._overlayParallax.bitmap = ImageManager.loadEmptyBitmap(); } } if (this._overlayParallax.bitmap) { this._overlayParallax.origin.x = $gameMap.displayX() * $gameMap.tileWidth(); this._overlayParallax.origin.y = $gameMap.displayY() * $gameMap.tileHeight(); } } else { if (this._overlayParallaxName !== '') { this._overlayParallaxName = ''; this._overlayParallax.bitmap = ImageManager.loadEmptyBitmap(); } } }; Spriteset_Map.prototype.updateOverlayLight = function() { var liSwitch = $gameSwitches.value(lightSwitch); if (liSwitch) { var lightIndex = $gameVariables.value(lightVariable); if (this._overlayLightName !== $gameMap._layerName[0] + '-' + lightIndex) { this._overlayLightName = $gameMap._layerName[0] + '-' + lightIndex; if ($gameMap._layerName[0] !== '') { this._overlayLight.bitmap = ImageManager.loadOverlay(this._overlayLightName); } else { this._overlayLight.bitmap = ImageManager.loadEmptyBitmap(); } } if (this._overlayLight.bitmap) { this._overlayLight.origin.x = $gameMap.displayX() * $gameMap.tileWidth(); this._overlayLight.origin.y = $gameMap.displayY() * $gameMap.tileHeight(); } } else { if (this._overlayLightName !== '') { this._overlayLightName = ''; this._overlayLight.bitmap = ImageManager.loadEmptyBitmap(); } } }; })();
Noname.jpg (58.51 KB, 下载次数: 103)
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |