Created
February 23, 2016 12:23
-
-
Save d33pfri3d/8e4aea6247a5a561363b to your computer and use it in GitHub Desktop.
Termial typer for Text UI Game
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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