[LWJGL] Tile System: How to makes only certain tiles change

If you look at my projects in my profile, or the newest project in showcase, you’ll see I have a basic tile engine. I spent most of my time trying to debug its’ problems. I have a way of making the tiles load according to their size. The problem is, whenever I call the sizechanger method, it changes the size of all boxes.

Mainly I am asking if you can edit my code so that each rectangle is different when It is called or resized. I just couldn’t think of a good way. Hope you can help on my first project.

Notice
Keep in mind the copyright comment is because I used his set up and basics. I implemented the resizing and location, and how it is arranged.

The code:

* Copyright (c) 2013, Oskar Veerhoek
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice, this
 *    list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * The views and conclusions contained in the software and documentation are those
 * of the authors and should not be interpreted as representing official policies,
 * either expressed or implied, of the FreeBSD Project.
 */

import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;



import java.util.ArrayList;
import java.util.List;



import static org.lwjgl.opengl.GL11.*;


/**
 * Shows how to use input to achieve cool results. Thanks to Azziplekkus1337 for the better way of handling the
 * cool-down!
 *
 * @author Oskar
 */
public class InputDemo {


	
    private static final List<Box> shapes = new ArrayList<Box>(16);
    private static boolean somethingIsSelected = false;
    private static long lastColourChange;

    public static void main(String args[]) {
        try {
            Display.setDisplayMode(new DisplayMode(640, 480));
            Display.setTitle("Input Demo");
            Display.create();
        } catch (LWJGLException e) {
            e.printStackTrace();
            Display.destroy();
            System.exit(1);
        }
        
        glMatrixMode(GL_PROJECTION);
        glOrtho(0, 640, 480, 0, 1, -1);
        glMatrixMode(GL_MODELVIEW);
        while (!Display.isCloseRequested()) {
            glClear(GL_COLOR_BUFFER_BIT);
            while (Keyboard.next()) {
            	//RED
                if (Keyboard.getEventKey() == Keyboard.KEY_1 && Keyboard.getEventKeyState()) {
                	if (Box.size == 0){
                    shapes.add(new Box(0, 463, "r"));
                	}
                	if (Box.size == 1){
                        shapes.add(new Box(0, 448, "r"));
                    }
                	if (Box.size == 2){
                        shapes.add(new Box(0 , 430, "r"));
                    }
                	if (Box.size == 3){
                        shapes.add(new Box(0 , 430, "r"));
                    }
                }
                //BLUE
                if (Keyboard.getEventKey() == Keyboard.KEY_3 && Keyboard.getEventKeyState()) {
                	if (Box.size == 0){
                        shapes.add(new Box(129, 463, "b"));
                    	}
                    	if (Box.size == 1){
                            shapes.add(new Box(129, 448, "b"));
                        }
                    	if (Box.size == 2){
                            shapes.add(new Box(129 , 430, "b"));
                        }
                    	if (Box.size == 3){
                            shapes.add(new Box(129, 430, "b"));
                        }
                }
                //GREEN
                if (Keyboard.getEventKey() == Keyboard.KEY_2 && Keyboard.getEventKeyState()) {
                	if (Box.size == 0){
                        shapes.add(new Box(64, 463, "g"));
                    	}
                    	if (Box.size == 1){
                            shapes.add(new Box(64, 448, "g"));
                        }
                    	if (Box.size == 2){
                            shapes.add(new Box(64, 430, "g"));
                        }
                    	if (Box.size == 3){
                            shapes.add(new Box(64, 430, "g"));
                        }
                }
                //WHITE
                if (Keyboard.getEventKey() == Keyboard.KEY_0 && Keyboard.getEventKeyState()) {
                	if (Box.size == 0){
                        shapes.add(new Box(590, 463, "w"));
                    	}
                    	if (Box.size == 1){
                            shapes.add(new Box(590 - 32, 448, "w"));
                        }
                    	if (Box.size == 2){
                            shapes.add(new Box(590 , 430, "w"));
                        }
                    	if (Box.size == 3){
                            shapes.add(new Box(590 , 430, "w"));
                        }
                }
            }
            if (Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
                Display.destroy();
                System.exit(0);
            }
            for (final Box box : shapes) {
                if (Mouse.isButtonDown(0) && box.isInBounds(Mouse.getX(), 480 - Mouse.getY()) && !somethingIsSelected) {
                    somethingIsSelected = true;
                    box.selected = true;
                }
                if (Mouse.isButtonDown(2) && box.isInBounds(Mouse.getX(), 480 - Mouse.getY()) && !somethingIsSelected) {
                    if ((System.currentTimeMillis() - lastColourChange) >= 200 /* milliseconds */) {
                        box.addSize();
                        lastColourChange = System.currentTimeMillis();
                    }
                }
                if (Mouse.isButtonDown(1)) {
                    box.selected = false;
                    somethingIsSelected = false;
                }


                if (box.selected) {
                    box.update(Mouse.getDX(), -Mouse.getDY());
                }

                box.checkSize();
                box.draw();
            }


            Display.update();
            Display.sync(60);
        }


        Display.destroy();
    }


    private static class Box {


        
        public static int size = 3;
		public int x, y;
        public boolean selected = false;
        private int colorRed, colorBlue, colorGreen;
        @SuppressWarnings("unused")
		public String color;
        
        


        Box(int x, int y, String color) {
            this.x = x;
            this.y = y;
            


          //  Random randomGenerator = new Random();
            if (color == "r") {
            	colorRed = 255;
            	colorBlue = 0;
            	colorGreen = 0;
            	
            	}
            if (color == "b") {
            	colorBlue = 255;
            	colorRed = 0;
            	colorGreen = 0;
            	}
            
            
            if (color == "g") {
            	colorBlue = 0;
            	colorRed = 0;
            	colorGreen = 255;
            	}
            
            if (color == "w") {
            	colorRed = 255;
            	colorBlue = 255;
            	colorGreen = 255;
            	
            	}
        }


        boolean isInBounds(int mouseX, int mouseY) {
            return mouseX > x && mouseX < x + 50 && mouseY > y && mouseY < y + 50;
        }


        void update(int dx, int dy) {
            x += dx;
            y += dy;
        }
        public void checkSize() {

            if (size > 3) {
            	size = 0;
            }
        }


        void addSize() {
        	size++;
        }


        void draw() {
            glColor3f(colorRed, colorGreen, colorBlue);
            glBegin(GL_QUADS);
            glVertex2f(x, y);
            if(size == 2){
            glVertex2f(x + 32, y);
            glVertex2f(x + 32, y + 32);
            glVertex2f(x, y + 32);
            }
            if(size == 0) {
            	 glVertex2f(x + 8, y);
                 glVertex2f(x + 8, y + 8);
                 glVertex2f(x, y + 8);
            }
            if(size == 1) {
           	 glVertex2f(x + 16, y);
                glVertex2f(x + 16, y + 16);
                glVertex2f(x, y + 16);
           }
            if(size == 3) {
              	 glVertex2f(x + 64, y);
                   glVertex2f(x + 64, y + 64);
                   glVertex2f(x, y + 64);
              }
            glEnd();
        }
    }
}

:point: :point: :point: :point: :point: :point: :point: :point: :point: :point: