commit c90fa0d4db50ee4306f44ffaf0c39052fb9bdf00 Author: RyujiDanma Date: Tue May 31 21:39:31 2022 +0200 Initialisation du repo diff --git a/app.js b/app.js new file mode 100644 index 0000000..b09011b --- /dev/null +++ b/app.js @@ -0,0 +1,229 @@ +(function () { + + angular.module('app', ['angular-locker']); + + AppCtrl.$inject = ['$http', 'locker']; + function AppCtrl($http, locker) { + var vm = this; + + vm.simultaneous = locker.get('simultaneous'); + vm.totalSteps = 34; + vm.sorting = locker.get('sorting', 0); + vm.saveData = locker.get('save'); + vm.displayOwnedMonsters = locker.get('displayOwnedMonsters', true); + vm.displayFinishedZones = locker.get('displayFinishedZones', true); + vm.displayFinishedSteps = locker.get('displayFinishedSteps', true); + + vm.isOwned = function(monster) { + if (!vm.saveData || !monster) { + return false; + } + + return vm.saveData.find(el => el[0] === monster.id) && vm.saveData.find(el => el[0] === monster.id)[1] >= vm.simultaneous; + }; + + vm.saveMonster = function(monster, val) { + vm.saveData = locker.get('save', []); + if (vm.saveData.find(savedMonster => savedMonster[0] === monster.id)) { + vm.saveData[vm.saveData.findIndex(savedMonster => savedMonster[0] === monster.id)][1] = monster.owned; + } else { + vm.saveData.push([monster.id, monster.owned]); + } + + locker.put('save', vm.saveData); + }; + + vm.increase = function(monster) { + monster.owned++; + vm.saveMonster(monster); + }; + + vm.decrease = function(monster) { + if(monster.owned > 0) { + monster.owned--; + } + vm.saveMonster(monster); + }; + + vm.saveSimultaneous = function () { + locker.put('simultaneous', vm.simultaneous) + } + + vm.owned = function(type, zone, step) { + if (!vm.monsters) { + return '?'; + } + + return vm.monsters.filter(function(monster) { + if (!vm.isOwned(monster)) { + return false; + } + + if (!type && !zone && !step) { + return true; + } + + if (type && monster.type == type) { + return true; + } + + if (zone && monster.zones.indexOf(zone) >= 0) { + return true; + } + + if (step && monster.step == step) { + return true; + } + + return false; + }).length; + }; + + vm.ownedPercentage = function(type, zone, step) { + return Math.ceil(vm.owned(type, zone, step) * 100 / vm.total(type, zone, step)) || 0; + }; + + vm.total = function(type, zone, step) { + if (!vm.monsters) { + return '?'; + } + + return vm.monsters.filter(function(monster) { + if (type) { + return monster.type == type; + } + + if (zone) { + return monster.zones.indexOf(zone) >= 0; + } + + if (step) { + return monster.step == step; + } + + return true; + }).length; + }; + + vm.load = function() { + locker.put('save', vm.loadData.match(/\d+,\d+/gm).map(function(id) { + return [+id.split(',')[0],+id.split(',')[1]]; + })); + + vm.saveData = locker.get('save'); + }; + + vm.toggleZone = function(zone) { + var newVal = true; + + if (vm.owned(false, zone) == vm.total(false, zone)) { + newVal = false; + } + + vm.monsters.map(function(monster) { + if (monster.zones.indexOf(zone) >= 0) { + vm.toggleMonster(monster, newVal); + } + }); + }; + + vm.toggleStep = function(step) { + var newVal = vm.simultaneous; + + if (vm.owned(false, false, step) == vm.total(false, false, step)) { + newVal = 0; + } + + vm.monsters.map(function(monster) { + if (monster.step == step) { + monster.owned = newVal; + vm.saveMonster(monster); + } + }); + }; + + vm.completedSteps = function() { + if (!vm.monsters) { + return '??'; + } + + return vm.monsters.map(function(monster) { + return monster.step; + }).sort().filter(function(step, index, steps) { + return index == steps.indexOf(step); + }).filter(function(step) { + return vm.ownedPercentage(false, false, step) == 100; + }).length; + }; + + vm.completedStepsPercentage = function() { + return Math.ceil(vm.completedSteps() * 100 / vm.totalSteps); + }; + + vm.chooseSorting = function(sorting) { + vm.sorting = sorting; + + locker.put('sorting', sorting); + }; + + + vm.toggleOwnedMonsters = function() { + locker.put('displayOwnedMonsters', vm.displayOwnedMonsters); + } + + vm.toggleFinishedZones = function() { + locker.put('displayFinishedZones', vm.displayFinishedZones); + } + + vm.toggleFinishedSteps = function() { + locker.put('displayFinishedSteps', vm.displayFinishedSteps); + } + + vm.resetAll = function() { + if (confirm('Dernière chance !')) { + locker.clean(); + + vm.sorting = 0; + vm.saveData = null; + vm.displayOwnedMonsters = true; + vm.displayFinishedZones = true; + vm.displayFinishedSteps = true; + vm.zones = {}; + vm.steps = []; + vm.monsters = []; + + $('#saveModal').modal('hide'); + } + }; + + $http.get('https://raw.githubusercontent.com/Mopolo/Eternelle-Moisson/gh-pages/monsters.json').then(function(res) { + vm.monsters = res.data; + vm.monsters.forEach(monster => { + monster.owned = vm.saveData?.find(el => el[0] === monster.id) ? vm.saveData.find(el => el[0] === monster.id)[1] : 0 + }) + + vm.zones = {}; + vm.steps = []; + + angular.forEach(vm.monsters, function(monster) { + angular.forEach(monster.zones, function(zone) { + if (angular.isUndefined(vm.zones[zone])) { + vm.zones[zone] = []; + } + + vm.zones[zone].push(monster); + }); + + if (angular.isUndefined(vm.steps[monster.step])) { + vm.steps[monster.step] = []; + } + + vm.steps[monster.step].push(monster); + }); + }); + } + + angular.module('app') + .controller('AppCtrl', AppCtrl); + +}()); \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..0665e57 --- /dev/null +++ b/index.html @@ -0,0 +1,370 @@ + + + + + + + + L'Éternelle moisson - Dofus Ocre + + + + + + + Fork me on GitHub + + + +
+
+
+
+
+
+
+ Monstres : {{ appCtrl.owned('monster') }}/{{ appCtrl.total('monster') }} + +
+
+ {{ appCtrl.ownedPercentage('monster') }}% +
+
+
+
+ Boss : {{ appCtrl.owned('boss') }}/{{ appCtrl.total('boss') }} + +
+
+ {{ appCtrl.ownedPercentage('boss') }}% +
+
+
+
+ Archimonstres : {{ appCtrl.owned('archi') }}/{{ appCtrl.total('archi') }} + +
+
+ {{ appCtrl.ownedPercentage('archi') }}% +
+
+
+
+ Etapes : {{ appCtrl.completedSteps() }}/{{ appCtrl.totalSteps }} + +
+
+ {{ appCtrl.ownedPercentage('archi') }}% +
+
+
+
+
+
+ +
+
+ Total : {{ appCtrl.owned() }}/{{ appCtrl.monsters.length }} + +
+
+ {{ appCtrl.ownedPercentage() }}% +
+
+
+
+ +
+
+ Nombre de chasses simultanées : + +
+
+ +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + +
PossédéNomÉtapeZones
{{ monster.owned ? monster.owned : 0 }} + + + {{ monster.name }} + {{ monster.step }} + {{ zone }} +
+ +
+ +
+
+ +
+
+
+ {{ zone }} ({{ appCtrl.owned(false, zone) }}/{{ appCtrl.total(false, zone) }}) + +
+ +
+
+ + + + + + + + + + + + + + + + + + +
PossédéNomÉtapeZones
{{ monster.owned ? monster.owned : 0 }} + + + {{ monster.name }} + {{ monster.step }} + {{ zone }} +
+
+
+ +
+
+ +
+
+
+ Étape {{ step }} ({{ appCtrl.owned(false, false, step) }}/{{ appCtrl.total(false, false, step) }}) + +
+ +
+
+ + + + + + + + + + + + + + + + +
PossédéNomZones
{{ monster.owned ? monster.owned : 0 }} + + + {{ monster.name }} + + {{ zone }} +
+
+
+ +
+
+ +
+
+

+ Cet outil facilite la gestion de la quête du Dofus Ocre. + Voir sur Github + Dofus est la propriété d'Ankama +

+
+
+
+ + + + + + + + + + + + + + \ No newline at end of file