1 decade ago by ryananger
Hey guys, I'm having a lot of problems with drawing entities and need a bit of help. First, Chat entity draws if I spawn it from within main.js, but not if I spawn it in my Lobby entity, and Blinker entity won't draw even if I spawn it in main.js
Any help is greatly appreciated!
Any help is greatly appreciated!
ig.module(
'game.main'
)
.requires(
'impact.game',
'impact.font',
'game.entities.character',
'game.entities.arrows',
'game.entities.startbutton',
'game.entities.activePanel',
'game.entities.selectedPanel',
'game.entities.lobby',
'game.entities.chat',
'game.entities.blinker',
'game.entities.background',
'game.igStorage.impact-storage'
)
.defines(function(){
MyGame = ig.Game.extend({
font: new ig.Font( 'media/04b03.font.png' ),
grid: [],
gamestate: {lobby: false, roster: false, placement: false, play: false, turn1: false, turn2: false},
Socket: 0,
Lobby: 0,
Chat: 0,
Blinker: 0,
username: 'User',
UserList: [],
init: function() {
// Initialize your game here; bind keys etc.
ig.input.bind(ig.KEY.MOUSE1, 'lmb');
this.socketController();
this.lobbyInit();
console.log(this.entities);
},
socketController: function() {
// I intend to move this to its own file as an entity that will be created in this.init.
var Socket = io.connect("http://localhost:1337");
this.Socket = Socket;
Socket.on('connect', function ()
{
var sessionid = Socket.io.engine.id;
var username = ig.game.username,
UserList = ig.game.UserList;
Socket.emit('addUser', sessionid, username);
ig.game.UserList.push({id: sessionid, username: username});
});
Socket.on('newUser', function (UserList, info)
{
ig.game.UserList = UserList;
console.log(info.username + ' has connected!');
});
Socket.on('userDisconnect', function (UserList, info)
{
ig.game.UserList = UserList;
console.log(info.username + ' has disconnected.');
});
},
lobbyInit: function() {
this.gamestate.lobby = true;
this.Lobby = this.spawnEntity(EntityLobby, 230, 80, this.Socket);
//this.Chat = this.spawnEntity(EntityChat, 850, 200);
//this.Blinker = this.spawnEntity(EntityBlinker, 850, 200);
//this.Chat.UserList = this.UserList;
},
update: function() {
this.parent();
var mx = ig.input.mouse.x,
my = ig.input.mouse.y;
var gx = Math.floor((mx - 160)/60),
gy = Math.floor((my - 60)/60);
if (ig.input.pressed('lmb'))
{
console.log(Math.floor(mx),Math.floor(my));
};
},
draw: function() {
// Draw all entities and backgroundMaps
var x = ig.system.width/2,
y = ig.system.height/2;
this.parent();
this.font.draw('Entities: ' + this.entities.length, 10, 10);
}
});
ig.main( '#canvas', MyGame, 60, 1320, 720, 1 );
});
ig.module(
'game.entities.lobby'
)
.requires(
'impact.game',
'impact.entity'
)
.defines(function(){
EntityLobby = ig.Entity.extend({
lobby_bg: new ig.Image ('media/tbs_lobby_bg.png'),
lobby_img: new ig.Image ('media/lobby.png'),
lobby_scrollbar: new ig.Image ('media/lobby_scrollbar.png'),
lobby_select: new ig.Image ('media/lobby_select.png'),
font: new ig.Font( 'media/font.png' ),
size: {x: 600, y: 560},
UserList: [],
LobbySlots: [],
numberSlots: 25,
selectedSlot: -1,
lobbyScrollPosition: 0,
init: function (x,y,Socket) {
this.parent(x,y);
var self = this;
Socket.on('newUser', function (UserList,info)
{
self.UserList = UserList;
self.setUserList();
});
Socket.on('userDisconnect', function (UserList, info)
{
self.UserList = UserList;
self.setUserList();
});
ig.game.spawnEntity(EntityChat, 850, 200);
},
update: function () {
var mx = ig.input.mouse.x,
my = ig.input.mouse.y;
if (ig.input.pressed('lmb'))
{
this.mouseClick(mx, my);
};
this.parent();
},
mouseClick: function (mx, my) {
if (this.mouseOnUserList(mx, my))
{
var slotFocus = this.slotFocus(mx, my);
if (this.UserList[slotFocus] != undefined)
{
this.selectedSlot = slotFocus;
}
else
{
this.selectedSlot = undefined;
};
}
else
{
var maxScroll = this.UserList.length - this.numberSlots;
var arrowCheck = this.mouseOnLobbyArrow(mx, my);
switch (arrowCheck)
{
case 'up':
if (this.lobbyScrollPosition > 0)
{
this.lobbyScrollPosition--;
};
this.setUserList();
break;
case 'down':
if (this.lobbyScrollPosition < maxScroll)
{
this.lobbyScrollPosition++;
};
this.setUserList();
break;
};
};
},
setUserList: function () {
//this.UserList = ig.game.UserList;
this.LobbySlots = [];
if (this.UserList.length > this.numberSlots)
{
var n = this.lobbyScrollPosition;
for (i = n; i < n + this.numberSlots; i++)
{
this.LobbySlots.push(this.UserList[i]);
}
}
else
{
this.LobbySlots = this.UserList;
};
},
mouseOnLobbyArrow: function (mx, my) {
var arrow = 0;
if (mx >= 800 && mx <= 820)
{
if (my >= 120 && my <= 135)
{
arrow = 'up';
};
if (my >= 605 && my <= 620)
{
arrow = 'down';
};
};
return arrow;
},
mouseOnUserList: function (mx, my) {
return (mx >= 240 && mx <= 800 && my >= 120 && my <= 620);
},
slotFocus: function (mx, my) {
var x_in = false,
y_on = -1;
if (mx >= 240 && mx <= 820)
{
x_in = true;
};
if (my >= 120 && my <= 620 && x_in)
{
y_on = Math.floor((my - 120)/20);
};
return y_on;
},
draw: function () {
this.lobby_bg.draw(0,0);
this.lobby_img.draw(this.pos.x, this.pos.y);
if (this.selectedSlot != -1)
{
this.lobby_select.draw(240, 120 + (this.selectedSlot*20));
};
for (i = 0; i < this.LobbySlots.length; i++)
{
var name = this.LobbySlots[i].username;
this.font.draw(name, 245, 128 + (i*20));
};
}
});
});
ig.module(
'game.entities.chat'
)
.requires(
'impact.game',
'impact.entity'
)
.defines(function(){
EntityChat = ig.Entity.extend({
chat_img: new ig.Image ('media/chat_bg.png'),
chat_entrybar: new ig.Image ('media/chat_entrybar.png'),
font: new ig.Font( 'media/font.png' ),
size: {x: 240, y: 440},
UserList: [],
blinkerOn: false,
entryOn: false,
Blinker: 0,
init: function (x,y) {
this.parent(x,y);
},
update: function () {
this.setUserList();
var mx = ig.input.mouse.x,
my = ig.input.mouse.y;
if (ig.input.pressed('lmb'))
{
this.mouseClick(mx, my);
};
this.parent();
},
mouseClick: function (mx, my) {
if (this.mouseOnEntryBar(mx, my)) {
if (!this.blinkerOn) {
ig.game.Blinker = ig.game.spawnEntity(EntityBlinker, this.pos.x + 5, this.pos.y + 420);
this.blinkerOn = true;
}
}
else
{
this.blinkerOn = false;
//ig.game.Blinker.kill();
}
},
setUserList: function () {
this.UserList = ig.game.UserList;
},
mouseOnEntryBar: function (mx, my) {
return (mx >= 850 && mx <= 1090 && my >= 620 && my <= 640);
},
draw: function () {
this.chat_img.draw(this.pos.x, this.pos.y);
this.chat_entrybar.draw(this.pos.x, this.pos.y + 420);
}
});
});
