mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2026-01-30 01:48:15 +03:00
Hello WWWWWWorld!
This commit is contained in:
310
mobile_version/src/Preloader.as
Normal file
310
mobile_version/src/Preloader.as
Normal file
@@ -0,0 +1,310 @@
|
||||
//Big thanks to Muku for his help with working out how to do a preloader in FlashDevelop!
|
||||
|
||||
package {
|
||||
import flash.display.*;
|
||||
import flash.geom.*;
|
||||
import flash.events.*;
|
||||
import flash.net.*;
|
||||
import flash.utils.getDefinitionByName;
|
||||
import flash.system.fscommand;
|
||||
import flash.ui.ContextMenu;
|
||||
import flash.ui.ContextMenuItem;
|
||||
//import com.kongregate.as3.client.KongregateAPI;
|
||||
|
||||
//Mochi and Kongregate stuff is more or less ready here
|
||||
|
||||
public dynamic class Preloader extends MovieClip {
|
||||
public function Preloader() {
|
||||
fscommand("trapallkeys", "true");
|
||||
if (stage.root.loaderInfo.url.search(/.swf$/) >= 0) {
|
||||
//fscommand("showmenu", "false");
|
||||
}
|
||||
stage.showDefaultContextMenu = (stage.root.loaderInfo.url.search(/.swf$/) >= 0);
|
||||
|
||||
//For the offline version, manually change this
|
||||
if (checksite()) {
|
||||
adson = false;
|
||||
}else{
|
||||
adson = true;
|
||||
}
|
||||
adson = false;
|
||||
|
||||
//Let's assume the kong API is clever enough to do its own checking
|
||||
//var kongregate:KongregateAPI = new KongregateAPI();
|
||||
//this.addChild ( kongregate );
|
||||
|
||||
//stage.showDefaultContextMenu = false;
|
||||
|
||||
|
||||
//show c64 intro (30, 0), set to (-10, 100) to not show
|
||||
//transition = -10; fakepercent = 100;
|
||||
transition = 30; fakepercent = 0;
|
||||
|
||||
|
||||
var rc_menu:ContextMenu = new ContextMenu();
|
||||
rc_menu.hideBuiltInItems();
|
||||
this.contextMenu = rc_menu;
|
||||
ct = new ColorTransform(0, 0, 0, 1, 255, 255, 255, 1); //Set to white
|
||||
|
||||
darkcol = 0x000000; lightcol = 0x000000; curcol = 0;
|
||||
offset = 0; coltimer = 0;
|
||||
|
||||
frontrect = new Rectangle(30, 20, 260, 200);
|
||||
temprect = new Rectangle(0, 0, 320, 24);
|
||||
|
||||
tl = new Point(0, 0);
|
||||
tpoint = new Point(0, 0);
|
||||
bfont_rect=new Rectangle(0,0,8,8);
|
||||
var tempbmp:Bitmap;
|
||||
tempbmp = new im_bfont(); buffer = tempbmp.bitmapData;
|
||||
makebfont();
|
||||
|
||||
backbuffer=new BitmapData(320, 240,false,0x000000);
|
||||
screenbuffer = new BitmapData(320, 240, false, 0x000000);
|
||||
screen = new Bitmap(screenbuffer);
|
||||
screen.width = 640;//320;//;640;
|
||||
screen.height = 480;// 240;//480;
|
||||
|
||||
addChild(screen);
|
||||
|
||||
addEventListener(Event.ENTER_FRAME, checkFrame);
|
||||
|
||||
if (!adson) {
|
||||
/*
|
||||
loading = new im_loading();
|
||||
loading.x = 320 - (loading.width / 2);
|
||||
loading.y = 316;
|
||||
addChild(loading);
|
||||
*/
|
||||
}
|
||||
|
||||
showctp = false;
|
||||
startgame = false;
|
||||
}
|
||||
|
||||
public function visit_distractionware(e:Event):void{
|
||||
var distractionware_link:URLRequest = new URLRequest( "http://www.distractionware.com" );
|
||||
navigateToURL( distractionware_link, "_blank" );
|
||||
}
|
||||
|
||||
public function visit_sponsor(e:Event):void{
|
||||
var sponsor_link:URLRequest = new URLRequest( "http://www.kongregate.com/?gamereferral=dontlookback" );
|
||||
navigateToURL( sponsor_link, "_blank" );
|
||||
}
|
||||
|
||||
public function print(x:int, y:int, t:String, r:int, g:int, b:int, cen:Boolean = false):void {
|
||||
if (r < 0) r = 0; if (g < 0) g = 0; if (b < 0) b = 0;
|
||||
if (r > 255) r = 255; if (g > 255) g = 255; if (b > 255) b = 255;
|
||||
ct.color = RGB(r, g, b);
|
||||
if (cen) x = x - (len(t));
|
||||
bfontpos = 0;
|
||||
for (var i:int = 0; i < t.length; i++) {
|
||||
cur = t.charCodeAt(i);
|
||||
tpoint.x = x + bfontpos; tpoint.y = y;
|
||||
bfont[cur].colorTransform(bfont_rect, ct);
|
||||
backbuffer.copyPixels(bfont[cur], bfont_rect, tpoint);
|
||||
bfontpos+=bfontlen[cur];
|
||||
}
|
||||
}
|
||||
|
||||
public function checkFrame(e:Event):void {
|
||||
var p:Number = this.loaderInfo.bytesLoaded / this.loaderInfo.bytesTotal;
|
||||
|
||||
//if (stage.root.loaderInfo.url.search(/.swf$/) >= 0) p = 0; //Not for the demo!
|
||||
transition = -10; fakepercent = 100;
|
||||
|
||||
if (transition < 30) transition--;
|
||||
if(transition>=30){
|
||||
if (int(p * 100) >= fakepercent) fakepercent++;
|
||||
if (fakepercent >= 100) {
|
||||
fakepercent = 100;
|
||||
startgame = true;
|
||||
}
|
||||
|
||||
offset = (offset + 4 + int(Math.random()*5))%32;
|
||||
coltimer--;
|
||||
if (coltimer <= 0) {
|
||||
curcol = (curcol + int(Math.random() * 5)) % 6;
|
||||
coltimer = 8;
|
||||
}
|
||||
switch(curcol) {
|
||||
case 0:
|
||||
lightcol = 0xBF596F;
|
||||
darkcol = 0x883E53;
|
||||
break;
|
||||
case 1:
|
||||
lightcol = 0x6CBC5C;
|
||||
darkcol = 0x508640;
|
||||
break;
|
||||
case 2:
|
||||
lightcol = 0x5D57AA;
|
||||
darkcol = 0x2F2F6C;
|
||||
break;
|
||||
case 3:
|
||||
lightcol = 0xB7BA5E;
|
||||
darkcol = 0x848342;
|
||||
break;
|
||||
case 4:
|
||||
lightcol = 0x5790AA;
|
||||
darkcol = 0x2F5B6C;
|
||||
break;
|
||||
case 5:
|
||||
lightcol = 0x9061B1;
|
||||
darkcol = 0x583D71;
|
||||
break;
|
||||
}
|
||||
|
||||
for (var i:int = 0; i < 18; i++) {
|
||||
temprect.y = (i * 16) -offset;
|
||||
if (i % 2 == 0) {
|
||||
backbuffer.fillRect(temprect, lightcol);
|
||||
}else{
|
||||
backbuffer.fillRect(temprect, darkcol);
|
||||
}
|
||||
}
|
||||
|
||||
backbuffer.fillRect(frontrect, 0x3E31A2);
|
||||
|
||||
|
||||
tempstring = "LOADING... " + String(int(fakepercent))+"%";
|
||||
print(282, 204, tempstring, 124, 112, 218, true);
|
||||
|
||||
//Render
|
||||
screenbuffer.lock();
|
||||
screenbuffer.copyPixels(backbuffer, backbuffer.rect, tl, null, null, false);
|
||||
screenbuffer.unlock();
|
||||
|
||||
backbuffer.lock();
|
||||
backbuffer.fillRect(backbuffer.rect, 0x000000);
|
||||
backbuffer.unlock();
|
||||
if (currentFrame >= totalFrames){
|
||||
if (startgame) {
|
||||
transition = 29;
|
||||
}
|
||||
}
|
||||
}else if (transition <= -10) {
|
||||
if (currentFrame >= totalFrames){
|
||||
startup();
|
||||
}
|
||||
}else if (transition < 5) {
|
||||
backbuffer.fillRect(backbuffer.rect, 0x000000);
|
||||
//Render
|
||||
screenbuffer.lock();
|
||||
screenbuffer.copyPixels(backbuffer, backbuffer.rect, tl, null, null, false);
|
||||
screenbuffer.unlock();
|
||||
|
||||
backbuffer.lock();
|
||||
backbuffer.fillRect(backbuffer.rect, 0x000000);
|
||||
backbuffer.unlock();
|
||||
}else if (transition < 20) {
|
||||
temprect.y = 0;
|
||||
temprect.height = 240;
|
||||
backbuffer.fillRect(temprect, 0x000000);
|
||||
backbuffer.fillRect(frontrect, 0x3E31A2);
|
||||
|
||||
tempstring = "LOADING... 100%";
|
||||
print(282, 204, tempstring, 124, 112, 218, true);
|
||||
//Render
|
||||
screenbuffer.lock();
|
||||
screenbuffer.copyPixels(backbuffer, backbuffer.rect, tl, null, null, false);
|
||||
screenbuffer.unlock();
|
||||
|
||||
backbuffer.lock();
|
||||
backbuffer.fillRect(backbuffer.rect, 0x000000);
|
||||
backbuffer.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
private function startup():void {
|
||||
// hide loader
|
||||
//stop();
|
||||
removeChild(screen);
|
||||
removeEventListener(Event.ENTER_FRAME, checkFrame);
|
||||
//loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
|
||||
var mainClass:Class = getDefinitionByName("Main") as Class;
|
||||
addChild(new mainClass() as DisplayObject);
|
||||
//stage.removeChild(this);
|
||||
}
|
||||
|
||||
public function checksite():Boolean {
|
||||
//Returns true if on a site that doesn't use mochiads
|
||||
var currUrl:String = stage.loaderInfo.url.toLowerCase();
|
||||
//chat.kongregate.com
|
||||
if ((currUrl.indexOf("distractionware.com") <= 0) &&
|
||||
(currUrl.indexOf("flashgamelicense.com") <= 0) &&
|
||||
(currUrl.indexOf("kongregate.com") <= 0) &&
|
||||
(currUrl.indexOf("chat.kongregate.com") <= 0)){
|
||||
//return true;
|
||||
return false;
|
||||
}else{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public function len(t:String):int {
|
||||
bfontpos = 0;
|
||||
for (var i:int = 0; i < t.length; i++) {
|
||||
cur = t.charCodeAt(i);
|
||||
bfontpos+=bfontlen[cur];
|
||||
}
|
||||
return bfontpos;
|
||||
}
|
||||
|
||||
public function RGB(red:Number,green:Number,blue:Number):Number{
|
||||
return (blue | (green << 8) | (red << 16))
|
||||
}
|
||||
|
||||
public function makebfont():void {
|
||||
for (var j:Number = 0; j < 16; j++) {
|
||||
for (var i:Number = 0; i < 16; i++) {
|
||||
var t:BitmapData = new BitmapData(8, 8, true, 0x000000);
|
||||
var t2emprect:Rectangle = new Rectangle(i * 8, j * 8, 8, 8);
|
||||
t.copyPixels(buffer, t2emprect, tl);
|
||||
bfont.push(t);
|
||||
}
|
||||
}
|
||||
|
||||
//Ok, now we work out the lengths (this data string cortesy of a program I wrote!)
|
||||
for (i = 0; i < 256; i++) bfontlen.push(6);
|
||||
var maprow:Array;
|
||||
var tstring:String="4,3,5,7,6,7,6,3,4,4,7,7,3,5,2,5,6,5,6,6,6,6,6,6,6,6,2,3,5,5,5,6,7,6,6,6,6,5,5,6,6,3,6,6,5,7,7,6,6,6,6,6,5,6,7,7,7,7,5,4,5,4,5,6,4,6,6,6,6,5,5,6,6,3,6,6,5,7,7,6,6,6,6,6,5,6,7,7,7,7,5,5,3,5,6,4";
|
||||
|
||||
maprow = new Array();
|
||||
maprow = tstring.split(",");
|
||||
for(var k:int = 0; k < 96; k++) {
|
||||
bfontlen[k + 32] = 8;// int(maprow[k]);
|
||||
}
|
||||
}
|
||||
|
||||
public var darkcol:int, lightcol:int, curcol:int, coltimer:int;
|
||||
public var offset:int;
|
||||
|
||||
public var buffer:BitmapData;
|
||||
public var backbuffer:BitmapData;
|
||||
public var screenbuffer:BitmapData;
|
||||
public var screen:Bitmap;
|
||||
|
||||
public var frontrect:Rectangle;
|
||||
public var temprect:Rectangle;
|
||||
|
||||
public var showctp:Boolean;
|
||||
public var startgame:Boolean;
|
||||
public var adson:Boolean;
|
||||
|
||||
[Embed(source = '../data/graphics/font.png')] private var im_bfont:Class;
|
||||
public var bfontlen:Array = new Array();
|
||||
public var bfont:Array = new Array();
|
||||
public var bfont_rect:Rectangle;
|
||||
public var tl:Point, tpoint:Point;
|
||||
public var bfontpos:int;
|
||||
public var cur:int;
|
||||
public var ct:ColorTransform;
|
||||
|
||||
public var tempstring:String;
|
||||
public var fakepercent:int;
|
||||
|
||||
public var transition:int;
|
||||
|
||||
public var statcookie:SharedObject;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user