| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- // This script is the main entry point of the game
- var halfWidth = Atomic.graphics.width * Atomic.PIXEL_SIZE * 0.5;
- var halfHeight = Atomic.graphics.height * Atomic.PIXEL_SIZE * 0.5;
- var maxX = halfWidth;
- var minX = -halfWidth;
- var maxY = halfHeight;
- var minY = -halfHeight;
- Atomic.player.loadScene("Scenes/Scene.scene");
- var scene = Atomic.player.currentScene;
- var sheet = Atomic.cache.getResource("SpriteSheet2D", "Sprites/bunnys_sheet.xml");
- var bunny1 = sheet.getSprite("bunny1");
- var bunny2 = sheet.getSprite("bunny2");
- var bunny3 = sheet.getSprite("bunny3");
- var bunny4 = sheet.getSprite("bunny4");
- var bunny5 = sheet.getSprite("bunny5");
- var bunnyTextures = [bunny1, bunny2, bunny3, bunny4, bunny5];
- var bunnyType = 2;
- var currentTexture = bunnyTextures[bunnyType];
- var bunnys = [];
- var count = 0;
- var amount = 3;
- var gravity = -0.5;
- // TODO: we hold a reference to the node in script, otherwise it is GC'd
- // and the object rewrapped every time bunny.node is accessed!
- var nodes = [];
- var isAdding = false;
- scene.subscribeToEvent(Atomic.MouseButtonDownEvent(function() {
- isAdding = true;
- }));
- scene.subscribeToEvent(Atomic.MouseButtonUpEvent(function() {
- isAdding = false;
- bunnyType++;
- bunnyType %= 5;
- currentTexture = bunnyTextures[bunnyType];
- }));
- exports.update = function() {
- var scale = [0, 0];
- if (isAdding) {
- if (count < 200000) {
- for (var i = 0; i < amount; i++) {
- var node = scene.createChild();
- nodes.push(node);
- var bunny = node.createComponent("StaticSprite2D");
- bunny.blendMode = Atomic.BlendMode.BLEND_ALPHA;
- bunny.sprite = currentTexture;
- bunny.position = [minX, maxY];
- bunny.speedX = Math.random() * 10;
- bunny.speedY = (Math.random() * 10) - 5;
- //bunny.anchor.y = 1;
- bunnys.push(bunny);
- scale[0] = scale[1] = (0.5 + Math.random() * 0.5);
- bunny.scale2D = scale;
- bunny.rotation2D = (Math.random() - 0.5);
- count++;
- }
- }
- }
- var len = bunnys.length;
-
- for (var i = 0; i < len; i++) {
- var bunny = bunnys[i];
- var p = bunny.position;
- var px = p[0];
- var py = p[1];
- var speedX = bunny.speedX;
- var speedY = bunny.speedY;
- px += speedX * .002;
- py += speedY * .002;
- if (px > maxX) {
- speedX *= -1;
- px = maxX;
- } else if (px < minX) {
- speedX *= -1;
- px = minX;
- }
- if (py > maxY) {
- speedY = 0;
- py = maxY;
- } else if (py < minY) {
- speedY *= -0.95;
- if (Math.random() > 0.5) {
- speedY -= Math.random() * 6;
- }
- py = minY;
- }
- bunny.speedX = speedX;
- bunny.speedY = speedY + gravity;
- p[0] = px;
- p[1] = py;
- nodes[i].position2D = p;
- }
- };
- createInstructions();
- function createInstructions() {
- var view = new Atomic.UIView();
- // Create a layout, otherwise child widgets won't know how to size themselves
- // and would manually need to be sized
- var layout = new Atomic.UILayout();
- // specify the layout region
- layout.rect = view.rect;
- view.addChild(layout);
- // we're laying out on the X axis so "position" controls top and bottom alignment
- layout.layoutPosition = Atomic.UI_LAYOUT_POSITION.UI_LAYOUT_POSITION_RIGHT_BOTTOM;
- // while "distribution" handles the Y axis
- layout.layoutDistributionPosition = Atomic.UI_LAYOUT_DISTRIBUTION_POSITION.UI_LAYOUT_DISTRIBUTION_POSITION_RIGHT_BOTTOM;
-
- var fd = new Atomic.UIFontDescription();
- fd.id = "Vera";
- fd.size = 18;
-
- var scoreText = new Atomic.UIEditField();
- scoreText.fontDescription = fd;
- scoreText.readOnly = true;
- scoreText.multiline = true;
- scoreText.adaptToContentSize = true;
- scoreText.text = "BunnyMark\nLeft Click - Spawn Bunnies";
- layout.addChild(scoreText);
- }
|