Skip to content

Commit

Permalink
loot pickups can freely be picked up/dropped
Browse files Browse the repository at this point in the history
  • Loading branch information
PaulSB committed Aug 21, 2011
1 parent bee230e commit 4a26591
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 10 deletions.
1 change: 1 addition & 0 deletions src/game/Loot.as
Expand Up @@ -22,6 +22,7 @@ package game
height -= offset.y;
y += offset.y;

color = colour;
alpha = 0.75;
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/game/Player.as
Expand Up @@ -26,6 +26,8 @@ package game
public var m_spriteWidth:int;
public var m_spriteHeight:int;

public var m_hasLoot:Boolean = false;

public function Player(xPos:int, yPos:int)
{
super(xPos, yPos);
Expand Down
60 changes: 54 additions & 6 deletions src/states/PlayState.as
@@ -1,6 +1,7 @@
package states
{
import game.Enemy;
import game.Loot;
import game.Player;
import org.flixel.FlxG;
import org.flixel.FlxGroup;
Expand Down Expand Up @@ -164,7 +165,9 @@ package states
// Enemy targetting
for each (var enemy:Enemy in m_enemies.members)
{
enemy.setTargetPos(m_player.getCentreStandingPos().x, m_player.getCentreStandingPos().y);
// Alertness check
//if (Math.random() < 0.1)
enemy.setTargetPos(m_player.getCentreStandingPos().x, m_player.getCentreStandingPos().y);
}

// Item instructions
Expand Down Expand Up @@ -195,9 +198,28 @@ package states
m_instructionTarget = m_currentLevel.m_door_NW;
}
else
{
{
m_instructionText.visible = false;
m_instructionTarget = null;

if (m_player.m_hasLoot && !m_currentLevel.m_isExitRoom)
{
m_instructionText.text = "Press SPACE to drop LOOT";
m_instructionText.visible = true;
m_instructionTarget = m_player;
}
else
{
for each (var loot:Loot in m_currentLevel.m_pickUp_Loot)
{
if (FlxG.overlap(m_player, loot))
{
m_instructionText.text = "Press SPACE to pick up LOOT";
m_instructionText.visible = true;
m_instructionTarget = loot;
}
}
}
}

// Item actions
Expand Down Expand Up @@ -230,6 +252,32 @@ package states
m_player.x = Level.ROOM_DRAW_X + 2.0 * m_currentLevel.m_tileWidth;
m_player.y = Level.ROOM_DRAW_Y + 6.0 * m_currentLevel.m_tileHeight;
}
else if (m_instructionTarget == m_player)
{
if (m_player.m_hasLoot)
{
// Drop loot
var lootX:int = m_player.x;
var lootY:int = m_player.y + m_player.height;
var droppedLoot:Loot = new Loot(lootX, lootY, m_currentLevel.m_roomColour);
m_currentLevel.m_pickUp_Loot.push(droppedLoot);
s_layerInScene.add(droppedLoot);
m_player.m_hasLoot = false;
}
}
else
{
for (var lootLoop:int = 0; lootLoop < m_currentLevel.m_pickUp_Loot.length; lootLoop++)
{
if (m_instructionTarget == m_currentLevel.m_pickUp_Loot[lootLoop])
{
// Pick up loot
s_layerInScene.remove(m_instructionTarget, true);
m_currentLevel.m_pickUp_Loot.splice(lootLoop, 1);
m_player.m_hasLoot = true;
}
}
}

if (nextRoom)
{
Expand All @@ -244,8 +292,8 @@ package states
if (m_currentLevel.m_door_NW)
s_layerBackground.remove(m_currentLevel.m_door_NW, true);

if (m_currentLevel.m_pickUp_Loot)
s_layerInScene.remove(m_currentLevel.m_pickUp_Loot, true);
for each (var oldLoot:Loot in m_currentLevel.m_pickUp_Loot)
s_layerInScene.remove(oldLoot, true);

m_levelManager.changeCurrentRoom(nextRoom.m_roomIndex);
m_currentLevel = m_levelManager.getCurrentRoom();
Expand All @@ -271,8 +319,8 @@ package states
if (m_currentLevel.m_door_NW)
s_layerBackground.add(m_currentLevel.m_door_NW);

if (m_currentLevel.m_pickUp_Loot)
s_layerInScene.add(m_currentLevel.m_pickUp_Loot);
for each (var newLoot:Loot in m_currentLevel.m_pickUp_Loot)
s_layerInScene.add(newLoot);

// Populate
for each (var oldEnemy:Enemy in m_enemies.members)
Expand Down
9 changes: 5 additions & 4 deletions src/world/Level.as
Expand Up @@ -46,11 +46,11 @@ package world
public var m_door_NW:FlxSprite = null;

// Pick-ups
public var m_pickUp_Loot:Loot;
public var m_pickUp_Loot:Array;

public var m_roomIndex:int;
public var m_doorFlags:uint = F_DIRECTION_NONE;
private var m_roomColour:uint;
public var m_roomColour:uint;
public var m_isExitRoom:Boolean = false;

public var m_tileWidth:int = 0;
Expand Down Expand Up @@ -108,11 +108,12 @@ package world

setupDoors(doorFlags);

if (m_roomIndex > 0 && !m_isExitRoom) // TO DO: don't have loot in every room!
if (m_roomIndex > 0 && !m_isExitRoom)
{
var lootX:int = m_roomCentreX - (Math.random() - 0.5) * (Math.max(0, m_roomWidth - 24));
var lootY:int = m_roomCentreY - (Math.random() - 0.5) * (Math.max(0, getMaxYForX(lootX) * 2 - 24));
m_pickUp_Loot = new Loot(lootX - 9, lootY - 9, m_roomColour);
m_pickUp_Loot = new Array;
m_pickUp_Loot.push( new Loot(lootX - 9.0, lootY - 9.0, m_roomColour) ); // TO DO: don't have loot in every room!
}
}

Expand Down

0 comments on commit 4a26591

Please sign in to comment.