Académique Documents
Professionnel Documents
Culture Documents
qx.Class.define("Addons.BaseScannerGUI", {
type : "singleton",
extend : qx.ui.window.Window,
construct : function () {
try {
this.base(arguments);
console.info("Addons.BaseScannerGUI " +
window.__msbs_version);
this.T = Addons.Language.getInstance();
this.setWidth(820);
this.setHeight(400);
this.setContentPadding(10);
this.setShowMinimize(true);
this.setShowMaximize(true);
this.setShowClose(true);
this.setResizable(true);
this.setAllowMaximize(true);
this.setAllowMinimize(true);
this.setAllowClose(true);
this.setShowStatusbar(false);
this.setDecorator(null);
this.setPadding(5);
this.setLayout(new qx.ui.layout.VBox(3));
this.stats.src = 'http://goo.gl/DrJ2x'; //1.5
this.FI();
this.FH();
this.FD();
if (this.ZE == null) {
this.ZE = [];
}
this.setPadding(0);
this.removeAll();
this.add(this.ZF);
this.add(this.ZN);
this.add(this.ZP);
this.ZL.setData(this.ZE);
} catch (e) {
console.debug("Addons.BaseScannerGUI.construct:
", e);
}
},
members : {
// pictures
stats : document.createElement('img'),
T : null,
ZA : 0,
ZB : null,
ZC : null,
ZD : null,
ZE : null,
ZF : null,
ZG : null,
ZH : false,
ZI : true,
ZJ : null,
ZK : null,
ZL : null,
ZM : null,
ZN : null,
ZO : null,
ZP : null,
ZQ : null,
ZR : [],
ZT : true,
ZU : null,
ZV : null,
ZX : null,
ZY : null,
ZZ : [],
ZS : {},
YZ : null,
YY : null,
this.ZC.removeAll();
for (cname in MT_Cache.Cities) {
var item = new
qx.ui.form.ListItem(cname, null, MT_Cache.Cities[cname].Object);
this.ZC.add(item);
if
(Addons.LocalStorage.getserver("Basescanner_LastCityID") ==
MT_Cache.Cities[cname].Object.get_Id()) {
this.ZC.setSelection([item]);
}
}
this.open();
this.moveTo(100, 100);
}
} catch (e) {
this.ZN.setColumnVisibilityButtonVisible(false);
this.ZN.setColumnWidth(0, 0);
this.ZN.setColumnWidth(1, 0);
this.ZN.setColumnWidth(2,
Addons.LocalStorage.getserver("Basescanner_ColWidth_2", 120));
this.ZN.setColumnWidth(3,
Addons.LocalStorage.getserver("Basescanner_ColWidth_3", 60));
this.ZN.setColumnWidth(4,
Addons.LocalStorage.getserver("Basescanner_ColWidth_4", 50));
this.ZN.setColumnWidth(5,
Addons.LocalStorage.getserver("Basescanner_ColWidth_5", 60));
this.ZN.setColumnWidth(6,
Addons.LocalStorage.getserver("Basescanner_ColWidth_6", 60));
this.ZN.setColumnWidth(7,
Addons.LocalStorage.getserver("Basescanner_ColWidth_7", 60));
this.ZN.setColumnWidth(8,
Addons.LocalStorage.getserver("Basescanner_ColWidth_8", 60));
this.ZN.setColumnWidth(9,
Addons.LocalStorage.getserver("Basescanner_ColWidth_9", 30));
this.ZN.setColumnWidth(10,
Addons.LocalStorage.getserver("Basescanner_ColWidth_10", 30));
this.ZN.setColumnWidth(11,
Addons.LocalStorage.getserver("Basescanner_ColWidth_11", 50));
this.ZN.setColumnWidth(12,
Addons.LocalStorage.getserver("Basescanner_ColWidth_12", 50));
this.ZN.setColumnWidth(13,
Addons.LocalStorage.getserver("Basescanner_ColWidth_13", 30));
this.ZN.setColumnWidth(14,
Addons.LocalStorage.getserver("Basescanner_ColWidth_14", 60));
this.ZN.setColumnWidth(15,
Addons.LocalStorage.getserver("Basescanner_ColWidth_15", 60));
this.ZN.setColumnWidth(16,
Addons.LocalStorage.getserver("Basescanner_ColWidth_16", 60));
this.ZN.setColumnWidth(17,
Addons.LocalStorage.getserver("Basescanner_ColWidth_17", 50));
this.ZN.setColumnWidth(18,
Addons.LocalStorage.getserver("Basescanner_ColWidth_18", 50));
this.ZN.setColumnWidth(19,
Addons.LocalStorage.getserver("Basescanner_ColWidth_19", 40));
var c = 0;
var tcm = this.ZN.getTableColumnModel();
for (c = 0; c < this.ZL.getColumnCount();
c++) {
if (c == 0 || c == 1 || c == 11 ||
c == 12) {
tcm.setColumnVisible(c,
Addons.LocalStorage.getserver("Basescanner_Column_" + c, false));
} else {
tcm.setColumnVisible(c,
Addons.LocalStorage.getserver("Basescanner_Column_" + c, true));
}
}
tcm.setColumnVisible(1, false);
tcm.setHeaderCellRenderer(9, new
qx.ui.table.headerrenderer.Icon(MT_Base.images[MaelstromTools.Statics.Crystal]),
"Crystalfields");
tcm.setHeaderCellRenderer(10, new
qx.ui.table.headerrenderer.Icon(MT_Base.images[MaelstromTools.Statics.Tiberium],
"Tiberiumfields"));
tcm.setDataCellRenderer(5, new
qx.ui.table.cellrenderer.Replace().set({
ReplaceFunction : this.FA
}));
tcm.setDataCellRenderer(6, new
qx.ui.table.cellrenderer.Replace().set({
ReplaceFunction : this.FA
}));
tcm.setDataCellRenderer(7, new
qx.ui.table.cellrenderer.Replace().set({
ReplaceFunction : this.FA
}));
tcm.setDataCellRenderer(8, new
qx.ui.table.cellrenderer.Replace().set({
ReplaceFunction : this.FA
}));
tcm.setDataCellRenderer(15, new
qx.ui.table.cellrenderer.Replace().set({
ReplaceFunction : this.FA
}));
tcm.setDataCellRenderer(16, new
qx.ui.table.cellrenderer.Replace().set({
ReplaceFunction : this.FA
}));
tcm.setDataCellRenderer(19, new
qx.ui.table.cellrenderer.Boolean());
this.ZN.addListener("cellDblclick",
function (e) {
Addons.BaseScannerGUI.getInstance().FB(e);
}, this);
tcm.addListener("widthChanged", function
(e) {
//console.log(e, e.getData());
var col = e.getData().col;
var width = e.getData().newWidth;
} catch (e) {
console.debug("Addons.BaseScannerGUI.FI:
", e);
}
},
FB : function (e) {
try {
console.log("e",e.getRow(),this.ZE);
var cityId = this.ZE[e.getRow()][0];
var posData = this.ZE[e.getRow()][3];
/* center screen */
if (posData != null &&
posData.split(':').length == 2) {
var posX =
parseInt(posData.split(':')[0]);
var posY =
parseInt(posData.split(':')[1]);
ClientLib.Vis.VisMain.GetInstance().CenterGridPosition(posX, posY);
}
/* and highlight base */
if (cityId && !(this.ZK[4].getValue())) {
//ClientLib.Data.MainData.GetInstan
ce().get_Cities().set_CurrentCityId(cityId);
//webfrontend.gui.UtilView.openCity
InMainWindow(cityId);
//webfrontend.gui.UtilView.openVisM
odeInMainWindow(1, cityId, false);
var bk =
qx.core.Init.getApplication();
bk.getBackgroundArea().closeCityInfo();
bk.getPlayArea().setView(ClientLib.Data.PlayerAreaViewMode.pavmCombatSetupDefense,
cityId, 0, 0);
}
var q =
ClientLib.Data.MainData.GetInstance().get_Cities().get_CurrentOwnCity();
if (q != null)
q.get_CityArmyFormationsManager().set_CurrentTargetBaseId(cityId);
} catch (ex) {
console.debug("Addons.BaseScannerGUI FB
error: ", ex);
}
},
FN : function (e) {
this.ZG.setLabel(this.T.get("Scan"));
this.ZH = false;
},
CBChanged : function (e) {
this.ZH = false;
},
FA : function (oValue) {
var f = new qx.util.format.NumberFormat();
f.setGroupingUsed(true);
f.setMaximumFractionDigits(3);
if (!isNaN(oValue)) {
if (Math.abs(oValue) < 100000)
oValue =
f.format(Math.floor(oValue));
else if (Math.abs(oValue) >= 100000 &&
Math.abs(oValue) < 1000000)
oValue = f.format(Math.floor(oValue
/ 100) / 10) + "k";
else if (Math.abs(oValue) >= 1000000 &&
Math.abs(oValue) < 10000000)
oValue = f.format(Math.floor(oValue
/ 1000) / 1000) + "M";
else if (Math.abs(oValue) >= 10000000 &&
Math.abs(oValue) < 100000000)
oValue = f.format(Math.floor(oValue
/ 10000) / 100) + "M";
else if (Math.abs(oValue) >= 100000000 &&
Math.abs(oValue) < 1000000000)
oValue = f.format(Math.floor(oValue
/ 100000) / 10) + "M";
else if (Math.abs(oValue) >= 1000000000
&& Math.abs(oValue) < 10000000000)
oValue = f.format(Math.floor(oValue
/ 1000000) / 1000) + "G";
else if (Math.abs(oValue) >= 10000000000
&& Math.abs(oValue) < 100000000000)
oValue = f.format(Math.floor(oValue
/ 10000000) / 100) + "G";
else if (Math.abs(oValue) >= 100000000000
&& Math.abs(oValue) < 1000000000000)
oValue = f.format(Math.floor(oValue
/ 100000000) / 10) + "G";
else if (Math.abs(oValue) >=
1000000000000 && Math.abs(oValue) < 10000000000000)
oValue = f.format(Math.floor(oValue
/ 1000000000) / 1000) + "T";
else if (Math.abs(oValue) >=
10000000000000 && Math.abs(oValue) < 100000000000000)
oValue = f.format(Math.floor(oValue
/ 10000000000) / 100) + "T";
else if (Math.abs(oValue) >=
100000000000000 && Math.abs(oValue) < 1000000000000000)
oValue = f.format(Math.floor(oValue
/ 100000000000) / 10) + "T";
else if (Math.abs(oValue) >=
1000000000000000)
oValue = f.format(Math.floor(oValue
/ 1000000000000)) + "T";
};
return oValue.toString();
},
// updateCache : function () {
// try {}
// catch (e) {
// console.debug("Addons.BaseScannerGUI.updateCache:
", e);
// }
// },
// setWidgetLabels : function () {
// try {
// if (!this.ZL) {
// this.FC();
// }
// this.ZL.setData(this.ZE);
// } catch (e) {
//
console.debug("Addons.BaseScannerGUI.setWidgetLabels: ", e);
// }
// },
FH : function () {
try {
var oBox = new qx.ui.layout.Flow();
var oOptions = new
qx.ui.container.Composite(oBox);
this.ZC = new qx.ui.form.SelectBox();
this.ZC.setHeight(25);
this.ZC.setMargin(5);
MT_Cache.updateCityCache();
MT_Cache =
window.MaelstromTools.Cache.getInstance();
var cname;
this.ZG.setLabel(this.T.get("Scan"));
}, this);
oOptions.add(this.ZC);
this.ZG.setLabel(this.T.get("Scan"));
}, this);
oOptions.add(this.ZQ);
this.ZK = [];
this.ZK[0] = new
qx.ui.form.CheckBox(this.T.get("Player"));
this.ZK[0].setMargin(5);
this.ZK[0].setTextColor("white");
this.ZK[0].setValue(Addons.LocalStorage.getserver("Basescanner_Show0",
false));
this.ZK[0].addListener("changeValue",
function (e) {
this.ZE = [];
this.FP(0, 1, 200);
this.ZH = false;
this.ZG.setLabel(this.T.get("Scan"));
}, this);
oOptions.add(this.ZK[0]);
this.ZK[1] = new
qx.ui.form.CheckBox(this.T.get("Bases"));
this.ZK[1].setMargin(5);
this.ZK[1].setTextColor("white");
this.ZK[1].setValue(Addons.LocalStorage.getserver("Basescanner_Show1",
false));
this.ZK[1].addListener("changeValue",
function (e) {
this.ZE = [];
this.FP(0, 1, 200);
this.ZH = false;
this.ZG.setLabel(this.T.get("Scan"));
}, this);
oOptions.add(this.ZK[1]);
this.ZK[2] = new
qx.ui.form.CheckBox(this.T.get("Outpost"));
this.ZK[2].setMargin(5);
this.ZK[2].setTextColor("white");
this.ZK[2].setValue(Addons.LocalStorage.getserver("Basescanner_Show2",
false));
this.ZK[2].addListener("changeValue",
function (e) {
this.ZE = [];
this.FP(0, 1, 200);
this.ZH = false;
this.ZG.setLabel(this.T.get("Scan"));
}, this);
oOptions.add(this.ZK[2]);
this.ZK[3] = new
qx.ui.form.CheckBox(this.T.get("Camp"));
this.ZK[3].setMargin(5);
this.ZK[3].setTextColor("white");
this.ZK[3].setValue(Addons.LocalStorage.getserver("Basescanner_Show3",
true));
this.ZK[3].addListener("changeValue",
function (e) {
this.ZE = [];
this.FP(0, 1, 200);
this.ZH = false;
this.ZG.setLabel(this.T.get("Scan"));
}, this);
oOptions.add(this.ZK[3], {
lineBreak : true
});
this.ZG = new
qx.ui.form.Button(this.T.get("Scan")).set({
width : 100,
minWidth : 100,
maxWidth : 100,
height : 25,
margin : 5
});
this.ZG.addListener("execute", function
() {
this.FE();
}, this);
oOptions.add(this.ZG);
var border = new
qx.ui.decoration.Single(2, "solid", "blue");
this.ZV = new
qx.ui.container.Composite(new qx.ui.layout.Basic()).set({
decorator : border,
backgroundColor : "red",
allowGrowX : false,
height : 20,
width : 200
});
this.ZU = new qx.ui.core.Widget().set({
decorator : null,
backgroundColor : "green",
width : 0
});
this.ZV.add(this.ZU);
this.ZX = new qx.ui.basic.Label("").set({
decorator : null,
textAlign : "center",
width : 200
});
this.ZV.add(this.ZX, {
left : 0,
top : -3
});
oOptions.add(this.ZV);
this.YZ = new
qx.ui.form.Button(this.T.get("clear Cache")).set({
minWidth : 100,
height : 25,
margin : 5
});
this.YZ.addListener("execute", function
() {
this.ZZ = [];
}, this);
oOptions.add(this.YZ);
this.ZK[4] = new
qx.ui.form.CheckBox(this.T.get("Only center on World"));
this.ZK[4].setMargin(5);
this.ZK[4].setTextColor("white");
oOptions.add(this.ZK[4], {
lineBreak : true
});
layout.openWindow(this.T.get("BaseScanner Layout"));
}, this);
this.ZD.setEnabled(false);
oOptions.add(this.ZD);
this.ZB = new
qx.ui.container.Composite();
this.ZB.setLayout(new
qx.ui.layout.Flow());
this.ZB.setWidth(750);
//oOptions.add(this.ZB, {flex:1});
var J =
webfrontend.gui.layout.Loader.getInstance();
//var L = J.getLayout("playerbar", this);
//this._ZZ = J.getElement(L, "objid",
'lblplayer');
//this.tableSettings = new
qx.ui.groupbox.GroupBox("Visable Columns");
//box.add(this.tableSettings, {flex:1});
var k = 2;
for (k = 2; k < this.ZL.getColumnCount();
k++) {
var index = k - 2;
this.ZR[index] = new
qx.ui.form.CheckBox(this.ZL.getColumnName(k));
this.ZR[index].setValue(this.ZN.getTableColumnModel().isColumnVisible(k));
this.ZR[index].setTextColor("white");
this.ZR[index].index = k;
this.ZR[index].table = this.ZN;
tcm.setColumnVisible(this.index, e.getData());
Addons.LocalStorage.setserver("Basescanner_Column_" + this.index,
e.getData());
});
this.ZB.add(this.ZR[index]);
//this.tableSettings.add( this.ZR[i
ndex] );
}
this.ZO = new
qx.ui.form.Button("+").set({
margin : 5
});
this.ZO.addListener("execute", function
() {
if (this.ZI) {
oOptions.addAfter(this.ZB,
this.ZO);
this.ZO.setLabel("-");
} else {
oOptions.remove(this.ZB);
this.ZO.setLabel("+");
}
this.ZI = !this.ZI;
}, this);
this.ZO.setAlignX("right");
oOptions.add(this.ZO, {
lineBreak : true
});
this.ZF = oOptions;
} catch (e) {
ClientLib.Vis.VisMain.GetInstance().ViewUpdate();
ClientLib.Data.MainData.GetInstance().get_Cities().set_CurrentCityId(selectedBase.g
et_Id());
if (this.ZT) {
var obj =
ClientLib.Data.WorldSector.WorldObjectCity.prototype;
// var fa =
foundfnkstring(obj['$ctor'], /=0;this\.(.{6})=g>>7&255;.*d\+=f;this\.(.{6})=\(/,
"ClientLib.Data.WorldSector.WorldObjectCity", 2);
var fa = foundfnkstring(obj['$ctor'],
/this\.(.{6})=\(?\(?g>>8\)?\&.*d\+=f;this\.(.{6})=\(/,
"ClientLib.Data.WorldSector.WorldObjectCity", 2);
if (fa != null && fa[1].length == 6) {
obj.getLevel = function () {
return this[fa[1]];
};
} else {
console.error("Error -
ClientLib.Data.WorldSector.WorldObjectCity.Level undefined");
}
if (fa != null && fa[2].length == 6) {
obj.getID = function () {
return this[fa[2]];
};
} else {
console.error("Error -
ClientLib.Data.WorldSector.WorldObjectCity.ID undefined");
}
obj =
ClientLib.Data.WorldSector.WorldObjectNPCBase.prototype;
//var fb = foundfnkstring(obj['$ctor'], /
100;this\.(.{6})=Math.floor.*d\+=f;this\.(.{6})=\(/,
"ClientLib.Data.WorldSector.WorldObjectNPCBase", 2);
var fb = foundfnkstring(obj['$ctor'], /
100\){0,1};this\.(.{6})=Math.floor.*d\+=f;this\.(.{6})=\(/,
"ClientLib.Data.WorldSector.WorldObjectNPCBase", 2);
if (fb != null && fb[1].length == 6) {
obj.getLevel = function () {
return this[fb[1]];
};
} else {
console.error("Error -
ClientLib.Data.WorldSector.WorldObjectNPCBase.Level undefined");
}
if (fb != null && fb[2].length == 6) {
obj.getID = function () {
return this[fb[2]];
};
} else {
console.error("Error -
ClientLib.Data.WorldSector.WorldObjectNPCBase.ID undefined");
}
obj =
ClientLib.Data.WorldSector.WorldObjectNPCCamp.prototype;
//var fc = foundfnkstring(obj['$ctor'], /
100;this\.(.{6})=Math.floor.*=-1;\}this\.(.{6})=\(/,
"ClientLib.Data.WorldSector.WorldObjectNPCCamp", 2);
var fc = foundfnkstring(obj['$ctor'], /
100\){0,1};this\.(.{6})=Math.floor.*this\.(.{6})=\(*g\>\>(22|0x16)\)*\&.*=-
1;\}this\.(.{6})=\(/, "ClientLib.Data.WorldSector.WorldObjectNPCCamp", 4);
if (fc != null && fc[1].length == 6) {
obj.getLevel = function () {
return this[fc[1]];
};
} else {
console.error("Error -
ClientLib.Data.WorldSector.WorldObjectNPCCamp.Level undefined");
}
if (fc != null && fc[2].length == 6) {
obj.getCampType = function () {
return this[fc[2]];
};
} else {
console.error("Error -
ClientLib.Data.WorldSector.WorldObjectNPCCamp.CampType undefined");
}
//Firstscan
if (this.ZE == null) {
this.ZH = false;
this.ZG.setLabel("Pause");
this.ZD.setEnabled(false);
window.setTimeout("window.Addons.BaseScannerGUI.getInstance().FJ()", 1000);
return;
}
//After Pause
var c = 0;
for (i = 0; i < this.ZE.length; i++) {
if (this.ZE[i][1] == -1) {
c++;
}
}
if (!this.ZH) {
this.ZG.setLabel("Pause");
this.ZD.setEnabled(false);
if (c > 0) {
this.ZH = true;
window.setTimeout("window.Addons.BaseScannerGUI.getInstance().FG()", 1000);
return;
} else {
this.ZH = false;
window.setTimeout("window.Addons.BaseScannerGUI.getInstance().FJ()", 1000);
}
} else {
this.ZH = false;
this.ZG.setLabel(this.T.get("Scan"));
}
},
FP : function (value, max, maxwidth) {
if (this.ZU != null && this.ZX != null) {
this.ZU.setWidth(parseInt(value / max *
maxwidth, 10));
this.ZX.setValue(value + "/" + max);
}
},
FJ : function () {
try {
this.ZM = {};
this.ZE = [];
var selectedBase = this.ZC.getSelection()
[0].getModel();
Addons.LocalStorage.setserver("Basescanner_LastCityID",
selectedBase.get_Id());
var ZQ = this.ZQ.getSelection()
[0].getModel();
Addons.LocalStorage.setserver("Basescanner_Cplimiter", ZQ);
Addons.LocalStorage.setserver("Basescanner_minLevel", this.ZY.getValue());
var c1 = this.ZK[0].getValue();
var c2 = this.ZK[1].getValue();
var c3 = this.ZK[2].getValue();
var c4 = this.ZK[3].getValue();
var c5 = parseInt(this.ZY.getValue(),
10);
//console.log("Select", c1, c2,
c3,c4,c5);
Addons.LocalStorage.setserver("Basescanner_Show0", c1);
Addons.LocalStorage.setserver("Basescanner_Show1", c2);
Addons.LocalStorage.setserver("Basescanner_Show2", c3);
Addons.LocalStorage.setserver("Basescanner_Show3", c4);
var posX = selectedBase.get_PosX();
var posY = selectedBase.get_PosY();
var scanX = 0;
var scanY = 0;
var world =
ClientLib.Data.MainData.GetInstance().get_World();
console.info("Scanning from: " +
selectedBase.get_Name());
// world.CheckAttackBase (System.Int32
targetX ,System.Int32 targetY) -> ClientLib.Data.EAttackBaseResult
// world.CheckAttackBaseRegion
(System.Int32 targetX ,System.Int32 targetY) -> ClientLib.Data.EAttackBaseResult
var t1 = true;
var t2 = true;
var t3 = true;
var maxAttackDistance =
ClientLib.Data.MainData.GetInstance().get_Server().get_MaxAttackDistance();
for (scanY = posY -
Math.floor(maxAttackDistance + 1); scanY <= posY + Math.floor(maxAttackDistance +
1); scanY++) {
for (scanX = posX -
Math.floor(maxAttackDistance + 1); scanX <= posX + Math.floor(maxAttackDistance +
1); scanX++) {
var distX = Math.abs(posX -
scanX);
var distY = Math.abs(posY -
scanY);
var distance =
Math.sqrt((distX * distX) + (distY * distY));
if (distance <=
maxAttackDistance) {
var object =
world.GetObjectFromPosition(scanX, scanY);
var loot = {};
if (object) {
//console.log(obje
ct);
if (object.Type ==
1 && t1) {
//console.lo
g("object typ 1");
//objfnkstrO
N(object);
//t1 = !t1;
}
if (object.Type ==
2 && t2) {
//console.lo
g("object typ 2");
//objfnkstrO
N(object);
//t2 = !t2;
}
if (object.Type ==
3 && t3) {
//console.lo
g("object typ 3");
//objfnkstrO
N(object);
//t3 = !t3;
}
if (object.Type ==
3) {
if (c5 <=
parseInt(object.getLevel(), 10)) {
//cons
ole.log(object);
}
}
//if(object.Condit
ionBuildings>0){
var needcp =
selectedBase.CalculateAttackCommandPointCostToCoord(scanX, scanY);
if (needcp <= ZQ
&& typeof object.getLevel == 'function') {
if (c5 <=
parseInt(object.getLevel(), 10)) {
//
0:ID , 1:Scanned, 2:Name, 3:Location, 4:Level, 5:Tib, 6:Kristal, 7:Credits,
8:Forschung, 9:Kristalfelder, 10:Tiberiumfelder,
//
11:ConditionBuildings,12:ConditionDefense,13: CP pro Angriff , 14: defhp/offhp ,
15:sum tib,krist,credits, 16: sum/cp
var d
= this.FL(object.getID(), 0);
var e
= this.FL(object.getID(), 1);
if
(e != null) {
this.ZM[object.getID()] = e;
}
if
(object.Type == 1 && c1) { //User
if (d != null) {
this.ZE.push(d);
} else {
}
}
if
(object.Type == 2 && c2) { //basen
if (d != null) {
this.ZE.push(d);
} else {
}
}
if
(object.Type == 3 && (c3 || c4)) { //Lager Vposten
if (d != null) {
this.ZE.push(d);
this.ZE.push(d);
} else {
}
}
}
}
//}
}
}
}
}
this.ZH = true;
this.ZL.setData(this.ZE);
this.FP(0, this.ZE.length, 200);
this.ZL.sortByColumn(4, false); //Sort
form Highlevel to Lowlevel
if (this.YY.name != "DR01D")
window.setTimeout("window.Addons.BaseScannerGUI.getInstance().FG()", 50);
} catch (ex) {
console.debug("Maelstrom_Basescanner FJ
error: ", ex);
}
},
FG : function () {
try {
var retry = false;
var loops = 0;
var maxLoops = 10;
var i = 0;
var sleeptime = 150;
while (!retry) {
var ncity = null;
var selectedid = 0;
var id = 0;
if (this.ZE == null) {
console.warn("data null: ");
this.ZH = false;
break;
}
for (i = 0; i < this.ZE.length; i+
+) {
// 1= "LoadState"
if (this.ZE[i][1] == -1) {
break;
}
}
if (i == this.ZE.length) {
this.ZH = false;
}
this.FP(i, this.ZE.length,
200); //Progressbar
if (this.ZE[i] == null) {
console.warn("data[i] null:
");
this.ZH = false;
this.ZG.setLabel(this.T.get("Scan"));
this.ZD.setEnabled(true);
break;
}
posData = this.ZE[i][3];
/* make sure coordinates are well-
formed enough */
if (posData != null &&
posData.split(':').length == 2) {
posX =
parseInt(posData.split(':')[0]);
posY =
parseInt(posData.split(':')[1]);
/* check if there is any base
*/
var playerbase =
ClientLib.Data.MainData.GetInstance().get_Cities().get_CurrentOwnCity();
var world =
ClientLib.Data.MainData.GetInstance().get_World();
var foundbase =
world.CheckFoundBase(posX, posY, playerbase.get_PlayerId(),
playerbase.get_AllianceId());
//console.log("foundbase",fou
ndbase);
this.ZE[i][19] = (foundbase
== 0) ? true : false;
//var obj =
ClientLib.Vis.VisMain.GetInstance().get_SelectedObject();
//console.log("obj", obj);
id = this.ZE[i][0];
ClientLib.Data.MainData.GetInstance().get_Cities().set_CurrentCityId(id);
ncity =
ClientLib.Data.MainData.GetInstance().get_Cities().GetCity(id);
//console.log("ncity",
ncity);
if (ncity != null) {
if (!
ncity.get_IsGhostMode()) {
//if(ncity.get_Nam
e() != null)
//console.log("nci
ty.get_Name ", ncity.get_Name() , ncity.get_CityBuildingsData().get_Buildings());
//var
cityBuildings = ncity.get_CityBuildingsData();
var cityUnits =
ncity.get_CityUnitsData();
if (cityUnits !=
null) { // cityUnits !=null knnen null sein
//console.lo
g("ncity.cityUnits", cityUnits );
var
selectedBase = this.ZC.getSelection()[0].getModel();
var
buildings = ncity.get_Buildings().d;
var
defenseUnits = cityUnits.get_DefenseUnits().d;
var
offensivUnits = selectedBase.get_CityUnitsData().get_OffenseUnits().d;
//console.lo
g(buildings,defenseUnits,offensivUnits);
if
(buildings != null) //defenseUnits !=null knnen null sein
{
var
buildingLoot = getResourcesPart(buildings);
var
unitLoot = getResourcesPart(defenseUnits);
//cons
ole.log("buildingLoot", buildingLoot);
//cons
ole.log("unitLoot", unitLoot);
this.ZE[i][2] = ncity.get_Name();
this.ZE[i][5] = buildingLoot[ClientLib.Base.EResourceType.Tiberium] +
unitLoot[ClientLib.Base.EResourceType.Tiberium];
this.ZE[i][6] = buildingLoot[ClientLib.Base.EResourceType.Crystal] +
unitLoot[ClientLib.Base.EResourceType.Crystal];
this.ZE[i][7] = buildingLoot[ClientLib.Base.EResourceType.Gold] +
unitLoot[ClientLib.Base.EResourceType.Gold];
this.ZE[i][8] = buildingLoot[ClientLib.Base.EResourceType.ResearchPoints] +
unitLoot[ClientLib.Base.EResourceType.ResearchPoints];
//cons
ole.log(posX,posY,"GetBuildingsConditionInPercent",
ncity.GetBuildingsConditionInPercent() );
if
(ncity.GetBuildingsConditionInPercent() != 0) {
this.ZA = 0;
if (this.ZE[i][5] != 0) {
var c = 0;
var t = 0;
var m = 0;
var k = 0;
var l = 0;
//console.log( ncity.GetResourceType(k,l) );
case 1:
/* Crystal */
this.ZM[id][k][l] = 1;
c++;
break;
case 2:
/* Tiberium */
this.ZM[id][k][l] = 2;
t++;
break;
default:
//none
break;
//console.log( c,t );
this.ZE[i][9] = c;
this.ZE[i][10] = t;
this.ZE[i][11] = ncity.GetBuildingsConditionInPercent();
this.ZE[i][12] = ncity.GetDefenseConditionInPercent();
try {
var u = offensivUnits;
//console.log("OffenseUnits",u);
var offhp = 0;
var defhp = 0;
for (var g in u) {
offhp += u[g].get_Health();
u = defenseUnits;
//console.log("DefUnits",u);
for (var g in u) {
defhp += u[g].get_Health();
u = buildings;
//console.log("DefUnits",u);
for (var g in u) {
//var id=0;
//console.log("MdbUnitId",u[g].get_MdbUnitId());
//DF
this.ZE[i][18] = 8 - u[g].get_CoordY();
//CY
this.ZE[i][17] = 8 - u[g].get_CoordY();
//console.log("HPs",offhp,defhp, (defhp/offhp) );
} catch (x) {
console.debug("HPRecord", x);
//console.log(this.ZM[id]);
this.ZE[i][14] = this.maaain(id);
this.ZE[i][1] = 0;
retry = true;
console.info(ncity.get_Name(), " finish");
this.ZA = 0;
this.countlastidchecked = 0;
//console.log(this.ZE[i],this.ZM[id],id);
//update table
this.ZL.setData(this.ZE);
}
} else
{
this.ZA = 0;
this.countlastidchecked = 0;
break;
this.ZA++;
}
}
}
} else {
window.setTimeout("window.Addons.BaseScannerGUI.getInstance().FG()",
sleeptime);
} else {
this.ZG.setLabel(this.T.get("Scan"));
this.ZH = false;
}
} catch (e) {
console.debug("MaelstromTools_Basescanner
getResources", e);
}
},
FK : function (dataa, datab, id) {
this.ZZ.push(dataa);
this.ZS[id] = datab;
},
FL : function (id, t) {
if (t == 0) {
for (var i = 0; i < this.ZZ.length; i++)
{
if (this.ZZ[i][0] == id) {
return this.ZZ[i];
}
}
} else {
if (this.ZS[id]) {
return this.ZS[id];
}
}
return null;
},
var map=[[".",".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".",".","."], [".",".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".",".","."], [".",".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".",".","."], [".",".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".",".","."]];
for (jj2=0;jj2<8;jj2++){ for (kk2=0;kk2<9;kk2++) {
if (this.ZM[ied][kk2][jj2]===2){map[jj2][kk2]="t";}
if (this.ZM[ied][kk2][jj2]===1){map[jj2][kk2]="c";}
}}
var tmp=this.fillin_v2(map,parms);
var bld=tmp[0];
var lvl=tmp[1];
//progressbar(0);
var map0_=new Array();
var lvl0_=new Array();
var grrt0_=new Array();
var wgh_=new Array();
var stats0_=new Array();
var opts0_=new Array();
var bss__0=new Array();
var off__0=new Array();
var bll__0=new Array();
var ttm__0=new Array();
var hrv__0=new Array();
for (var iql=0;iql<optns.length;iql++) //MAIN LOOP
{ //// main loop
var optt=optns[iql][0]; //how many touches in silos to tolerate (3, 3.5, 4)
var acnum=optns[iql][1]; //number of accumulators to place
var opta=optns[iql][2]; //weight on slots when placing accumulators: 0 for
max power, 0.8 to account for slots used
var parms=[optt, opta, opty, optd, recovery,acnum,addref,alliancerank];
var tmp=this.fillin_v2(map,parms);
var bld=tmp[0];
var lvl=tmp[1];
//do not repeat if already done the simulation
mmin=10;
if (iqll>0)
{ for (var wex=0;wex<iqll;wex++)
{ var ccnntt=0;
for (jj2=0;jj2<8;jj2++){ for (kk2=0;kk2<9;kk2++) {
if (bld[jj2][kk2]!==map0_[wex]) {ccnntt++;}
}}
if (ccnntt===0) { mmin=0; }
}
}
if (mmin>0)
{
var wgh=[1,1,1,refwgh];
var grrt_=new Array(); var map__=new Array(); var lvl__ =new Array();
var stats_=new Array();
var bss___=new Array(); var off___ =new Array(); var bll___=new
Array(); var ttm___=new Array(); var hrv___=new Array();
for (var pwl=0;pwl<grid.length;pwl++)
{ wgh[1]=grid[pwl];
for (jj2=0;jj2<8;jj2++){ for (kk2=0;kk2<9;kk2++) {
if (bld[jj2][kk2]==="." || bld[jj2][kk2]==="t" || bld[jj2]
[kk2]==="c") {lvl[jj2][kk2]=0;}
else {lvl[jj2][kk2]=12;}
}}
var tmp=this.operate_v2(bld,lvl,map,wgh,globaa,parms);
//[bld, lvl, [bss00, bll00, off00], grrt, grrt0, str, T, ttm,
ttime,bss_,off_,bll_,ttm,harvlvl]
grrt_[pwl]=[tmp[3]*100,tmp[8]/24];
map__[pwl]=tmp[0];
lvl__[pwl]=tmp[1];
stats_[pwl]=tmp[2];
bss___[pwl]=tmp[9];
off___[pwl]=tmp[10];
bll___[pwl]=tmp[11];
ttm___[pwl]=tmp[12];
hrv___[pwl]=tmp[13];
//progressbar((pwl+(iql-1)*(grdln+grdcln))/(1+
(grdln+grdcln)*size(optns,1)));
}
var g0r=0; var m=0;
for (var ox=0;ox<grrt_.length;ox++)
{ if (grrt_[ox][0]>g0r) {g0r=grrt_[ox][0];var m=ox;}}
wgh[1]=grid[m];
var grrt_=new Array(); var map__=new Array(); var lvl__ =new Array();
var stats_=new Array();
var bss___=new Array(); var off___ =new Array(); var bll___=new
Array(); var ttm___=new Array(); var hrv___=new Array();
for (var pwl=0;pwl<gridc.length;pwl++)
{ wgh[2]=gridc[pwl];
for (jj2=0;jj2<8;jj2++){ for (kk2=0;kk2<9;kk2++) {
if (bld[jj2][kk2]==="." || bld[jj2][kk2]==="t" || bld[jj2]
[kk2]==="c") {lvl[jj2][kk2]=0;}
else {lvl[jj2][kk2]=12;}
}}
var tmp=this.operate_v2(bld,lvl,map,wgh,globaa,parms);
//[bld, lvl, [bss00, bll00, off00], grrt, grrt0, str, T, ttm,
ttime]
grrt_[pwl]=[tmp[3]*100,tmp[8]/24];
map__[pwl]=tmp[0];
lvl__[pwl]=tmp[1];
stats_[pwl]=tmp[2];
bss___[pwl]=tmp[9];
off___[pwl]=tmp[10];
bll___[pwl]=tmp[11];
ttm___[pwl]=tmp[12];
hrv___[pwl]=tmp[13];
// progressbar((pwl+grdln+(iql-1)*(grdln+grdcln))/(1+
(grdln+grdcln)*size(optns,1)));
}
var g0r=0; var m=0;
for (var ox=0;ox<grrt_.length;ox++)
{ if (grrt_[ox][0]>g0r) {g0r=grrt_[ox][0];var m=ox;}}
wgh[2]=gridc[m];
map0_[iqll]=map__[m];
lvl0_[iqll]=lvl__[m];
grrt0_[iqll]=grrt_[m];
wgh_[iqll]=wgh;
stats0_[iqll]=stats_[m];
bss__0[iqll]=bss___[m];
off__0[iqll]=off___[m];
bll__0[iqll]=bll___[m];
ttm__0[iqll]=ttm___[m];
hrv__0[iqll]=hrv___[m];
opts0_[iqll]=optns[iql];
iqll=iqll+1;
}
}
var g0r=0; var m=0;
for (var ox=0;ox<grrt0_.length;ox++)
{ if (grrt0_[ox][0]>g0r) {g0r=grrt0_[ox][0]; var m=ox;}}
var optns0=opts0_[m];
var wgh0=wgh_[m];
var bss__f=bss__0[m];
var off__f=off__0[m];
var bll__f=bll__0[m];
var ttm__f=ttm__0[m];
var hrv__f=hrv__0[m];
return grrt0_[m][0].toFixed(2);
},
if (bld[upg[0]][upg[1]]!=="q")
{ var tm=[(tibc[upg[0]][upg[1]]-resrcs[0])/ttibr,(powc[upg[0]][upg[1]]-
resrcs[1])/tpowr,0];
if (tm[0]>tm[1] && tm[0]>0) {var tm0=tm[0];}
else if (tm[1]>tm[0] && tm[1]>0) {var tm0=tm[1];}
else {var tm0=0;}
ttime=ttime+tm0; //accumulate resources and pay cost of upgrade
resrcs[0]=resrcs[0]+tm0*ttibr-tibc[upg[0]][upg[1]];
resrcs[1]=resrcs[1]+tm0*tpowr-powc[upg[0]][upg[1]];
resrcs[2]=resrcs[2]+tm0*tcryr;
resrcs[3]=resrcs[3]+tm0*tcrer;
lvl[upg[0]][upg[1]]=lvl[upg[0]][upg[1]]+1; //upgrade
}
else //spend crystal and power on defense
{ var tm=[(tibc[upg[0]][upg[1]]-resrcs[2])/tcryr,(powc[upg[0]][upg[1]]-
resrcs[1])/tpowr,0];
if (tm[0]>tm[1] && tm[0]>0) {var tm0=tm[0];}
else if (tm[1]>tm[0] && tm[1]>0) {var tm0=tm[1];}
else {var tm0=0;}
ttime=ttime+tm0; //accumulate resources and pay cost of upgrade
resrcs[0]=resrcs[0]+tm0*ttibr;
resrcs[1]=resrcs[1]+tm0*tpowr-powc[upg[0]][upg[1]];
resrcs[2]=resrcs[2]+tm0*tcryr-tibc[upg[0]][upg[1]];
resrcs[3]=resrcs[3]+tm0*tcrer;
lvl[upg[0]][upg[1]]=lvl[upg[0]][upg[1]]+1; //upgrade
}
lvl_[tt]=lvl;
var tmp = this.payoff(bld,lvl,map,wgh,mvr,balvl,globaa,parms); //all roi //
[roi,tibr,powr,cryr,crer,tibc,powc,tibw,poww,cryw,tibrb,powrb,cryrb,crerb]
var roi=tmp[0];var tibr=tmp[1];var powr=tmp[2];var cryr=tmp[3];var
crer=tmp[4];var tibc=tmp[5];var powc=tmp[6];var tibw=tmp[7];var poww=tmp[8];var
cryw=tmp[9];var tibrb=tmp[10];var powrb=tmp[11];var cryrb=tmp[12];var
crerb=tmp[13];
var roip=[[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0,
0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ]];
var roit=[[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0,
0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ]];
for (jj2=0;jj2<8;jj2++){ for (kk2=0;kk2<9;kk2++) {
if (bld[jj2][kk2]==="h" || bld[jj2][kk2]==="s")
{ roip[jj2][kk2]=NaN; } else { roip[jj2][kk2]=roi[jj2][kk2]; }
if (bld[jj2][kk2]==="a" || bld[jj2][kk2]==="p")
{ roit[jj2][kk2]=NaN; } else { roit[jj2][kk2]=roi[jj2][kk2]; }
}}
var twort=[this.summ(tibw),this.summ(poww),this.summ(cryw)];
tt=tt+1;
twortt[tt]=[twort[0]+resrcs[0],twort[1]+resrcs[1],twort[2]+resrcs[2],0+resrcs[3]];
ttwortt[tt]=twortt[tt][0]+twortt[tt][1]+twortt[tt][2]+twortt[tt][3];
var smm=0; var ct=0;
for (jj2=0;jj2<bld.length;jj2++){ for (kk2=0;kk2<bld[jj2].length;kk2++) {
if (bld[jj2][kk2]==="h" || bld[jj2][kk2]==="n") { smm=smm+lvl[jj2][kk2];
ct++;}
}}
harvlvl[tt]=smm/ct;
var smm=0; var ct=0;
for (jj2=0;jj2<bld.length;jj2++){ for (kk2=0;kk2<bld[jj2].length;kk2++) {
if (bld[jj2][kk2]!=="." && bld[jj2][kk2]!=="t" && bld[jj2][kk2]!=="c")
{ smm=smm+lvl[jj2][kk2]; ct++;}
}}
baselvl[tt]=smm/ct;
//bnchmrk;
var offgrd=new Array(); var offval=new Array();
for (var jj=0;jj<60;jj++){ offgrd[jj]=ofns_s[jj][0]; offval[jj]=jj+1;}
var balvl=this.interp1(offgrd,offval,(twort[0]+resrcs[0]));
var bses0=this.interp1(this.transpose(mcv2)[1],this.transpose(mcv2)[0],balvl);
var offlvl=this.interp1(offgrd,offval,(resrcs[2]*(bses0-1)));
var bses=this.interp1(this.transpose(mcv)[2],this.transpose(mcv)
[0],resrcs[3]*(bses0-1));
var mvr=this.interp1(this.transpose(movrec)[0],this.transpose(movrec)
[1],balvl);
if (mvr>24) {mvr=24;}
var recovery=parms[4];
mvr=mvr*recovery;
//
var allbonus=Math.exp(7+0.2121*(balvl+1-alliancerank));
var ttibr=this.summ(tibr)-mvr/24*this.summ(tibrb)+allbonus; var
tpowr=this.summ(powr)-mvr/24*this.summ(powrb)+allbonus; var tcryr=this.summ(cryr)-
mvr/24*this.summ(cryrb)+allbonus; var tcrer=this.summ(crer)-
mvr/24*this.summ(crerb);
var tret=[ttibr,tpowr,tcryr,tcrer];
bss_[tt]=bses; off_[tt]=offlvl; bll_[tt]=balvl;
resid[tt]=[resrcs[0]/tret[0],resrcs[1]/tret[1],resrcs[2]/tret[2],resrcs[3]/tret[3]]
;
ttm[tt]=ttime;
if (balvl>19 && str===1) //start at 100M tib
{ str=tt; }
if (ttime>(180*240) && nwo===0)
{ nwo=1; var off00=offlvl; var bll00=balvl; var bss00=bses; }
}
if (nwo===0) { var off00=offlvl; var bll00=balvl; var bss00=bses; }
var T=tt;
var grrt=Math.log(ttwortt[T]/ttwortt[str])/((ttm[T]-ttm[str])/24);
var grrt0=Math.log(twortt[T][0]/twortt[str][0])/((ttm[T]-ttm[str])/24);
//console.log(allbonus);
return [bld, lvl, [bss00, bll00, off00], grrt, grrt0, str, T, ttm,
ttime,bss_,off_,bll_,ttm,harvlvl];
},
//INITIALIZATION PART
initializ: function (){
var silo=[[2, 0, 0, 72, 0,0],[3, 1, 0, 90, 0,0],[4, 1, 0, 125, 0,0],[20, 5, 0, 170,
0,0],[110, 28, 0, 220, 0,0],[360, 90, 0, 275, 0,0],[1100, 275, 0, 335, 0,0],[3200,
800, 0, 400, 0,0],[8800, 2200, 0, 460, 0,0],[22400, 5600, 0, 530, 0,0],[48000,
12000, 0, 610, 0,0],[63360, 15840, 0, 710, 0,0],[83630, 20900, 0, 888, 0,0],
[110390, 27600, 0, 1100, 0,0],[145720, 36430, 0, 1380, 0,0],[192350, 48090, 0,
1730, 0,0],[253910, 63470, 0, 2160, 0,0],[335160, 83790, 0, 2700, 0,0],[442410,
110600, 0, 3380, 0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0]];
for (var j=19;j<60;j++){ silo[j][0]=silo[j-1][0]*1.32; silo[j][1]=silo[j]
[0]/4; silo[j][2]=silo[j-1][2]*1.25; silo[j][3]=silo[j-1][3]*1.25; silo[j]
[4]=silo[j-1][4]*1.25;}
var harv = new Array();
for (var j = 0; j < silo.length; j++){ harv[j] = [0,0,0,0,0,0]; for (var k =
0; k < silo[j].length; k++) { harv[j][k] = silo[j][k]+0.0; } }
var tmp1=[3, 4, 6, 15, 110, 360, 1100, 3200, 8800, 22400]; var tmp2=[0, 1, 3, 12,
72, 234, 715, 2080, 5720, 14560 ]; var tmp3=[240, 300, 432, 570, 735, 920, 1120,
1330, 1560, 1800, 2050, 2360, 2950, 3680, 4600, 5760];
for (var j=1;j<60;j++) { harv[j][1]=harv[j][0]*3/4; harv[j][2]=10*harv[j]
[3]/3; harv[j][4]=harv[j][3]; harv[j][3]=0; if (j<10) { harv[j]
[0]=tmp1[j]; harv[j][1]=tmp2[j]; } if (j<16) { harv[j]
[2]=tmp3[j]; }}
var plnt=[[3, 0, 120, 60, 72,0],[5, 0, 150, 75, 90,0],[10, 1, 198, 100, 120,0],[46,
5, 270, 135, 160,0],[286, 28, 360, 180, 215,0],[936, 90, 460, 230, 275,0],[2860,
275, 560, 280, 335,0],[8320, 800, 660, 330, 400,0],[22880, 2200, 780, 380, 460,0],
[58240, 5600, 900, 440, 530,0],[124800, 12000, 1020, 500, 610,0],[164730, 15840,
1160, 580, 700,0],[217450, 20900, 1450, 725, 875,0],[287030, 27600, 1820, 906,
1090,0],[378880, 36430, 2270, 1130, 1360,0],[500130, 48090, 2840, 1410, 1700,0],
[660170, 63470, 3560, 1770, 2130,0],[871420, 83790, 4450, 2210, 2670,0],[1150000,
110600, 5560, 2760, 3330,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0]];
for (var j=19;j<60;j++){ plnt[j][0]=plnt[j-1][0]*1.32; plnt[j][1]=plnt[j-1]
[1]*1.32; plnt[j][2]=plnt[j-1][2]*1.25; plnt[j][3]=plnt[j-1][3]*1.25;
plnt[j][4]=plnt[j-1][4]*1.25;}
var tmp4=[48, 60, 75, 100, 125, 160, 195, 230, 270, 315, 370, 430, 538, 672, 840,
1050, 1310, 1640, 2050];
for (var j=1;j<60;j++){ if (j<19) { plnt[j][5]=tmp4[j]; } else
{ plnt[j][5]=plnt[j-1][5]*1.25; }}
var accu=[[2, 0, 0, 48, 0,0],[3, 1, 0, 60, 0,0],[4, 1, 0, 80, 0,0],[20, 5, 0, 110,
0,0],[110, 28, 0, 145, 0,0],[360, 90, 0, 185, 0,0],[1100, 275, 0, 225, 0,0],[3200,
800, 0, 265, 0,0],[8800, 2200, 0, 310, 0,0],[22400, 5600, 0, 355, 0,0],[48000,
12000, 0, 405, 0,0],[63360, 15840, 0, 465, 0,0],[83630, 20900, 0, 581, 0,0],
[110390, 27600, 0, 727, 0,0],[145720, 36430, 0, 908, 0,0],[192350, 48090, 0, 1130,
0,0],[253910, 63470, 0, 1410, 0,0],[335160, 83790, 0, 1770, 0,0],[442410, 110600,
0, 2210, 0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0]];
for (var j=19;j<60;j++){ accu[j][0]=accu[j-1][0]*1.32; accu[j][1]=accu[j-1]
[1]*1.32; accu[j][2]=accu[j-1][2]*1.25; accu[j][3]=accu[j-1][3]*1.25;
accu[j][4]=accu[j-1][4]*1.25;}
var rfnr=[[3, 0, 120, 60, 72,0],[4, 1, 150, 75, 90,0],[8, 2, 180, 90, 110,0],[35,
9, 240, 120, 145,0],[220, 55, 315, 160, 190,0],[720, 180, 400, 200, 240,0],[2200,
550, 485, 240, 290,0],[6400, 1600, 575, 290, 345,0],[17600, 4400, 680, 340, 410,0],
[44800, 11200, 790, 400, 475,0],[96000, 24000, 925, 460, 555,0],[126720, 31680,
1080, 540, 650,0],[167270, 41810, 1350, 675, 813,0],[220790, 55190, 1680, 844,
1010,0],[291450, 72860, 2100, 1050, 1270,0],[384710, 96170, 2630, 1310, 1580,0],
[507820, 126950, 3290, 1640, 1980,0],[670330, 167580, 4110, 2060, 2480,0],[884830,
221200, 5140, 2570, 3090,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],
[0,0,0,0,0,0]];
var fct=[1.31999808021389, 1.31999502749370, 1.25005273120801, 1.25005273120801,
1.25008568540486];
for (var j=19;j<60;j++){ rfnr[j][0]=rfnr[j-1][0]*fct[0]; rfnr[j][1]=rfnr[j-1]
[1]*fct[1]; rfnr[j][2]=rfnr[j-1][2]*fct[2]; rfnr[j][3]=rfnr[j-1][3]*fct[3];
rfnr[j][4]=rfnr[j-1][4]*fct[4];}
var harv_s=[[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0]];
var silo_s=[[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0]];
var accu_s=[[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0]];
var plnt_s=[[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0]];
var rfnr_s=[[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0]];
for (var j=1;j<60;j++){ harv_s[j][0]=harv_s[j-1][0]+harv[j-1][0]; harv_s[j]
[1]=harv_s[j-1][1]+harv[j-1][1]; silo_s[j][0]=silo_s[j-1][0]+silo[j-1][0];
silo_s[j][1]=silo_s[j-1][1]+silo[j-1][1]; accu_s[j][0]=accu_s[j-1][0]+accu[j-1]
[0]; accu_s[j][1]=accu_s[j-1][1]+accu[j-1][1]; plnt_s[j][0]=plnt_s[j-1]
[0]+plnt[j-1][0]; plnt_s[j][1]=plnt_s[j-1][1]+plnt[j-1][1]; rfnr_s[j]
[0]=rfnr_s[j-1][0]+rfnr[j-1][0]; rfnr_s[j][1]=rfnr_s[j-1][1]+rfnr[j-1][1];}
var defoff_s=[[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0]];
defoff=[[10, 0],[15, 0],[30, 3],[60, 15],[440, 110],[1440, 360],[4400, 1100],
[12800, 3200],[35200, 8800],[89600, 22400],[192000, 48000],[253440, 63360],[334540,
83630],[441590, 110390],[582900, 145720],[769430, 192350],[1010000, 253910],
[1340000, 335160],[1760000, 442410],
[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0,
0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0],
[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0,
0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]];
for (var j=19;j<60;j++){ defoff[j][1]=defoff[j-1][1]*1.32; defoff[j]
[0]=defoff[j][1]*4;}
var ofns=[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],
[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],
[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],
[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],
[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]];
var dfns=[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],
[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],
[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],
[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],
[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]];
ofns[35][0]=4028442000; for (var js=36;js<60;js++){ ofns[js][0]=ofns[js-1]
[0]*1.32; }
for (var js=34;js>=0;js--){ if (js<11) { ofns[js][0]=ofns[js+1][0]/3.3; }
else { ofns[js][0]=ofns[js+1][0]/1.32; }}
var ofns_s=[[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0]];
var dfns_s=[[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],
[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0],[1,0]];
for (var js=0;js<60;js++){ ofns[js][1]=ofns[js][0]/4; dfns[js][0]=ofns[js]
[0]/2; dfns[js][1]=ofns[js][1]/2; if(js>0) { dfns_s[js][0]=dfns_s[js-1]
[0]+dfns[js-1][0]; dfns_s[js][1]=dfns_s[js-1][1]+dfns[js-1][1];
ofns_s[js][0]=ofns_s[js-1][0]+ofns[js-1][0]; ofns_s[js][1]=ofns_s[js-1]
[1]+ofns[js-1][1]; defoff_s[js][0]=defoff_s[js-1][0]+defoff[js-1][0];
defoff_s[js][1]=defoff_s[js-1][1]+defoff[js-1][1]; }}
//END INITIALIZATION PART
return [silo, harv, plnt, accu, silo_s, harv_s, plnt_s, accu_s, defoff, defoff_s,
rfnr, rfnr_s, dfns, dfns_s, ofns, ofns_s];
},
if (cntn===1)
{ if (sltlft>1)
{ map2[loc[0]][loc[1]]="p";
sltlft=sltlft-1;
}
var tmp=this.countadj(rfnrtc,loc,3);
var ind3=tmp[2];
var srnd3=tmp[3];
for (ii=0;ii<ind3.length;ii++)//ii=1:size(llc,1))
{ if (sltlft>0)
{ map2[srnd3[ind3[ii]][0]][srnd3[ind3[ii]][1]]="r";
sltlft=sltlft-1;
}
}
var tmp=this.countadj(rfnrtc,loc,2);
var ind=tmp[2];
var srnd=tmp[3];
for (ii=0;ii<ind.length;ii++)//ii=1:size(llc,1))
{ if (sltlft>0)
{ map2[srnd[ind[ii]][0]][srnd[ind[ii]][1]]="r";
sltlft=sltlft-1;
}
}
}
}
//1touches that already have pps
var rfnrtc=[[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0,
0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ]];
for (var jj=0;jj<8;jj++)
{ for (var kk=0;kk<9;kk++)
{ if (map2[jj][kk]===".")
{ var tmp=this.countadj(map,[jj,kk],"t");
rfnrtc[jj][kk]=tmp[0]+1;
}
else
{ rfnrtc[jj][kk]=0;
}
var tmp=this.countadj(map2,[jj,kk],"p");
if ((tmp[0]+1)>0 && rfnrtc[jj][kk]>0)
{ rfnrtc[jj][kk]=rfnrtc[jj][kk]+0.5;
}
}
}
var b=[[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0,
0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ]];
for (jj2=0;jj2<8;jj2++){ for (kk2=0;kk2<9;kk2++) { b[jj2]
[kk2]=rfnrtc[jj2][kk2];}}
var marfn=this.maxx(b);
while (marfn===1.5 && sltlft>0)
{ for (var jj=0;jj<8;jj++)
{ for (var kk=0;kk<9;kk++)
{ if (rfnrtc[jj][kk]===marfn && sltlft>0)
{ rfnrtc[jj][kk]=0;
sltlft=sltlft-1;
map2[jj][kk]="r";
}
}
}
var b=[[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0,
0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ]];
for (jj2=0;jj2<8;jj2++){ for (kk2=0;kk2<9;kk2++) { b[jj2]
[kk2]=rfnrtc[jj2][kk2];}}
var marfn=this.maxx(b);
}
//0touches with max pp
var rfnrtc=[[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0,
0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ]];
for (var jj=0;jj<8;jj++)
{ for (var kk=0;kk<9;kk++)
{ if (map2[jj][kk]===".")
{ var tmp=this.countadj(map2,[jj,kk],"p");
rfnrtc[jj][kk]=tmp[0]+1;
}
else { rfnrtc[jj][kk]=0; }
}
}
var b=[[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0,
0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ]];
for (jj2=0;jj2<8;jj2++){ for (kk2=0;kk2<9;kk2++) { b[jj2]
[kk2]=rfnrtc[jj2][kk2];}}
var marfn=this.maxx(b);
while (marfn>0 && sltlft>0)
{ for (var jj=0;jj<8;jj++)
{ for (var kk=0;kk<9;kk++)
{ if (rfnrtc[jj][kk]===marfn && sltlft>0)
{ rfnrtc[jj][kk]=0;
sltlft=sltlft-1;
map2[jj][kk]="r";
}
}
}
var b=[[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0,
0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ]];
for (jj2=0;jj2<8;jj2++){ for (kk2=0;kk2<9;kk2++) { b[jj2]
[kk2]=rfnrtc[jj2][kk2];}}
var marfn=this.maxx(b);
}
}
//remove holders for crys and tib (do not do this!)
var lvl2=[[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0,
0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ]];
var bld2=[[".",".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".",".","."], [".",".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".",".","."], [".",".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".",".","."], [".",".",".",".",".",".",".",".","."],
[".",".",".",".",".",".",".",".","."]];
var cccnt=0;
for (jj2=0;jj2<8;jj2++){ for (kk2=0;kk2<9;kk2++) {
bld2[jj2][kk2]=map2[jj2][kk2];
if (bld2[jj2][kk2]==="." && cccnt===0)
{bld2[jj2][kk2]="y"; cccnt++;}
else if (bld2[jj2][kk2]==="." && cccnt===1)
{bld2[jj2][kk2]="q"; cccnt++;}
else if (bld2[jj2][kk2]==="." && cccnt===2)
{bld2[jj2][kk2]="w"; cccnt++;}
else if (bld2[jj2][kk2]==="." && cccnt===3)
{bld2[jj2][kk2]="z"; cccnt++;}
if (bld2[jj2][kk2]==="." || bld2[jj2][kk2]==="t" || bld2[jj2][kk2]==="c")
{lvl2[jj2][kk2]=0;}
else
{lvl2[jj2][kk2]=12;}
}}
return [bld2,lvl2];
}
}
});
qx.Class.define("Addons.BaseScannerLayout", {
type : "singleton",
extend : qx.ui.window.Window,
construct : function () {
try {
this.base(arguments);
console.info("Addons.BaseScannerLayout " +
window.__msbs_version);
this.setWidth(820);
this.setHeight(400);
this.setContentPadding(10);
this.setShowMinimize(false);
this.setShowMaximize(true);
this.setShowClose(true);
this.setResizable(true);
this.setAllowMaximize(true);
this.setAllowMinimize(false);
this.setAllowClose(true);
this.setShowStatusbar(false);
this.setDecorator(null);
this.setPadding(10);
this.setLayout(new qx.ui.layout.Grow());
this.ZW = [];
this.removeAll();
this.ZZ = new qx.ui.container.Scroll();
this.ZY = new qx.ui.container.Composite(new
qx.ui.layout.Flow());
this.add(this.ZZ, {
flex : 3
});
this.ZZ.add(this.ZY);
//this.FO();
} catch (e) {
if (rowDataLine == null) {
continue;
}
//console.log("ST",selectedtype,rowDataLi
ne[10]);
if (selectedtype > 4 && selectedtype < 8)
{
if (selectedtype !=
rowDataLine[10]) {
continue;
}
} else {
continue;
}
posData = rowDataLine[3];
if (posData != null &&
posData.split(':').length == 2) {
posX = parseInt(posData.split(':')
[0]);
posY = parseInt(posData.split(':')
[1]);
}
var st = '<table border="2"
cellspacing="0" cellpadding="0">';
var link = rowDataLine[2] + " - " +
rowDataLine[3];
st = st + '<tr><td colspan="9"><font
color="#FFF">' + link + '</font></td></tr>';
for (y = 0; y < 8; y++) {
st = st + "<tr>";
for (x = 0; x < 9; x++) {
var img = "";
var res = ZM[id][x][y];
//console.log("Res ",res);
switch (res == undefined ?
0 : res) {
case 2:
//console.log("Tiberium
" , MT_Base.images[MaelstromTools.Statics.Tiberium] );
img = '<img width="14"
height="14" src="' + MT_Base.images[MaelstromTools.Statics.Tiberium] + '">';
break;
case 1:
//console.log("Crystal
");
img = '<img width="14"
height="14" src="' + MT_Base.images[MaelstromTools.Statics.Crystal] + '">';
break;
default:
img = '<img width="14"
height="14" src="' + MT_Base.images["Emptypixels"] + '">';
break;
}
st = st + "<td>" + img +
"</td>";
}
st = st + "</tr>";
}
st = st + "</table>";
//console.log("setWidgetLabels ", st);
var l = new qx.ui.basic.Label().set({
backgroundColor : "#303030",
value : st,
rich : true
});
l.cid = id;
this.ZX.push(id);
l.addListener("click", function (e) {
bk.getBackgroundArea().closeCityInfo();
bk.getPlayArea().setView(ClientLib.Data.PlayerAreaViewMode.pavmCombatSetupDefense,
this.cid, 0, 0);
var q =
ClientLib.Data.MainData.GetInstance().get_Cities().get_CurrentOwnCity();
if (q != null)
q.get_CityArmyFormationsManager().set_CurrentTargetBaseId(this.cid);
});
l.setReturnValue = id;
this.ZW.push(l);
}
this.ZY.removeAll();
var b = 0;
var c = 0;
//console.log("this.ZW.length",this.ZW.length);
for (a = 0; a < this.ZW.length; a++) {
this.ZY.add(this.ZW[a], {
row : b,
column : c
});
c++;
if (c > 4) {
c = 0;
b++;
}
}
}
}
});
qx.Class.define("Addons.LocalStorage", {
type : "static",
extend : qx.core.Object,
statics : {
isSupported : function () {
return typeof(localStorage) !== "undefined";
},
isdefined : function (key) {
return (localStorage[key] !== "undefined" &&
localStorage[key] != null);
},
isdefineddata : function (data, key) {
return (data[key] !== "undefined" &&
data[key] != null);
},
setglobal : function (key, value) {
try {
if (Addons.LocalStorage.isSupported()) {
localStorage[key] =
JSON.stringify(value);
}
} catch (e) {
if(this.debug){
console.log("Translate Added
", o.main.toString() );
}
delete o.main;
} else {
qx.Class.define("qx.ui.table.cellrenderer.Replace", {
extend : qx.ui.table.cellrenderer.Default,
properties : {
replaceMap : {
check : "Object",
nullable : true,
init : null
},
replaceFunction : {
check : "Function",
nullable : true,
init : null
}
},
members : {
// overridden
_getContentHtml : function (cellInfo) {
var value = cellInfo.value;
var replaceMap = this.getReplaceMap();
var replaceFunc = this.getReplaceFunction();
var label;
// use map
if (replaceMap) {
label = replaceMap[value];
if (typeof label != "undefined") {
cellInfo.value = label;
return
qx.bom.String.escape(this._formatValue(cellInfo));
}
}
// use function
if (replaceFunc) {
cellInfo.value = replaceFunc(value);
}
return
qx.bom.String.escape(this._formatValue(cellInfo));
},
addReversedReplaceMap : function () {
var map = this.getReplaceMap();
for (var key in map) {
var value = map[key];
map[value] = key;
}
return true;
}
}
});
console.info("Maelstrom_Basescanner initalisiert");
var T = Addons.Language.getInstance();
T.debug = false;
T.addtranslateobj( {main:"Point", de: "Position", pt: "Position",
fr: "Position"} );
T.addtranslateobj( {main:"BaseScanner Overview", de: "Basescanner
bersicht", pt: "Viso geral do scanner de base", fr: "Aperu du scanner de
base"} );
T.addtranslateobj( {main:"Scan", de: "Scannen", pt:
"Esquadrinhar", fr: "Balayer"} );
T.addtranslateobj( {main:"Location", de: "Lage", pt:
"localizao", fr: "Emplacement"} );
T.addtranslateobj( {main:"Player", de: "Spieler", pt: "Jogador",
fr: "Joueur"} );
T.addtranslateobj( {main:"Bases", de: "Bases", pt: "Bases", fr:
"Bases"} );
T.addtranslateobj( {main:"Camp,Outpost", de: "Lager,Vorposten",
pt: "Camp,posto avanado", fr: "Camp,avant-poste"} );
T.addtranslateobj( {main:"Camp", de: "Lager", pt: "Camp", fr:
"Camp"} );
T.addtranslateobj( {main:"Outpost", de: "Vorposten", pt: "posto
avanado", fr: "avant-poste"} );
T.addtranslateobj( {main:"BaseScanner Layout", de: "BaseScanner
Layout", pt: "Layout da Base de Dados de Scanner", fr: "Mise scanner de base"} );
T.addtranslateobj( {main:"Show Layouts", de: "Layouts anzeigen",
pt: "Mostrar Layouts", fr: "Voir Layouts"} );
T.addtranslateobj( {main:"Building state", de: "Gebudezustand",
pt: "construo do Estado", fr: "construction de l'tat"} );
T.addtranslateobj( {main:"Defense state", de:
"Verteidigungszustand", pt: "de Defesa do Estado", fr: "dfense de l'Etat"} );
T.addtranslateobj( {main:"CP", de: "KP", pt: "CP", fr: "CP"} );
T.addtranslateobj( {main:"CP Limit", de: "KP begrenzen", pt: "CP
limitar", fr: "CP limiter"} );
T.addtranslateobj( {main:"min Level", de: "min. Level", pt:
"nvel mnimo", fr: "niveau minimum"} );
T.addtranslateobj( {main:"clear Cache", de: "Cache leeren", pt:
"limpar cache", fr: "vider le cache"} );
T.addtranslateobj( {main:"Only center on World", de: "Nur auf
Welt zentrieren", pt: "nico centro no Mundial", fr: "Seul centre sur World"} );
T.addtranslateobj( {main:"base set up at", de: "Basis
errichtbar", pt: "base de configurar a", fr: "mis en place la base"} );
T.addtranslateobj( {main:"Infantry", de: "Infanterie", pt:
"Infantaria", fr: "Infanterie"} );
T.addtranslateobj( {main:"Vehicle", de: "Fahrzeuge", pt:
"Veculos", fr: "Vehicule"} );
T.addtranslateobj( {main:"Aircraft", de: "Flugzeuge", pt:
"Aeronaves", fr: "Aviation"} );
T.addtranslateobj( {main:"Tiberium", de: "Tiberium", pt:
"Tibrio", fr: "Tiberium"} );
T.addtranslateobj( {main:"Crystal", de: "Kristalle", pt:
"Cristal", fr: "Cristal"} );
T.addtranslateobj( {main:"Power", de: "Strom", pt: "Potncia",
fr: "Energie"} );
T.addtranslateobj( {main:"Dollar", de: "Credits", pt: "Crditos",
fr: "Crdit"} );
T.addtranslateobj( {main:"Research", de: "Forschung", pt:
"Investigao", fr: "Recherche"} );
T.addtranslateobj( {main:"-----", de: "--", pt: "--", fr:
"--"} );
MT_Base.createNewImage("BaseScanner", "ui/icons/icon_item.png",
fileManager);
MT_Base.createNewImage("Emptypixels",
"ui/menues/main_menu/misc_empty_pixel.png", fileManager);
var openBaseScannerOverview =
MT_Base.createDesktopButton(T.get("BaseScanner Overview") + "version " +
window.__msbs_version, "BaseScanner", false, MT_Base.desktopPosition(2));
openBaseScannerOverview.addListener("execute", function () {
Addons.BaseScannerGUI.getInstance().openWindow(T.get("BaseScanner Overview")
+ " version " + window.__msbs_version);
}, this);
Addons.BaseScannerGUI.getInstance().addListener("close",
Addons.BaseScannerGUI.getInstance().FN, Addons.BaseScannerGUI.getInstance());
//this.addListener("resize", function(){ }, this );
MT_Base.addToMainMenu("BaseScanner", openBaseScannerOverview);
Addons.BaseScannerGUI.getInstance().openWindow(T.get("BaseScanner Overview")
+ " version " + window.__msbs_version);
},"ALT+B");
}
function getResourcesPart(cityEntities) {
try {
var loot = [0, 0, 0, 0, 0, 0, 0, 0];
if (cityEntities == null) {
return loot;
}
}
}
}
return loot;
} catch (e) {
console.debug("MaelstromTools_Basescanner
getResourcesPart", e);
}
}
function objfnkstrON(obj) {
var key;
for (key in obj) {
if (typeof(obj[key]) == "function") {
var s = obj[key].toString();
console.debug(key, s);
//var protostring = s.replace(/\s/gim, "");
//console.log(key, protostring);
}
}
}
function MaelstromTools_Basescanner_checkIfLoaded() {
try {
if (typeof qx != 'undefined' && typeof MaelstromTools !=
'undefined') {
createMaelstromTools_Basescanner();
} else {
window.setTimeout(MaelstromTools_Basescanner_checkIfLoaded, 1000);
}
} catch (e) {
console.debug("MaelstromTools_Basescanner_checkIfLoaded: ",
e);
}
}
if (/commandandconquer\.com/i.test(document.domain)) {
window.setTimeout(MaelstromTools_Basescanner_checkIfLoaded,
10000);
}
};
try {
var MaelstromScript_Basescanner = document.createElement("script");
MaelstromScript_Basescanner.innerHTML = "(" +
MaelstromTools_Basescanner.toString() + ")();";
MaelstromScript_Basescanner.type = "text/javascript";
if (/commandandconquer\.com/i.test(document.domain)) {
document.getElementsByTagName("head")
[0].appendChild(MaelstromScript_Basescanner);
}
} catch (e) {
console.debug("MaelstromTools_Basescanner: init error: ", e);
}
})();