Strange behavior of Sprites/Bitmap

Lihinel

Veteran
Veteran
Joined
Nov 9, 2013
Messages
261
Reaction score
321
First Language
German
Primarily Uses
This question is related to Orange Overlay, but I am pretty sure its a general issue.
https://forums.rpgmakerweb.com/index.php?threads/orange-overlay.63524/

I am trying to replicate/move a harvestmoon like script from VXAce to MV, I basically blt plant parts to the ground or upper layers of an overlay, which is a normal bitmap.
For testing purposes, I tried starting small so instead of a blocktransfer I just used the fillRect and clear function on the bitmap with the following code:
Code:
var Lihinel = Lihinel || {};
  (function() {

Lihinel.blt_plants = false;


var oldSpriteset_Map_updateGroundLayer = Spriteset_Map.prototype.updateGroundLayer
 Spriteset_Map.prototype.updateGroundLayer = function() {
    oldSpriteset_Map_updateGroundLayer.call(this);
   
    if(!Lihinel.blt_plants){
        this._groundLayer.bitmap.fillRect(0,0,100,100,"#000000");
       
        Lihinel.blt_plants = true;
        console.log(Lihinel.blt_plants);
    }
  };
 
var oldGameInterpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  Game_Interpreter.prototype.pluginCommand = function (command, args) {
    if (command.toLowerCase() == 'greenhouse') {
        Lihinel.blt_plants = false;
       
        return null;
    }
    oldGameInterpreter_pluginCommand.apply(this, arguments);
  }
 })();
This works and puts a 100*100 black square,however,
if I set the first Lihinel.blt_plants to true instead of false, like this:
Code:
var Lihinel = Lihinel || {};
  (function() {

Lihinel.blt_plants = true;
...
It no longer works, no matter how often I use the plugin command.

I know I am missing something fundamental about sprites/bitmaps here, but I don't know what.
 

Shaz

Veteran
Veteran
Joined
Mar 2, 2012
Messages
40,108
Reaction score
13,713
First Language
English
Primarily Uses
RMMV
Just a guess, but try using === instead of == in your plugin command function.
 

Lihinel

Veteran
Veteran
Joined
Nov 9, 2013
Messages
261
Reaction score
321
First Language
German
Primarily Uses
That can't be it, the
Code:
console.log(Lihinel.blt_plants);
block inside the Spriteset_Map.prototype.updateGroundLayer is always executed, I checked using the console.
only the
Code:
this._groundLayer.bitmap.fillRect(0,0,100,100,"#000000");
doesn't seem to do anything if the variable Lihinel.blt_plants is set to true instead of false in the beginning.

Edit:
and just to add, if I remove the change Lihinel.blt_plants to true inside of the method with the .fillRect, it just goes tries use the fill method (as well as the console.log) every frame, but it still doesn't do anything to the bitmap. Really weird.
 
Last edited:

Lihinel

Veteran
Veteran
Joined
Nov 9, 2013
Messages
261
Reaction score
321
First Language
German
Primarily Uses
Update:
I replaced the .fillRect with multiple .blt's and the true/false with a counter and noticed that it needs a higher count to display the images when I add an additional load.
So I guess the problem is with images not being loaded when I want to use them and them eventually getting loaded as my counter goes up high enough. Is there an easy way to tell if all images you need are loaded? I think something along the lines of an async function or onload (like here, but with multiple images)
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
31,430
Reaction score
7,711
First Language
German
Primarily Uses
RMMV
not directly - because that is implemented too deeply into the way the internet and the browsers load files.

However, there are preloader-plugins that allow you to specify which files will be needed later and load them before they become in use.
That solution has other disadvantages (like the risk of too much RAM-use), but it might be a solution for you.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Profile Posts

Our latest feature is an interview with... me?!

People4_2 (Capelet off and on) added!

Just beat the last of us 2 last night and starting jedi: fallen order right now, both use unreal engine & when I say i knew 80% of jedi's buttons right away because they were the same buttons as TLOU2 its ridiculous, even the same narrow hallway crawl and barely-made-it jump they do. Unreal Engine is just big budget RPG Maker the way they make games nearly identical at its core lol.
Can someone recommend some fun story-heavy RPGs to me? Coming up with good gameplay is a nightmare! I was thinking of making some gameplay platforming-based, but that doesn't work well in RPG form*. I also was thinking of removing battles, but that would be too much like OneShot. I don't even know how to make good puzzles!
one bad plugin combo later and one of my followers is moonwalking off the screen on his own... I didn't even more yet on the new map lol.

Forum statistics

Threads
106,035
Messages
1,018,454
Members
137,821
Latest member
Capterson
Top