Skip to content

Instantly share code, notes, and snippets.

@d33pfri3d
Created February 23, 2016 12:23
Show Gist options
  • Save d33pfri3d/8e4aea6247a5a561363b to your computer and use it in GitHub Desktop.
Save d33pfri3d/8e4aea6247a5a561363b to your computer and use it in GitHub Desktop.
Termial typer for Text UI Game
import utils from './utils';
let terminal = {
generateNewline: () => {
let newPre = document.createElement('pre');
let newCode = document.createElement('code');
newPre.appendChild(newCode);
newPre.className = 'newline';
newPre.className = 'current';
newPre.appendChild(newCode);
return newPre;
},
newLine: (callback) => {
console.log('----create a newLine----');
let prev = document.querySelector('.current');
let wh = window.innerHeight;
let remain = wh - prev.offsetTop;
if( remain < 100 ){
terminal.clear();
}
let newElem = terminal.generateNewline();
prev.classList.remove('newLine');
prev.classList.remove('current');
utils.insertAfter(prev, newElem);
if(callback){
callback(newElem.firstChild);
}
},
type: (element, string, index, command) => {
let val = string.substr(0, index+1);
element.innerHTML = val;
if(index < string.length){
setTimeout(()=>{ terminal.type(element,string, index+1); }, 90)
} else {
terminal.newLine();
}
},
list: (items) => {
console.log('list out ', items);
},
backspace: () => {
let current = document.querySelector('.current code');
let str = current.textContent
let val = str.slice(0, -1);
current.innerHTML = val;
},
clear:(callback) =>{
let term = document.querySelector('#terminal');
let element = terminal.generateNewline();
console.log('### CLEAR', element);
term.innerHTML = "";
term.appendChild(element);
}
}
export default terminal;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment