Code viewer for World: Fruit Fall
function World()
{
	var scene = new THREE.Scene();
	var sky = new THREE.TextureLoader().load("uploads/moe93/sky.png");
	keyboard = {};
    scene.background = sky;
	
    var torender = new THREE.WebGLRenderer();
	function webgl() {
	    torender.setSize(window.innerWidth, window.innerHeight);
        document.body.appendChild(torender.domElement);
	}
	
	function make_ground() {
	    var texture = new THREE.TextureLoader().load( 'uploads/moe93/ground.jpg' );
	    floor = new THREE.Mesh(
	        new THREE.PlaneGeometry(100,300),
	        new THREE.MeshBasicMaterial({map:texture}));
	    floor.rotation.x -= Math.PI / 2;
	    scene.add(floor);
	}
	
	var camera;
	function make_cam() {
	    camera = new THREE.PerspectiveCamera(100, window.innerWidth/window.innerHeight, 0.1, 1000);
        camera.position.set(0, 5, 2);
        // camera.lookAt(scene.position);
	}
	
	function make_player() {
	    var box = new THREE.BoxGeometry(1, 1, 1);
	    var material = new THREE.MeshBasicMaterial({color:0x33de66});
	    player = new THREE.Mesh(box, material)
	    player.position.set(0, 4, 0);
	    scene.add(player)
	}
	
	keyboard = {}
	window.addEventListener('keydown', down);
    window.addEventListener('keyup', up);
    function down(event) {
        keyboard[event.keyCode] = true;
    }
    function up(event) {
        keyboard[event.keyCode] = false;
    }
	
	function move_player() {
	    requestAnimationFrame(move_player);
	    if (keyboard[65]) {
	        player.position.x = player.position.x - Math.sin(player.rotation.y + Math.PI / 2) * 0.5
	    }
	    if (keyboard[68]) {
	        player.position.x = player.position.x + Math.sin(player.rotation.y + Math.PI / 2) * 0.5
	    }
	    
	    camera.position.x = player.position.x;
	    camera.position.y = 5;
	    
	    torender.render(scene, camera)
	}
	
	fruits = []
	function make_fruit() {
	    for(i = 0; i < 10; i++)
	    {
	        var which_fruit = AB.randomIntAtoB(1,5)
	        var box = new THREE.BoxGeometry(3,3,3)
	        var texture_load = new THREE.TextureLoader()
	        texture_load.setPath("/uploads/moe93/")
	        if (which_fruit == 1) {
	            texture = texture_load.load("orange.png")
	        }
	        else if (which_fruit == 2) {
	            texture = texture_load.load("melon.png")
	        }
	        else if (which_fruit == 3) {
	            texture = texture_load.load("banana.png")
	        }
	        else if (which_fruit == 4) {
	            texture = texture_load.load("pineapple.png")
	        }
	        else if (which_fruit == 5) {
	            texture = texture_load.load("apple.png")
	        }
	        
	        var material = new THREE.MeshBasicMaterial({map:texture})
	        fruit = new THREE.Mesh(box, material)
	        fruit.position.x += AB.randomIntAtoB(-45,45);
	        fruit.position.z = AB.randomIntAtoB(-70, -140)
	        fruit.position.y = 2;
	        fruits.push(fruit)
	        scene.add(fruit);
	    }
	    console.log(fruit)
	}
	
	function am_i_eaten() {
	    var difference_x = Math.abs(parseInt(player.position.x - fruit.position.x));
        var difference_z = Math.abs(parseInt(player.position.z - fruit.position.z));
        
        if (difference_x <= 1 && difference_z <= 1) {
            return true
        }
        else {
            return false
        }
	}
	
	var score_counter = 0;
	var fruit;
	function move_fruit() {
	    requestAnimationFrame(move_fruit)
	    pick_fruit = AB.randomIntAtoB(1, fruits.length)
	    fruit = fruits[pick_fruit]
	    if (fruit.position.z < (player.position.z + 15)) {
    	        fruit.position.z += 1;
    	        if(am_i_eaten())
    	        {
    	            score_counter += 1
    	        }
    	}
	}
	
	var page = document.getElementById("ab-threepage");
    var myscore = document.createElement("p");
    var player2 = document.createElement("p");
	function score() {
	    myscore.style = "font-size:25px; color:white; text-align:center;"
	    player2.style = "font-size:25px; color:white; text-align:center;"
	    myscore.innerHTML = "My Score is " + score_counter
	    player2.innerHTML = "Player 2 Score is " + player_2
	    
	    page.appendChild(myscore)
	    page.appendChild(player2)
	}
	
	function update_score() {
	    myscore.innerHTML = "My Score is " + score_counter 
	}
	
	var player_2 = 0
	function make_socket() {
	    AB.socketIn = function (score) {
	        player_2 = score
	    }
	    if (AB.socket) {
	        if (AB.socket.connected) {
	            AB.socketOut(score_counter)
	        }
	    }
	}
	
	this.newRun = function()
	{
		webgl();
		make_player();
		make_cam();
		make_ground();
		move_player();
		make_fruit();
		move_fruit();
		score();
		make_socket();
	}
	
	this.nextRun = function()
	{
	    move_fruit();
	    update_score();
	    socket();
	}
}