// ==UserScript==
// @name SGWG Building
// @namespace ui
// @version 0.3
// @author Ondřej Jodas
// @match http://sgwg.net/stavby.php
// @match http://stargate-dm.cz/stavby.php
// @description Stavba na sgwg z přehledu
// ==/UserScript==
$.widget('ui.buildings', {
_create : function() {
var self = this,
element = self.element;
self._antihack = self.options.antihack;
self._elementsRows = element.find('tr');
self._fillData();
$('.build').click(function() {
var button = this;
$(button).html('Stavím')
$(this).build({
building: $('#selectBuilding').val(),
typeBuilding: $('#selectTypeBuilding').val(),
whereBuild: $('#whereBuild').val(),
count: $('#count').val(),
complete: function(){
$(button).html('Postaveno');
}
});
});
},
_fillData : function() {
var self = this._elementsRows,
antihack = this._antihack;
$.each(self, function(key, value){
var tdElement = $('<th></th>', {
class : 'title',
style: 'width: 140px'
}).html('Hustakovo stavění');
// Na druhý řádek dám výběr stavby
if (key == 1) {
var selectElement = $('<select>', {
id : 'selectBuilding',
style: 'width:70px'
})
.append($('<option>', {value: '2', html: 'NAQ extraktor'}))
.append($('<option>', {value: '3', html: 'TRI separátor'}))
.append($('<option>', {value: 'c', html: 'Mincovna'}))
.append($('<option>', {value: '6', html: 'Laboratoře'}))
.append($('<option>', {value: '7', html: 'Loděnice'}))
.append($('<option>', {value: '1', html: 'Město'}))
.append($('<option>', {value: '5', html: 'Kasárna'}))
.append($('<option>', {value: 'a', html: 'Generátor'}))
.append($('<option>', {value: 'b', html: 'Hvězdný portál'}))
.append($('<option>', {value: 'z', html: 'Zbořit'}));
var selectTypeElement = $('<select>', {
id : 'selectTypeBuilding',
style: 'width:70px'
})
.append($('<option>', {value: 'průmyslová', html: 'Průmyslová'}))
.append($('<option>', {value: 'vojenská', html: 'Vojenská'}))
.append($('<option>', {value: 'civilní', html: 'Civilní'}));
var countElement = $('<select>', {
id: 'count',
style: 'width:70px'
});
for (i=1;i<=10;i++) {
countElement.append($('<option>', {value: i, html: i}));
}
var whereBuild = $('<select>', {
id: 'whereBuild',
style: 'width:70px'
})
.append($('<option>', {value: 'free', html: 'Na volných místech'}))
.append($('<option>', {value: 'all', html: 'Všude (přepíše stávající budovy)'}));
tdElement = $('<th></th>', {
class : 'title building'
}).html(selectElement.after(selectTypeElement).after(countElement).after(whereBuild));
} else
// Od třetího řádku přidám sloupeček se stavěním
if (key > 1) {
var columns = $(this).find('td');
var res = $(columns[0]).html().match(/(\d{1,10})/g);
var planetId = res[0];
var maxBuilding = $(columns[4]).html();
// Vytvořím další sloupeček
if (maxBuilding != 0 ){
var text = 'Postavit';
if ($(columns[3]).html() == '0 (64)') {
text = '--- Přestavět ---';
}
tdElement = $('<td></td>', {
class : 'build',
'data-planet-id' : planetId,
'data-antihack' : antihack,
'data-max-building' : maxBuilding,
style : 'text-decoration: underline; cursor: pointer;'
}).html(text);
} else {
tdElement = $('<td></td>');
}
}
$(this).append(tdElement);
});
}
});
$.widget('ui.build', {
_create: function() {
var self = this;
self._planetId = self.element.data('planet-id');
self._antihack = self.element.data('antihack');
self._maxBuilding = parseInt(self.element.data('max-building'));
self._listBuildingsForBuild = {};
self._downloadData();
},
_downloadData: function() {
var self = this;
$.ajax({
type: "POST",
url: '/stavby.php?nap='+self._planetId,
data: {},
success: function(data) {
var pocet = 0;
for (i=1; i <=64; i++) {
var hiddenBuilding = $(data).find('#hh'+i).val();
var building = $(data).find("#pp"+i);
// Rohodnutí zda zde budu stavět
var hereBuild = false;
if (building.attr('alt') == self.options.typeBuilding) {
hereBuild = true;
}
if (self.options.whereBuild == 'all') {
var typeBuilding = building.attr('onClick').match(/\'t(.){1}\'/g); // typ budovy: 1 - prumyslova; 2 - vojenska; 3 - civilni
if (self.options.typeBuilding == 'průmyslová' && typeBuilding == "'t1'" && self.options.building != hiddenBuilding) {
hereBuild = true;
} else if (self.options.typeBuilding == 'vojenská' && typeBuilding == "'t2'" && self.options.building != hiddenBuilding) {
hereBuild = true;
} else if (self.options.typeBuilding == 'civilní' && typeBuilding == "'t3'" && self.options.building != hiddenBuilding) {
hereBuild = true;
}
}
self._listBuildingsForBuild['h'+i] = hiddenBuilding;
if (hereBuild === true && (pocet < self._maxBuilding && pocet < self.options.count)) {
self._listBuildingsForBuild['h'+i] = self.options.building;
pocet = pocet + 1;
}
}
self._build();
},
});
},
_build: function() {
var self = this;
var data = self._listBuildingsForBuild;
data.nap = self._planetId;
data.antihack = self._antihack;
//console.log(data);
$.ajax({
type: "POST",
url: '/stavby.php?nap='+this._planetId,
data: data,
success: function(){
self._trigger("complete");
}
});
}
});
$(function(){
var antihack = $( "input[name='antihack']" ).val();
$('.data2').buildings({antihack: antihack});
});