this is the main code the rest is for the assets and spawing enemies
package
{
import adobe.utils.CustomActions;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
/**
* ...
* @author greg
*/
public class game extends MovieClip
{
private var gamestate:int = 0;
public var enemyholder:Sprite;
public var enemypool:Vector.<enemy > ;
private var framessincespawn:int;
private const cs_load:int = 0;
private const cs_running:int = 1;
private const cs_paused:int = 2;
private const cs_Gameover:int = 3;
public var Pause:Boolean = false;//:int =2;
public var armourholder:Sprite;
public var armourpool:Vector.<armour> = new Vector.<armour>();
public var framessincespawn2:int;
private const cs_inventscreen:int = 3;
public var Inventscreen:inventoryscreen;
private var invent:Boolean;
static public var inventscr:Boolean = false;
public var Youwin:youwinscreen = new youwinscreen();
public var Gameover:gameover = new gameover();
//armour value
public var a = 0;
public var attvalue = 0;
public var defvalue = 0;
public var Level:int = 0;
public var winner:int = 0;
//private var _player:player;
//public var Gameover:gameover = new gameover();
public var health:int = 20;
public function game()
{
trace("Created game");
addEventListener(Event.ADDED_TO_STAGE, addedToStage, false, 0, true);
fillenemypool();
fillarmourpool();
}
function changeLevel(levelNumber:int)
{
Level = levelNumber;
trace("Changed level to " + Level);
// change background image
background.gotoAndStop(levelNumber + 1);
}
// Change armor
private function addedToStage(e:Event):void
{
Inventscreen = new inventoryscreen();
Inventscreen.parentGame = this;
trace("added to stage");
removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
stage.addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
stage.addEventListener(KeyboardEvent.KEY_UP, keyup );
}
private function loop(e:Event):void
{
switch (gamestate)
{
case cs_load :
initalizegame();
break;
case cs_running :
gameloop();
break;
case cs_paused :
//addChild(Inventscreen);
default :
break;
}
}
private function gameloop():void
{
if (! Pause)
{
Player.update();
updateenemy();
if (Level == 0 && defvalue == 0 && attvalue ==0 )
{
updatearmour();
}
else if (Level == 1 && defvalue == 10 && attvalue == 10)
{
updatearmour();
}
else if (Level == 2 && defvalue == 20 && attvalue == 20)
{
updatearmour();
}
if (contains(Inventscreen))
{
removeChild(Inventscreen);
}
}
if (Pause)
{
if (Inventscreen.parent != this)
{
addChild(Inventscreen);
Inventscreen.refreshScreen();
inventscr = true;
}
}
//Player.update();
//updateenemy();
if (Player.health <= 0)
{
addChild(Gameover);
}
}
private function initalizegame():void
{
stage.focus = stage;
// add the layers for bullets and enemies
enemyholder = new Sprite ;
addChild(enemyholder);
armourholder = new Sprite();
addChild(armourholder);
//set up the player
//trace("addplayer");
addChild(Player);
gamestate = cs_running;
}
private function keyup(e:KeyboardEvent):void
{
if (e.keyCode == 80)
{
Pause = ! Pause;
trace("i'm in pause");
}
}
private function spawnenemy():void
{
var EnemyIndex = findenemy();
trace(EnemyIndex);
//check its valid
if (EnemyIndex != null)
{
trace("found enemy");
if (Level == 0)
{
enemypool[EnemyIndex] = new enemy1();
framessincespawn == 100;
}
else if (Level >= 1)
{
enemypool[EnemyIndex] = new enemy2();
framessincespawn = 60;
}
else if (Level == 2)
{
enemypool[EnemyIndex] = new enemy2();
framessincespawn = 40;
}
enemypool[EnemyIndex].activate(50+Math.random() *(stage.stageWidth -100), 0, Player, this);
enemyholder.addChild(enemypool[EnemyIndex]);
}
}
//this function spawns armour
public function spawnarmour():void
{
var ar:armour = new armour();
var offset:Number = 100;
ar.activatearmour(
offset+Math.random() *(stage.stageWidth -offset * 2),
offset+Math.random() *(stage.stageHeight -offset * 2),
Player);
armourpool.push(ar);
//armourpool.push(50+Math.random() *(stage.stageWidth -100),0,Player);
//armourpool.push(100+Math.random() *(stage.width -100),0,Player);
armourholder.addChild(ar);
}
public function fillenemypool()
{
enemypool = new Vector.<enemy > ;
var i:int = 0;
while (i < 25)
{
i++;
enemypool.push(new enemy());
}
}
public function fillarmourpool()
{
armourpool = new Vector.<armour > ;
var b:int = 0;
while (b < 25)
{
b++;
armourpool.push(new armour());
}
}
private function updateenemy()
{
framessincespawn++;
if (framessincespawn == 100)
{
framessincespawn = 0;
trace("trying to spawn enemy");
spawnenemy();
}
for (var i:int = 0; i < enemypool.length; i++)
{
if (enemypool[i].isactive)
{
if (enemypool[i].hitbox2.hitTestObject(Player))
{
Player.health--;
enemypool[i].deactivate();
trace("health");
}
else
{
enemypool[i].update();
}
}
}
}
private function updatearmour()
{
framessincespawn2++;
if (framessincespawn2 == 100)
{
framessincespawn2 = 0;
trace("trying to spawn armour");
spawnarmour();
}
for (var b:int = 0; b < armourpool.length; b++)
{
if (armourpool[b].isactive)
{
if (armourpool[b].hitTestObject(Player))
{
trace("armour collected");
if (Level == 0 && a < 3)
{
a++;
}
else if (Level == 1 && a < 6)
{
a++;
}
else if (Level == 2 && a < 9)
{
a++;
}
armourpool[b].deactivatearmour();
}
else
{
armourpool[b].updatearmour();
}
}
}
}
private function findenemy()
{
//loop through all the enemies to find an inactive one
for (var i:int = 0; i < enemypool.length; i++)
{
// once we find one that's spare
if (! enemypool[i].isactive)
{
// return it ready for use
return i;
}
}
return null;
}
public function youwin():void
{
addChild(Youwin);
Pause = true;
trace ("im in pause");
}
}
}
No comments:
Post a Comment