2019-07-10 04:01:15 +00:00
|
|
|
/*
|
|
|
|
* @project: TERA
|
|
|
|
* @version: Development (beta)
|
|
|
|
* @license: MIT (not for evil)
|
|
|
|
* @copyright: Yuriy Ivanov (Vtools) 2017-2019 [progr76@gmail.com]
|
|
|
|
* Web: https://terafoundation.org
|
|
|
|
* Twitter: https://twitter.com/terafoundation
|
|
|
|
* Telegram: https://t.me/terafoundation
|
|
|
|
*/
|
|
|
|
|
|
|
|
var MAX_SUM_TER = 1e9;
|
|
|
|
var MAX_SUM_CENT = 1e9;
|
|
|
|
|
2019-07-10 07:59:04 +00:00
|
|
|
function ADD(Coin, Value2) {
|
2019-07-10 04:01:15 +00:00
|
|
|
Coin.SumCOIN += Value2.SumCOIN;
|
|
|
|
Coin.SumCENT += Value2.SumCENT;
|
2019-07-10 07:59:04 +00:00
|
|
|
if (Coin.SumCENT >= MAX_SUM_CENT) {
|
2019-07-10 04:01:15 +00:00
|
|
|
Coin.SumCENT -= MAX_SUM_CENT;
|
|
|
|
Coin.SumCOIN++;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
};
|
|
|
|
|
2019-07-10 07:59:04 +00:00
|
|
|
function SUB(Coin, Value2) {
|
2019-07-10 04:01:15 +00:00
|
|
|
Coin.SumCOIN -= Value2.SumCOIN;
|
2019-07-10 07:59:04 +00:00
|
|
|
if (Coin.SumCENT >= Value2.SumCENT) {
|
2019-07-10 04:01:15 +00:00
|
|
|
Coin.SumCENT -= Value2.SumCENT;
|
|
|
|
}
|
2019-07-10 07:59:04 +00:00
|
|
|
else {
|
2019-07-10 04:01:15 +00:00
|
|
|
Coin.SumCENT = MAX_SUM_CENT + Coin.SumCENT - Value2.SumCENT;
|
|
|
|
Coin.SumCOIN--;
|
|
|
|
}
|
2019-07-10 07:59:04 +00:00
|
|
|
if (Coin.SumCOIN < 0) {
|
2019-07-10 04:01:15 +00:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
};
|
|
|
|
|
2019-07-10 07:59:04 +00:00
|
|
|
function DIV(Coin, Value) {
|
2019-07-10 04:01:15 +00:00
|
|
|
Coin.SumCOIN = Coin.SumCOIN / Value;
|
|
|
|
Coin.SumCENT = Math.floor(Coin.SumCENT / Value);
|
|
|
|
var SumCOIN = Math.floor(Coin.SumCOIN);
|
|
|
|
var SumCENT = Math.floor((Coin.SumCOIN - SumCOIN) * MAX_SUM_CENT);
|
|
|
|
Coin.SumCOIN = SumCOIN;
|
|
|
|
Coin.SumCENT = Coin.SumCENT + SumCENT;
|
2019-07-10 07:59:04 +00:00
|
|
|
if (Coin.SumCENT >= MAX_SUM_CENT) {
|
2019-07-10 04:01:15 +00:00
|
|
|
Coin.SumCENT -= MAX_SUM_CENT;
|
|
|
|
Coin.SumCOIN++;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
};
|
|
|
|
|
2019-07-10 07:59:04 +00:00
|
|
|
function FLOAT_FROM_COIN(Coin) {
|
2019-07-10 04:01:15 +00:00
|
|
|
var Sum = Coin.SumCOIN + Coin.SumCENT / MAX_SUM_CENT;
|
|
|
|
return Sum;
|
|
|
|
};
|
|
|
|
|
2019-07-10 07:59:04 +00:00
|
|
|
function STRING_FROM_COIN(Coin) {
|
2019-07-10 04:01:15 +00:00
|
|
|
var Sum = FLOAT_FROM_COIN(Coin);
|
2019-07-10 07:59:04 +00:00
|
|
|
return Sum.toLocaleString(undefined, { useGrouping: true, style: 'decimal', maximumFractionDigits: 9 });
|
2019-07-10 04:01:15 +00:00
|
|
|
};
|
|
|
|
|
2019-07-10 07:59:04 +00:00
|
|
|
function COIN_FROM_FLOAT(Sum) {
|
2019-07-10 04:01:15 +00:00
|
|
|
var SumCOIN = Math.floor(Sum);
|
|
|
|
var SumCENT = Math.floor((Sum - SumCOIN) * MAX_SUM_CENT);
|
2019-07-10 07:59:04 +00:00
|
|
|
var Coin = { SumCOIN: SumCOIN, SumCENT: SumCENT };
|
2019-07-10 04:01:15 +00:00
|
|
|
return Coin;
|
|
|
|
};
|
|
|
|
|
2019-07-10 07:59:04 +00:00
|
|
|
function COIN_FROM_FLOAT2(Sum) {
|
2019-07-10 04:01:15 +00:00
|
|
|
var SumCOIN = Math.floor(Sum);
|
|
|
|
var SumCENT = Math.floor(Sum * MAX_SUM_CENT - SumCOIN * MAX_SUM_CENT);
|
2019-07-10 07:59:04 +00:00
|
|
|
var Coin = { SumCOIN: SumCOIN, SumCENT: SumCENT };
|
2019-07-10 04:01:15 +00:00
|
|
|
return Coin;
|
|
|
|
};
|
2019-07-10 07:59:04 +00:00
|
|
|
if (typeof window === "object")
|
2019-07-10 04:01:15 +00:00
|
|
|
window.COIN_FROM_FLOAT = COIN_FROM_FLOAT2;
|
|
|
|
|
2019-07-10 07:59:04 +00:00
|
|
|
function ISZERO(Coin) {
|
|
|
|
if (Coin.SumCOIN === 0 && Coin.SumCENT === 0)
|
2019-07-10 04:01:15 +00:00
|
|
|
return true;
|
|
|
|
else
|
|
|
|
return false;
|
|
|
|
};
|
|
|
|
|
2019-07-10 07:59:04 +00:00
|
|
|
function COIN_FROM_STRING(Str) {
|
2019-07-10 04:01:15 +00:00
|
|
|
throw "TODO: COIN_FROM_STRING";
|
|
|
|
};
|
2019-07-10 07:59:04 +00:00
|
|
|
if (typeof global === "object") {
|
2019-07-10 04:01:15 +00:00
|
|
|
global.ADD = ADD;
|
|
|
|
global.SUB = SUB;
|
|
|
|
global.DIV = DIV;
|
|
|
|
global.ISZERO = ISZERO;
|
|
|
|
global.FLOAT_FROM_COIN = FLOAT_FROM_COIN;
|
|
|
|
global.COIN_FROM_FLOAT = COIN_FROM_FLOAT;
|
|
|
|
global.COIN_FROM_STRING = COIN_FROM_STRING;
|
|
|
|
}
|