- Si prega di effettuare il log in prima di rispondere
#2 Inviato 21 December 2016 - 23:23 PM
@Kyusef ti stai riferendo ad una scena/finestra fatta col linguaggio javascript e con i plugin? Se quello è il caso sposto in supporto plugin, questo è per gli eventi base. Inoltre posta per favore il codice che stai creando/modificando, sarà più facile per chi vuole aiutarti venirti incontro leggendo direttamente qui.
^ ^
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
completo! Giocabile online, qui i dettagli! ^ ^
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^
🖤
E:3
by Testament (notare dettaglio in basso a destra)! E:3
by Idriu E:3
Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44)
Ufficiale
"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"
<- Grazie Testament E:3
Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^
by Flame ^ ^
Grazie Testament XD Fan n°1 ufficiale di PQ! :D
Viva
il Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che non
avevo programmi di grafica per fare un banner su questo pc XD (ora ho di
nuovo il mio PC veramente :D)
Rosso Guardiano della
Rpg2s RPG BY FORUM:
PV totali 2
PA totali 16
Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.
Bozze vesti non definitive qui.
Equipaggiamento:
Indossa:
60$ e 59$ divisi in due tasche interne
Levaitan
Spada a due mani elsa lunga
Guanti del Defender (2PA)
Anello del linguaggio animale (diventato del Richiamo)
Scrinieri da lanciere (2 PA)
Elmo del Leone (5 PA)
Corazza del Leone in Ferro Corrazzato (7 PA)
ZAINO (20) contenente:
Portamonete in pelle di cinghiale contenente: 100$
Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)
Corda
Bottiglia di idromele
Forma di formaggio
Torcia (serve ad illuminare, dura tre settori)
Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)
Ampolla Bianca
Semi di Balissa
CAVALLO NORMALE + SELLA (30 +2 armi) contentente:
66$
Benda di pronto soccorso x3
Spada a due mani
Fagotto per Adara (fazzoletto ricamato)
#4 Inviato 22 December 2016 - 14:21 PM
Capisco, credevo che avevi del codice che non funzionava. Comunque sposto, spero passi qualche scripter da qui. Intanto prova a guardare menù come quello delle abilità dove premendo Q e W puoi cambiare le schede dei pg, il meccanismo dovrebbe essere simile.
^ ^
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
completo! Giocabile online, qui i dettagli! ^ ^
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^
🖤
E:3
by Testament (notare dettaglio in basso a destra)! E:3
by Idriu E:3
Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44)
Ufficiale
"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"
<- Grazie Testament E:3
Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^
by Flame ^ ^
Grazie Testament XD Fan n°1 ufficiale di PQ! :D
Viva
il Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che non
avevo programmi di grafica per fare un banner su questo pc XD (ora ho di
nuovo il mio PC veramente :D)
Rosso Guardiano della
Rpg2s RPG BY FORUM:
PV totali 2
PA totali 16
Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.
Bozze vesti non definitive qui.
Equipaggiamento:
Indossa:
60$ e 59$ divisi in due tasche interne
Levaitan
Spada a due mani elsa lunga
Guanti del Defender (2PA)
Anello del linguaggio animale (diventato del Richiamo)
Scrinieri da lanciere (2 PA)
Elmo del Leone (5 PA)
Corazza del Leone in Ferro Corrazzato (7 PA)
ZAINO (20) contenente:
Portamonete in pelle di cinghiale contenente: 100$
Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)
Corda
Bottiglia di idromele
Forma di formaggio
Torcia (serve ad illuminare, dura tre settori)
Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)
Ampolla Bianca
Semi di Balissa
CAVALLO NORMALE + SELLA (30 +2 armi) contentente:
66$
Benda di pronto soccorso x3
Spada a due mani
Fagotto per Adara (fazzoletto ricamato)
#5 Inviato 27 August 2018 - 00:30 AM
Capisco, credevo che avevi del codice che non funzionava. Comunque sposto, spero passi qualche scripter da qui. Intanto prova a guardare menù come quello delle abilità dove premendo Q e W puoi cambiare le schede dei pg, il meccanismo dovrebbe essere simile.
^ ^
Ciao Gente come vi va la vita?! :D
P.S: Sono consapevole che il post è vecchiotto ma volevo comunque rispondere alla richiesta, magari qualcuno ha lo stesso problema e..capito?! Ok. :)
Dunque:
1.Per prima cosa capiamo come si costruisce una finestra in linea generale:
function Esempio_di_Finestra() { this.initialize.apply(this, arguments); };
D: Cosa ho fatto?
R: Semplice, ho richiamato il costrutto 'function'; poi ho dato un nome qualsiasi alla cosa che voglio realizzare;
Ricordate che il Javascript è un linguaggio ad oggetti. Quindi quando noi conferiamo un nome ad un oggetto,
noi non lo idealizziamo solo, ma lo creiamo nel momento esatto in cui gli conferiamo il nome.
Poi.. siccome il nostro oggetto possiederà anche delle funzionalità al suo interno, allegate al nome gli diamo pure due parentesi tonde per il momento vuote. Avremo tempo di specificarle dopo.
(per specificarle intendo che avremo modo di conferire a questo oggetto i propri attributi (((BIG correggetemi se sbaglio!))))
In sintesi abbiamo spiegato sino a qui:
function Esempio_di_Finestra()
Adesso però solo così sappiamo che siamo in procinto di creare un oggetto nominato Esempio_di_Finestra che avrà delle caratteristiche. Ora bisogna finalizzare le sue caratteristiche e per farlo bisogna chiudere il processo di idealizzazione con le parentesi graffe susseguite da un punto e virgola, segno conclusivo dell'effettuazione dell'operazione. In sostanza così:
function Finestra_Esempio() { };
Tra queste parentesi graffe conferiremo tutti gli ordini che vorremo imporre a quest'oggetto che stiamo appena creando.
Il Primo comando che occorre conferire sempre a tutti gli oggetti che si vorranno creare è il comando:
this.initialize.apply(this,arguments);
D: Cosa ho fatto?
R: Semplice ho comandato che Questo! Oggetto debba inizializzarsi
this.initialize
this = (Questo) costrutto riflessivo riferito all'oggetto
. = costrutto di concatenamento comando
initialize = comando 'initialize' (inizializza oggetto)
Non ho finito..
Ecco giunto il momento di specificare le caratteristiche generiche che avrà l'oggetto in questione, ovvero:
.apply(this,arguments);
. = altro costrutto di concatenamento comando
apply = comando 'apply' (applica all'oggetto)
( = inizio specifica caratteristiche...
this, = indica che le caratteristiche influenzeranno l'oggetto in questione.
arguments = possiederà delle caratteristiche (in questo momento ancora non definite)
) = chiusura specifica caratteristiche.
; = Conclusione comando.
Quindi ricapitoliamo:
function Esempio_di_Finestra() { this.initialize.apply(this,arguments); };
Tutto questo periodo di codice corrisponde al metodo complessivo per costituire l'identificazione dell'oggetto in questione.
Nome e possibilità di inserire caratteristiche.
Adesso dobbiamo associare al nostro oggetto appena creato un'appartenenza.
Questo perché bisogna ricordare che tutti gli oggetti creati in Javascript sono 'figli' di oggetti più grossi definiti 'padri'. Nel nostro caso sappiamo che stiamo creando una Finestra. Quindi il nostro oggetto apparterrà alla categoria Finestra (la categoria Finestra è il suo Oggetto Padre).
Il metodo per permettere che il nostro oggetto venga associato a questa categoria è il seguente:
Esempio_di_Finestra.prototype = Object.create(Window_Selectable.prototype);
Esempio_di_Finestra = Il nostro oggetto (fino ad ora non definito)
. = costrutto di concatenamento
prototype = comando 'prototype' (unito al nome all'oggetto permettono il concatenamento
con i costrutti e i comandi che si utilizzeranno nei prossimi metodi.
= = costrutto associativo (lega l'oggetto alla categoria di appartenenza)
Object = E' l'oggetto Padre di tutte le altre categorie (le comprende tutte)
. = costrutto di concatenamento
create = comando 'create' (Estrapola la sezione specifica di Object che poi sarà la
categoria Padre dell'oggetto che abbiamo appena creato).
( = inizio specifica..
Window_Selectable = La categoria specifica di cui farà parte il nostro oggetto.
. = costrutto di concatenamento
prototype = comando 'prototype' (unito al nome all'oggetto permettono il concatenamento
con i costrutti e i comandi che si utilizzeranno nei prossimi metodi.
) = chiusura specifica.
; = Conclusione comando.
Con questa stringa di codice abbiamo finalmente specificato che Esempio_di_Finestra adesso è effettivamente una finestra. Perché diventando un oggetto Figlio di Window_Selectable assumerà tutti i metodi e tutte le caratteristiche che apparterranno al suo oggetto Padre. In sintesi Esempio_di_Finestra apparterrà da ora in poi alla categoria Window_Selectable. (Finestre Selezionabili)
Di sua volta Window_Selectable è figlia dell'oggetto Object che è padre di tutte le categorie presenti in RPGMV
E adesso possiamo iniziare a richiamare tutti i comandi che possono essere estratti dalla categoria di cui è figlio
il nostro oggetto (ossia la nostra finestra)
Esempio_di_Finestra.prototype.constructor = Esempio_di_Finestra;
Come il comando constructor che la identifica questa volta non come oggetto generico ma come finestra.
Esempio_di_Finestra.prototype.initialize = function(x, y, width, height) { Window_Selectable.prototype.initialize.call(this, x, y, width, height); };
Il comando 'initialize' che questa volta però assume le proprietà utili per costruire una vera e propria finestra
con annessi attributi quali: 'this' inteso come un 'se stesso' riflessivo, ovvero le funzioni interesseranno l'oggetto in se; 'x' e 'y' che altri non sono che le coordinate che serviranno ad impostare una posizione della nostra oggetto/finestra; e per ultimo le grandezze 'width' e 'height'. E' intuibile che questi attributi appartengono a Selectable, c'è pure specificato, ma non solo questo così facendo anche le impostazioni, cioé le variabili ad esse associate saranno standard come in selectable. Questo è utile a livello di scripting per evitare di ripetersi sempre,
ma se si vuole avere maggior controllo di editing potremmo strutturare il tutto in questo modo:
Esempio_di_Finestra.prototype.initialize = function(x, y, width, height) { this.x = 0 this.y = 0 this.width = 640 this.height = 480 };
E poi dopo come dice Guardian potremmo recarci alla riga 2116 dello script rpg_windows.js e valutare come strutturare questa finestra cosa inserire al suo interno. Potremmo strutturarla dall'esoscheletro identico a Window_SkillList e vedere un po cosa estrarre e cosa no. Oppure Window_Status che dovrebbe essere più semplice. Ad ogni modo mi sto interessando alla cosa e entro domani completerò questo post (ora ho sonno)
[POST IN FASE DI COMPLETAMENTO]
Qui di seguito vi sono le classi che si devono consultare per xhi volesse come me cimentarsi nell'impresa:
//----------------------------------------------------------------------------- // Window_Selectable // // The window class with cursor movement and scroll functions. function Window_Selectable() { this.initialize.apply(this, arguments); } Window_Selectable.prototype = Object.create(Window_Base.prototype); Window_Selectable.prototype.constructor = Window_Selectable; Window_Selectable.prototype.initialize = function(x, y, width, height) { Window_Base.prototype.initialize.call(this, x, y, width, height); this._index = -1; this._cursorFixed = false; this._cursorAll = false; this._stayCount = 0; this._helpWindow = null; this._handlers = {}; this._touching = false; this._scrollX = 0; this._scrollY = 0; this.deactivate(); }; Window_Selectable.prototype.index = function() { return this._index; }; Window_Selectable.prototype.cursorFixed = function() { return this._cursorFixed; }; Window_Selectable.prototype.setCursorFixed = function(cursorFixed) { this._cursorFixed = cursorFixed; }; Window_Selectable.prototype.cursorAll = function() { return this._cursorAll; }; Window_Selectable.prototype.setCursorAll = function(cursorAll) { this._cursorAll = cursorAll; }; Window_Selectable.prototype.maxCols = function() { return 1; }; Window_Selectable.prototype.maxItems = function() { return 0; }; Window_Selectable.prototype.spacing = function() { return 12; }; Window_Selectable.prototype.itemWidth = function() { return Math.floor((this.width - this.padding * 2 + this.spacing()) / this.maxCols() - this.spacing()); }; Window_Selectable.prototype.itemHeight = function() { return this.lineHeight(); }; Window_Selectable.prototype.maxRows = function() { return Math.max(Math.ceil(this.maxItems() / this.maxCols()), 1); }; Window_Selectable.prototype.activate = function() { Window_Base.prototype.activate.call(this); this.reselect(); }; Window_Selectable.prototype.deactivate = function() { Window_Base.prototype.deactivate.call(this); this.reselect(); }; Window_Selectable.prototype.select = function(index) { this._index = index; this._stayCount = 0; this.ensureCursorVisible(); this.updateCursor(); this.callUpdateHelp(); }; Window_Selectable.prototype.deselect = function() { this.select(-1); }; Window_Selectable.prototype.reselect = function() { this.select(this._index); }; Window_Selectable.prototype.row = function() { return Math.floor(this.index() / this.maxCols()); }; Window_Selectable.prototype.topRow = function() { return Math.floor(this._scrollY / this.itemHeight()); }; Window_Selectable.prototype.maxTopRow = function() { return Math.max(0, this.maxRows() - this.maxPageRows()); }; Window_Selectable.prototype.setTopRow = function(row) { var scrollY = row.clamp(0, this.maxTopRow()) * this.itemHeight(); if (this._scrollY !== scrollY) { this._scrollY = scrollY; this.refresh(); this.updateCursor(); } }; Window_Selectable.prototype.resetScroll = function() { this.setTopRow(0); }; Window_Selectable.prototype.maxPageRows = function() { var pageHeight = this.height - this.padding * 2; return Math.floor(pageHeight / this.itemHeight()); }; Window_Selectable.prototype.maxPageItems = function() { return this.maxPageRows() * this.maxCols(); }; Window_Selectable.prototype.isHorizontal = function() { return this.maxPageRows() === 1; }; Window_Selectable.prototype.bottomRow = function() { return Math.max(0, this.topRow() + this.maxPageRows() - 1); }; Window_Selectable.prototype.setBottomRow = function(row) { this.setTopRow(row - (this.maxPageRows() - 1)); }; Window_Selectable.prototype.topIndex = function() { return this.topRow() * this.maxCols(); }; Window_Selectable.prototype.itemRect = function(index) { var rect = new Rectangle(); var maxCols = this.maxCols(); rect.width = this.itemWidth(); rect.height = this.itemHeight(); rect.x = index % maxCols * (rect.width + this.spacing()) - this._scrollX; rect.y = Math.floor(index / maxCols) * rect.height - this._scrollY; return rect; }; Window_Selectable.prototype.itemRectForText = function(index) { var rect = this.itemRect(index); rect.x += this.textPadding(); rect.width -= this.textPadding() * 2; return rect; }; Window_Selectable.prototype.setHelpWindow = function(helpWindow) { this._helpWindow = helpWindow; this.callUpdateHelp(); }; Window_Selectable.prototype.showHelpWindow = function() { if (this._helpWindow) { this._helpWindow.show(); } }; Window_Selectable.prototype.hideHelpWindow = function() { if (this._helpWindow) { this._helpWindow.hide(); } }; Window_Selectable.prototype.setHandler = function(symbol, method) { this._handlers[symbol] = method; }; Window_Selectable.prototype.isHandled = function(symbol) { return !!this._handlers[symbol]; }; Window_Selectable.prototype.callHandler = function(symbol) { if (this.isHandled(symbol)) { this._handlers[symbol](); } }; Window_Selectable.prototype.isOpenAndActive = function() { return this.isOpen() && this.active; }; Window_Selectable.prototype.isCursorMovable = function() { return (this.isOpenAndActive() && !this._cursorFixed && !this._cursorAll && this.maxItems() > 0); }; Window_Selectable.prototype.cursorDown = function(wrap) { var index = this.index(); var maxItems = this.maxItems(); var maxCols = this.maxCols(); if (index < maxItems - maxCols || (wrap && maxCols === 1)) { this.select((index + maxCols) % maxItems); } }; Window_Selectable.prototype.cursorUp = function(wrap) { var index = this.index(); var maxItems = this.maxItems(); var maxCols = this.maxCols(); if (index >= maxCols || (wrap && maxCols === 1)) { this.select((index - maxCols + maxItems) % maxItems); } }; Window_Selectable.prototype.cursorRight = function(wrap) { var index = this.index(); var maxItems = this.maxItems(); var maxCols = this.maxCols(); if (maxCols >= 2 && (index < maxItems - 1 || (wrap && this.isHorizontal()))) { this.select((index + 1) % maxItems); } }; Window_Selectable.prototype.cursorLeft = function(wrap) { var index = this.index(); var maxItems = this.maxItems(); var maxCols = this.maxCols(); if (maxCols >= 2 && (index > 0 || (wrap && this.isHorizontal()))) { this.select((index - 1 + maxItems) % maxItems); } }; Window_Selectable.prototype.cursorPagedown = function() { var index = this.index(); var maxItems = this.maxItems(); if (this.topRow() + this.maxPageRows() < this.maxRows()) { this.setTopRow(this.topRow() + this.maxPageRows()); this.select(Math.min(index + this.maxPageItems(), maxItems - 1)); } }; Window_Selectable.prototype.cursorPageup = function() { var index = this.index(); if (this.topRow() > 0) { this.setTopRow(this.topRow() - this.maxPageRows()); this.select(Math.max(index - this.maxPageItems(), 0)); } }; Window_Selectable.prototype.scrollDown = function() { if (this.topRow() + 1 < this.maxRows()) { this.setTopRow(this.topRow() + 1); } }; Window_Selectable.prototype.scrollUp = function() { if (this.topRow() > 0) { this.setTopRow(this.topRow() - 1); } }; Window_Selectable.prototype.update = function() { Window_Base.prototype.update.call(this); this.updateArrows(); this.processCursorMove(); this.processHandling(); this.processWheel(); this.processTouch(); this._stayCount++; }; Window_Selectable.prototype.updateArrows = function() { var topRow = this.topRow(); var maxTopRow = this.maxTopRow(); this.downArrowVisible = maxTopRow > 0 && topRow < maxTopRow; this.upArrowVisible = topRow > 0; }; Window_Selectable.prototype.processCursorMove = function() { if (this.isCursorMovable()) { var lastIndex = this.index(); if (Input.isRepeated('down')) { this.cursorDown(Input.isTriggered('down')); } if (Input.isRepeated('up')) { this.cursorUp(Input.isTriggered('up')); } if (Input.isRepeated('right')) { this.cursorRight(Input.isTriggered('right')); } if (Input.isRepeated('left')) { this.cursorLeft(Input.isTriggered('left')); } if (!this.isHandled('pagedown') && Input.isTriggered('pagedown')) { this.cursorPagedown(); } if (!this.isHandled('pageup') && Input.isTriggered('pageup')) { this.cursorPageup(); } if (this.index() !== lastIndex) { SoundManager.playCursor(); } } }; Window_Selectable.prototype.processHandling = function() { if (this.isOpenAndActive()) { if (this.isOkEnabled() && this.isOkTriggered()) { this.processOk(); } else if (this.isCancelEnabled() && this.isCancelTriggered()) { this.processCancel(); } else if (this.isHandled('pagedown') && Input.isTriggered('pagedown')) { this.processPagedown(); } else if (this.isHandled('pageup') && Input.isTriggered('pageup')) { this.processPageup(); } } }; Window_Selectable.prototype.processWheel = function() { if (this.isOpenAndActive()) { var threshold = 20; if (TouchInput.wheelY >= threshold) { this.scrollDown(); } if (TouchInput.wheelY <= -threshold) { this.scrollUp(); } } }; Window_Selectable.prototype.processTouch = function() { if (this.isOpenAndActive()) { if (TouchInput.isTriggered() && this.isTouchedInsideFrame()) { this._touching = true; this.onTouch(true); } else if (TouchInput.isCancelled()) { if (this.isCancelEnabled()) { this.processCancel(); } } if (this._touching) { if (TouchInput.isPressed()) { this.onTouch(false); } else { this._touching = false; } } } else { this._touching = false; } }; Window_Selectable.prototype.isTouchedInsideFrame = function() { var x = this.canvasToLocalX(TouchInput.x); var y = this.canvasToLocalY(TouchInput.y); return x >= 0 && y >= 0 && x < this.width && y < this.height; }; Window_Selectable.prototype.onTouch = function(triggered) { var lastIndex = this.index(); var x = this.canvasToLocalX(TouchInput.x); var y = this.canvasToLocalY(TouchInput.y); var hitIndex = this.hitTest(x, y); if (hitIndex >= 0) { if (hitIndex === this.index()) { if (triggered && this.isTouchOkEnabled()) { this.processOk(); } } else if (this.isCursorMovable()) { this.select(hitIndex); } } else if (this._stayCount >= 10) { if (y < this.padding) { this.cursorUp(); } else if (y >= this.height - this.padding) { this.cursorDown(); } } if (this.index() !== lastIndex) { SoundManager.playCursor(); } }; Window_Selectable.prototype.hitTest = function(x, y) { if (this.isContentsArea(x, y)) { var cx = x - this.padding; var cy = y - this.padding; var topIndex = this.topIndex(); for (var i = 0; i < this.maxPageItems(); i++) { var index = topIndex + i; if (index < this.maxItems()) { var rect = this.itemRect(index); var right = rect.x + rect.width; var bottom = rect.y + rect.height; if (cx >= rect.x && cy >= rect.y && cx < right && cy < bottom) { return index; } } } } return -1; }; Window_Selectable.prototype.isContentsArea = function(x, y) { var left = this.padding; var top = this.padding; var right = this.width - this.padding; var bottom = this.height - this.padding; return (x >= left && y >= top && x < right && y < bottom); }; Window_Selectable.prototype.isTouchOkEnabled = function() { return this.isOkEnabled(); }; Window_Selectable.prototype.isOkEnabled = function() { return this.isHandled('ok'); }; Window_Selectable.prototype.isCancelEnabled = function() { return this.isHandled('cancel'); }; Window_Selectable.prototype.isOkTriggered = function() { return Input.isRepeated('ok'); }; Window_Selectable.prototype.isCancelTriggered = function() { return Input.isRepeated('cancel'); }; Window_Selectable.prototype.processOk = function() { if (this.isCurrentItemEnabled()) { this.playOkSound(); this.updateInputData(); this.deactivate(); this.callOkHandler(); } else { this.playBuzzerSound(); } }; Window_Selectable.prototype.playOkSound = function() { SoundManager.playOk(); }; Window_Selectable.prototype.playBuzzerSound = function() { SoundManager.playBuzzer(); }; Window_Selectable.prototype.callOkHandler = function() { this.callHandler('ok'); }; Window_Selectable.prototype.processCancel = function() { SoundManager.playCancel(); this.updateInputData(); this.deactivate(); this.callCancelHandler(); }; Window_Selectable.prototype.callCancelHandler = function() { this.callHandler('cancel'); }; Window_Selectable.prototype.processPageup = function() { SoundManager.playCursor(); this.updateInputData(); this.deactivate(); this.callHandler('pageup'); }; Window_Selectable.prototype.processPagedown = function() { SoundManager.playCursor(); this.updateInputData(); this.deactivate(); this.callHandler('pagedown'); }; Window_Selectable.prototype.updateInputData = function() { Input.update(); TouchInput.update(); }; Window_Selectable.prototype.updateCursor = function() { if (this._cursorAll) { var allRowsHeight = this.maxRows() * this.itemHeight(); this.setCursorRect(0, 0, this.contents.width, allRowsHeight); this.setTopRow(0); } else if (this.isCursorVisible()) { var rect = this.itemRect(this.index()); this.setCursorRect(rect.x, rect.y, rect.width, rect.height); } else { this.setCursorRect(0, 0, 0, 0); } }; Window_Selectable.prototype.isCursorVisible = function() { var row = this.row(); return row >= this.topRow() && row <= this.bottomRow(); }; Window_Selectable.prototype.ensureCursorVisible = function() { var row = this.row(); if (row < this.topRow()) { this.setTopRow(row); } else if (row > this.bottomRow()) { this.setBottomRow(row); } }; Window_Selectable.prototype.callUpdateHelp = function() { if (this.active && this._helpWindow) { this.updateHelp(); } }; Window_Selectable.prototype.updateHelp = function() { this._helpWindow.clear(); }; Window_Selectable.prototype.setHelpWindowItem = function(item) { if (this._helpWindow) { this._helpWindow.setItem(item); } }; Window_Selectable.prototype.isCurrentItemEnabled = function() { return true; }; Window_Selectable.prototype.drawAllItems = function() { var topIndex = this.topIndex(); for (var i = 0; i < this.maxPageItems(); i++) { var index = topIndex + i; if (index < this.maxItems()) { this.drawItem(index); } } }; Window_Selectable.prototype.drawItem = function(index) { }; Window_Selectable.prototype.clearItem = function(index) { var rect = this.itemRect(index); this.contents.clearRect(rect.x, rect.y, rect.width, rect.height); }; Window_Selectable.prototype.redrawItem = function(index) { if (index >= 0) { this.clearItem(index); this.drawItem(index); } }; Window_Selectable.prototype.redrawCurrentItem = function() { this.redrawItem(this.index()); }; Window_Selectable.prototype.refresh = function() { if (this.contents) { this.contents.clear(); this.drawAllItems(); } }; //----------------------------------------------------------------------------- // Window_Status // // The window for displaying full status on the status screen. function Window_Status() { this.initialize.apply(this, arguments); } Window_Status.prototype = Object.create(Window_Selectable.prototype); Window_Status.prototype.constructor = Window_Status; Window_Status.prototype.initialize = function() { var width = Graphics.boxWidth; var height = Graphics.boxHeight; Window_Selectable.prototype.initialize.call(this, 0, 0, width, height); this.refresh(); this.activate(); }; Window_Status.prototype.setActor = function(actor) { if (this._actor !== actor) { this._actor = actor; this.refresh(); } }; Window_Status.prototype.refresh = function() { this.contents.clear(); if (this._actor) { var lineHeight = this.lineHeight(); this.drawBlock1(lineHeight * 0); this.drawHorzLine(lineHeight * 1); this.drawBlock2(lineHeight * 2); this.drawHorzLine(lineHeight * 6); this.drawBlock3(lineHeight * 7); this.drawHorzLine(lineHeight * 13); this.drawBlock4(lineHeight * 14); } }; Window_Status.prototype.drawBlock1 = function(y) { this.drawActorName(this._actor, 6, y); this.drawActorClass(this._actor, 192, y); this.drawActorNickname(this._actor, 432, y); }; Window_Status.prototype.drawBlock2 = function(y) { this.drawActorFace(this._actor, 12, y); this.drawBasicInfo(204, y); this.drawExpInfo(456, y); }; Window_Status.prototype.drawBlock3 = function(y) { this.drawParameters(48, y); this.drawEquipments(432, y); }; Window_Status.prototype.drawBlock4 = function(y) { this.drawProfile(6, y); }; Window_Status.prototype.drawHorzLine = function(y) { var lineY = y + this.lineHeight() / 2 - 1; this.contents.paintOpacity = 48; this.contents.fillRect(0, lineY, this.contentsWidth(), 2, this.lineColor()); this.contents.paintOpacity = 255; }; Window_Status.prototype.lineColor = function() { return this.normalColor(); }; Window_Status.prototype.drawBasicInfo = function(x, y) { var lineHeight = this.lineHeight(); this.drawActorLevel(this._actor, x, y + lineHeight * 0); this.drawActorIcons(this._actor, x, y + lineHeight * 1); this.drawActorHp(this._actor, x, y + lineHeight * 2); this.drawActorMp(this._actor, x, y + lineHeight * 3); }; Window_Status.prototype.drawParameters = function(x, y) { var lineHeight = this.lineHeight(); for (var i = 0; i < 6; i++) { var paramId = i + 2; var y2 = y + lineHeight * i; this.changeTextColor(this.systemColor()); this.drawText(TextManager.param(paramId), x, y2, 160); this.resetTextColor(); this.drawText(this._actor.param(paramId), x + 160, y2, 60, 'right'); } }; Window_Status.prototype.drawExpInfo = function(x, y) { var lineHeight = this.lineHeight(); var expTotal = TextManager.expTotal.format(TextManager.exp); var expNext = TextManager.expNext.format(TextManager.level); var value1 = this._actor.currentExp(); var value2 = this._actor.nextRequiredExp(); if (this._actor.isMaxLevel()) { value1 = '-------'; value2 = '-------'; } this.changeTextColor(this.systemColor()); this.drawText(expTotal, x, y + lineHeight * 0, 270); this.drawText(expNext, x, y + lineHeight * 2, 270); this.resetTextColor(); this.drawText(value1, x, y + lineHeight * 1, 270, 'right'); this.drawText(value2, x, y + lineHeight * 3, 270, 'right'); }; Window_Status.prototype.drawEquipments = function(x, y) { var equips = this._actor.equips(); var count = Math.min(equips.length, this.maxEquipmentLines()); for (var i = 0; i < count; i++) { this.drawItemName(equips[i], x, y + this.lineHeight() * i); } }; Window_Status.prototype.drawProfile = function(x, y) { this.drawTextEx(this._actor.profile(), x, y); }; Window_Status.prototype.maxEquipmentLines = function() { return 6; }; //----------------------------------------------------------------------------- // Scene_Status // // The scene class of the status screen. function Scene_Status() { this.initialize.apply(this, arguments); } Scene_Status.prototype = Object.create(Scene_MenuBase.prototype); Scene_Status.prototype.constructor = Scene_Status; Scene_Status.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_Status.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); this._statusWindow = new Window_Status(); this._statusWindow.setHandler('cancel', this.popScene.bind(this)); this._statusWindow.setHandler('pagedown', this.nextActor.bind(this)); this._statusWindow.setHandler('pageup', this.previousActor.bind(this)); this.addWindow(this._statusWindow); this.refreshActor(); }; Scene_Status.prototype.refreshActor = function() { var actor = this.actor(); this._statusWindow.setActor(actor); }; Scene_Status.prototype.onActorChange = function() { this.refreshActor(); this._statusWindow.activate(); };