mirror of
https://github.com/marcrobledo/savegame-editors.git
synced 2025-04-24 16:35:10 +00:00
Merge pull request #465 from magiczocker10/NintendogsCats
Nintendogs cats
This commit is contained in:
commit
a2b9584fcc
125
nintendogs+cats/dialog.css
Normal file
125
nintendogs+cats/dialog.css
Normal file
@ -0,0 +1,125 @@
|
||||
#menu[open] {
|
||||
border: 0px solid gray;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
|
||||
display: grid;
|
||||
grid-template-areas:
|
||||
'a b';
|
||||
grid-template-columns: auto 1fr;
|
||||
height: 100%;
|
||||
padding: unset;
|
||||
user-select: none;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
#menu .menu-sidebar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#menu[data-type="dog"] #menu-sidebar-dog {
|
||||
display: unset;
|
||||
}
|
||||
#menu[data-type="cat"] #menu-sidebar-cat {
|
||||
display: unset;
|
||||
}
|
||||
|
||||
#menu-close {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#menu-content {
|
||||
grid-area: b;
|
||||
height: 100%;
|
||||
min-width: 454px;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#menu-content > div {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.menu-sidebar {
|
||||
background: #e6e6e7;
|
||||
font-family: 'Open Sans',sans-serif;
|
||||
grid-area: a;
|
||||
overflow-y: scroll;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
scrollbar-width: none;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.menu-sidebar div {
|
||||
padding: 5px;
|
||||
}
|
||||
.menu-sidebar .header {
|
||||
color: gray;
|
||||
font-size:small;
|
||||
font-weight: bold;
|
||||
}
|
||||
.menu-sidebar .header:not(:first-of-type) {
|
||||
padding-top: 10px;
|
||||
}
|
||||
.menu-sidebar > div[class^="page-"] {
|
||||
text-indent: 1em;
|
||||
}
|
||||
.menu-sidebar > div[class^="page-"]:hover {
|
||||
background: #cececf;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.menu-sidebar > div[class$="-22"] {
|
||||
text-indent: 2em;
|
||||
}
|
||||
|
||||
.menu-sidebar > div[open] {
|
||||
background: #cececf;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.sprite {
|
||||
background-repeat: no-repeat;
|
||||
display: inline-block;
|
||||
height: 64px;
|
||||
image-rendering: pixelated;
|
||||
margin: 5px;
|
||||
vertical-align: text-top;
|
||||
width: 64px;
|
||||
}
|
||||
|
||||
#eyecolor {
|
||||
width: 100%;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#menu[data-type="cat"] #eyecolor {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#eyecolor input {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#eyecolor label {
|
||||
background: #cececf;
|
||||
width: 30%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#eyecolor input:checked + label {
|
||||
background: gray;
|
||||
color: white;
|
||||
}
|
||||
|
||||
input#eye_gray + label {
|
||||
border-top-left-radius: 5px;
|
||||
border-bottom-left-radius: 5px;
|
||||
}
|
||||
|
||||
input#eye_blue + label {
|
||||
border-top-right-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
}
|
179
nintendogs+cats/dialog.js
Normal file
179
nintendogs+cats/dialog.js
Normal file
@ -0,0 +1,179 @@
|
||||
var spriteBaseURL = 'https://www.spriters-resource.com/resources/sheets/112/%0.png';
|
||||
var spriteBaseURLLocal = 'sprites/%0.png';
|
||||
var useLocal = false;
|
||||
var spriteData = {
|
||||
// Dogs
|
||||
basset_hound: {sprite_id: '114733', row: 6},
|
||||
beagle: {sprite_id: '114732', row: 6},
|
||||
boxer: {sprite_id: '114888', row: 6},
|
||||
bull_terrier: {sprite_id: '114889', row: 6},
|
||||
chihuahua: {sprite_id: '114890', row: 6},
|
||||
chihuahua1: {sprite_id: '114890', row: 2},
|
||||
cocker_spaniel: {sprite_id: '114893', row: 5},
|
||||
dalmatian: {sprite_id: '114891', row: 6},
|
||||
french_bulldog: {sprite_id: '114892', row: 5},
|
||||
german_shepherd_dog: {sprite_id: '114896', row: 6},
|
||||
golden_retriever: {sprite_id: '114737', row: 6},
|
||||
great_dane: {sprite_id: '114895', row: 6},
|
||||
jack_russell_terrier: {sprite_id: '114898', row: 6},
|
||||
labrador_retriever: {sprite_id: '114900', row: 5},
|
||||
labrador_retriever1: {sprite_id: '114900', row: 1},
|
||||
maltese: {sprite_id: '114734', row: 6},
|
||||
miniature_dachshund: {sprite_id: '114902', row: 5},
|
||||
miniature_dachshund1: {sprite_id: '114902', row: 1},
|
||||
miniature_pinscher: {sprite_id: '114903', row: 5},
|
||||
miniature_schnauzer: {sprite_id: '114904', row: 5},
|
||||
miniature_schnauzer1: {sprite_id: '114904', row: 1},
|
||||
pembroke_welsh_corgi: {sprite_id: '114899', row: 6},
|
||||
pomeranian: {sprite_id: '114907', row: 6},
|
||||
pomeranian1: {sprite_id: '114907', row: 1},
|
||||
pug: {sprite_id: '114906', row: 5},
|
||||
robo_pup: {sprite_id: '114735', row: 5},
|
||||
shetland_sheepdog: {sprite_id: '114912', row: 6},
|
||||
shiba: {sprite_id: '114908', row: 5},
|
||||
shih_tzu: {sprite_id: '114909', row: 5},
|
||||
siberian_husky: {sprite_id: '114897', row: 6},
|
||||
spaniel: {sprite_id: '114901', row: 5},
|
||||
toy_poodle: {sprite_id: '114905', row: 5},
|
||||
toy_poodle1: {sprite_id: '114905', row: 1},
|
||||
yorkshire_terrier: {sprite_id: '114736', row: 6},
|
||||
// Cats
|
||||
standard: {sprite_id: '114911', row: 6},
|
||||
oriental: {sprite_id: '114910', row: 6},
|
||||
longhair: {sprite_id: '114894', row: 18}
|
||||
};
|
||||
window.spriteData = spriteData;
|
||||
|
||||
var _writeU8 = function(variable, value) {
|
||||
tempFile.writeU8(
|
||||
SavegameEditor.Constants.PET_OFFSET[get('menu').dataset.pet]+SavegameEditor.Constants[variable],
|
||||
Number(value)
|
||||
);
|
||||
};
|
||||
|
||||
window.addEventListener('load', function() {
|
||||
'use strict';
|
||||
const btnClose = document.getElementById('menu-close'),
|
||||
menu = document.getElementById('menu'),
|
||||
sidebar_dog = document.getElementById('menu-sidebar-dog'),
|
||||
sidebar_cat = document.getElementById('menu-sidebar-cat'),
|
||||
content = document.getElementById('menu-content'),
|
||||
eyecolor = document.getElementById('eyecolor');
|
||||
|
||||
var sidebar_event = function(e) {
|
||||
if (!e.target || !e.target.className || !e.target.className.startsWith('page-')) {return;}
|
||||
var old = sidebar_dog.querySelector('div[open]');
|
||||
if (old) {
|
||||
old.removeAttribute('open');
|
||||
content.querySelector('.' + old.className).style.display = 'none';
|
||||
}
|
||||
old = sidebar_cat.querySelector('div[open]');
|
||||
if (old) {
|
||||
old.removeAttribute('open');
|
||||
content.querySelector('.' + old.className).style.display = 'none';
|
||||
}
|
||||
var tmp = e.target.className.match(/\d+/g);
|
||||
if (tmp[0] >= 29 && tmp[0] <= 31) {
|
||||
menu.dataset.type = 'cat';
|
||||
} else {
|
||||
menu.dataset.type = 'dog';
|
||||
}
|
||||
e.target.setAttribute('open', true);
|
||||
var eye_color_offset = 255;
|
||||
if (menu.dataset.type === 'cat')
|
||||
eye_color_offset = Number(document.getElementById('eyecolor').querySelector(':checked').dataset.offset);
|
||||
var newContent = content.querySelector('.' + e.target.className);
|
||||
if (newContent && menu.dataset.type === 'cat') {
|
||||
newContent.parentElement.removeChild(newContent);
|
||||
newContent = undefined;
|
||||
}
|
||||
if (!newContent) {
|
||||
newContent = document.createElement('div');
|
||||
newContent.className = e.target.className;
|
||||
var offset = Number(e.target.getAttribute('image-offset'));
|
||||
var sD = spriteData[e.target.getAttribute('breed')];
|
||||
var offX = -4;
|
||||
var offY = -4 - 68 * Math.ceil(offset / sD.row);
|
||||
var color = 0;
|
||||
var style = 0;
|
||||
var i_max = offset+Number(e.target.getAttribute('image-items'));
|
||||
var correctionXOffset = 0;
|
||||
var correctionYOffset = 0;
|
||||
for (var i = offset; i<i_max; i++) {
|
||||
if (newContent.className === 'page-9-1' && color === 2) { // Fix for Labrador Retriever - Black
|
||||
correctionYOffset = 68;
|
||||
} else if (newContent.className === 'page-17-22') { // Fix for German Shepherd Dog - White
|
||||
correctionXOffset = 340;
|
||||
} else if (newContent.className === 'page-14-2') { // Fix for Miniature Schnauzer - Surprise Me #1
|
||||
if (i === 12) { // Correct image 1
|
||||
correctionYOffset = 68 * 3;
|
||||
} else if (i === 13) { // Correct image 2
|
||||
correctionYOffset = 68 * 7;
|
||||
} else if (i === 14 || i === 15 || i === 16) { // Correct images 3, 4 and 5
|
||||
correctionYOffset = -(68 * 2);
|
||||
}
|
||||
} else if (newContent.className === 'page-14-12') { // Fix for Miniature Schnauzer - Surprise Me #2
|
||||
if (i === 21) { // Correct image 5
|
||||
correctionYOffset = 0;
|
||||
} else {
|
||||
correctionYOffset = -68;
|
||||
}
|
||||
}
|
||||
if (menu.dataset.type === 'dog' || (i-offset) % 3 === eye_color_offset) {
|
||||
var ele = document.createElement('div');
|
||||
var baseURL = useLocal && spriteBaseURLLocal || spriteBaseURL;
|
||||
ele.style.backgroundImage = 'url(' + baseURL.replaceAll('%0', sD.sprite_id) + ')';
|
||||
ele.className = 'sprite';
|
||||
ele.dataset.color = color;
|
||||
ele.dataset.eye_color = eye_color_offset;
|
||||
ele.dataset.style = style;
|
||||
ele.style.backgroundPosition = (offX - correctionXOffset) + 'px ' + (offY - correctionYOffset) + 'px';
|
||||
newContent.appendChild(ele);
|
||||
style++;
|
||||
}
|
||||
offX -= 68;
|
||||
if (((i-offset) > 0 || sD.row === 1) && (i-offset) % sD.row == sD.row-1) {
|
||||
offX = -4;
|
||||
offY -= 68;
|
||||
}
|
||||
if (style >= (e.target.dataset.percolor || 6)) {
|
||||
color++;
|
||||
style=0;
|
||||
}
|
||||
}
|
||||
newContent.style.width = 74 * (e.target.dataset.percolor || 6) + 'px';
|
||||
content.appendChild(newContent);
|
||||
} else {
|
||||
newContent.style.removeProperty('display');
|
||||
}
|
||||
e.target.scrollIntoViewIfNeeded();
|
||||
|
||||
};
|
||||
window._sidebar_event = sidebar_event;
|
||||
sidebar_dog.addEventListener('click', sidebar_event, false);
|
||||
sidebar_cat.addEventListener('click', sidebar_event, false);
|
||||
eyecolor.addEventListener('change', function(e) {
|
||||
sidebar_cat.querySelector('[open]').click();
|
||||
}, false);
|
||||
|
||||
content.addEventListener('click', function(e) {
|
||||
if (!e.target.className.includes('sprite')) {return;}
|
||||
var tmp = e.target.parentElement.className.match(/\d+/g);
|
||||
_writeU8('PET_BREED_OFFSET', tmp[0]);
|
||||
_writeU8('PET_BREED_VARIANT_OFFSET', tmp[1]);
|
||||
_writeU8('PET_BREED_COLOR_OFFSET', e.target.dataset.color);
|
||||
_writeU8('PET_BREED_EYE_COLOR_OFFSET', e.target.dataset.eye_color);
|
||||
_writeU8('PET_BREED_STYLE_OFFSET',e.target.dataset.style);
|
||||
var newImage = e.target.cloneNode();
|
||||
var newImage2 = e.target.cloneNode();
|
||||
newImage.id = 'petimage' + (Number(get('menu').dataset.pet)+1);
|
||||
document.getElementById(newImage.id).replaceWith(newImage);
|
||||
document.querySelector('label[for="pet_tab' + (Number(get('menu').dataset.pet)+1) + '"] .sprite').replaceWith(newImage2);
|
||||
btnClose.click();
|
||||
}, false);
|
||||
btnClose.addEventListener('click', function(e) {
|
||||
e.preventDefault();
|
||||
menu.close();
|
||||
}, false);
|
||||
sidebar_event({target: document.getElementsByClassName('page-0-0')[0]});
|
||||
}, false);
|
@ -8,10 +8,14 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
|
||||
<link rel="shortcut icon" href="favicon.png"/>
|
||||
<link type="text/css" rel="stylesheet" href="../savegame-editor.css" media="all"/>
|
||||
<link type="text/css" rel="stylesheet" href="./dialog.css">
|
||||
<link type="text/css" rel="stylesheet" href="./nintendogs+cats.css" media="all"/>
|
||||
<script type="text/javascript" src="../savegame-editor.js"></script>
|
||||
<script type="text/javascript" src="./dialog.js"></script>
|
||||
<script type="text/javascript" src="./personalities.js"></script>
|
||||
<script type="text/javascript" src="./nintendogs+cats.js"></script>
|
||||
<script type="text/javascript"><!--
|
||||
/* service worker */
|
||||
/* service worker */
|
||||
var FORCE_HTTPS=true;
|
||||
window.addEventListener('load',function(){
|
||||
if(location.protocol==='http:' && FORCE_HTTPS)
|
||||
@ -22,7 +26,218 @@
|
||||
--></script>
|
||||
</head>
|
||||
<body>
|
||||
<template id="template-row-pet">
|
||||
<div class="pet_tab_content container">
|
||||
<div class="row" id="row-petX">
|
||||
<div class="columns c8"><label class="update-name" for="input-petX-name">Name</label></div>
|
||||
<div class="columns c4"><input class="update-name" id="input-petX-name" type="text" class="fw" maxlength="10" /></div>
|
||||
<div class="columns c8">Gender</div><div class="update-name columns c4" id="container-petX-gender" data-var="PET_GENDER_OFFSET" data-size="8"></div>
|
||||
<div class="columns c8">Breed</div><div class="update-name columns c4" id="container-petX-breed"></div>
|
||||
<div class="columns c6"><label class="update-name" for="input-petX-personality">Personality</label></div>
|
||||
<div class="columns c6"><input class="update-name" id="input-petX-personality" type="text" class="fw" style="width:90%;" readonly/></div>
|
||||
<div class="columns c8"><label class="update-name" for="number-petX-level">Level</label></div>
|
||||
<div class="columns c4"><input class="update-name fw text-right" id="number-petX-level" type="text" /></div>
|
||||
|
||||
<div class="row container update-name" id="petX_comp_outer" style="width:100%;padding-left:0;padding-right:0">
|
||||
<h3 class="orange" style="width:100%;">Times played (max 2 per day)</h3>
|
||||
<div class="columns c8"><label class="update-name" for="number-petX-disc-played">Disc Competition</label></div>
|
||||
<div class="update-name columns c4" data-global="1" data-var="PETX_COMP_DISC_PLAYED", data-size="8"><input class="update-name fw text-right" id="number-petX-disc-played" type="text" /></div>
|
||||
<div class="columns c8"><label class="update-name" for="number-petX-lure-played">Lure Coursing</label></div>
|
||||
<div class="update-name columns c4" data-global="1" data-var="PETX_COMP_LURE_PLAYED", data-size="8"><input class="update-name fw text-right" id="number-petX-lure-played" type="text" /></div>
|
||||
<div class="columns c8"><label class="update-name" for="number-petX-obedience-played">Obedience Trial</label></div>
|
||||
<div class="update-name columns c4" data-global="1" data-var="PETX_COMP_OBED_PLAYED", data-size="8"><input class="update-name fw text-right" id="number-petX-obed-played" type="text" /></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<dialog id="menu" data-type="dog">
|
||||
<div class="menu-sidebar" id="menu-sidebar-dog">
|
||||
<div class="header">Beagle</div>
|
||||
<div breed='beagle' image-offset="0" image-items="30" class="page-0-0">Tricolour</div>
|
||||
<div breed='beagle' image-offset="30" image-items="30" class="page-0-1">Lemon & White</div>
|
||||
<div breed='beagle' image-offset="60" image-items="30" class="page-0-12">Surprise me!</div>
|
||||
<div breed='beagle' image-offset="90" image-items="1" class="page-0-22">White</div>
|
||||
<div class="header">Golden Retriever</div>
|
||||
<div breed="golden_retriever" image-offset="0" image-items="10" class="page-1-0" data-percolor="2">Golden</div>
|
||||
<div breed="golden_retriever" image-offset="12" image-items="30" class="page-1-12">Surprise me!</div>
|
||||
<div breed='golden_retriever' image-offset="40" image-items="1" class="page-1-22">White</div>
|
||||
<div class="header">Yorkshire Terrier</div>
|
||||
<div breed="yorkshire_terrier" image-offset="0" image-items="30" class="page-2-0">Black & Tan</div>
|
||||
<div breed="yorkshire_terrier" image-offset="30" image-items="30" class="page-2-12">Surprise me!</div>
|
||||
<div breed='yorkshire_terrier' image-offset="60" image-items="1" class="page-2-22">White</div>
|
||||
<div class="header">Miniature Dachshund</div>
|
||||
<div breed="miniature_dachshund1" image-offset="0" image-items="5" class="page-3-0" data-percolor="1">Red</div>
|
||||
<div breed="miniature_dachshund" image-offset="25" image-items="30" class="page-3-1">Black & Tan</div>
|
||||
<div breed="miniature_dachshund" image-offset="55" image-items="30" class="page-3-12">Surprise me!</div>
|
||||
<div breed='miniature_dachshund' image-offset="85" image-items="1" class="page-3-22">White</div>
|
||||
<div class="header">Chihuahua #1</div>
|
||||
<div breed="chihuahua1" image-offset="21" image-items="10" class="page-4-0" data-percolor="2">Cream</div>
|
||||
<div breed="chihuahua" image-offset="96" image-items="30" class="page-4-12">Surprise me!</div>
|
||||
<div breed="chihuahua" image-offset="126" image-items="1" class="page-4-22">White</div>
|
||||
<div class="header">Chihuahua #2</div>
|
||||
<div breed="chihuahua" image-offset="0" image-items="30" class="page-5-0">Red & White</div>
|
||||
<div breed="chihuahua" image-offset="30" image-items="30" class="page-5-1">Tricolour</div>
|
||||
<div breed='chihuahua' image-offset="60" image-items="1" class="page-5-22">White</div>
|
||||
<div class="header">Toy Poodle #1</div>
|
||||
<div breed='toy_poodle1' image-offset="0" image-items="5" class="page-6-0" data-percolor="1">Fluffy Muzzle</div>
|
||||
<div breed='toy_poodle1' image-offset="5" image-items="1" class="page-6-22">White</div>
|
||||
<div class="header">Toy Poodle #2</div>
|
||||
<div breed='toy_poodle1' image-offset="6" image-items="5" class="page-7-0" data-percolor="1">Clipped Muzzle</div>
|
||||
<div breed='toy_poodle' image-offset="55" image-items="30" class="page-7-12">Surprise me!</div>
|
||||
<div breed='toy_poodle' image-offset="85" image-items="1" class="page-7-22">White</div>
|
||||
<div class="header">Shiba</div>
|
||||
<div breed='shiba' image-offset="0" image-items="30" class="page-8-0">Red & White</div>
|
||||
<div breed='shiba' image-offset="30" image-items="30" class="page-8-1">Black & Tan #1</div>
|
||||
<div breed='shiba' image-offset="60" image-items="30" class="page-8-2">Black & Tan #2</div>
|
||||
<div breed='shiba' image-offset="90" image-items="30" class="page-8-12">Surprise me!</div>
|
||||
<div breed='shiba' image-offset="120" image-items="1" class="page-8-22">White</div>
|
||||
<div class="header">Labrador Retriever</div>
|
||||
<div breed='labrador_retriever1' image-offset="0" image-items="5" class="page-9-0" data-percolor="1">Yellow</div>
|
||||
<div breed='labrador_retriever1' image-offset="5" image-items="5" class="page-9-1" data-percolor="1">Black</div>
|
||||
<div breed='labrador_retriever1' image-offset="11" image-items="5" class="page-9-2" data-percolor="1">Chocolate</div>
|
||||
<div breed='labrador_retriever' image-offset="80" image-items="30" class="page-9-12">Surprise me!</div>
|
||||
<div breed='labrador_retriever' image-offset="110" image-items="1" class="page-9-22">White</div>
|
||||
<div class="header">Spaniel</div>
|
||||
<div breed='spaniel' image-offset="0" image-items="30" class="page-10-0">Blentheim</div>
|
||||
<div breed='spaniel' image-offset="30" image-items="30" class="page-10-1">Tricolour</div>
|
||||
<div breed='spaniel' image-offset="60" image-items="5" class="page-10-2" data-percolor="1">Ruby</div>
|
||||
<div breed='spaniel' image-offset="65" image-items="30" class="page-10-12">Surprise me!</div>
|
||||
<div breed='spaniel' image-offset="95" image-items="1" class="page-10-22">White</div>
|
||||
<div class="header">Pug</div>
|
||||
<div breed='pug' image-offset="0" image-items="30" class="page-11-0">Silver</div>
|
||||
<div breed='pug' image-offset="30" image-items="5" class="page-11-1" data-percolor="1">Black</div>
|
||||
<div breed='pug' image-offset="35" image-items="30" class="page-11-2">Apricot</div>
|
||||
<div breed='pug' image-offset="65" image-items="30" class="page-11-12">Surprise me!</div>
|
||||
<div breed='pug' image-offset="95" image-items="1" class="page-11-22">White</div>
|
||||
<div class="header">Shih Tzu</div>
|
||||
<div breed='shih_tzu' image-offset="0" image-items="30" class="page-12-0">Brown & White</div>
|
||||
<div breed='shih_tzu' image-offset="30" image-items="30" class="page-12-1">Brindle & White</div>
|
||||
<div breed='shih_tzu' image-offset="60" image-items="30" class="page-12-12">Surprise me!</div>
|
||||
<div breed='shih_tzu' image-offset="90" image-items="1" class="page-12-22">White</div>
|
||||
<div class="header">Shetland Sheepdog</div>
|
||||
<div breed='shetland_sheepdog' image-offset="0" image-items="30" class="page-13-0">Sable & White</div>
|
||||
<div breed='shetland_sheepdog' image-offset="30" image-items="30" class="page-13-1">Bicolour</div>
|
||||
<div breed='shetland_sheepdog' image-offset="60" image-items="30" class="page-13-2">Tricolour</div>
|
||||
<div breed='shetland_sheepdog' image-offset="90" image-items="30" class="page-13-12">Surprise me!</div>
|
||||
<div breed='shetland_sheepdog' image-offset="120" image-items="1" class="page-13-22">White</div>
|
||||
<div class="header">Miniature Schnauzer</div>
|
||||
<div breed='miniature_schnauzer' image-offset="0" image-items="30" class="page-14-0" >Pepper & Salt #1</div>
|
||||
<div breed='miniature_schnauzer' image-offset="30" image-items="30" class="page-14-1">Pepper & Salt #2</div>
|
||||
<div breed='miniature_schnauzer1' image-offset="12" image-items="5" class="page-14-2" data-percolor="1">Surprise me! #1</div>
|
||||
<div breed='miniature_schnauzer1' image-offset="17" image-items="5" class="page-14-12" data-percolor="1">Surprise me! #2</div>
|
||||
<div breed='miniature_schnauzer1' image-offset="22" image-items="1" class="page-14-22" data-percolor="1">White</div>
|
||||
<div class="header">Pembroke Welsh Corgi</div>
|
||||
<div breed='pembroke_welsh_corgi' image-offset="0" image-items="30" class="page-15-0">Sable & White</div>
|
||||
<div breed='pembroke_welsh_corgi' image-offset="30" image-items="30" class="page-15-1">Tricolour</div>
|
||||
<div breed='pembroke_welsh_corgi' image-offset="60" image-items="30" class="page-15-12">Surprise me!</div>
|
||||
<div breed='pembroke_welsh_corgi' image-offset="90" image-items="1" class="page-15-22">White</div>
|
||||
<div class="header">Miniature Pinscher</div>
|
||||
<div breed='miniature_pinscher' image-offset="0" image-items="30" class="page-16-0">Black & Tan</div>
|
||||
<div breed='miniature_pinscher' image-offset="30" image-items="30" class="page-16-1">Red #1</div>
|
||||
<div breed='miniature_pinscher' image-offset="60" image-items="5" class="page-16-2" data-percolor="1">Red #2</div>
|
||||
<div breed='miniature_pinscher' image-offset="65" image-items="30" class="page-16-12">Surprise me!</div>
|
||||
<div breed='miniature_pinscher' image-offset="95" image-items="1" class="page-16-22">White</div>
|
||||
<div class="header">German Shepherd Dog</div>
|
||||
<div breed='german_shepherd_dog' image-offset="0" image-items="30" class="page-17-0">Black & Tan</div>
|
||||
<div breed='german_shepherd_dog' image-offset="30" image-items="30" class="page-17-1">Sable #1</div>
|
||||
<div breed='german_shepherd_dog' image-offset="60" image-items="30" class="page-17-2">Sable #2</div>
|
||||
<div breed='german_shepherd_dog' image-offset="90" image-items="5" class="page-17-12" data-percolor="1">Surprise me!</div>
|
||||
<div breed='german_shepherd_dog' image-offset="90" image-items="1" class="page-17-22" data-percolor="1">White</div>
|
||||
<div class="header">Jack Russell Terrier</div>
|
||||
<div breed='jack_russell_terrier' image-offset="0" image-items="30" class="page-18-0">Lemon & White</div>
|
||||
<div breed='jack_russell_terrier' image-offset="30" image-items="30" class="page-18-1">Black & White</div>
|
||||
<div breed='jack_russell_terrier' image-offset="60" image-items="30" class="page-18-12">Surprise me!</div>
|
||||
<div breed='jack_russell_terrier' image-offset="90" image-items="1" class="page-18-22">White</div>
|
||||
<div class="header">Siberian Husky</div>
|
||||
<div breed='siberian_husky' image-offset="0" image-items="30" class="page-19-0">Black & White</div>
|
||||
<div breed='siberian_husky' image-offset="30" image-items="30" class="page-19-1">Brown / White</div>
|
||||
<div breed='siberian_husky' image-offset="60" image-items="30" class="page-19-2">Agouti & White</div>
|
||||
<div breed='siberian_husky' image-offset="90" image-items="30" class="page-19-12">Surprise me!</div>
|
||||
<div breed='siberian_husky' image-offset="120" image-items="1" class="page-19-22">White</div>
|
||||
<div class="header">Boxer</div>
|
||||
<div breed='boxer' image-offset="0" image-items="30" class="page-20-0">Fawn & White</div>
|
||||
<div breed='boxer' image-offset="30" image-items="30" class="page-20-1">Brindle & White #1</div>
|
||||
<div breed='boxer' image-offset="60" image-items="30" class="page-20-2">Brindle & White #2</div>
|
||||
<div breed='boxer' image-offset="90" image-items="30" class="page-20-12">Surprise me!</div>
|
||||
<div breed='boxer' image-offset="120" image-items="1" class="page-20-22">White</div>
|
||||
<div class="header">Dalmatian</div>
|
||||
<div breed='dalmatian' image-offset="0" image-items="30" class="page-21-0">With Spots #1</div>
|
||||
<div breed='dalmatian' image-offset="30" image-items="30" class="page-21-1">With Spots #2</div>
|
||||
<div breed='dalmatian' image-offset="60" image-items="30" class="page-21-12">Surprise me!</div>
|
||||
<div breed='dalmatian' image-offset="90" image-items="1" class="page-21-22">White</div>
|
||||
<div class="header">Pomeranian</div>
|
||||
<div breed='pomeranian1' image-offset="0" image-items="5" class="page-22-0" data-percolor="1">Orange</div>
|
||||
<div breed='pomeranian' image-offset="30" image-items="30" class="page-22-1">Black & Tan</div>
|
||||
<div breed='pomeranian' image-offset="60" image-items="30" class="page-22-2">Parti-Coloured</div>
|
||||
<div breed='pomeranian' image-offset="90" image-items="30" class="page-22-12">Surprise me!</div>
|
||||
<div breed='pomeranian' image-offset="120" image-items="1" class="page-22-22">White</div>
|
||||
<div class="header">French Bulldog</div>
|
||||
<div breed='french_bulldog' image-offset="0" image-items="30" class="page-23-0">Black & White</div>
|
||||
<div breed='french_bulldog' image-offset="30" image-items="30" class="page-23-1">Brindle</div>
|
||||
<div breed='french_bulldog' image-offset="60" image-items="30" class="page-23-2">Fawn</div>
|
||||
<div breed='french_bulldog' image-offset="90" image-items="30" class="page-23-12">Surprise me!</div>
|
||||
<div breed='french_bulldog' image-offset="120" image-items="1" class="page-23-22">White</div>
|
||||
<div class="header">Maltese</div>
|
||||
<div breed='maltese' image-offset="0" image-items="30" class="page-24-12">White</div>
|
||||
<div breed='maltese' image-offset="30" image-items="1" class="page-24-22">White</div>
|
||||
<div class="header">Cocker Spaniel</div>
|
||||
<div breed='cocker_spaniel' image-offset="0" image-items="30" class="page-25-0">Parti-Coloured #1</div>
|
||||
<div breed='cocker_spaniel' image-offset="30" image-items="30" class="page-25-1">Parti-Coloured #2</div>
|
||||
<div breed='cocker_spaniel' image-offset="60" image-items="5" class="page-25-2" data-percolor="1">Red</div>
|
||||
<div breed='cocker_spaniel' image-offset="65" image-items="30" class="page-25-12">Surprise me!</div>
|
||||
<div breed='cocker_spaniel' image-offset="95" image-items="1" class="page-25-22">White</div>
|
||||
<div class="header">Great Dane</div>
|
||||
<div breed='great_dane' image-offset="0" image-items="30" class="page-26-0">Mantle</div>
|
||||
<div breed='great_dane' image-offset="30" image-items="30" class="page-26-1">Harlequin</div>
|
||||
<div breed='great_dane' image-offset="60" image-items="30" class="page-26-2">Fawn</div>
|
||||
<div breed='great_dane' image-offset="90" image-items="30" class="page-26-12">Surprise me!</div>
|
||||
<div breed='great_dane' image-offset="120" image-items="1" class="page-26-22">White</div>
|
||||
<div class="header">Bull Terrier</div>
|
||||
<div breed='bull_terrier' image-offset="0" image-items="30" class="page-27-0">Black & White</div>
|
||||
<div breed='bull_terrier' image-offset="30" image-items="30" class="page-27-1">Brindle & White</div>
|
||||
<div breed='bull_terrier' image-offset="60" image-items="30" class="page-27-2">Red & White</div>
|
||||
<div breed='bull_terrier' image-offset="90" image-items="30" class="page-27-12">Surprise me!</div>
|
||||
<div breed='bull_terrier' image-offset="120" image-items="1" class="page-27-22">White</div>
|
||||
<div class="header">Basset Hound</div>
|
||||
<div breed='basset_hound' image-offset="0" image-items="30" class="page-28-0">Tricolour</div>
|
||||
<div breed='basset_hound' image-offset="30" image-items="30" class="page-28-1">Lemon & White</div>
|
||||
<div breed='basset_hound' image-offset="60" image-items="30" class="page-28-12">Surprise me!</div>
|
||||
<div breed='basset_hound' image-offset="90" image-items="1" class="page-28-22">White</div>
|
||||
<div class="header">Robo Pup</div>
|
||||
<div breed='robo_pup' image-offset="0" image-items="10" class="page-32-0" data-percolor="1">Untitled #1</div>
|
||||
<div breed='robo_pup' image-offset="10" image-items="10" class="page-32-1" data-percolor="1">Untitled #2</div>
|
||||
<div breed='robo_pup' image-offset="20" image-items="1" class="page-32-22">White</div>
|
||||
</div>
|
||||
<div class="menu-sidebar" id="menu-sidebar-cat">
|
||||
<div class="header">Standard Cat</div>
|
||||
<div breed='standard' image-offset="390" image-items="180" class="page-29-2" data-percolor="6">Solid Richtig</div>
|
||||
<div breed='standard' image-offset="0" image-items="180" class="page-29-0" data-percolor="6">Tabby Richtig</div>
|
||||
<div breed='standard' image-offset="570" image-items="180" class="page-29-3" data-percolor="6">Spotted Tabby #1</div>
|
||||
<div breed='standard' image-offset="750" image-items="18" class="page-29-4" data-percolor="6">Spotted Tabby #2</div>
|
||||
<div breed='standard' image-offset="180" image-items="210" class="page-29-1" data-percolor="7">Calico</div>
|
||||
<div breed='standard' image-offset="767" image-items="3" class="page-29-22" data-percolor="1">White</div>
|
||||
<div class="header">Oriental Cat</div>
|
||||
<div breed='oriental' image-offset="0" image-items="180" class="page-30-0" data-percolor="6">Pointed</div>
|
||||
<div breed='oriental' image-offset="180" image-items="180" class="page-30-1" data-percolor="6">Smoke</div>
|
||||
<div breed='oriental' image-offset="360" image-items="33" class="page-30-12" data-percolor="1">Surprise me!</div>
|
||||
<div class="header">Longhaired Cat</div>
|
||||
<div breed='longhair' image-offset="0" image-items="180" class="page-31-0" data-percolor="6">Pointed</div>
|
||||
<div breed='longhair' image-offset="180" image-items="180" class="page-31-1" data-percolor="6">Bicolour #1</div>
|
||||
<div breed='longhair' image-offset="360" image-items="180" class="page-31-2" data-percolor="6">Bicolour #2</div>
|
||||
<div breed='longhair' image-offset="540" image-items="3" class="page-31-22" data-percolor="1">White</div>
|
||||
</div>
|
||||
<div id="menu-content">
|
||||
<div id="eyecolor">
|
||||
<input type="radio" name="eyecolor" id="eye_gray" data-offset="0" checked>
|
||||
<label for="eye_gray">Gray</label>
|
||||
<input type="radio" name="eyecolor" id="eye_yellow" data-offset="1">
|
||||
<label for="eye_yellow">Yellow</label>
|
||||
<input type="radio" name="eyecolor" id="eye_blue" data-offset="2">
|
||||
<label for="eye_blue">Blue</label>
|
||||
</div>
|
||||
</div>
|
||||
<button id="menu-close">OK</button>
|
||||
</dialog>
|
||||
<!-- HEADER -->
|
||||
<div id="header">
|
||||
<div id="header-top">
|
||||
@ -49,149 +264,34 @@
|
||||
<!-- Money -->
|
||||
<h3 class="orange">Account</h3>
|
||||
<div class="container">
|
||||
<div class="row" id="row-lastsaved">
|
||||
<div class="columns c7"><label for="input-lastsaved">Last Saved</label></div>
|
||||
<div class="columns c3"><input id="input-lastsaved" type="text" class="fw text-right" readonly /></div>
|
||||
<button class="columns c2" style="margin-left:0;margin-right:0" id="update-lastsaved">Now</button>
|
||||
</div>
|
||||
<div class="row" id="row-money">
|
||||
<div class="columns c8"><label for="number-money">Money</label></div>
|
||||
<div class="columns c4"><input id="number-money" type="text" class="fw text-right" /></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3 class="orange">Pet 1</h3>
|
||||
<div class="container">
|
||||
<div class="row" id="row-pet1">
|
||||
<div class="columns c8"><label for="checkbox-pet1-active">Pet Present</label></div>
|
||||
<div class="columns c4"><input id="checkbox-pet1-active" type="checkbox" class="fw" /></div>
|
||||
<div class="columns c8"><label for="input-pet1-name">Name</label></div>
|
||||
<div class="columns c4"><input id="input-pet1-name" type="text" class="fw" /></div>
|
||||
<div class="columns c8">Gender</div><div class="columns c4" id="container-pet1-gender"></div>
|
||||
<div class="columns c8">Breed</div><div class="columns c4" id="container-pet1-breed"></div>
|
||||
<!-- Broken
|
||||
<div class="columns c8"><label for="number-pet1-breed-color">Breed Color</label></div>
|
||||
<div class="columns c4"><input id="number-pet1-breed-color" type="text" class="fw text-right" /></div>
|
||||
-->
|
||||
<!-- Experimental
|
||||
<div class="columns c8"><label for="number-pet1-hunger">Hunger Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet1-hunger" type="text" class="fw text-right" /></div>
|
||||
<div class="columns c8"><label for="number-pet1-thirst">Thirst Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet1-thirst" type="text" class="fw text-right" /></div>
|
||||
<div class="columns c8"><label for="number-pet1-coat">Coat Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet1-coat" type="text" class="fw text-right" /></div>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
<h3 class="orange">Pet 2</h3>
|
||||
<div class="container">
|
||||
<div class="row" id="row-pet2">
|
||||
<div class="columns c8"><label for="checkbox-pet2-active">Pet Present</label></div>
|
||||
<div class="columns c4"><input id="checkbox-pet2-active" type="checkbox" class="fw" /></div>
|
||||
<div class="columns c8"><label for="checkbox-pet2-name">Name</label></div>
|
||||
<div class="columns c4"><input id="input-pet2-name" type="text" class="fw" /></div>
|
||||
<div class="columns c8">Gender</div><div class="columns c4" id="container-pet2-gender"></div>
|
||||
<div class="columns c8">Breed</div><div class="columns c4" id="container-pet2-breed"></div>
|
||||
<!-- Broken
|
||||
<div class="columns c8"><label for="number-pet2-breed-color">Breed Color</label></div>
|
||||
<div class="columns c4"><input id="number-pet2-breed-color" type="text" class="fw text-right" /></div>
|
||||
-->
|
||||
<!-- Experimental
|
||||
<div class="columns c8"><label for="number-pet2-hunger">Hunger Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet2-hunger" type="text" class="fw text-right" /></div>
|
||||
<div class="columns c8"><label for="number-pet2-thirst">Thirst Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet2-thirst" type="text" class="fw text-right" /></div>
|
||||
<div class="columns c8"><label for="number-pet2-coat">Coat Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet2-coat" type="text" class="fw text-right" /></div>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
<h3 class="orange">Pet 3</h3>
|
||||
<div class="container">
|
||||
<div class="row" id="row-pet3">
|
||||
<div class="columns c8"><label for="checkbox-pet3-active">Pet Present</label></div>
|
||||
<div class="columns c4"><input id="checkbox-pet3-active" type="checkbox" class="fw" /></div>
|
||||
<div class="columns c8"><label for="input-pet3-name">Name</label></div>
|
||||
<div class="columns c4"><input id="input-pet3-name" type="text" class="fw" /></div>
|
||||
<div class="columns c8">Gender</div><div class="columns c4" id="container-pet3-gender"></div>
|
||||
<div class="columns c8">Breed</div><div class="columns c4" id="container-pet3-breed"></div>
|
||||
<!-- Broken
|
||||
<div class="columns c8"><label for="number-pet3-breed-color">Breed Color</label></div>
|
||||
<div class="columns c4"><input id="number-pet3-breed-color" type="text" class="fw text-right" /></div>
|
||||
-->
|
||||
<!-- Experimental
|
||||
<div class="columns c8"><label for="number-pet3-hunger">Hunger Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet3-hunger" type="text" class="fw text-right" /></div>
|
||||
<div class="columns c8"><label for="number-pet3-thirst">Thirst Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet3-thirst" type="text" class="fw text-right" /></div>
|
||||
<div class="columns c8"><label for="number-pet3-coat">Coat Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet3-coat" type="text" class="fw text-right" /></div>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
<h3 class="orange">Pet 4</h3>
|
||||
<div class="container">
|
||||
<div class="row" id="row-pet4">
|
||||
<div class="columns c8"><label for="checkbox-pet4-active">Pet Present</label></div>
|
||||
<div class="columns c4"><input id="checkbox-pet4-active" type="checkbox" class="fw" /></div>
|
||||
<div class="columns c8"><label for="input-pet4-name">Name</label></div>
|
||||
<div class="columns c4"><input id="input-pet4-name" type="text" class="fw" /></div>
|
||||
<div class="columns c8">Gender</div><div class="columns c4" id="container-pet4-gender"></div>
|
||||
<div class="columns c8">Breed</div><div class="columns c4" id="container-pet4-breed"></div>
|
||||
<!-- Broken
|
||||
<div class="columns c8"><label for="number-pet4-breed-color">Breed Color</label></div>
|
||||
<div class="columns c4"><input id="number-pet4-breed-color" type="text" class="fw text-right" /></div>
|
||||
-->
|
||||
<!-- Experimental
|
||||
<div class="columns c8"><label for="number-pet4-hunger">Hunger Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet4-hunger" type="text" class="fw text-right" /></div>
|
||||
<div class="columns c8"><label for="number-pet4-thirst">Thirst Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet4-thirst" type="text" class="fw text-right" /></div>
|
||||
<div class="columns c8"><label for="number-pet4-coat">Coat Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet4-coat" type="text" class="fw text-right" /></div>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
<h3 class="orange">Pet 5</h3>
|
||||
<div class="container">
|
||||
<div class="row" id="row-pet5">
|
||||
<div class="columns c8"><label for="checkbox-pet5-active">Pet Present</label></div>
|
||||
<div class="columns c4"><input id="checkbox-pet5-active" type="checkbox" class="fw" /></div>
|
||||
<div class="columns c8"><label for="input-pet5-name">Name</label></div>
|
||||
<div class="columns c4"><input id="input-pet5-name" type="text" class="fw" /></div>
|
||||
<div class="columns c8">Gender</div><div class="columns c4" id="container-pet5-gender"></div>
|
||||
<div class="columns c8">Breed</div><div class="columns c4" id="container-pet5-breed"></div>
|
||||
<!-- Broken
|
||||
<div class="columns c8"><label for="number-pet5-breed-color">Breed Color</label></div>
|
||||
<div class="columns c4"><input id="number-pet5-breed-color" type="text" class="fw text-right" /></div>
|
||||
-->
|
||||
<!-- Experimental
|
||||
<div class="columns c8"><label for="number-pet5-hunger">Hunger Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet5-hunger" type="text" class="fw text-right" /></div>
|
||||
<div class="columns c8"><label for="number-pet5-thirst">Thirst Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet5-thirst" type="text" class="fw text-right" /></div>
|
||||
<div class="columns c8"><label for="number-pet5-coat">Coat Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet5-coat" type="text" class="fw text-right" /></div>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
<h3 class="orange">Pet 6</h3>
|
||||
<div class="container">
|
||||
<div class="row" id="row-pet6">
|
||||
<div class="columns c8"><label for="checkbox-pet6-active">Pet Present</label></div>
|
||||
<div class="columns c4"><input id="checkbox-pet6-active" type="checkbox" class="fw" /></div>
|
||||
<div class="columns c8"><label for="input-pet6-name">Name</label></div>
|
||||
<div class="columns c4"><input id="input-pet6-name" type="text" class="fw" /></div>
|
||||
<div class="columns c8">Gender</div><div class="columns c4" id="container-pet6-gender"></div>
|
||||
<div class="columns c8">Breed</div><div class="columns c4" id="container-pet6-breed"></div>
|
||||
<!-- Broken
|
||||
<div class="columns c8"><label for="number-pet6-breed-color">Breed Color</label></div>
|
||||
<div class="columns c4"><input id="number-pet6-breed-color" type="text" class="fw text-right" /></div>
|
||||
-->
|
||||
<!-- Experimental
|
||||
<div class="columns c8"><label for="number-pet6-hunger">Hunger Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet6-hunger" type="text" class="fw text-right" /></div>
|
||||
<div class="columns c8"><label for="number-pet6-thirst">Thirst Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet6-thirst" type="text" class="fw text-right" /></div>
|
||||
<div class="columns c8"><label for="number-pet6-coat">Coat Status</label></div>
|
||||
<div class="columns c4"><input id="number-pet6-coat" type="text" class="fw text-right" /></div>
|
||||
-->
|
||||
<div class="row" id="row-owner-points">
|
||||
<div class="columns c8"><label for="number-owner-points">Owner Points</label></div>
|
||||
<div class="columns c4"><input class="fw text-right" id="number-owner-points" type="text" /></div>
|
||||
</div>
|
||||
<div class="row" id="row-pedometer">
|
||||
<div class="columns c8"><label for="number-pedometer">Pedometer</label></div>
|
||||
<div class="columns c4"><input id="number-pedometer" type="text" class="fw text-right" /></div>
|
||||
</div>
|
||||
<div class="row" id="row-streetpass-met">
|
||||
<div class="columns c8"><label for="number-streetpass-met">People Met</label></div>
|
||||
<div class="columns c4"><input id="number-streetpass-met" type="text" class="fw text-right" /></div>
|
||||
</div>
|
||||
<div class="row" id="row-walking-counter">
|
||||
<div class="columns c7"><label for="input-walking-counter">Walking Counter</label></div>
|
||||
<div class="columns c4"><input id="number-walking-counter" type="text" class="fw text-right" /></div>
|
||||
</div>
|
||||
</div>
|
||||
<h3 class="orange">Pets</h3>
|
||||
<div id="pet_tabs"></div>
|
||||
<!-- Supplies -->
|
||||
<h3 class="orange">Food & Drink</h3>
|
||||
<div class="container">
|
||||
|
52
nintendogs+cats/nintendogs+cats.css
Normal file
52
nintendogs+cats/nintendogs+cats.css
Normal file
@ -0,0 +1,52 @@
|
||||
#pet_tabs input:checked + label {
|
||||
background: #2c2f34;
|
||||
}
|
||||
|
||||
#pet_tabs input[type=radio] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#pet_tabs label.pet_label {
|
||||
background: #4c4f53;
|
||||
height: 50px;
|
||||
display: inline-table;
|
||||
text-align: center;
|
||||
transition: background-color .15s;
|
||||
}
|
||||
|
||||
#pet_tabs input:not(:checked) + label:hover {
|
||||
background: #6e7177;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pet_label .sprite {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.pet_tab_content {
|
||||
display: none;
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
|
||||
#pet_tabs .pet_label {
|
||||
padding: 5px;
|
||||
}
|
||||
#pet_tabs .pet_label .sprite {
|
||||
margin:auto;
|
||||
}
|
||||
|
||||
#pet_tabs .pet_label:nth-of-type(1) {
|
||||
border-top-left-radius: 5px;
|
||||
}
|
||||
#pet_tabs .pet_label:last-of-type {
|
||||
border-top-right-radius: 5px;
|
||||
}
|
||||
|
||||
.pet_tab:checked:nth-of-type(1) ~ .pet_tab_content:nth-of-type(1),
|
||||
.pet_tab:checked:nth-of-type(2) ~ .pet_tab_content:nth-of-type(2),
|
||||
.pet_tab:checked:nth-of-type(3) ~ .pet_tab_content:nth-of-type(3),
|
||||
.pet_tab:checked:nth-of-type(4) ~ .pet_tab_content:nth-of-type(4),
|
||||
.pet_tab:checked:nth-of-type(5) ~ .pet_tab_content:nth-of-type(5),
|
||||
.pet_tab:checked:nth-of-type(6) ~ .pet_tab_content:nth-of-type(6) {
|
||||
display: block;
|
||||
}
|
@ -3,6 +3,31 @@
|
||||
by Marc Robledo 2016
|
||||
*/
|
||||
var reg = /\d+/;
|
||||
|
||||
var diffs = [1056964607, 12582913, 6291456, 4194304];
|
||||
for (var i = 0; i < 30; i++) {
|
||||
diffs.push(diffs[diffs.length-2]*0.5);
|
||||
}
|
||||
var value = 0;
|
||||
var level_borders = [];
|
||||
for (var j = 0; j < 34; j++) {
|
||||
var amount = 1;
|
||||
if (j > 3 && j%2==1) {
|
||||
amount = Math.pow(2, (j-1)*0.5)-1;
|
||||
}
|
||||
for (var k = 0; k < amount; k++) {
|
||||
level_borders.push([value, value + diffs[j] - 1]);
|
||||
|
||||
value += diffs[j];
|
||||
}
|
||||
if (level_borders.length > 99999) {
|
||||
level_borders.length = 100000;
|
||||
break;
|
||||
}
|
||||
}
|
||||
level_borders[99999][1] = 1203982336;
|
||||
|
||||
|
||||
SavegameEditor={
|
||||
Name:'Nintendogs + Cats',
|
||||
Filename:'sysdata.dat',
|
||||
@ -10,41 +35,14 @@ SavegameEditor={
|
||||
/* Constants */
|
||||
Constants:{
|
||||
MONEY_OFFSET:0xA0,
|
||||
LASTSAVED_OFFSET:0x10,
|
||||
GENDERS:[
|
||||
{value:0, name:'Male'},
|
||||
{value:1, name:'Female'}
|
||||
],
|
||||
PET_BREEDS:[
|
||||
{value:0, name:'Beagle'},
|
||||
{value:1, name:'Golden Retriever'},
|
||||
{value:2, name:'Yorkshire Terrier'},
|
||||
{value:3, name:'Miniature Dachshund'},
|
||||
{value:4, name:'Chihuahua'},
|
||||
{value:5, name:'Chihuahua'},
|
||||
{value:6, name:'Toy Poodle #1'},
|
||||
{value:7, name:'Toy Poodle #2'},
|
||||
{value:8, name:'Shiba'},
|
||||
{value:9, name:'Labrador Retriever'},
|
||||
{value:10, name:'Spaniel'},
|
||||
{value:11, name:'Pug'},
|
||||
{value:12, name:'Shih Tzu'},
|
||||
{value:13, name:'Shetland Sheepdog'},
|
||||
{value:14, name:'Miniature Schnauzer'},
|
||||
{value:15, name:'Pembroke Welsh Corgi'},
|
||||
{value:16, name:'Miniature Pinscher'},
|
||||
{value:17, name:'German Shepherd Dog'},
|
||||
{value:18, name:'Jack Russell Terrier'},
|
||||
{value:19, name:'Siberian Husky'},
|
||||
{value:20, name:'Boxer'},
|
||||
{value:21, name:'Dalmatiner'},
|
||||
{value:22, name:'Pomeranian'},
|
||||
{value:23, name:'French Bulldog'},
|
||||
{value:25, name:'Cocker Spaniel'},
|
||||
{value:26, name:'Great Dane'},
|
||||
{value:27, name:'Bull Terrier'},
|
||||
{value:28, name:'Basset Hound'},
|
||||
{value:32, name:'RoboPup'}
|
||||
],
|
||||
STREETPASS_MET_OFFSET: 0x98,
|
||||
OWNER_POINTS_OFFSET: 0x9C,
|
||||
PEDOMETER_OFFSET: 0x218,
|
||||
PET_OFFSET:[
|
||||
0x026A, // 618
|
||||
0x1E6A, // 7,786
|
||||
@ -53,14 +51,38 @@ SavegameEditor={
|
||||
0x726A, // 29,290
|
||||
0x8E6A // 36,458
|
||||
],
|
||||
PET_NAME_OFFSET: 0x42, // 66
|
||||
PET_POINTS_OFFSET: 0x3E, // 62
|
||||
PET_GENDER_OFFSET: 0x56, // 86
|
||||
PET_HUNGER_OFFSET: 0x84, // 132
|
||||
PET_THIRST_OFFSET: 0x88, // 136
|
||||
PET_COAT_OFFSET: 0x8C, // 140
|
||||
PET_BREED_OFFSET: 0x32, // 50
|
||||
PET_BREED_COLOR_OFFSET: 0x33 // 51
|
||||
PET_NAME_OFFSET: 0x42, // 66
|
||||
PET_GENDER_OFFSET: 0x56, // 86
|
||||
PET_POINTS_OFFSET_CAT: 0x5A, // 90
|
||||
PET_POINTS_OFFSET_DOG: 0x62, // 98
|
||||
PET_BREED_OFFSET: 0x32, // 50
|
||||
PET_BREED_VARIANT_OFFSET: 0x33, // 51 = Variant (e.g. Spaniel = 0:Blentheim, 1:Tricolour, 2:Ruby)
|
||||
PET_BREED_STYLE_OFFSET: 0x34, // 52 = Hairstyle
|
||||
PET_BREED_EYE_COLOR_OFFSET: 0x35, // 53 = Eye Color (Cats: 0=gray, 1=yellow, 2=blue; Dogs: 255)
|
||||
PET_BREED_COLOR_OFFSET: 0x36, // 54 = Fur Color
|
||||
PET1_COMP_DISC_PLAYED: 0x24E,
|
||||
PET1_COMP_OBED_PLAYED: 0x24F,
|
||||
PET1_COMP_LURE_PLAYED: 0x250,
|
||||
PET2_COMP_DISC_PLAYED: 0x251,
|
||||
PET2_COMP_OBED_PLAYED: 0x252,
|
||||
PET2_COMP_LURE_PLAYED: 0x253,
|
||||
PET3_COMP_DISC_PLAYED: 0x254,
|
||||
PET3_COMP_OBED_PLAYED: 0x255,
|
||||
PET3_COMP_LURE_PLAYED: 0x256,
|
||||
PET4_COMP_DISC_PLAYED: 0x257,
|
||||
PET4_COMP_OBED_PLAYED: 0x258,
|
||||
PET4_COMP_LURE_PLAYED: 0x259,
|
||||
PET5_COMP_DISC_PLAYED: 0x25A,
|
||||
PET5_COMP_OBED_PLAYED: 0x25B,
|
||||
PET5_COMP_LURE_PLAYED: 0x25C,
|
||||
PET6_COMP_DISC_PLAYED: 0x25D,
|
||||
PET6_COMP_OBED_PLAYED: 0x25E,
|
||||
PET6_COMP_LURE_PLAYED: 0x25F,
|
||||
PET_PERSONALITIES_OFFSET_DOG1: 0x1F6,
|
||||
PET_PERSONALITIES_OFFSET_DOG2: 0x1FA,
|
||||
PET_PERSONALITIES_OFFSET_CAT1: 0x1EE,
|
||||
PET_PERSONALITIES_OFFSET_CAT2: 0x1F2,
|
||||
WALKING_COUNTER_OFFSET: 0x215
|
||||
},
|
||||
|
||||
_write_money:function(){
|
||||
@ -69,6 +91,24 @@ SavegameEditor={
|
||||
getValue('money')
|
||||
);
|
||||
},
|
||||
_write_streetpass_met:function(){
|
||||
tempFile.writeU32(
|
||||
SavegameEditor.Constants.STREETPASS_MET_OFFSET,
|
||||
getValue('streetpass-met')
|
||||
);
|
||||
},
|
||||
_write_pedometer:function(){
|
||||
tempFile.writeU32(
|
||||
SavegameEditor.Constants.PEDOMETER_OFFSET,
|
||||
getValue('pedometer')
|
||||
);
|
||||
},
|
||||
_write_walking_counter:function(){
|
||||
tempFile.writeU8(
|
||||
SavegameEditor.Constants.WALKING_COUNTER_OFFSET,
|
||||
getValue('walking-counter')
|
||||
);
|
||||
},
|
||||
_write_supply_amount:function(e){
|
||||
tempFile.writeU8(
|
||||
Number(e.target.dataset.offset),
|
||||
@ -83,45 +123,57 @@ SavegameEditor={
|
||||
10,
|
||||
getValue(e.target.id)
|
||||
);
|
||||
|
||||
document.getElementsByClassName('pet' + index + '_name')[0].innerText = getValue(e.target.id);
|
||||
},
|
||||
_write_u_number:function(e, n, o){
|
||||
_write_u_number:function(e, n, o, g){
|
||||
var index = Number((e.target.id).match(reg)[0]);
|
||||
var offset = SavegameEditor.Constants.PET_OFFSET[index-1]+SavegameEditor.Constants[o];
|
||||
var pet_offset = SavegameEditor.Constants.PET_OFFSET[index-1];
|
||||
if (g) {
|
||||
pet_offset = 0;
|
||||
}
|
||||
var offset = pet_offset+SavegameEditor.Constants[o];
|
||||
tempFile['writeU' + n](
|
||||
offset,
|
||||
getValue(e.target.id)
|
||||
Number(getValue(e.target.id))
|
||||
);
|
||||
},
|
||||
_write_pet_gender:function(e){
|
||||
SavegameEditor._write_u_number(e, 8, 'PET_GENDER_OFFSET');
|
||||
_write_pet_value:function(e){
|
||||
SavegameEditor._write_u_number(e, Number(e.target.parentElement.dataset.size), e.target.parentElement.dataset.var, e.target.parentElement.dataset.global);
|
||||
},
|
||||
_write_pet_points:function(e){
|
||||
SavegameEditor._write_u_number(e, 24, 'PET_POINTS_OFFSET');
|
||||
_getPetData(petOffset, value, size) {
|
||||
return tempFile['readU' + (size || 8)](SavegameEditor.Constants.PET_OFFSET[petOffset]+SavegameEditor.Constants[value]);
|
||||
},
|
||||
_write_pet_hunger:function(e){
|
||||
SavegameEditor._write_u_number(e, 16, 'PET_HUNGER_OFFSET');
|
||||
_mark_as_changed(e) {
|
||||
e.target.dataset.data_changed=true;
|
||||
},
|
||||
_write_pet_thirst:function(e){
|
||||
SavegameEditor._write_u_number(e, 16, 'PET_THIRST_OFFSET');
|
||||
},
|
||||
_write_pet_coat:function(e){
|
||||
SavegameEditor._write_u_number(e, 16, 'PET_COAT_OFFSET');
|
||||
},
|
||||
_write_pet_breed:function(e){
|
||||
SavegameEditor._write_u_number(e, 8, 'PET_BREED_OFFSET');
|
||||
},
|
||||
_write_pet_breed_color:function(e){
|
||||
SavegameEditor._write_u_number(e, 8, 'PET_BREED_COLOR_OFFSET');
|
||||
},
|
||||
|
||||
/* check if savegame is valid */
|
||||
checkValidSavegame:function(){
|
||||
return (tempFile.fileSize==60936);
|
||||
},
|
||||
|
||||
preload:function() {
|
||||
var btn_last_saved = document.getElementById('update-lastsaved');
|
||||
btn_last_saved.addEventListener('click', function(e) {
|
||||
tempFile.writeU32(
|
||||
SavegameEditor.Constants.LASTSAVED_OFFSET,
|
||||
Math.floor(Date.now() * 0.001)
|
||||
);
|
||||
var a = new Date (Number(tempFile.readU32(SavegameEditor.Constants.LASTSAVED_OFFSET)) * 1000);
|
||||
a.setHours(a.getHours() - a.getTimezoneOffset()/60);
|
||||
setValue('lastsaved', a.toLocaleString("en-GB", {
|
||||
day: "numeric",
|
||||
month: "short",
|
||||
year: "numeric",
|
||||
hour: "2-digit",
|
||||
minute: "2-digit",
|
||||
second: "2-digit"
|
||||
}));
|
||||
}, false);
|
||||
get('number-money').addEventListener('change', SavegameEditor._write_money);
|
||||
|
||||
get('number-streetpass-met').addEventListener('change', SavegameEditor._write_streetpass_met);
|
||||
get('number-pedometer').addEventListener('change', SavegameEditor._write_pedometer);
|
||||
get('number-walking-counter').addEventListener('change', SavegameEditor._write_walking_counter);
|
||||
fetch('/savegame-editors/nintendogs+cats/supplies.json')
|
||||
.then(function(response) {
|
||||
return response.json();
|
||||
@ -163,47 +215,191 @@ SavegameEditor={
|
||||
|
||||
setValue('money', tempFile.readU32(SavegameEditor.Constants.MONEY_OFFSET));
|
||||
setNumericRange('money', 0, 9999999);
|
||||
|
||||
for (var i=0; i<6; i++){
|
||||
var pet_present = tempFile.readU8(SavegameEditor.Constants.PET_OFFSET[i]) > 0;
|
||||
getField('checkbox-pet' + (i+1) + '-active').checked = pet_present;
|
||||
|
||||
get('container-pet' + (i+1) + '-breed').appendChild(select('pet'+(i+1)+'-breed', SavegameEditor.Constants.PET_BREEDS, SavegameEditor._write_pet_breed));
|
||||
get('container-pet' + (i+1) + '-gender').appendChild(select('pet' + (i+1) + '-gender', SavegameEditor.Constants.GENDERS, SavegameEditor._write_pet_gender));
|
||||
|
||||
getField('checkbox-pet' + (i+1) + '-active').setAttribute('disabled', '');
|
||||
getField('input-pet' + (i+1) + '-name').readOnly = !pet_present;
|
||||
if (pet_present) {
|
||||
getField('select-pet' + (i+1) + '-gender').removeAttribute('disabled');
|
||||
getField('select-pet' + (i+1) + '-breed').removeAttribute('disabled');
|
||||
} else {
|
||||
getField('select-pet' + (i+1) + '-gender').setAttribute('disabled', '');
|
||||
getField('select-pet' + (i+1) + '-breed').setAttribute('disabled', '');
|
||||
|
||||
setValue('streetpass-met', tempFile.readU32(SavegameEditor.Constants.STREETPASS_MET_OFFSET));
|
||||
setNumericRange('streetpass-met', 0, 9999999);
|
||||
|
||||
setValue('pedometer', tempFile.readU32(SavegameEditor.Constants.PEDOMETER_OFFSET));
|
||||
setNumericRange('pedometer', 0, 9999999);
|
||||
|
||||
setValue('walking-counter', tempFile.readU8(SavegameEditor.Constants.WALKING_COUNTER_OFFSET));
|
||||
setNumericRange('walking-counter', 0, 255);
|
||||
|
||||
setNumericRange('owner-points', 0, 99999);
|
||||
var owner_points = tempFile.readU32(SavegameEditor.Constants.OWNER_POINTS_OFFSET);
|
||||
for (var k = 0; k < level_borders.length; k++) {
|
||||
if (owner_points >= level_borders[k][0] && owner_points <= level_borders[k][1]) {
|
||||
setValue('owner-points', k);
|
||||
break;
|
||||
}
|
||||
setValue('pet' + (i+1) + '-name', tempFile.readU16String(SavegameEditor.Constants.PET_OFFSET[i]+SavegameEditor.Constants.PET_NAME_OFFSET, 10));
|
||||
setValue('pet' + (i+1) + '-gender', tempFile.readU8(SavegameEditor.Constants.PET_OFFSET[i]+SavegameEditor.Constants.PET_GENDER_OFFSET));
|
||||
setValue('pet' + (i+1) + '-breed', tempFile.readU8(SavegameEditor.Constants.PET_OFFSET[i]+SavegameEditor.Constants.PET_BREED_OFFSET));
|
||||
get('input-pet' + (i+1) + '-name').addEventListener('change', SavegameEditor._write_pet_name);
|
||||
|
||||
// Experimental
|
||||
/*
|
||||
getField('number-pet' + (i+1) + '-hunger').readOnly = !pet_present;
|
||||
getField('number-pet' + (i+1) + '-thirst').readOnly = !pet_present;
|
||||
getField('number-pet' + (i+1) + '-coat').readOnly = !pet_present;
|
||||
setNumericRange('pet' + (i+1) + '-hunger', 0, 17529);
|
||||
setNumericRange('pet' + (i+1) + '-thirst', 0, 17529);
|
||||
setNumericRange('pet' + (i+1) + '-coat', 0, 17529);
|
||||
setValue('pet' + (i+1) + '-hunger', tempFile.readU16(SavegameEditor.Constants.PET_OFFSET[i]+SavegameEditor.Constants.PET_HUNGER_OFFSET));
|
||||
setValue('pet' + (i+1) + '-thirst', tempFile.readU16(SavegameEditor.Constants.PET_OFFSET[i]+SavegameEditor.Constants.PET_THIRST_OFFSET));
|
||||
setValue('pet' + (i+1) + '-coat', tempFile.readU16(SavegameEditor.Constants.PET_OFFSET[i]+SavegameEditor.Constants.PET_COAT_OFFSET));
|
||||
get('number-pet' + (i+1) + '-hunger').addEventListener('change', SavegameEditor._write_pet_hunger);
|
||||
get('number-pet' + (i+1) + '-thirst').addEventListener('change', SavegameEditor._write_pet_thirst);
|
||||
get('number-pet' + (i+1) + '-coat').addEventListener('change', SavegameEditor._write_pet_coat);
|
||||
*/
|
||||
}
|
||||
var level_ele_ = get('number-owner-points');
|
||||
level_ele_.addEventListener('change', SavegameEditor._mark_as_changed);
|
||||
|
||||
var a = new Date (Number(tempFile.readU32(SavegameEditor.Constants.LASTSAVED_OFFSET)) * 1000);
|
||||
setValue('lastsaved', a.toLocaleString("en-GB", {
|
||||
day: "numeric",
|
||||
month: "short",
|
||||
year: "numeric",
|
||||
hour: "2-digit",
|
||||
minute: "2-digit",
|
||||
second: "2-digit",
|
||||
timezone: "Europe/London"
|
||||
}));
|
||||
var template = document.getElementById("template-row-pet");
|
||||
var pet_tabs = document.getElementById('pet_tabs');
|
||||
pet_tabs.innerText = '';
|
||||
var pet_tabs_content_seperator = document.createElement('div');
|
||||
pet_tabs.appendChild(pet_tabs_content_seperator);
|
||||
var first_pet = true;
|
||||
for (var i=1; i<7; i++){
|
||||
var pet_present = tempFile.readU8(SavegameEditor.Constants.PET_OFFSET[i-1]) > 0;
|
||||
if (!pet_present) {continue;}
|
||||
var pet_tab_input = document.createElement('input');
|
||||
pet_tab_input.name = 'pet_tabgroup';
|
||||
pet_tab_input.type = 'radio';
|
||||
pet_tab_input.id = 'pet_tab' + i;
|
||||
if (first_pet) {
|
||||
pet_tab_input.checked = true;
|
||||
first_pet = false;
|
||||
}
|
||||
pet_tab_input.className = 'pet_tab';
|
||||
pet_tabs.insertBefore(pet_tab_input, pet_tabs_content_seperator);
|
||||
var pet_tab_label = document.createElement('label');
|
||||
pet_tab_label.className = 'pet_label';
|
||||
pet_tab_label.setAttribute('for', 'pet_tab' + i);
|
||||
pet_tabs.insertBefore(pet_tab_label, pet_tabs_content_seperator);
|
||||
|
||||
var templateClone = template.content.cloneNode(true);
|
||||
templateClone.querySelector('.row').id="row-pet"+i;
|
||||
for (var ele of templateClone.querySelectorAll('.update-name')) {
|
||||
if ((ele.id || '').includes('petX')) {
|
||||
ele.id = ele.id.replaceAll('petX', 'pet' + i);
|
||||
}
|
||||
if (ele.getAttribute('for')) {
|
||||
ele.setAttribute('for', ele.getAttribute('for').replaceAll('petX', 'pet' + i));
|
||||
}
|
||||
if ((ele.dataset && ele.dataset.var || '').includes('PETX')) {
|
||||
ele.dataset.var = ele.dataset.var.replaceAll('PETX', 'PET' + i);
|
||||
}
|
||||
}
|
||||
var breed = SavegameEditor._getPetData(i-1, 'PET_BREED_OFFSET');
|
||||
var isDog = true;
|
||||
if (breed > 28 && breed < 32)
|
||||
isDog = false;
|
||||
pet_tabs.appendChild(templateClone);
|
||||
var dialogClassName = 'page-' +
|
||||
breed +
|
||||
'-' +
|
||||
SavegameEditor._getPetData(i-1, 'PET_BREED_VARIANT_OFFSET');
|
||||
const dialogEle = document.getElementsByClassName(
|
||||
dialogClassName
|
||||
)[0];
|
||||
if (!isDog) {
|
||||
document.getElementById('eyecolor').querySelector('[data-offset="' + SavegameEditor._getPetData(i-1, 'PET_BREED_EYE_COLOR_OFFSET') + '"]').checked=true;
|
||||
}
|
||||
window._sidebar_event({
|
||||
target: dialogEle
|
||||
});
|
||||
var breedImg = document.createElement('img');
|
||||
var breedImgTmp = document
|
||||
.getElementById('menu-content')
|
||||
.getElementsByClassName(dialogClassName)[0]
|
||||
.querySelector('div[data-color="' + SavegameEditor._getPetData(i-1, 'PET_BREED_COLOR_OFFSET') + '"][data-style="' + SavegameEditor._getPetData(i-1, 'PET_BREED_STYLE_OFFSET') + '"]'
|
||||
);
|
||||
if (breedImgTmp) {
|
||||
breedImg = breedImgTmp.cloneNode();
|
||||
breedImg.id='petimage'+i;
|
||||
}
|
||||
get('container-pet' + i + '-breed').appendChild(breedImg);
|
||||
var breedImg2 = breedImg.cloneNode();
|
||||
breedImg2.id = '';
|
||||
pet_tab_label.appendChild(breedImg2);
|
||||
|
||||
var dialogbtn = document.createElement('button');
|
||||
dialogbtn.dataset.pet = i - 1;
|
||||
dialogbtn.onclick = function(e) {
|
||||
e.preventDefault();
|
||||
get('menu').dataset.pet = e.target.dataset.pet;
|
||||
get('menu').showModal();
|
||||
var breed = SavegameEditor._getPetData(e.target.dataset.pet, 'PET_BREED_OFFSET');
|
||||
var dialogClassName_ = 'page-' +
|
||||
breed +
|
||||
'-' +
|
||||
SavegameEditor._getPetData(e.target.dataset.pet, 'PET_BREED_VARIANT_OFFSET');
|
||||
var dialogEle_ = document.getElementsByClassName(
|
||||
dialogClassName_
|
||||
)[0];
|
||||
if (breed > 28 && breed < 32) {
|
||||
document.getElementById('eyecolor').querySelector('[data-offset="' + SavegameEditor._getPetData(e.target.dataset.pet, 'PET_BREED_EYE_COLOR_OFFSET') + '"]').checked=true;
|
||||
}
|
||||
window._sidebar_event({
|
||||
target: dialogEle_
|
||||
});
|
||||
};
|
||||
dialogbtn.innerText = 'Change';
|
||||
get('container-pet' + i + '-breed').appendChild(dialogbtn);
|
||||
|
||||
get('container-pet' + i + '-gender').appendChild(select('pet' + i + '-gender', SavegameEditor.Constants.GENDERS, SavegameEditor._write_pet_value));
|
||||
|
||||
setValue('pet' + i + '-name', tempFile.readU16String(SavegameEditor.Constants.PET_OFFSET[i-1]+SavegameEditor.Constants.PET_NAME_OFFSET, 10));
|
||||
var pet_tab_label_name = document.createElement('span');
|
||||
pet_tab_label_name.innerText = getValue('pet' + i + '-name');
|
||||
pet_tab_label_name.className = 'pet' + i + '_name';
|
||||
pet_tab_label.appendChild(pet_tab_label_name);
|
||||
setValue('pet' + i + '-gender', SavegameEditor._getPetData(i-1, 'PET_GENDER_OFFSET'));
|
||||
get('input-pet' + i + '-name').addEventListener('change', SavegameEditor._write_pet_name);
|
||||
|
||||
setNumericRange('pet' + i + '-disc-played', 0, 2);
|
||||
setValue('pet' + i + '-disc-played', tempFile.readU8(SavegameEditor.Constants['PET' + i + '_COMP_DISC_PLAYED']));
|
||||
get('number-pet' + i + '-disc-played').addEventListener('change', SavegameEditor._write_pet_value);
|
||||
setNumericRange('pet' + i + '-lure-played', 0, 2);
|
||||
setValue('pet' + i + '-lure-played', tempFile.readU8(SavegameEditor.Constants['PET' + i + '_COMP_LURE_PLAYED']));
|
||||
get('number-pet' + i + '-lure-played').addEventListener('change', SavegameEditor._write_pet_value);
|
||||
setNumericRange('pet' + i + '-obed-played', 0, 2);
|
||||
setValue('pet' + i + '-obed-played', tempFile.readU8(SavegameEditor.Constants['PET' + i + '_COMP_OBED_PLAYED']));
|
||||
get('number-pet' + i + '-obed-played').addEventListener('change', SavegameEditor._write_pet_value);
|
||||
|
||||
var personality = window.personalities[SavegameEditor._getPetData(i-1, 'PET_PERSONALITIES_OFFSET_' + (isDog ? 'DOG' : 'CAT') + '1', 8)][SavegameEditor._getPetData(i-1, 'PET_PERSONALITIES_OFFSET_' + (isDog ? 'DOG' : 'CAT') + '2', 8)];
|
||||
setValue('pet' + i + '-personality', personality[Number(SavegameEditor._getPetData(i-1, 'PET_GENDER_OFFSET'))]);
|
||||
|
||||
setNumericRange('pet' + i + '-level', 0, 99999);
|
||||
var points = SavegameEditor._getPetData(i-1, (isDog ? 'PET_POINTS_OFFSET_DOG' : 'PET_POINTS_OFFSET_CAT'), 32);
|
||||
for (var j = 0; j < level_borders.length; j++) {
|
||||
if (points >= level_borders[j][0] && points <= level_borders[j][1]) {
|
||||
setValue('pet' + i + '-level', j);
|
||||
break;
|
||||
}
|
||||
}
|
||||
var level_ele = get('number-pet' + i + '-level');
|
||||
level_ele.dataset.is_dog = isDog;
|
||||
level_ele.addEventListener('change', SavegameEditor._mark_as_changed);
|
||||
}
|
||||
pet_tabs.removeChild(pet_tabs_content_seperator);
|
||||
},
|
||||
|
||||
/* save function */
|
||||
save:function(){
|
||||
var changed_levels = document.querySelectorAll('[data-data_changed]');
|
||||
for (var i = 0; i < changed_levels.length; i++) {
|
||||
var value_old = changed_levels[i].value;
|
||||
setNumericRange(changed_levels[i].id.substring(7));
|
||||
changed_levels[i].value = level_borders[changed_levels[i].value][0];
|
||||
if (changed_levels[i].id === 'number-owner-points') {
|
||||
tempFile.writeU32(
|
||||
SavegameEditor.Constants.OWNER_POINTS_OFFSET,
|
||||
getValue('owner-points')
|
||||
);
|
||||
} else {
|
||||
SavegameEditor._write_u_number(
|
||||
{target: {id: changed_levels[i].id}},
|
||||
32,
|
||||
changed_levels[i].dataset.is_dog ? 'PET_POINTS_OFFSET_DOG' : 'PET_POINTS_OFFSET_CAT'
|
||||
);
|
||||
}
|
||||
changed_levels[i].value = value_old;
|
||||
delete changed_levels[i].dataset.data_changed;
|
||||
setNumericRange(changed_levels[i].id.substring(0, 99999));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
231
nintendogs+cats/personalities.js
Normal file
231
nintendogs+cats/personalities.js
Normal file
@ -0,0 +1,231 @@
|
||||
var personalities = [
|
||||
[ // 0
|
||||
null,
|
||||
null,
|
||||
[
|
||||
'This mischievous male is curious about everything.',
|
||||
'This inquisitive little female is curious about everything.'
|
||||
],
|
||||
[
|
||||
'This lively male is full of energy for running around.',
|
||||
'This lively female is full of energy for running around.'
|
||||
],
|
||||
[
|
||||
'This boisterous little male loves playing with everyone.',
|
||||
'This boisterous young female loves playing with everyone.'
|
||||
],
|
||||
[
|
||||
'This male is quite calm, but enjoys plenty of exercise',
|
||||
'This female is quite calm, but enjoys plenty of exercise'
|
||||
],
|
||||
[
|
||||
'This cheeky little tyke has a sharp mind about him.',
|
||||
'This cheeky little lass has a sharp mind about her.'
|
||||
],
|
||||
[
|
||||
'This bumbling male just loves running and jumping around.',
|
||||
'This dizzy female just loves running and jumping around.'
|
||||
],
|
||||
[
|
||||
'This fiery male can be a bit possessive with his owner.',
|
||||
'This spirited little female loves having her owner all to herself.'
|
||||
]
|
||||
],
|
||||
[ // 1
|
||||
null,
|
||||
null,
|
||||
[
|
||||
'This lad is curious, but likes to take things at his own pace.',
|
||||
'This girl is curious but likes to take things at her own pace.'
|
||||
],
|
||||
[
|
||||
'This laid-back male is happiest when playing with his toys.',
|
||||
'This gentle female is happies when playing with her toys.'
|
||||
],
|
||||
[
|
||||
'This little rascal does just what he likes and in his own time.',
|
||||
'This little tomboy does what she likes and in her own time.'
|
||||
],
|
||||
[
|
||||
'This young male is easy-going and adored by everyone.',
|
||||
'This young female is easy-going and adored by all.'
|
||||
],
|
||||
[
|
||||
'This proud little male leads a mellow, relaxed life.',
|
||||
'This proud little female leads a mellow, relaxed life.'
|
||||
],
|
||||
[
|
||||
'This carefree male is friendly with anyone, even strangers.',
|
||||
'This carefree female is friendly with anyone, even strangers.'
|
||||
],
|
||||
[
|
||||
'This relaxed male gets on better with people than dogs.',
|
||||
'This quiet female gets on better with people than dogs.'
|
||||
]
|
||||
],
|
||||
[ // 2
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
[
|
||||
'This happy male is fascinated by the world around him.',
|
||||
'This happy female is fascinated by the world around her.'
|
||||
],
|
||||
[
|
||||
'This male is very curious and loves to play with everyone.',
|
||||
'This female is very curious and loves to play with everyone.'
|
||||
],
|
||||
[
|
||||
'This mild-mannered male is interested in all sorts of things.',
|
||||
'This mild-mannered female is interested in all sorts of things.'
|
||||
],
|
||||
[
|
||||
'This inquisitive little male is as bright as a button.',
|
||||
'This inquisitive little female is as bright as a button.'
|
||||
],
|
||||
[
|
||||
'This giddy little lad simply adores everything around him.',
|
||||
'This giddy little lass simply adores everything around her.'
|
||||
],
|
||||
[
|
||||
'This inquisitive little boy loves attention from his owner.',
|
||||
'This inquisitive little girl loves attention from her owner.'
|
||||
]
|
||||
],
|
||||
[ // 3
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
[
|
||||
'This spoilt little prince loves to play around with his toys.',
|
||||
'What this little tomboy likes best is playing with her toys.'
|
||||
],
|
||||
[
|
||||
'This bright and cheerful lad is beloved by all who meet him.',
|
||||
'This bright and cheerful girl is beloved by all who meet her.'
|
||||
],
|
||||
[
|
||||
'This proud little male loves to play with his toys.',
|
||||
'What this proud little lady likes best is playing with her toys.'
|
||||
],
|
||||
[
|
||||
'This cheerful male is friendly with anyone, even new people.',
|
||||
'This cheerful female is friendly with anyone, even new people.'
|
||||
],
|
||||
[
|
||||
'This male is shy with other pets but he loves people and toys.',
|
||||
'This female is shy with other pets but loves people and toys.'
|
||||
]
|
||||
],
|
||||
[ // 4
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
[
|
||||
'This mischievous male is as clever as he is naughty.',
|
||||
'This mischievous female is as clever as she is naughty.'
|
||||
],
|
||||
[
|
||||
'This dopey male loves nothing better than to play with friends.',
|
||||
'This dopey female loves nothing better than to play with friends.'
|
||||
],
|
||||
[
|
||||
'This naughty little lad can be a bit jealous around his owner.',
|
||||
'This naughty little lass can be a bit jealous around her owner.'
|
||||
]
|
||||
],
|
||||
[ // 5
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
[
|
||||
'This fiery male has a hard time getting on with his peers.',
|
||||
'This fiery female has a hard time getting on with her peers.'
|
||||
],
|
||||
[
|
||||
'This docile male is open with friends and strangers alike.',
|
||||
'This gentle female is open with friends and strangers alike.'
|
||||
],
|
||||
[
|
||||
'This lad loves the company of people - his owner most of all!',
|
||||
'This girl loves the company of people - her owner most of all!'
|
||||
]
|
||||
],
|
||||
[ // 6
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
[
|
||||
'This male is a bit stubborn, so he\'ll need a kind but firm hand.',
|
||||
'This female is a bit stubborn and needs a kind but firm hand.'
|
||||
],
|
||||
[
|
||||
'This proud male loves it when he has his owner all to himself.',
|
||||
'This proud young female loves having her owner all to herself.'
|
||||
]
|
||||
],
|
||||
[ // 7
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
[
|
||||
'This male is very fond of people and will approach anyone.',
|
||||
'This female is fond of people and will approach anyone.'
|
||||
]
|
||||
],
|
||||
[] // 8
|
||||
];
|
||||
personalities[1][0] = personalities[0][1];
|
||||
personalities[2][0] = personalities[0][2];
|
||||
personalities[2][1] = personalities[1][2];
|
||||
personalities[3][0] = personalities[0][3];
|
||||
personalities[3][1] = personalities[1][3];
|
||||
personalities[3][2] = personalities[2][3];
|
||||
personalities[4][0] = personalities[0][4];
|
||||
personalities[4][1] = personalities[1][4];
|
||||
personalities[4][2] = personalities[2][4];
|
||||
personalities[4][3] = personalities[3][4];
|
||||
personalities[5][0] = personalities[0][5];
|
||||
personalities[5][1] = personalities[1][5];
|
||||
personalities[5][2] = personalities[2][5];
|
||||
personalities[5][3] = personalities[3][5];
|
||||
personalities[5][4] = personalities[4][5];
|
||||
personalities[6][0] = personalities[0][6];
|
||||
personalities[6][1] = personalities[1][6];
|
||||
personalities[6][2] = personalities[2][6];
|
||||
personalities[6][3] = personalities[3][6];
|
||||
personalities[6][4] = personalities[4][6];
|
||||
personalities[6][5] = personalities[5][6];
|
||||
personalities[7][0] = personalities[0][7];
|
||||
personalities[7][1] = personalities[1][7];
|
||||
personalities[7][2] = personalities[2][7];
|
||||
personalities[7][3] = personalities[3][7];
|
||||
personalities[7][4] = personalities[4][7];
|
||||
personalities[7][5] = personalities[5][7];
|
||||
personalities[7][6] = personalities[6][7];
|
||||
personalities[8][0] = personalities[0][8];
|
||||
personalities[8][1] = personalities[1][8];
|
||||
personalities[8][2] = personalities[2][8];
|
||||
personalities[8][3] = personalities[3][8];
|
||||
personalities[8][4] = personalities[4][8];
|
||||
personalities[8][5] = personalities[5][8];
|
||||
personalities[8][6] = personalities[6][8];
|
||||
personalities[8][7] = personalities[7][8];
|
||||
|
||||
window.personalities = personalities;
|
Loading…
x
Reference in New Issue
Block a user