Client Usage Examle
import Client from '../src';
const client = new Client({
host: '127.0.0.1',
port: 3001,
secure: false
});
/** Player */
/**
* @param data Object
* {
* status: Boolean,
* room: {
* players: {
* id1: { id: id1, name: String, avatar: String },
* id2: { id: id2, name: String, avatar: String },
* id3: { id: id3, name: String, avatar: String },
* id4: { id: id4, name: String, avatar: String },
* },
* hand: [[Object<Card>, Object<Card>], [Object<Card>], [Object<Card>]],
* attacker: Number (index),
* defender: Number (index),
* nextUser: Number (index)
* }
*
* }
* */
client.onPlayerSubscribe(data => {
console.log('======SUBSCRIBE========')
console.log(data);
users = _.toArray(data.room.players);
playerIndex = _.findIndex(users, user => user.id == playerId);
console.log('=======================');
client.ready(true);
});
/**
* @param cards
* [{ suit: 0, value: 6}, { suit: 2, value: 11}]
* @param take Boolean (if player is defender and is taking hand cards)
* */
client.onPlayerGetCards(({ cards, take }) => {
console.log('====GET CARDS====', cards, take);
// clearAllCards();
drawCards(cards);
});
/**
* @param cards
* [{ suit: 0, value: 6}, { suit: 2, value: 11}]
* @param state Number Enum(states)
* @description state to indicate what player can do
* */
client.onPlayerGetValidCards(({ cards, state }) => {
console.log('====GET VALID CARDS====', cards, state);
});
/** Room */
client.onGameStart(console.log);
client.onGameFinish(console.log);
/**
* @param player
* {
* id: String
* }
* */
client.onPlayerLeave(player => {
console.log('===========ROOM PLAYER LEAVE========');
console.log(player);
users.splice(_.findIndex(users, user => user.id == player), 1)
});
client.onPlayerReady(console.log);
client.onPlayerNotReady(console.log);
/**
* @param bonuses Array<String>
* @param chips [{ amount: Number, type: 'sku_gold' }]
* @param levelUp Boolean
* @param xp Number
* */
client.onPlayerFinish(({ bonuses, chips, levelUp, xp }) => {
console.log('===========PLAYER FINISH========');
console.log({ bonuses, chips, levelUp, xp });
});
/**
* @param playerId String,
* @param position Number
* */
client.onRoomPlayerFinish(({ playerId, position }) => {
console.log('===========ROOM PLAYER FINISH========');
console.log({ playerId, position });
});
/**
* @param count Number
* @param trump Object { suit: 0, value: 11 }
* */
client.onRoomGetCards(({ count, trump }) => {
console.log('===========ROOM GET CARDS========');
console.log(count, trump);
document.getElementById('trump').src = `/img/cards/C${trump.suit}${trump.value}.png`
});
/**
* @param card Object { suit: 1, value: 12 }
* @param state Number Enum(states)
* */
client.onRoomPlayCard(({ card, state }) => {
console.log('===========ROOM PLAY CARD========');
console.log(card);
if (!card) return;
try {
_.findWhere(playerCards, card).image.remove();
} catch (e) {}
hand.push(new HandCard(card));
switchAllOff();
});
/**
* @param playerId String,
* @param count Number
* */
client.onRoomGetNewCards(({ playerId, count }) => {
console.log('===========ROOM GET NEW CARDS========');
console.log({ playerId, count });
});
/**
* @param attacker Number (player index)
* @param defender Number (player index)
* @param userIndex Number (player index)
* @param taking Boolean (if defender is taking)
* @param state Number Enum(states)
* */
client.onRoomNextUser(({ attacker, defender, userIndex, taking, state }) => {
console.log('==========ROOM NEXT USER===========');
console.log({ attacker, defender, userIndex, taking, state });
console.log(users, playerIndex)
document.getElementById('userId').style.color = userIndex === _.findIndex(users, user => user.id == playerId) ? 'red' : 'black';
if (state === 8 || state === 9) {
clearHand();
}
});