examples: delete mnit_ballz
[nit.git] / examples / mnit_ballz / src / game_logic.nit
diff --git a/examples/mnit_ballz/src/game_logic.nit b/examples/mnit_ballz/src/game_logic.nit
deleted file mode 100644 (file)
index 38d7682..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-#this file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# All the logic of the game
-module game_logic
-
-import assets
-import objects
-import geometry::quadtree
-import collision
-
-redef class Ball
-
-       # Scale for drawing the image of `self`
-       var scale = 1.0
-
-       # ASensorProximity value for modifying `scale`
-       # Not used yet
-       var scale_proximity_modifier = 6.0
-
-       # Radius of `self`
-       var radius = 32.0
-
-       # Movement vector of `self`
-       var offset = new Point[Float](0.0, 0.0)
-
-       # Calculates the acceleration of `self`
-       fun acceleration(x,y: Float)
-       do
-               var max_offset = 10.0
-               var max_value = 9.80
-               var offset_x = offset.x - x/max_value
-               var offset_y = offset.y + y/max_value
-               if offset_x > max_offset then offset_x = max_offset
-               if offset_x < -max_offset then offset_x = -max_offset
-               if offset_y > max_offset then offset_y = max_offset
-               if offset_y < -max_offset then offset_y = -max_offset
-               offset = new Point[Float](offset_x, offset_y)
-       end
-
-       # Do the collision detection, then move `self`consequently
-       fun do_turn(game: Game)
-       do
-               offset = new Point[Float](offset.x * 0.98, offset.y * 0.98)
-               var np = collision(game.quadtree)
-               if np != null then
-                       offset = np
-                       center = new Point[Float](center.x + offset.x, center.y + offset.y)
-               else
-                       center = new Point[Float](center.x + offset.x, center.y + offset.y)
-               end
-       end
-
-       # Collision detection
-       fun collision(quadtree: SQuadTree[OrientedLine]): nullable Point[Float]
-       do
-
-               var nx = self.center.x + offset.x
-               var ny = self.center.y + offset.y
-               var new_center = new Point[Float](nx, ny)
-               var effective_radius = radius*scale
-               # Lines intersecting with the ball
-               var intersecting_lines = new Array[OrientedLine]
-
-               # Line intersecting closest to the ball
-               var intersecting_line: nullable OrientedLine = null
-
-               # closest point of the intersecting line
-               var closest_point: nullable Point[Float] = null
-
-               # get the intersecting lines with help of the quadtree
-               var lines = quadtree.items_overlapping(new_center.padded(effective_radius))
-               for l in lines do
-                       if is_intersecting(new_center, l.point_left, l.point_right, effective_radius) then
-                               intersecting_lines.add(l)
-                       end
-               end
-
-               # get the line closest to the ball from the intersecting lines, setting the closest point
-               var min_dist = 100.0
-               if intersecting_lines.length >= 2 then
-                       for l in intersecting_lines do
-                               var closest = point_closest_to_line(new_center, l.point_left, l.point_right)
-                               var distance = distance(closest, new_center)
-                               if distance < min_dist then
-                                       min_dist = distance
-                                       intersecting_line = l
-                                       closest_point = closest
-                               end
-                       end
-               else if intersecting_lines.length == 1 then
-                       intersecting_line = intersecting_lines[0]
-                       closest_point = point_closest_to_line(new_center, intersecting_line.point_left, intersecting_line.point_right)
-               end
-
-               if intersecting_line != null and closest_point != null then
-                       return bounce(center, intersecting_line.point_left, intersecting_line.point_right, offset)
-               end
-               return null
-       end
-
-       # Event interception
-       fun intercepts(event: InputEvent): Bool is abstract
-end
-
-# The core of the game
-class Game
-
-       # The Ball!
-       var ball: Ball is noinit
-
-       # List of walls in the level
-       var walls: Array[Wall] is noinit
-
-       # Width of the display
-       var width: Float
-
-       # Heightof the display
-       var height: Float
-
-       # Quadtree used for collision detection
-       var quadtree: SQuadTree[OrientedLine] is noinit
-
-       init
-       do
-               ball = new Ball(new Point[Float](width/2.0, height/2.0))
-               # Walls initialisation
-               var walla = new Wall(new Point[Float](width/4.0, height/4.0), pi/3.0, 1.0)
-               var wallb = new Wall(new Point[Float](width*0.75, height/4.0), 0.0, 1.0)
-               var wallc = new Wall(new Point[Float](width/4.0, height*0.75), 0.0, 1.0)
-               var walld = new Wall(new Point[Float](width*0.75, height*0.75), pi/3.0, 1.0)
-               walls = new Array[Wall].with_items(walla, wallb, wallc, walld)
-
-               # adding screen bordures
-               var i = new Point[Float](0.0,0.0)
-               var a = new Point[Float](0.0, height/2.0)
-               var b = new Point[Float](width/2.0, 0.0)
-               var c = new Point[Float](width, height/2.0)
-               var d = new Point[Float](width/2.0, height)
-
-               var l1 = new OrientedLine(i, i, pi/2.0, height, a)
-               var l2 = new OrientedLine(i, i, 0.0, width, b)
-               var l3 = new OrientedLine(i, i, pi/2.0, height, c)
-               var l4 = new OrientedLine(i, i, 0.0, width, d)
-
-               quadtree = new SQuadTree[OrientedLine](5, width, height)
-               for w in walls do for l in w.lines do
-                       quadtree.add(l)
-               end
-               quadtree.add(l1)
-               quadtree.add(l2)
-               quadtree.add(l3)
-               quadtree.add(l4)
-       end
-
-       # Only calls `do_turn` of the ball for the moment
-       fun do_turn do ball.do_turn(self)
-
-       # Input gestion
-       fun input(ie: InputEvent): Bool do return false
-end
-
-redef class App
-
-       # Assets used in all the app
-       var assets = new Assets
-
-       redef fun on_create do
-               super
-               assets.load
-       end
-end