Skip to content

Commit

Permalink
3/6/22 4:02 PM
Browse files Browse the repository at this point in the history
 - updated example / testing code
 - added check in dropIndex so that if you try to drop an index that's out of bounds it returns null
  • Loading branch information
eboatwright committed Mar 6, 2022
1 parent 6ef19e7 commit 5cdcbba
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 63 deletions.
2 changes: 2 additions & 0 deletions src/extras.js
Original file line number Diff line number Diff line change
Expand Up @@ -908,6 +908,8 @@ class Inventory extends Component {

// Drop the item corresponding to the index, and return the Item Entity
dropIndex(index) {
if(this.inventory.length <= index)
return null;
return this.drop(this.inventory[index].item.name);
}

Expand Down
2 changes: 2 additions & 0 deletions src/jscii/extras/inventory.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@ class Inventory extends Component {

// Drop the item corresponding to the index, and return the Item Entity
dropIndex(index) {
if(this.inventory.length <= index)
return null;
return this.drop(this.inventory[index].item.name);
}

Expand Down
119 changes: 56 additions & 63 deletions src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,31 @@ class Chest extends Entity {
}
}

var test = vZero();

class PlayerController extends Component {
constructor(entity) { super(entity); }
constructor(entity) {
super(entity);

this.moveTimer = 0;
this.inventoryPanel = undefined;
this.dropping = false;
}

openInventory(level) {
return level.addEntity(new InventoryPanel());
}

closeInventory(level) {
this.inventoryPanel.destroy();
this.inventoryPanel = undefined;
}

dropIndex(index, level) {
var item = this.entity.inventory.dropIndex(index);
if(item === null)
return;
item.position = this.entity.position.copy();
level.addEntity(item);
}

update(level) {
var direction = vector2(0, 0);
Expand Down Expand Up @@ -94,6 +115,38 @@ class PlayerController extends Component {

if(keyJustDown("o"))
new OpenAction(this.entity, level).perform();

if(this.inventoryPanel === undefined) {
if(keyJustDown("i"))
this.inventoryPanel = this.openInventory(level);
} else
if(keyJustDown("Escape"))
this.closeInventory(level);

if(this.dropping) {
if(this.inventoryPanel === undefined)
this.inventoryPanel = this.openInventory(level);
var key = anyJustDown(ALPHABET);
if(key !== null) {
var index = -1;

for(var i = 0; i < ALPHABET.length; i++) {
if(ALPHABET[i] == key) {
index = i;
break;
}
}

if(index != -1)
this.dropIndex(index, level);

this.closeInventory(level);
this.dropping = false;
}
}

if(keyJustDown("d"))
this.dropping = true;
}
}

Expand All @@ -105,7 +158,6 @@ class Player extends Entity {
this.health = new HealthStat(this);
this.magic = new MagicStat(this);
this.renderer = new CharRenderer(this, "default", AT, LIGHT_BROWN, DARK_GRAY);
this.moveTimer = 0;
}

update(level) {
Expand All @@ -117,12 +169,6 @@ class Player extends Entity {
render(level) {
this.renderer.render(level);
}

dropIndex(index, level) {
var item = this.inventory.dropIndex(index);
item.position = this.position.copy();
level.addEntity(item);
}
}

class Enemy extends Entity {
Expand Down Expand Up @@ -174,57 +220,6 @@ class Seperator extends Entity {
}
}

class UIManager extends Entity {
constructor() {
super("uiManager", vZero(), ["uiManager"]);
this.inventory = undefined;
this.dropping = false;
}

openInventory(level) {
return level.addEntity(new InventoryPanel());
}

closeInventory(level) {
this.inventory.destroy();
this.inventory = undefined;
}

update(level) {
if(this.inventory == undefined)
if(keyJustDown("i"))
this.inventory = this.openInventory(level);
else
if(keyJustDown("Escape"))
this.closeInventory(level);

if(this.dropping) {
if(this.inventory === undefined)
this.inventory = this.openInventory(level);
var key = anyJustDown(ALPHABET);
if(key !== null) {
var index = -1;

for(var i = 0; i < ALPHABET.length; i++) {
if(ALPHABET[i] == key) {
index = i;
break;
}
}

if(index != -1)
level.getEntityById("player").dropIndex(index, level);

this.closeInventory(level);
this.dropping = false;
}
}

if(keyJustDown("d"))
this.dropping = true;
}
}

init = function() {
tilemap = new Tilemap(
"tilemap",
Expand Down Expand Up @@ -254,8 +249,6 @@ init = function() {
level.addEntity(new Seperator(vector2(0, 30), LIGHT_GRAY));
level.addEntity(new Text("log", vector2(1, 32), "WELCOME!", WHITE, BLACK));

level.addEntity(new UIManager());

level.init();

return true;
Expand Down

0 comments on commit 5cdcbba

Please sign in to comment.