tchegito / zildo

The Land of Alembrume
GNU Lesser General Public License v3.0
4 stars 1 forks source link

[2.62] ArrayIndexOutOfBounds #183

Open tchegito opened 4 years ago

tchegito commented 4 years ago

Happened 20/02/2020

version=v2.62
map=fermem2 (27x21)
sprites=[Perso=Zildo
Coords:(116.30319, 257.7124 0.0)
info=ZILDO
mvt=VIDE pv=6 weapon=[FLUT,0] name=benoit lasthit=null, 117.30319, 267.7124 (80 - bank 0), 691.0, 540.0 (83 - bank 0), 691.0, 540.0 (SHADOW), 691.0, 540.0 (102 - bank 0), 691.0, 540.0 (116 - bank 0), 691.0, 540.0 (115 - bank 0), Entity id=310
x=66.0
y=299.0
nSpr=161
visible=true, Entity id=311
x=303.0
y=299.0
nSpr=161
visible=true, Entity id=312
x=126.0
y=299.0
nSpr=161
visible=true, Entity id=313
x=371.0
y=299.0
nSpr=161
visible=true, Entity id=314
x=48.0
y=152.0
nSpr=26
visible=true, Entity id=315
x=64.0
y=152.0
nSpr=26
visible=true, Entity id=316
x=96.0
y=152.0
nSpr=26
visible=true, Entity id=317
x=80.0
y=152.0
nSpr=26
visible=true, Entity id=318
x=32.0
y=152.0
nSpr=26
visible=true, 253.0, 256.0 (BARREL), 262.0, 269.0 (BARREL), 153.0, 259.0 (BARREL), 143.0, 277.0 (BARREL), Entity id=323
x=108.0
y=152.0
nSpr=25
visible=true, Entity id=324
x=384.0
y=144.0
nSpr=26
visible=true, Entity id=325
x=368.0
y=144.0
nSpr=26
visible=true, Entity id=326
x=352.0
y=144.0
nSpr=26
visible=true, Entity id=327
x=336.0
y=144.0
nSpr=26
visible=true, Entity id=328
x=320.0
y=144.0
nSpr=26
visible=true, Entity id=329
x=309.0
y=144.0
nSpr=25
visible=true, 232.0, 163.0 (BARREL), 239.0, 175.0 (BARREL), 247.0, 126.0 (BARREL), 239.0, 136.0 (BARREL), 251.0, 145.0 (BARREL), 275.0, 120.0 (BARREL), 257.0, 115.0 (BARREL), 281.0, 137.0 (BARREL), 275.0, 184.0 (BARREL), 72.0, 256.0 (CUBE_ORANGE), Entity id=340
x=168.0
y=48.0
nSpr=202
visible=true, 
120.0, 256.0 (HEART_FRAGMENT)]
persos=[Perso=Zildo
Coords:(116.30319, 257.7124 0.0)
info=ZILDO
mvt=VIDE pv=6 weapon=[FLUT,0] name=benoit lasthit=null]
variables={BilelIgorVillage=[[EMPTY_BAG, 1], 100, 2], [[BLUEDROP, 1], 15, -1], [[DYNAMITE, 1], 100, 2], nettleCount=-1, Carlo=[[MOON, 1], 800, 1], Dizzie=[[DYNAMITE, 1], 15, 20], allowedDynamite=yes, allowedTakeFork=no}
scripts=0 scripts running {[}
quests=[flut_ask, flut, chateau_ask, fermierperdu_ask, enlevement, fermem2(7, 15)]
lastdialog=
�Lugdunia�
�Paul�: Si tu cherches mon père, il doit être en ville.
�Laura�: Donne moi des nouvelles de mon fermier de mari dès que tu en as ! Merci d'avance, petit.
�Laura�: Mon mari n'est toujours pas rentré, alors qu'il n'en avait pas pour longtemps. Est-ce que tu pourrais essayer de le retrouver s'il te plait ?
�Laura�: Bonjour petit ! Bienvenue dans notre modeste ferme !
�Mostapha�: Mais pour l'instant j'ai plus rien du tout à vendre... Repasse plus tard !
�Mostapha�: Salut j'suis Mostapha le meilleur marchand du village...
�Benoit�: Je ne devrais pas aller à la taverne, mon grand-père me l'a déconseillé.
�Grand-père�: Le château est juste au sud du village, à côté de la prison.
�Grand-père�: benoit, tu es assez grand maintenant. Prend ce collier, il te sera très utile.
�Grand-père�: Tu devrais aller au château du roi Trion pour lui en parler. C'est tout de même sa fille.
�Grand-père�: Je ne sais pas ce qu'ils lui veulent, mais cela ne présage rien de bon.
�Grand-père�: Merci beaucoup pour la flûte, tu peux la garder pour l'instant. Mais durant ton absence un garde de Polaky est venu chercher ma petite Roxy...
�Princesse Roxy�: Oui grand-père ?
�Grand-père�: Roxy !
�Grand-père�: Ah ! Le marquis veut voir ma Roxy ? Très bien.
�Garde noir�: Vieil homme, je viens voir la princesse Roxy, sur ordre du marquis de Polaky.
Pendant ce temps, au village...
�Gerard�: Tiens, prends en bien soin... Le grand père y tient beaucoup.
�Gerard�: Il me semble que le grand-père m'avait donné une flûte à réparer depuis quelque temps. Est-ce que tu es venu la chercher ?
�Princesse Roxy�: Les bûcherons ? Prends le chemin juste ici et tu trouveras leurs deux maisons.
java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
    at java.util.ArrayList.get(ArrayList.java:437)
    at zildo.client.gui.GUIDisplay.drawFrame(GUIDisplay.java:625)
    at zildo.client.gui.GUIDisplay.draw(GUIDisplay.java:309)
    at zildo.client.ClientEngineZildo.renderFrame(ClientEngineZildo.java:220)
    at zildo.platform.opengl.AndroidOpenGLGestion.render(AndroidOpenGLGestion.java:406)
    at zildo.client.Client.render(Client.java:273)
    at zildo.client.Client.mainLoop(Client.java:233)
    at com.alembrum.OpenGLRenderer.onDrawFrame(OpenGLRenderer.java:116)
    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1571)
    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1270)
tchegito commented 4 years ago

It's a bug where such situation is happening:

Actually, looking at the code, that is possible. Because we say the sequence is drawn as soon as the first sprite has been added in it. So the condition seems wrong in the incriminated code:

        // Draw corner frame
        if (frameDialogSequence.isDrawn()) {
            // Animate arrow indicating next dialog, if necessary
            SpriteEntity entity = frameDialogSequence.get(4);
            dialogDisplay.animateArrow(entity);
        }

But we have to validate that in UT.