Improve history UI.
This commit is contained in:
parent
74a1036836
commit
61119368d1
@ -113,3 +113,18 @@ main>article a{
|
||||
main>article>a:hover{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
main>div.turn-slider-padding{
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
padding: 0.25rem 0.5rem 0 0.5rem;
|
||||
background-color: #101010;
|
||||
}
|
||||
#turn-slider{
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 1rem;
|
||||
accent-color: #702e2e;
|
||||
}
|
||||
|
@ -710,6 +710,9 @@ const INTERFACE = {
|
||||
let token = null;
|
||||
let player = 0;
|
||||
let history = [ ];
|
||||
let dawn = null;
|
||||
let dusk = null;
|
||||
|
||||
if(data !== null) {
|
||||
switch(mode) {
|
||||
case INTERFACE.Mode.Online: {
|
||||
@ -721,7 +724,9 @@ const INTERFACE = {
|
||||
history = data.history;
|
||||
} break;
|
||||
}
|
||||
|
||||
|
||||
if(data.dawn !== undefined) { dawn = data.dawn; }
|
||||
if(data.dusk !== undefined) { dusk = data.dusk; }
|
||||
}
|
||||
|
||||
INTERFACE_DATA = {
|
||||
@ -739,7 +744,7 @@ const INTERFACE = {
|
||||
hover: null,
|
||||
select: null,
|
||||
|
||||
handles: [null, null],
|
||||
handles: [dawn, dusk],
|
||||
board_state: [ ],
|
||||
play: null,
|
||||
retire:false,
|
||||
@ -910,10 +915,10 @@ const INTERFACE = {
|
||||
}
|
||||
},
|
||||
|
||||
replay_prev() {
|
||||
replay_jump(turn) {
|
||||
if(INTERFACE_DATA.mode == INTERFACE.Mode.Replay) {
|
||||
if(INTERFACE_DATA.replay_turn > 0) {
|
||||
INTERFACE_DATA.replay_turn--;
|
||||
if(turn >= 0 && turn <= INTERFACE_DATA.history.length) {
|
||||
INTERFACE_DATA.replay_turn = turn;
|
||||
|
||||
GAME.init();
|
||||
for(let i = 0; i < INTERFACE_DATA.replay_turn; ++i) {
|
||||
@ -925,21 +930,15 @@ const INTERFACE = {
|
||||
INTERFACE_DATA.play = INTERFACE_DATA.history[INTERFACE_DATA.replay_turn - 1];
|
||||
}
|
||||
|
||||
document.getElementById("turn-slider").value = INTERFACE_DATA.replay_turn;
|
||||
INTERFACE.draw();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
replay_next() {
|
||||
if(INTERFACE_DATA.mode == INTERFACE.Mode.Replay) {
|
||||
if(INTERFACE_DATA.replay_turn < INTERFACE_DATA.history.length) {
|
||||
GAME_DATA.process(INTERFACE_DATA.history[INTERFACE_DATA.replay_turn]);
|
||||
INTERFACE_DATA.play = INTERFACE_DATA.history[INTERFACE_DATA.replay_turn];
|
||||
INTERFACE_DATA.replay_turn++;
|
||||
INTERFACE.draw();
|
||||
}
|
||||
}
|
||||
},
|
||||
replay_first() { INTERFACE.replay_jump(0); },
|
||||
replay_last() { INTERFACE.replay_jump(INTERFACE_DATA.history.length); },
|
||||
replay_prev() { INTERFACE.replay_jump(INTERFACE_DATA.replay_turn - 1); },
|
||||
replay_next() { INTERFACE.replay_jump(INTERFACE_DATA.replay_turn + 1); },
|
||||
|
||||
auto() {
|
||||
if(INTERFACE_DATA.auto_mode === null) {
|
||||
|
@ -582,12 +582,19 @@ const SCENES = {
|
||||
UI.mainnav(
|
||||
[ ],
|
||||
[
|
||||
UI.button("◀", () => { INTERFACE.replay_first(); }),
|
||||
UI.button("◁", () => { INTERFACE.replay_prev(); }),
|
||||
ind_turn,
|
||||
UI.button("◀", () => { INTERFACE.replay_prev(); }),
|
||||
UI.button("▶", () => { INTERFACE.replay_next(); }),
|
||||
UI.button("▷", () => { INTERFACE.replay_next(); }),
|
||||
UI.button("▶", () => { INTERFACE.replay_last(); }),
|
||||
]
|
||||
);
|
||||
|
||||
let slider = UI.slider((event) => { INTERFACE.replay_jump(event.target.value); });
|
||||
slider.setAttribute("id", "turn-slider");
|
||||
slider.setAttribute("min", "0");
|
||||
slider.setAttribute("max", data.history.length);
|
||||
MAIN.appendChild(UI.div([ slider ], "turn-slider-padding"));
|
||||
|
||||
let canvas = document.createElement("canvas");
|
||||
canvas.setAttribute("id", "game");
|
||||
|
10
www/js/ui.js
10
www/js/ui.js
@ -11,6 +11,16 @@ const UI = {
|
||||
return button;
|
||||
},
|
||||
|
||||
slider(callback) {
|
||||
let slider = document.createElement("input");
|
||||
slider.setAttribute("type", "range");
|
||||
slider.setAttribute("value", "0");
|
||||
slider.setAttribute("min", "0");
|
||||
slider.setAttribute("max", "0");
|
||||
if(callback !== null) { slider.addEventListener("input", callback); }
|
||||
return slider;
|
||||
},
|
||||
|
||||
textbox(id, placeholder) {
|
||||
let input = document.createElement("input");
|
||||
input.setAttribute("type", "text");
|
||||
|
Loading…
x
Reference in New Issue
Block a user