all repos — retro-website @ 8c4aa8a379f1ea0371c582a750462a7713dfe670

res/script.js (view raw)

  1const menu_div = document.getElementById("background-orange");
  2const iframe = document.getElementById("content-iframe");
  3const music = document.getElementById("music");
  4const source = document.getElementById("music-source");
  5const music_base = document.getElementById("music-player-base");
  6const music_song = document.getElementById("music-player-song");
  7const music_song_text = document.getElementById("song-text");
  8
  9const tracks = {
 10    "awesome": {
 11        file_name: "AwesomeRapBeat.opus",
 12        track_name: "Awesome Rap Beat",
 13        track_author: "Jay Tholen",
 14        track_from: "Hypnospace Outlaw Original Soundtrack, Vol. 2"
 15    },
 16    "dream": {
 17        file_name: "WeFellIntoaDream.opus",
 18        track_name: "We Fell Into a Dream",
 19        track_author: "Jay Tholen",
 20        track_from: "Hypnospace Outlaw Original Soundtrack, Vol. 2"
 21    },
 22    "earmint": {
 23        file_name: "Earmint.opus",
 24        track_name: "Earmint",
 25        track_author: "Jay Tholen",
 26        track_from: "Hypnospace Outlaw Original Soundtrack, Vol. 2"
 27    },
 28    "forest": {
 29        file_name: "ForestFeast.opus",
 30        track_name: "Forest Feast",
 31        track_author: "Jay Tholen",
 32        track_from: "Hypnospace Outlaw Original Soundtrack, Vol. 2"
 33    },
 34    "gtrock": {
 35        file_name: "GoodtimeRock.opus",
 36        track_name: "Goodtime Rock",
 37        track_author: "Jay Tholen",
 38        track_from: "Hypnospace Outlaw Original Soundtrack, Vol. 2"
 39    },
 40    "katie": {
 41        file_name: "KatiesKuddlyKatKorner.opus",
 42        track_name: "Katie's Kuddly Kat Korner",
 43        track_author: "Jay Tholen",
 44        track_from: "Hypnospace Outlaw Original Soundtrack, Vol. 2"
 45    },
 46}
 47
 48const page_tracks = {
 49    "about": "awesome",
 50    "anime": "dream",
 51    "dragonquest": "forest",
 52    "earthbound": "gtrock",
 53    "gf": "katie",
 54    "indies": "earmint",
 55    "zelda": "forest",
 56}
 57
 58let play = false;
 59let currentPage = "about";
 60let currentTrack = page_tracks[currentPage];
 61let timeout;
 62
 63function firstMusicPlay() {
 64    playPause(false);
 65    document.removeEventListener('click', firstMusicPlay);
 66}
 67document.addEventListener('click', firstMusicPlay);
 68
 69function goToPage(page) {
 70    if(currentPage == page)
 71        return
 72    iframe.src = "pages/" + page + ".html";
 73
 74    const newTrack = page_tracks[page];
 75
 76    if(newTrack != currentTrack){
 77        currentTrack = newTrack;
 78
 79        source.src = "res/mus/" + tracks[newTrack].file_name;
 80        music.load();
 81        if (play) {
 82            music.play();
 83            showTitle();
 84        }
 85    }
 86        
 87    currentPage = page;
 88}
 89
 90function formatTrack(track) {
 91    return `${track.track_author} - ${track.track_name} (${track.track_from})`;
 92}
 93
 94function showTitle(){
 95    clearTimeout(timeout);
 96    music_song_text.textContent = formatTrack(tracks[currentTrack]);
 97    music_song.style.top = "0";
 98    timeout = setTimeout(() => {
 99        music_song.style.top = "100%";
100    }, 3_000);
101}
102
103function playPause(toggle=play) {
104    if (toggle){
105        music_base.classList.remove("player-play");
106        music.pause();
107        play = false
108    }
109    else {
110        music_base.classList.add("player-play");
111        music.volume = 0.1;
112        music.play();
113        play = true
114        showTitle();
115    }
116}
117
118// page logic
119const title = document.getElementById("aTitle");
120title.addEventListener("click", () => goToPage(title.getAttribute("data-page")));
121[ ...menu_div.childNodes ].forEach(element => {
122    try{
123        const page = element.getAttribute("data-page");
124        if (page){
125            element.addEventListener("click", () => goToPage(page));
126        }
127    } catch {}
128});