Skip to content

Commit

Permalink
added two more animations: player being slid down the bar, and player…
Browse files Browse the repository at this point in the history
… celebrating the level clear. also, fixed bugs in controls.
  • Loading branch information
raptros committed Jul 12, 2010
1 parent b53aadc commit 8adc4c8
Show file tree
Hide file tree
Showing 7 changed files with 230 additions and 17 deletions.
2 changes: 1 addition & 1 deletion build.template.properties
Expand Up @@ -19,7 +19,7 @@ SCALA_HOME = path/to/sdk
project.name = DeveloperHappyHour

#Version number
ver.num=v0.6.0-alpha
ver.num=v0.7.0-alpha
project.name.versioned=${project.name}-${ver.num}
deploy.name.versioned=${project.name}-${ver.num}

Expand Down
Binary file modified build/assets/sprites-player.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified build/psds/sprites.psd
Binary file not shown.
4 changes: 2 additions & 2 deletions src/Patron.as
Expand Up @@ -27,7 +27,7 @@ package
public var drinking:Boolean = false;
public var doBurp:Boolean = false;

private var deltaX:Number=1;
public var deltaX:Number=1;
private var animTime:Number;

private var psi:Number; //Patron Start Index
Expand All @@ -41,7 +41,7 @@ package
super(initX, initY, leftBound, rightBound);

//this is going to have to hold every single patron sprite, the way I see it.
loadGraphic(PatronSprite, false, false, WIDTH, HEIGHT);
loadGraphic(PatronSprite, false, true, WIDTH, HEIGHT);
var numPatrons:Number = 1;
var whichPatron:Number = Math.floor(Math.random() * (numPatrons + 1));
//psi = whichPatron * lengthSheetPart;
Expand Down
147 changes: 137 additions & 10 deletions src/PlayState.as
Expand Up @@ -62,11 +62,19 @@ package
//state flags
private var isSwitching:Boolean=false;
private var isFilling:Boolean=false;
private var doThrowOut:Boolean=false;
private var mugChucked:Boolean=false;

private var hitHead:Boolean=true;

//displays
private var lifeCounter:FlxText;
private var scoreDisp:FlxText;

//ugh.
private var pushingPatron:Patron;
private var spinner:SpinningBeer;

private var player:Player;


Expand Down Expand Up @@ -192,15 +200,81 @@ package
//test for frozen (stop animations except for one group, then go to prepare state)
if (frozen)
{
//finish switching first of all.
if (isSwitching)
//Deal with animation chains.
if (isSwitching && !player.finished)
{
player.update();
}
else if (isSwitching)
{
player.x = tapperPositions[barNum].x;
player.y = tapperPositions[barNum].y;
isSwitching = false;
player.update();
if (doThrowOut)
{
//do something w/player
player.frame=12;
player.y -= 15;
}
}
else if (player.isDancing && player.finished)
{
player.isDancing = false;
player.x = tapperPositions[barNum].x;
player.y = tapperPositions[barNum].y;
keepUpdating.add(taps[barNum]);
taps[barNum].play("filling");
player.frame=11;
isFilling = true;
player.isDrinking = true;
}
else if (player.isDrinking && isFilling && taps[barNum].finished)
{
taps[barNum].frame = 0;
isFilling = false;
player.isDrinking=true;
player.play("drink");

}
else if (player.isDrinking && !isFilling && player.finished)
{
player.isDrinking=false;
//animation after this is mug throwing.
//freezer = 0;
flip = Math.random();
hitHead = flip <= 0.5;

mugChucked = true;
spinner = new SpinningBeer(player, hitHead);
add(spinner);
keepUpdating.add(spinner);
player.frame = 0;
player.facing = FlxSprite.LEFT;
spinner.frame=2;
}
else if (mugChucked && spinner.sNum == SpinningBeer.S_BREAK)
{
player.facing = FlxSprite.RIGHT;
if (hitHead)
player.play("dropped");
else
player.play("kick");
keepUpdating.update();
}
else if (mugChucked && spinner.done)
{
mugChucked = false;
freezer = 0;
}
else
{
if (doThrowOut)
player.x = pushingPatron.x - 5;
freezer -= FlxG.elapsed;
if (keepUpdating != null)
keepUpdating.update();
}
//once the animation is over, transition to a different state.
if (freezer <= 0)
{
Expand All @@ -211,14 +285,15 @@ package
else if (patronCount <= 0)
{
FlxG.level++;
FlxG.state = new PrepareState();
if (FlxG.level < FlxG.levels.length)
FlxG.state = new PrepareState();
else
FlxG.state = new GameOverState();
}
//life loss situation
else
FlxG.state = new PrepareState();
}
if (keepUpdating != null)
keepUpdating.update();
return ;
}

Expand Down Expand Up @@ -320,10 +395,11 @@ package
}

//stop the running.
if (!FlxG.keys.LEFT && !FlxG.keys.RIGHT && !isFilling && (FlxG.keys.justReleased("LEFT") || FlxG.keys.justReleased("RIGHT")))
if (!FlxG.keys.LEFT && !FlxG.keys.RIGHT && !isFilling && !isSwitching && (FlxG.keys.justReleased("LEFT") || FlxG.keys.justReleased("RIGHT")))
{
player.facing = FlxSprite.RIGHT;
player.frame = 0;
player.finished=true;
}

//IMPORTANT.
Expand Down Expand Up @@ -494,6 +570,12 @@ package
keepUpdating = new FlxGroup();
keepUpdating.add(player);
keepUpdating.add(mug);
if (isFilling)
{
taps[barNum].frame = 0;
isFilling = false;
keepUpdating.add(taps[barNum]);
}

//now do animation and game data updates.
lives--;
Expand Down Expand Up @@ -530,6 +612,12 @@ package
keepUpdating = new FlxGroup();
keepUpdating.add(player);
keepUpdating.add(mug);
if (isFilling)
{
taps[barNum].frame = 0;
isFilling = false;
keepUpdating.add(taps[barNum]);
}

//now do animation and game data updates.
lives--;
Expand All @@ -551,15 +639,24 @@ package
*/
public function patronPushedOut(patron:Patron):Boolean
{
if (frozen)
{
freezer = 0.5;
player.kill();
return true;
}
patronCount--;
FlxG.score += pushOutPatronPoints;
if (patronCount <= 0)
{
//prepare for freezing most of the animations.
frozen = true;
freezer = 2.0;
freezer = 10.0;
keepUpdating = new FlxGroup();
keepUpdating.add(player);
//get those animation going!
player.play("dance");
player.isDancing=true;
}
return true;
}
Expand All @@ -569,18 +666,48 @@ package
*/
public function patronAttacks(patron:Patron):Boolean
{
if (frozen)
return false;
//prepare for freezing most of the animations.
frozen = true;
freezer = 2.0;
freezer = 10.0;
keepUpdating = new FlxGroup();
keepUpdating.add(player);
//keepUpdating.add(patron);
keepUpdating.add(patron);
//move the player to where the patron is.
if (isFilling)
{
taps[barNum].frame = 0;
isFilling = false;
keepUpdating.add(taps[barNum]);
}
player.facing = FlxSprite.RIGHT;
var curBase:FlxPoint = tapperPositions[patron.whichBar];
if (barNum != patron.whichBar && player.x != curBase.x && player.y != curBase.y)
{
isSwitching=true;
barNum = patron.whichBar;
player.play("switching");
}
else
{
player.frame=12;
player.y -= 15;
}
//get ready for throwout anim

patron.facing = FlxSprite.LEFT;
patron.targetX = bars[barNum].x - 5;
doThrowOut = true;
pushingPatron = patron;
patron.deltaX = 2; //speed this way up!

//now do maintainence.
lives--;
//animate interaction between player and patron.
if (lives < 0)
displayGameOver();
return true;
return false;
}

/**
Expand Down
13 changes: 9 additions & 4 deletions src/Player.as
Expand Up @@ -7,20 +7,25 @@ package
[Embed(source="../build/assets/sprites-player.png")]
private var BartenderSprite:Class;

public var isDancing:Boolean=false;
public var isDrinking:Boolean=false;

public function Player(pos:FlxPoint)
{
super(pos.x, pos.y);

//TODO add more animations.
loadGraphic(BartenderSprite, true, true, 56, 51);
loadGraphic(BartenderSprite, true, true, 65, 51);
addAnimation("standing", [0], 10, false);
addAnimation("throwing", [1, 0], 2, false);
addAnimation("dropped", [2], 1, false);
addAnimation("running", [3, 4, 5, 6], 12, true);
addAnimation("switching", [7, 7, 8, 9, 10], 25, false);

//createGraphic(10,20);
//color = 0x0000ff;
addAnimation("dance", [13, 14, 13, 14], 4, false)
//TODO this needs a bunch more of the real frames.
addAnimation("drink", [15, 15, 15, 15], 2, false);
addAnimation("kick", [16, 16, 16, 16,0], 4, false);

}

override public function update():void
Expand Down
81 changes: 81 additions & 0 deletions src/SpinningBeer.as
@@ -0,0 +1,81 @@
package
{
import org.flixel.*;

public class SpinningBeer extends FlxSprite
{
[Embed(source="../build/assets/sprites-mug.png")]
private var BeerMugSprite:Class;

public static var WIDTH:Number = 31;
public static var HEIGHT:Number = 25;

public static var S_INIT:Number=0;
public static var S_MOVEUP:Number=1;
public static var S_MOVEDOWN:Number=2;
public static var S_BREAK:Number=3;
public static var S_DONE:Number=4;

public var sNum:Number=S_INIT;

private var startPt:FlxPoint;
private var endPt:FlxPoint;

public function SpinningBeer(playerPos:FlxPoint, hitHead:Boolean=true)
{
startPt = new FlxPoint(playerPos.x + 30, playerPos.y);
endPt = new FlxPoint(playerPos.x + 15, playerPos.y - 10);
if (!hitHead)
{
endPt.x -= 10;
endPt.y += 20;
}

super(startPt.x, startPt.y);
loadGraphic(BeerMugSprite, false, false, WIDTH, HEIGHT);
addAnimation("breaking", [3,4], 4, false);
//loadRotatedGraphic(BeerMugSprite, 16, 5);

}

public function get done():Boolean
{
return sNum == S_DONE;
}

override public function update():void
{
if (sNum == S_INIT)
{ //get it going!
velocity.y = -150;
velocity.x = velocity.y * (startPt.x - endPt.x) /(200 + (startPt.y - endPt.y)) ;
angularVelocity = 2000;
sNum = S_MOVEUP;
frame = 2;
}
else if (sNum == S_MOVEUP && y <= startPt.y - 100)
{ //top of arc.
velocity.y = -1*velocity.y;
sNum = S_MOVEDOWN

}
else if (sNum == S_MOVEDOWN && y >= endPt.y)
{
//break.
velocity.x = 0;
velocity.y = 0;
angularVelocity = 0;
sNum = S_BREAK;
play("breaking");
}
else if (sNum == S_BREAK && finished)
{
sNum = S_DONE;
kill();
}
super.update();

}

}
}

0 comments on commit 8adc4c8

Please sign in to comment.