RMMZ SOLVED! Help with Window_selectable on scroll making items of undefined.

rexie09

Villager
Member
Joined
Apr 4, 2021
Messages
26
Reaction score
10
First Language
English
Primarily Uses
RMMZ
I am learning how rpg maker makes windows and upon trying to make a selectable window that scrolls once the window starts scrolling and you press the up or down arrow the game proceeds to make a bunch of items with the text undefined.
I was wondering how to stop this and get the window to continue scrolling to the bottom of the choices then return to the top.
Here is the plugin code
JavaScript:
/**
* * @target MZ
*/

"use strict"

var Rexie09 = Rexie09 || {};
var Imported = Imported || {};
Rexie09.Window_Test = Rexie09.Window_Test || {};

var windowWidth = Graphics.width


class Rexie09_DescriptWindow extends Window_Base {
    constructor() {
        super(new Rectangle(240, 0, Graphics.boxWidth - 240, Graphics.boxHeight));
    }

}class Rexie09_CommandWindow extends Window_Selectable {
    constructor() {
        super(new Rectangle(0, 0, 240, Graphics.boxHeight));
        this._index = 0;
        this.totalItems = 0;
        this.mainClick = false;
        this.setHandler("ok", this.onActorOk.bind(this));
        this.setHandler("cancel", this.onActorCancel.bind(this));
    }

    maxItems() {
        return this.totalItems;
    }
   
   maxPageRows() {
        return 1;
    }
   
    maxPageItems() {
        return this.maxPageRows() * this.maxCols();
    }
   
    drawItem(index, text) {
        console.log("Item being drawn");
        var itemRect = this.itemRect(index);
        this.drawText(text, itemRect.x + 5, itemRect.y + 3, 200, 'center');
        this.totalItems ++;
    }

    clickedMain() {
        this.mainClick = true;
        this.drawItem(this._index + 1, "test 1");
        this.drawItem(this._index + 2, "test 2");
        this.drawItem(this._index + 3, "test 3");
        this.drawItem(this._index + 4, "test 1");
        this.drawItem(this._index + 5, "test 2");
        this.drawItem(this._index + 6, "test 3");
        this.drawItem(this._index + 7, "test 1");
        this.drawItem(this._index + 8, "test 2");
        this.drawItem(this._index + 9, "test 3");
        this.drawItem(this._index + 10, "test 1");
        this.drawItem(this._index + 11, "test 2");
        this.drawItem(this._index + 12, "test 3");
        this.drawItem(this._index + 13, "test 1");
        this.drawItem(this._index + 14, "test 2");
        this.drawItem(this._index + 15, "test 3");
        this.drawItem(this._index + 16, "test 1");
        this.drawItem(this._index + 17, "test 2");
        this.drawItem(this._index + 18, "test 3");
        console.log(this);
    }

    select(index) {
        super.select(index);
       
    }

    processOk() {
        if (this.isCurrentItemEnabled()) {
          console.log("Hello")
          this.playOkSound();
          this.updateInputData();
          this.callOkHandler();
        } else {
          this.playBuzzerSound();
        }
      }

    onActorOk() {
    if (this._index == 0 && this.mainClick == false) {
        this.clickedMain();
    } else {
        SoundManager.playBuzzer();
        }
    }
   
    onActorCancel() {
        this.deactivate
    }
}


//test function for the windows
function make_ShowWindow () {
    if(SceneManager._scene instanceof Scene_Title){
        console.log("WOW man it works");
    }
    let apples = new Rexie09_DescriptWindow();
    let apes = new Rexie09_CommandWindow();
    console.log(apples);
    console.log(apes);
    apes.activate();
    apes.drawItem(0, "Get the apples for the hunter");

    SceneManager._scene.addWindow(apples);
    SceneManager._scene.addWindow(apes);

}

and here is a gif of what is happening
ezgif.com-gif-maker.gif
 

Jragyn

JABS codemonkey
Veteran
Joined
Aug 14, 2012
Messages
230
Reaction score
184
First Language
English
Primarily Uses
RMMZ
I've found that in most cases, if I'm trying to make a list of windows, I extend Window_Command instead of Window_Selectable.

If I had to guess, it is probably it is related to your explicit management of the different items being rendered into the list. If you extend Window_Command (maybe Window_Selectable has it too?) you can leverage it's built in command management and just use Window_Command.prototype.addCommand (name, symbol, enabled, ext) to add commands pretty easily.

If you spin up a custom scene to handle the management of your windows, you'll also be able to add proper handling for your windows through the patterns that RMMZ already uses (like choosing a command or window navigation). I'd recommend against trying to build a Scene within Scene_Map, it gets kinda messy pretty fast.
 

rexie09

Villager
Member
Joined
Apr 4, 2021
Messages
26
Reaction score
10
First Language
English
Primarily Uses
RMMZ
I've found that in most cases, if I'm trying to make a list of windows, I extend Window_Command instead of Window_Selectable.

If I had to guess, it is probably it is related to your explicit management of the different items being rendered into the list. If you extend Window_Command (maybe Window_Selectable has it too?) you can leverage it's built in command management and just use Window_Command.prototype.addCommand (name, symbol, enabled, ext) to add commands pretty easily.

If you spin up a custom scene to handle the management of your windows, you'll also be able to add proper handling for your windows through the patterns that RMMZ already uses (like choosing a command or window navigation). I'd recommend against trying to build a Scene within Scene_Map, it gets kinda messy pretty fast.
Thank you extending Window_command works well and has no issue with scrolling and as for making a new scene i will now since i got the window i wanted to figure out first working.
 

Latest Threads

Latest Posts

Latest Profile Posts

1638170340913.png
Crossover Inn is getting very crowded, and I love it
Climbing to the top #mapping
1638160732198.png
I've started the first steps of the final few maps that I need to make for B:ms. I haven't been able to say that in a really, really long time. It'd probably be a good idea to blog about this or something.
Question for the Mods: What am I supposed to do when I can't make a synopsis 350 words long? (for project recruitment thread) @Shaz @mlogan
The game is meant to be more on the simple side in order to be achievable so I'm a bit stuck...

Forum statistics

Threads
117,043
Messages
1,104,080
Members
152,987
Latest member
mrsmatmoney
Top