From 6ae79d76454e2c0ec7ff553763396f13c1e34e6b Mon Sep 17 00:00:00 2001 From: Mike Kruk Date: Sat, 7 Apr 2012 22:37:24 -0400 Subject: [PATCH] first attempt at first level. Mikey can go up stairs, woo! --- app/Level.as | 27 +++++++++++++++ app/PlayState.as | 39 ++++++++++++++------- app/elements/Mikey.as | 12 +++++-- app/levels/Level1.as | 79 ++++++++++++++++++++++++++++++++++++++++++ assets/brick.gif | Bin 1123 -> 0 bytes assets/brick.png | Bin 0 -> 969 bytes assets/ladder.gif | Bin 1101 -> 0 bytes assets/ladder.png | Bin 0 -> 959 bytes vendor/Console.as | 61 ++++++++++++++++++++++++++++++++ 9 files changed, 204 insertions(+), 14 deletions(-) create mode 100644 app/Level.as create mode 100644 app/levels/Level1.as delete mode 100644 assets/brick.gif create mode 100644 assets/brick.png delete mode 100644 assets/ladder.gif create mode 100644 assets/ladder.png create mode 100644 vendor/Console.as diff --git a/app/Level.as b/app/Level.as new file mode 100644 index 0000000..7161751 --- /dev/null +++ b/app/Level.as @@ -0,0 +1,27 @@ +package +{ + import org.flixel.*; + + public class Level + { + public var bricks:FlxGroup; + public var ladders:FlxGroup; + + public function Level():void { + bricks = new FlxGroup(); + ladders = new FlxGroup(); + } + + public function create():void + { + + } + + public function place_item(X:int,Y:int,Graphic:Class,Group:FlxGroup):FlxSprite + { + var item:FlxSprite = new FlxSprite(X,Y,Graphic); + Group.add(item); + return item; + } + } +} \ No newline at end of file diff --git a/app/PlayState.as b/app/PlayState.as index 27bd3b2..58984a2 100644 --- a/app/PlayState.as +++ b/app/PlayState.as @@ -2,27 +2,33 @@ package { import org.flixel.*; import elements.*; + import levels.*; public class PlayState extends FlxState { - public var level:FlxTilemap; //public var exit:FlxSprite; + public var level:*; public var barrels:FlxGroup; - public var mikey:FlxSprite; + public var mikey:Mikey; public var score:FlxText; public var time:FlxText; - [Embed(source="../assets/brick.gif")] private var ImgBrick:Class; - override public function create():void { //level init stuff + level = new Level1() as Level1; + add(level.bricks); + add(level.ladders); + if(level.stairs) add(level.stairs); + level.create(); - level = new FlxTilemap(); - //level.loadMap(); - add(level); - + //create mikey! + mikey = new Mikey(); + add(mikey); + barrels = new FlxGroup(); + add(barrels); + //create_barrel(0,0); } public function create_barrel(X:uint,Y:uint):void @@ -35,19 +41,28 @@ package { super.update(); - FlxG.overlap(barrels, mikey, touch_barrel); + //FlxG.overlap(barrels, mikey, touch_barrel); //FlxG.overlap(exit, mikey, win); - FlxG.collide(level,mikey); + FlxG.collide(level.bricks, mikey); + FlxG.collide(level.bricks, barrels); + if(level.stairs) FlxG.overlap(level.stairs, mikey, handle_stairs); - if(mikey.y > FlxG.height) + /*if(mikey.y > FlxG.height) { FlxG.score = 1; //sets status.text to "Aww, you died!" FlxG.resetState(); - } + }*/ } + public function handle_stairs(Brick:FlxSprite, Mikey:FlxSprite):void + { + if(Mikey.isTouching(FlxObject.FLOOR)) + if(Mikey.y + Mikey.height > Brick.y) Mikey.y = Brick.y - Mikey.height; + FlxObject.separateY(Brick,Mikey); + } + public function touch_barrel(Barrel:FlxSprite,Mikey:FlxSprite):void { //Barrel.kill(); diff --git a/app/elements/Mikey.as b/app/elements/Mikey.as index b93c81f..6c2aae8 100644 --- a/app/elements/Mikey.as +++ b/app/elements/Mikey.as @@ -1,5 +1,7 @@ package elements { + import org.flixel.*; + public class Mikey extends FlxSprite { [Embed(source="../../assets/mikey.gif")] private var ImgMikey:Class; @@ -7,6 +9,14 @@ package elements public function Mikey():void { super(0,0,ImgMikey); + + x = 50; + + var run_speed:uint = 80; + drag.x = run_speed * 8; + acceleration.y = 420; + maxVelocity.x = run_speed; + maxVelocity.y = 200; } override public function update():void @@ -20,8 +30,6 @@ package elements velocity.y = -maxVelocity.y/2; super.update(); - - } } } \ No newline at end of file diff --git a/app/levels/Level1.as b/app/levels/Level1.as new file mode 100644 index 0000000..568a046 --- /dev/null +++ b/app/levels/Level1.as @@ -0,0 +1,79 @@ +package levels +{ + import org.flixel.*; + + public class Level1 extends Level + { + public var stairs:FlxGroup; + + [Embed(source="../../assets/brick.png")] private var ImgBrick:Class; + [Embed(source="../../assets/ladder.png")] private var ImgLadder:Class; + + public function Level1():void + { + super(); + stairs = new FlxGroup(); + } + + override public function create():void + { + //bottom + create_row(8,224,15); + create_stairs(128,223,5); + + create_stairs(216,188,9,false,true); + + create_stairs(32,158,9,true,true); + + create_stairs(216,128,9,false,true); + + create_stairs(32,98,9,true,true); + + create_stairs(216,68,4,false); + + place_ladder(10,10,2); + + //top + create_row(16,64,14); + create_row(104,40,6); + } + + public function create_row(X:uint,Y:uint,count:uint):void + { + var i:uint = 0; + for(i; i < count; i++) place_brick(X+i*8,Y); + } + + public function create_stairs(X:int,Y:int,count:int,right:Boolean=true,shorten_last:Boolean=false):void + { + var i:uint = 0; + var j:uint = 0; + var x_offset:int = 0; + var y_offset:int = 0; + for(i; i < count; i++) + { + var length:int = shorten_last && i+1==count? 2 : 3; + for(j = 0; j < length; j++) + { + var brick:FlxSprite = place_item(X+x_offset,Y+y_offset,ImgBrick,stairs); + brick.immovable = true; + x_offset += right? brick.width : -brick.width; + } + y_offset -= 1; + } + } + + public function place_brick(X:int,Y:int):void + { + var brick:FlxSprite = place_item(X,Y,ImgBrick,bricks); + brick.immovable = true; + } + + public function place_ladder(X:int,Y:int,height:int):void + { + var ladder:FlxSprite = place_item(X,Y,ImgLadder,ladders); + var i:uint = 0; + for(i; i < height; i++) ladder.stamp(ladder,0,i*8); + } + } +} \ No newline at end of file diff --git a/assets/brick.gif b/assets/brick.gif deleted file mode 100644 index 198b955725b42d103676a09bff2428bfb3f68668..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1123 zcmZ?wbhEHblwjasXkcV`!VvNQ|9{2*+!4M33NDEyi9p)MzM>#8IXksPAt^OIGtXA( z{qFrr3YjUkO5vuy2EGN(sTr9bRYj@6RemAKRoTgwDN6Qs3N{s16}bhusU?XD6}dTi z#a0!zN{K1?NvT#qHb_`sNdc^+B->WW5hS4iveP-gC{@8!&po2 zTt~skz|cV7z)0WFNY~KZ%Gk)tz(4^Clz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$AbT4JjN zbScCOxdm`z^NRJr-qB0W&(*I;EYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9y zACy|0Us{x$3RJEPvZ}z!xhOTUB)=#mKR*W+iUAq(sS1ij466f0L}LpKXEU^rVEnHw6q8d_Mon7Wypn3_0Q7&%%R zn85V9j`|#S7=pojr5<)X5Xaj~zX7 z_|U-v`}ghLvwPRh9ox5U-LiSp#trM&tzENv)yfsimn~hgc+tWI^XJW-Gkey|8Plgt zoicgS#0mXjScm6wKdgMl@;Y>r6t8hg$4O}xjETcnHlM6sVT`x zi3#y>u`$t6krClxp&`LRfdT%0zCPYwo*wRQt}f0_jt=&Awl>yQmKNq_rY6Qlz$~Sw ztD~)@siCf>s-moDIqQ0jShqV3KR;UwOJ#P_Cuu8pnpSX|LCpicIglXfkc~EUS0i%&ZL70B8A(;s5{u diff --git a/assets/brick.png b/assets/brick.png new file mode 100644 index 0000000000000000000000000000000000000000..c580f639223971de312678feaaabc3553ecb4668 GIT binary patch literal 969 zcmaJ=&ui0A9M6!+7>tdAF!kUgQ}JMvm$Ye?usFJ=aRoCEyCU0xlk{6RVn-;xz znNv^0izo3P*gqhss0Y0%;zjW2Sq1O&rE97OYvAR*@8k3Ne1E=!`o{IS*>kfT$IaE& z%?8_N(lv9M{ol^Nc*wT1wA!XkvPF9+!d%%U9Smwd+Qtox-2Scic!lFm@m{M<+x89J zA-;f8jF9*tV{_cfY7!!62UF0&+g@Ps-=Dwaf#(|hO~rb{x&+ zSFeGUL}vm%rU)edZV>BCArS_O0P_wkK~RzesZdl^ z^(v5|1Vt!|lAM=Ry&&rlg3-q_Z;`vDH%x2fi&+NWr8Lwc_H;k08&NNA$!!|S)?Z^_~BSKh(~2&1rrk#ijn}+lro@g z{~zl6V{}X#_)on56pmZ{5Q_~QlfB4cjoVsEU4?oj!ibWnMaXVe#d?=e5_d@mDoq90 z$nk>I9^!3VuLUthfrD$N!7~NH^IW~4sg|r*ma567Bvqwl%~UM4s1(_*PRrLVpS({MHY;hHukSZ zXIE@`(&Kn+nK2%G9I$DR*jP`0Dlf4oVbsiWEBVs7^LpXu)2aE*4&WA#kM|dUJeG37 z;jiOwkFH#PbrI#>J$Ulr(#JE>v-1Z>_ou(EAKsl>*yM6=F6`6KMfU7Cu2$VJkJdKt F{RZNREu8=W literal 0 HcmV?d00001 diff --git a/assets/ladder.gif b/assets/ladder.gif deleted file mode 100644 index 531db84db1bb7a55178ac0cecd2ffdc11c8affe2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1101 zcmZ?wbhEHbs)|yBtNcQetFn_VQ=?Nk^)#sNw%$$BS=C4WT$g}QL2Keo`G(%fti7VnW3Jcv5C34 zxsHO7fuVuEfswwUk*=Y+m9dePfq?=PC;@FNN=dT{a&d#&1?1T(Wt5Z@Sn2DRmzV36 z8|&p4rRy77T3Uk4Ff!5ws?aU2%qvN((9J7WhMC}!TAW;zSx}OhpQivaF)=B>w8T~k z=u(Imatq+b<`wIKy`z_$pQ~SySfFpHX8`gNOrftYex-^T+pZU%!0* z^zp;{cW>Xke)aOj^Jh<=Jbv`>!To!8@7%t1^TzdSSFc>Ybn(LZb7#+-K6UcM@nc7i z96ogL!2W%E_w3%abI0~=Teoc9v~k1wb!*qGUbS+?@?}exEMBy5!Tfo1=ggipbH?;( zQ>RRxG;umQ)5GYU2RQuRb@qaS!qdeQDH%TUT#iyR%S+eT53vi zQer}UTx?8qRAfYWSZGLaP+)++pRbR%m#2rjo2!enlcR&Zovn?vm8FHbnW>4f5im>X z>FQ`}X=plpUI6yw0MM~HwP8o0j7{(S$D1+JsA_wpt*g9;kDwONQ-vwGW}jcnOri#I_b zR;Yl7hy`Nr)Q^-{W#_sIT_@W-3+50qQrU&6j@bYe93qhCV8({W5F87fkj+VwbOVS` zfIJj=LCgq}k`)yQ!SZ8iw$SM-O-*0sqLIoD2?-RQpG+p)B+KD&zzec0CmN!dp@>X0 z^@$Z{{3yLr&`@NDZa`e@gGABl;W1HJ>U2?p7p!IdXn9QZ!1&k-c!7gSNh_df{vYaj zYji}K=&#?6!clt~AijwrJPvJoas70XDo`pRvIq{_7@w|Au`$F1M?)NdN-Gac%Xa-F zp5skZG5m;FzKsk`WvK$^x{e~1OF~)Jp(KkHL8uBRvXbKKTQv_9Qd_ literal 0 HcmV?d00001 diff --git a/vendor/Console.as b/vendor/Console.as new file mode 100644 index 0000000..ace5da5 --- /dev/null +++ b/vendor/Console.as @@ -0,0 +1,61 @@ +package +{ + import flash.display.Sprite; + import flash.events.ErrorEvent; + //import flash.events.UncaughtErrorEvent; + import flash.external.ExternalInterface; + + public class Console extends Sprite + { + public function Console():void + { + super(); + init(); + } + + public static function log(... arguments):void + { + Console.trace(arguments); + } + + public static function warn(... arguments):void + { + Console.trace(arguments, "warn"); + } + + public static function error(... arguments):void + { + Console.trace(arguments, "error"); + } + + private static function trace(args:Object,type:String = "log"):void + { + for(var i:String in args) + { + if( !args[i] is String) + args[i] = args[i].toString(); + ExternalInterface.call("console."+type,args[i]); + if( type == "log") trace(args[i]); + } + } + + private function init():void + { + //if(loaderInfo.hasOwnProperty("uncaughtErrorEvents")) + //loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler, false, 0, true); + } + + /*private function uncaughtErrorHandler(e:UncaughtErrorEvent):void + { + if( e.error is Error) + { + var stack:String = Error(e.error).getStackTrace(); + Console.error(Error(e.error).message + ((stack!=null)? "\n"+stack : "")); + } + else if( e.error is ErrorEvent) + Console.error(ErrorEvent(e.error).text); + else + Console.error(e.error.toString()); + }*/ + } +} \ No newline at end of file