// ==UserScript==
// @name Scouter
// @namespace Violentmonkey Scripts
// @match https://www.dreadcast.net/Main
// @version 0.0.1
// @author Pelagia/IsilinBN
// @description Un cibleur de nouvelle génération directement connecté à une base de données. Idéal pour les forces de l'Orient.
// @license https://github.com/Isilin/dreadcast-scripts?tab=GPL-3.0-1-ov-file
// @require https://update.greasyfork.icu/scripts/507382/Dreadcast%20Development%20Kit.user.js
// @connect docs.google.com
// @connect googleusercontent.com
// @connect sheets.googleapis.com
// @grant GM_xmlhttpRequest
// @grant GM_getValue
// @grant GM_setValue
// @downloadURL
// @updateURL
// @downloadURL none
// ==/UserScript==
$(() => {
const style = `
#scouter_content {
color: white;
}
#scouter_content .input_group {
display: flex;
gap: 1rem;
margin-bottom: 1rem;
}
#scouter_content input[type=text] {
padding: 4px 12px;
display: inline-block;
border: 1px solid #7ec8d8;
box-sizing: border-box;
width: 70%;
color: white;
}
.scouter_infobox_buttons {
display: flex;
position: absolute;
bottom: -30px;
left: -2px;
width: auto;
background-color: #181818;
color: white;
}
.scouter_infobox_buttons .btn {
border: 1px solid white;
display: grid;
}
.scouter_infobox_buttons .btn:hover {
background-color: #484848;
}
.interieur.data_info, .interieur.data_stats, .interieur.data_crim {
color: #eee;
}
.interieur.data_info h4, .interieur.data_stats h4, .interieur.data_crim h4 {
margin-bottom: 1rem;
}
.data_info_list, .data_stats_list, .data_crim_list {
display: flex;
flex-direction: column;
width: 100%;
font-size: 13px;
gap: 0.5rem;
}
`;
const API_TAG = 'scouter_db_api';
const SHEET_ID_TAG = 'scouter_sheet_id';
const SHEED_NAME_TAG = 'scouter_sheet_name';
const SHEET_RANGE_TAG = 'scouter_sheet_range';
let api, sheetId, sheetName, sheetRange;
let data;
const syncParams = () => {
api = DC.LocalMemory.get(API_TAG);
sheetId = DC.LocalMemory.get(SHEET_ID_TAG);
sheetName = DC.LocalMemory.get(SHEED_NAME_TAG);
sheetRange = DC.LocalMemory.get(SHEET_RANGE_TAG);
};
const initPersistence = () => {
DC.LocalMemory.init(API_TAG, 'AIzaSyAgS_cjEerpTKyHEZa6JjfUwAdxM91Vpuc');
DC.LocalMemory.init(
SHEET_ID_TAG,
'1VgeD1CghIxgP-5AfkKV7woLm4CXqVLQ53XSHH7vHZZk',
);
DC.LocalMemory.init(SHEED_NAME_TAG, 'Data');
DC.LocalMemory.init(SHEET_RANGE_TAG, 'A:T');
syncParams();
};
const loadData = () => {
DC.Network.loadSpreadsheet(
sheetId,
sheetName,
sheetRange,
api,
(result) => {
data = result;
},
);
};
const openSettings = () => {
const save = () => {
DC.LocalMemory.set(API_TAG, $('#input_api').val());
DC.LocalMemory.set(SHEET_ID_TAG, $('#input_sheet_id').val());
DC.LocalMemory.set(SHEED_NAME_TAG, $('#input_sheet_name').val());
DC.LocalMemory.set(SHEET_RANGE_TAG, $('#input_sheet_range').val());
syncParams();
loadData();
engine.closeDataBox('scouter_modal');
};
let content = $(`
`).append(DC.UI.TextButton('scouter_save', 'Sauvegarder', save));
DC.UI.PopUp('scouter_modal', 'Scouter', content);
};
const loadUI = (id) => {
let secondaire = $(
'.zone_case2 .case_objet_type_Secondaire .obj_itemBox_details .titreinfo',
).text();
// TODO remove true for prod
if (secondaire === 'Cibleur' || true) {
// this not set with arrow function
const charData = data.find((row) => row[0] === id);
const user_content = $(`#ib_persoBox_${id} .flipmobile-card-front`).clone(
true,
);
$(`
`)
.append(
DC.UI.Button(`set_${id}`, '', () => {
$(`#ib_persoBox_${id} .flipmobile-card-front`).replaceWith(
user_content.clone(true),
);
$(`#buttons_${id}>div`).css('background-color', '');
$(`#set_${id}`).css('background-color', '#484848');
}),
)
.append(
DC.UI.Button(`info_${id}`, '', () => {
$(`#ib_persoBox_${id} .flipmobile-card-front`)
.empty()
.append(
$(`
Infos
Méta-race : ${charData[3]}
Genre : ${charData[4]}
Âge : ${charData[5]} ans
Taille: ${charData[6]}cm
Poids : ${charData[7]}kg
Statut : ${charData[20]}
Emploi : ${charData[21]}
Notes : ${charData[8]}
`),
);
$(`#buttons_${id}>div`).css('background-color', '');
$(`#info_${id}`).css('background-color', '#484848');
}),
)
.append(
DC.UI.Button(`health_${id}`, '', () => {
$(`#ib_persoBox_${id} .flipmobile-card-front`)
.empty()
.append(
$(`
Statistiques
Santé : ${charData[10]}
Forme : ${charData[11]}
FOR : ${charData[12]}
AGI : ${charData[13]}
RES : ${charData[14]}
PER : ${charData[15]}
FUR : ${charData[16]}
INF : ${charData[17]}
MED : ${charData[18]}
ING : ${charData[19]}
`),
);
$(`#buttons_${id}>div`).css('background-color', '');
$(`#health_${id}`).css('background-color', '#484848');
}),
)
.append(
DC.UI.Button(`crim_${id}`, '', () => {
$(`#ib_persoBox_${id} .flipmobile-card-front`)
.empty()
.append(
$(`
`),
);
charData[9].split('\n').forEach((crim) => {
$(`${crim}`).appendTo(
$('.data_crim_list'),
);
});
$(`#buttons_${id}>div`).css('background-color', '');
$(`#crim_${id}`).css('background-color', '#484848');
}),
)
.appendTo($(`#ib_persoBox_${id}`));
$(`#set_${id}`).css('background-color', '#484848');
}
};
$(document).ready(() => {
initPersistence();
loadData();
if (Util.isDSM?.()) {
$('#scouter_setting').bind('click', openSettings);
} else {
DC.UI.addSubMenuTo(
'Paramètres ▾',
DC.UI.SubMenu('Scouter', openSettings),
6,
);
}
$(document).on('click', 'span.perso.link', function () {
const id = $(this).attr('id').slice(9);
$(document).one('ajaxSuccess', { idPerso: id }, (e, xhr, settings) => {
loadUI(id);
});
});
$(document).on('click', '#action_perso_fiche', function () {
$(document).one('ajaxSuccess', (e, xhr, settings) => {
const id = settings.data.slice(3);
loadUI(id);
});
});
$(document).on('click', '#meubles', function () {
console.log('ok');
$(document).one('ajaxSuccess', (e, xhr, settings) => {
console.log(settings);
const id = settings.data.slice(3);
loadUI(id);
});
});
DC.Style.apply(style);
});
});