package brickbreaker;
import javafx.scene.image.*;
public function initialize(isMobile: Boolean) {
this.isMobile = isMobile;
for (imageName in IMAGES_NAMES) {
var image = Image {
url: "{IMAGE_DIR}/{imageName}"
};
if (image.error) {
println("Image {imageName} not found");
}
insert image into images;
}
for (imageName in BRICKS_IMAGES) {
var image = Image {
url: "{IMAGE_DIR}/brick/{imageName}"
};
if (image.error) {
println("Image {image.url} not found");
}
insert image into bricksImages;
}
for (imageName in BONUSES_IMAGES) {
var image = Image {
url: "{IMAGE_DIR}/bonus/{imageName}"
};
if (image.error) {
println("Image {image.url} not found");
}
insert image into bonusesImages;
}
}
public def ANIMATION_TIME = 0.04s;
public def FIELD_BRICK_IN_ROW = 15;
public def IMAGE_DIR = bind if (isMobile) "{__DIR__}images/mobile"
else "{__DIR__}images/desktop";
public var isMobile: Boolean;
public def scale: Number = bind if (isMobile) 1.0/3 else 1;
public def screenWidth: Integer = bind if (isMobile) 240 else 960;
public def screenHeight: Integer = bind if (isMobile) 320 else 720;
public def infoTextSpace: Integer = bind 10 * scale as Integer;
public def brickWidth: Integer = bind 48 * scale as Integer;
public def brickHeight: Integer = bind 24 * scale as Integer;
public def shadowWidth: Integer = bind 10 * scale as Integer;
public def shadowHeight: Integer = bind 16 * scale as Integer;
public def ballMinSpeed: Number = bind 6 * scale;
public def ballMaxSpeed: Number = bind brickHeight;
public def ballMinCoordSpeed: Number = bind 2 * scale;
public def ballSpeedInc: Number = bind 0.5 * scale;
public def batY: Integer = bind screenHeight - 40 * scale as Integer;
public def batSpeed = bind 6 * scale as Integer;
public def bonusSpeed: Integer = bind 3 * scale as Integer;
public def fieldWidth: Integer = bind FIELD_BRICK_IN_ROW * brickWidth;
public def fieldHeight: Integer = bind fieldWidth;
public def fieldY: Integer = bind screenHeight - fieldHeight;
def BRICKS_IMAGES = [
"blue.png",
"broken1.png",
"broken2.png",
"brown.png",
"cyan.png",
"green.png",
"grey.png",
"magenta.png",
"orange.png",
"red.png",
"violet.png",
"white.png",
"yellow.png",
];
public var bricksImages: Image[] = [];
def BONUSES_IMAGES = [
"ballslow.png",
"ballfast.png",
"catch.png",
"batgrow.png",
"batreduce.png",
"ballgrow.png",
"ballreduce.png",
"strike.png",
"extralife.png",
];
public var bonusesImages: Image[] = [];
public def IMAGE_BACKGROUND = 0;
public def IMAGE_BAT_LEFT = 1;
public def IMAGE_BAT_CENTER = 2;
public def IMAGE_BAT_RIGHT = 3;
public def IMAGE_BALL_0 = 4;
public def IMAGE_BALL_1 = 5;
public def IMAGE_BALL_2 = 6;
public def IMAGE_BALL_3 = 7;
public def IMAGE_BALL_4 = 8;
public def IMAGE_BALL_5 = 9;
public def IMAGE_LOGO = 10;
public def IMAGE_SPLASH_BRICK = 11;
public def IMAGE_SPLASH_BRICKSHADOW = 12;
public def IMAGE_SPLASH_BREAKER = 13;
public def IMAGE_SPLASH_BREAKERSHADOW = 14;
public def IMAGE_SPLASH_PRESSANYKEY = 15;
public def IMAGE_SPLASH_PRESSANYKEYSHADOW = 16;
public def IMAGE_SPLASH_STRIKE = 17;
public def IMAGE_SPLASH_STRIKESHADOW = 18;
public def IMAGE_SPLASH_SUN = 19;
public def IMAGE_READY = 20;
public def IMAGE_GAMEOVER = 21;
def IMAGES_NAMES = [
"background.png",
"bat/left.png",
"bat/center.png",
"bat/right.png",
"ball/ball0.png",
"ball/ball1.png",
"ball/ball2.png",
"ball/ball3.png",
"ball/ball4.png",
"ball/ball5.png",
"logo.png",
"splash/brick.png",
"splash/brickshadow.png",
"splash/breaker.png",
"splash/breakershadow.png",
"splash/pressanykey.png",
"splash/pressanykeyshadow.png",
"splash/strike.png",
"splash/strikeshadow.png",
"splash/sun.png",
"ready.png",
"gameover.png",
];
public var images: Image[] = [];
public function scaleFont(size: Number): Integer {
(size - 2) * scale + 2 as Integer
}