Skip to content

Commit

Permalink
Leave Kapcacher for later and add WeekMaster
Browse files Browse the repository at this point in the history
  • Loading branch information
SpcFORK committed Jun 19, 2024
1 parent c8f8305 commit 463991b
Show file tree
Hide file tree
Showing 10 changed files with 196 additions and 13 deletions.
3 changes: 2 additions & 1 deletion nat/.main.oak
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ fn resolveHTMLBuilding(build) {
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://unpkg.com/kaplay/dist/kaboom.js"></script>
<script src="https://unpkg.com/[email protected]/kapcache.js" type="module"></script>
<title>
OKFunk
</title>
Expand All @@ -191,8 +192,8 @@ fn resolveHTMLBuilding(build) {

</head>
<body>
<script async="async" type="module">{{ 0 }}</script>
<script src="JS/exports.js" type="module"></script>
<script>{{ 0 }}</script>
</body>
</html>
' |> str.trim() |> fmt.format(combined)
Expand Down
8 changes: 7 additions & 1 deletion scenes/init/gameParts/all.oak
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
ml := import('ml')
ml := import('ml')
weekmaster := import('weekmaster')

window.GAMEPARTS := {
ml: ml
weekmaster: weekmaster
}
8 changes: 4 additions & 4 deletions scenes/init/gameParts/ml.oak
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ fn MLtoSObj(htmlStr, type) {
fn parseNode(node) {
result := {}

with std.each(node.attributes) fn(ii) if ii != ? -> result.(ii.name) <- ii.value

fn handleNoChildren if node.attributes.length > 0 {
with std.each(node.attributes) fn(ii) if ii != ? -> result.(ii.name) <- ii.value

true -> result.'__text' <- node.textContent
_ -> result <- node.textContent |> std.default('')
}

if node.children.length = ? | node.children.length <= 0 {
true -> handleNoChildren()
_ -> with std.each(node.children) fn(ii) result.(ii.localName) <- parseNode(ii)
}

result
}

Expand Down
167 changes: 167 additions & 0 deletions scenes/init/gameParts/weekmaster.oak
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
{ MLtoSObj: MLtoSObj } := import('ml')

fn weekByName(c) {
'weekLevels/mlp/' << c
}

fn getWeeksXML() {
// Weeks.xml isnb't a folder, but in there so this okay
weekByName('weeks.xml')
}

fn getWeekAsset(weekName, c) {
weekByName(weekName) << '/' << c
}

fn getWeekXML(weekName) {
getWeekAsset(weekName, 'main.xml')
}

fn getWeekSong(weekName, c) {
getWeekAsset(weekName, 'songs/') << c
}

fn getSongAsset(weekName, songName, c) {
getWeekSong(weekName, songName) << '/' << c
}

fn getSongXML(weekName, c) {
getSongAsset(weekName, c, 'song.xml')
}

fn getChartXML(weekName, c) {
getSongAsset(weekName, c, 'chart.xml')
}

fn getWeekSprite(weekName, c) {
getWeekAsset(weekName, 'sprites/') << c
}

fn fetchWeekXML(weekName) {
weekPath := getWeekXML(weekName)
fetch(weekPath)
}

fn handleMLFormat(r) MLtoSObj(r, 'text/xml')
fn handleMLText(r) r.text()

fn parseWeekXML(weekName) {
resText := with fetchWeekXML(weekName).
then() handleMLText

with resText.
then() handleMLFormat
}

fn propagateWeek(weekData) {
newWeek := weekData |> Object()

songs := Object.entries(newWeek.songs)

root := ''
promArr := []
fn pPush(i) promArr.push(i)

fn handleUrl(k, n) {
SONGROLL_DATA := with rolloutSongUrl(n).
then() fn(d) newWeek.songs.(k) <- d

pPush(SONGROLL_DATA)
}

with songs.forEach() fn(e, i) {
[kName, assetUrl] := e

if kName = 'root' {
ASSET_URL := root + assetUrl

true -> root <- assetUrl
_ -> handleUrl(kName, ASSET_URL)
}
}

with Promise.all(promArr).then() fn() newWeek
}

fn fetchSongXML(weekName, songName) {
songPath := getSongXML(weekName, songName)
fetch(songPath)
}

fn parseSongXML(weekName, songName) {
resText := with fetchSongXML(weekName, songName).
then() fn(r) handleMLText

with resText.
then() handleMLFormat
}

fn parseSongXURL(songUrl) {
resText := with fetch(songUrl).
then() handleMLText

with resText.
then() handleMLFormat
}

fn parseSongEntries(song, v, i) {
[key, val] := v

v
}

fn parseSongPreload(song, v, i) {
[key, val] := v

v
}

fn parseSongPlaybacks(song, v, i) {
[key, val] := v

v
}

fn propagateSong(songData) {
newSong := songData |> Object()

entries := Object.entries(songData.entry)
preload := Object.entries(songData.preload)
playbacks := Object.entries(songData.playbacks)

root := ''
promArr := []
fn pPush(i...) promArr.push(i...)

fn passSong(cb) fn(args...) cb(newSong, args...)

entries <- with entries.map() passSong(parseSongEntries)
preload <- with preload.map() passSong(parseSongPreload)
playbacks <- with playbacks.map() passSong(parseSongPlaybacks)

pPush(
entries...
)

pPush(
preload...
)

pPush(
playbacks...
)

with Promise.all(promArr).then() fn() newSong
}

fn rolloutSongUrl(songUrl) {
data := parseSongXURL(songUrl)
with data.then() propagateSong
}

fn rolloutWeek(weekName) {
data := parseWeekXML(weekName)
with data.then() propagateWeek
}

with rolloutWeek('EmptyWeek').then() console.log
1 change: 1 addition & 0 deletions scenes/init/menu/credits.oak
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ with scene('credits') fn {

creditStr :=
'SpectCOW (SpcFORK), Creator of KaboomFunkin.\n' <<
'NiceEli, JS/TS inject, LDTK Charts.\n' <<
'Thanks for playing!'

with add() [
Expand Down
2 changes: 2 additions & 0 deletions scenes/init/menu/gameSelect.oak
Original file line number Diff line number Diff line change
Expand Up @@ -167,4 +167,6 @@ with scene('gameSelect') fn {
with wait(0.2) weekCall
}

Transition(BLACK).fadeOut(0.2)

}
7 changes: 7 additions & 0 deletions scenes/init/menu/menuScreen.oak
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ rng := import('random')
{ shakey: shakey } := import('../../blocks/shakey')


{ Transition: Transition } := import('../../blocks/Transition')


with scene('menuScreen') fn {

enterNextH('gameSelect')
Expand Down Expand Up @@ -114,4 +117,8 @@ with scene('menuScreen') fn {

}

// ---

Transition(WHITE).fadeOut(0.3)

}
2 changes: 1 addition & 1 deletion scenes/oc_bootseq/boot.oak
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ with scene('init__') fn {
])

fn SET(v) cn_title_text.opacity <- v
fn TEXT(v) cn_title_text.text <- v
fn SHOW SET(1)
fn HIDE SET(0)
fn TEXT(v) cn_title_text.text <- v

shakey(cn_title_text)

Expand Down
6 changes: 3 additions & 3 deletions web/entry.oak
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ json := import('json')
fmt := import('fmt')
path := import('path')

// https://unpkg.com/[email protected]/kapcache.js
oaka := import('oaka')

// ---
Expand All @@ -14,7 +15,8 @@ h! := 500
globalThis.k := kaboom({
width: 600
height: 500
scale: w! / h!
scale: w! / h!,
plugins: [KapCacher.CacherPlugin]
})

vv := visualViewport
Expand Down Expand Up @@ -53,8 +55,6 @@ addEventListener('scroll', updateCanvas)
addEventListener('orientationchange', updateCanvas)
document.addEventListener('fullscreenchange', updateCanvas)



// ---

scenes := import('../scenes/main')
5 changes: 2 additions & 3 deletions weekLevels/mlp/EmptyWeek/songs/dadbattle/song.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@
<song>weeks/songs/dadbattle/song.ogg</song>
<vocals>weeks/songs/dadbattle/voices.ogg</vocals>
</basicFNF>
<other></other>
</playbacks>
<entry root="weekLevels/mlp/EmptyWeek/songs/dadbattle/entry/">
<on event="entry">entry.oak</on>
</entry>
<preload>
<fold cd="../sprites">
<assetList>weekLevels/mlp/EmptyWeek/sprites/sprites.xml</assetList>
</preload>
<bpm>120</bpm>
<mainside try="true">right</mainside>
<mainside>right</mainside>
</data>

0 comments on commit 463991b

Please sign in to comment.