gage2d multiple layers problem (>2)

Hey,

I’m working on a project using gage2d. When I add more than 2 layers using a parallax, no error is thrown but the display stops updating.

simplified example:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JPanel;

import com.dnsalias.java.gage.map.Map;
import com.dnsalias.java.gage.map.Parallax;
import com.dnsalias.java.gage.map.TileManager;

public class test {
      
      Image tiles[] = new Image[1];
      
      Map map1;
      Map map2;
      Map map3;
      
      Parallax parallax;
      
      JFrame frm;

      public test(){
            
            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
            GraphicsDevice gd = ge.getDefaultScreenDevice(); 
            GraphicsConfiguration gc = gd.getDefaultConfiguration();
            
            frm = new JFrame(gc);
                        
            JPanel content = new JPanel();
            content.setLayout(null);
                        
            mPanel mPanel = new mPanel();                        
            mPanel.setBounds(0,0,500,400);            
            content.add(mPanel);      
                        
            frm.setContentPane(content);
            frm.setSize(640,480);
            frm.setTitle("Layer Test");
            frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);            
            frm.setVisible(true);
      }
      
      public static void main(String[] args) {
            new test();
      }
                        
            
      private class mPanel extends JPanel {
            
            public mPanel(){
                  TileManager manager = new TileManager(64,64);
                  
                  map1 = new Map(manager, 20, 20, 500, 400);
                  map2 = new Map(manager, 20, 20, 500, 400);
                  map3 = new Map(manager, 20, 20, 500, 400);
                  
                  
                  try{
                        tiles[0] = Toolkit.getDefaultToolkit().getImage(test.class.getResource("images/tile1.png"));
                        MediaTracker m = new MediaTracker(frm);
                        m.addImage(tiles[0], 0);
                        m.waitForAll();
                  }catch(Exception e){
                        e.printStackTrace();
                  }
                  
                  int[] ids = new int[tiles.length];
                  
                  for(int i=0; i<tiles.length; i++) ids[i] = manager.addTile(tiles[i]);
                  
                  int mapdata[] = new int[400];
                  int mapdata2[] = new int[400];
                  
                  for (int i = 0; i < mapdata.length; i++){
                        mapdata[i] = 0;
                        mapdata2[i] = 1;
                  }
                  
                  map1.copyMap(mapdata);
                  map2.copyMap(mapdata);
                  map3.copyMap(mapdata2);
                  
            }
            
            public void paint(Graphics g){
                  g.setColor(Color.white);
                  
                  parallax = new Parallax();
                  
                  parallax.addMap(map1);
                  //parallax.addMap(map2);
                  parallax.addMap(map3);
                  
                  parallax.render(g);
                  g.dispose();
            }
      }
                  
}

The above code adds a blank layer on the bottom, and a layer filled with “tile1.png” on top.

It works perfectly with 2 layers, but if you remove the comment on the line that says parallax.addMap(map2), nothing is displayed.