mirror of
https://github.com/exane/not-gwent-online
synced 2024-11-23 19:36:53 +00:00
125 lines
2.4 KiB
JavaScript
125 lines
2.4 KiB
JavaScript
var CardData = require("../assets/data/cards");
|
|
var AbilityData = require("../assets/data/abilities");
|
|
|
|
var Card = (function(){
|
|
var Card = function(key){
|
|
if(!(this instanceof Card)){
|
|
return (new Card(key));
|
|
}
|
|
/**
|
|
* constructor here
|
|
*/
|
|
this.setDisabled(false);
|
|
this.channel = {};
|
|
this._key = key;
|
|
this._data = CardData[key];
|
|
this._data.key = key;
|
|
this._boost = 0;
|
|
this._forcedPower = -1;
|
|
this._init();
|
|
|
|
};
|
|
var r = Card.prototype;
|
|
/**
|
|
* methods && properties here
|
|
* r.property = null;
|
|
* r.getProperty = function() {...}
|
|
*/
|
|
r._key = null;
|
|
r._data = null;
|
|
r._id = null;
|
|
r._owner = null;
|
|
r._boost = null;
|
|
r._forcedPower = null;
|
|
r._disabled = null;
|
|
Card.__id = 0;
|
|
Card.TYPE = {
|
|
CLOSE_COMBAT: 0,
|
|
RANGED: 1,
|
|
SIEGE: 2,
|
|
LEADER: 3,
|
|
SPECIAL: 4,
|
|
WEATHER: 5
|
|
};
|
|
|
|
r.channel = null
|
|
|
|
|
|
r._init = function(){
|
|
this._id = ++Card.__id;
|
|
}
|
|
|
|
r.getName = function(){
|
|
return this._data.name;
|
|
}
|
|
r.getPower = function(){
|
|
if(this._data.power === -1) return 0;
|
|
if(this._forcedPower > -1){
|
|
return this._forcedPower + this._boost;
|
|
}
|
|
return this._data.power + this._boost;
|
|
}
|
|
r.getRawPower = function() {
|
|
return this._data.power;
|
|
}
|
|
r.calculateBoost = function() {
|
|
this._boost = 0;
|
|
for (var key in this._boosts) {
|
|
var boost = this._boosts[key];
|
|
this.boost(boost.getPower());
|
|
}
|
|
}
|
|
r.setForcedPower = function(nr){
|
|
this._forcedPower = nr;
|
|
}
|
|
r.getRawAbility = function(){
|
|
return this._data.ability;
|
|
}
|
|
r.getAbility = function(){
|
|
if(Array.isArray(this._data.ability)) {
|
|
var res = [];
|
|
this._data.ability.forEach(function(ability) {
|
|
res.push(AbilityData[ability]);
|
|
})
|
|
return res;
|
|
}
|
|
return AbilityData[this._data.ability];
|
|
}
|
|
r.getImage = function(){
|
|
return "../assets/cards/" + this._data.img + ".png";
|
|
}
|
|
r.getFaction = function(){
|
|
return this._data.faction;
|
|
}
|
|
r.getType = function(){
|
|
return this._data.type;
|
|
}
|
|
r.getKey = function(){
|
|
return this._key;
|
|
}
|
|
|
|
r.getID = function(){
|
|
return this._id;
|
|
}
|
|
|
|
r.boost = function(nr){
|
|
/*this.getPower(); //to recalculate this._power;*/
|
|
this._boost += nr;
|
|
}
|
|
|
|
r.isDisabled = function() {
|
|
return this._disabled;
|
|
}
|
|
|
|
r.setDisabled = function(b) {
|
|
this._disabled = b;
|
|
}
|
|
|
|
r.getProperty = function(prop){
|
|
return this._data[prop];
|
|
}
|
|
|
|
return Card;
|
|
})();
|
|
|
|
module.exports = Card; |