diff --git a/characters/nene-christmas.json b/characters/nene-christmas.json index b223a2a..d614cd5 100644 --- a/characters/nene-christmas.json +++ b/characters/nene-christmas.json @@ -22,7 +22,7 @@ "fps": 24, "anim": "combo50", "loop": false, - "name": "combo celebration 1 nene xmas0" + "name": "combo celebration 1 nene xmas" }, { "offsets": [17, -5], @@ -38,7 +38,7 @@ "fps": 24, "anim": "combo100", "loop": false, - "name": "ComboFawn0" + "name": "ComboFawn" }, { "offsets": [0, 52], @@ -46,7 +46,7 @@ "fps": 24, "anim": "raiseKnife", "loop": false, - "name": "knife raise xmas0" + "name": "knife raise xmas" }, { "offsets": [-99, 52], @@ -54,7 +54,7 @@ "fps": 24, "anim": "idleKnife", "loop": false, - "name": "knife high held xmas0" + "name": "knife high held xmas" }, { "offsets": [135, 52], @@ -62,12 +62,12 @@ "fps": 24, "anim": "lowerKnife", "loop": false, - "name": "knife lower xmas0" + "name": "knife lower xmas" } ], "vocals_file": "", "no_antialiasing": false, - "image": "characters/mallPico/neneChristmas", + "image": "sprites/characters/neneChristmas", "position": [0, 200], "healthicon": "face", "flip_x": false, @@ -75,5 +75,6 @@ "camera_position": [-50, 100], "sing_duration": 6.1, "scale": 1, - "_editor_isPlayer": false + "_editor_isPlayer": false, + "starter_frame": 1 } diff --git a/characters/nene-christmas.lua b/characters/nene-christmas.lua new file mode 100644 index 0000000..536a9a2 --- /dev/null +++ b/characters/nene-christmas.lua @@ -0,0 +1,119 @@ +---@type engine.module +local module = {} +local abot, sound, rate, channels, bg, eyes, char +local spectrum = {} +local visualizers = {} + +require("modules.luafft") +local logging = require("modules.logging") + +local function divide(list, factor) + for i, v in ipairs(list) do + list[i] = list[i] / factor + end +end + +---@param character engine.character +function module.onAdded(character) + char = character + abot = Atlas("sprites/characters/abot/abotSystem") + abot:PlayAnimation("") + abot.layer = character.sprite.layer - .1 + abot.position = character.sprite.position:Add(Vector2(100, 200)) + + for i = 1, 7 do + local viz = Rect("sprites/characters/abot/aBotViz.png", "sprites/characters/abot/aBotViz.xml") + if i > 1 then + viz.position = abot.position:Add(Vector2(i * 80 + 55, 60)) + else + -- don't question my code choices, i really tried. + -- The bugs didn't even make sense atp so yeah. + -- - entar + viz.position = abot.position:Add(Vector2(100000000, 10000000)) + end + viz.layer = abot.layer - 0.1 + viz:Frame(string.format("viz%s", i), 5) + visualizers[i] = viz + end + + bg = Image("sprites/characters/abot/stereoBG.png") + bg.layer = abot.layer - 0.2 + bg.position = abot.position:Add(Vector2(153, 43)) + + eyes = Atlas("sprites/characters/abot/systemEyes") + eyes.layer = abot.layer - 0.1 + eyes.position = abot.position:Add(Vector2(45, 250)) + eyes:PlayAnimation("a bot eyes lookin") +end + +function module.onCreate(song) + local audiopath = string.format("songs/%s/Inst.ogg", song) + print(audiopath) + sound = love.sound.newSoundData(audiopath) + rate = sound:getSampleRate() + channels = sound:getChannels() +end + +function module.onBeat(beat) + -- if beat % 2 == 0 then + abot:PlayAnimation() + -- end +end + +function module.onUpdate(dt, el) + abot.layer = char.sprite.layer - .1 + bg.layer = abot.layer - 0.2 + eyes.layer = bg.layer + + abot.position = char.sprite.position:Add(Vector2(-100, 300)):Add(char.stagePosition) + + bg.position = abot.position:Add(Vector2(153, 43)) + eyes.position = abot.position:Add(Vector2(45, 250)) + + pcall(function () + local curSample = inst:tell('samples') + + local wave = {} + local size = next_possible_size(2048) + if channels == 2 then + for i = curSample, (curSample + (size - 1) / 2) do + local sample = (sound:getSample(i * 2) + sound:getSample(i * 2 + 1)) * 0.5 + table.insert(wave, complex.new(sample, 0)) + end + else + for i = curSample, curSample + (size - 1) do + local sample = (sound:getSample(i * 2) + sound:getSample(i * 2 + 1)) * 0.5 + table.insert(wave, complex.new(sample, 0)) + table.insert(wave, complex.new(sound:getSample(i), 0)) + end + end + + local spec = fft(wave, false) + + divide(spec, size / 2) + + spectrum = spec + local division = 142.857142857 + + for i=2, (#spectrum/division) do + local n = spectrum[i]:abs() + + visualizers[i]:Frame(string.format("viz%s", i), math.floor(n / 0.06) > 5 and 0 or 5 - math.floor(n / 0.06)) + visualizers[i].layer = abot.layer - 0.1 + visualizers[i].position = abot.position:Add(Vector2(i * 80 + 55, 60)) + end + end) +end + +function module.onClose() + +end + +function module.onEvent(event) + if event.name == "FocusCamera" then + local str = event.vars.char == 1 and "a bot eyes lookin" or "a bot eyes lookin" + eyes:PlayAnimation(str) + end +end + +return module diff --git a/characters/nene.json b/characters/nene.json index 562eebc..aadff03 100644 --- a/characters/nene.json +++ b/characters/nene.json @@ -97,12 +97,16 @@ "vocals_file": "", "no_antialiasing": false, "image": "sprites/characters/Nene", - "position": [0, 200], + "position": [-200, 400], "healthicon": "face", "flip_x": false, "healthbar_colors": [161, 161, 161], "camera_position": [-150, 100], "sing_duration": 6.1, "scale": 1, - "_editor_isPlayer": false + "_editor_isPlayer": false, + "starter_frame": 1, + "stage_positions": { + "tank": [500, -330] + } } \ No newline at end of file diff --git a/characters/nene.lua b/characters/nene.lua index a2ac0c5..536a9a2 100644 --- a/characters/nene.lua +++ b/characters/nene.lua @@ -1,10 +1,11 @@ ---@type engine.module local module = {} -local abot, sound, rate, channels +local abot, sound, rate, channels, bg, eyes, char local spectrum = {} local visualizers = {} require("modules.luafft") +local logging = require("modules.logging") local function divide(list, factor) for i, v in ipairs(list) do @@ -14,19 +15,35 @@ end ---@param character engine.character function module.onAdded(character) - print(character.stagePosition:Add(character.sprite.position)) + char = character abot = Atlas("sprites/characters/abot/abotSystem") abot:PlayAnimation("") - abot.layer = character.sprite.layer - 0.1 + abot.layer = character.sprite.layer - .1 + abot.position = character.sprite.position:Add(Vector2(100, 200)) for i = 1, 7 do - print(i) local viz = Rect("sprites/characters/abot/aBotViz.png", "sprites/characters/abot/aBotViz.xml") - viz.position = abot.position:Add(Vector2(i * 50 + 20, 50)) - viz.layer = 500 + if i > 1 then + viz.position = abot.position:Add(Vector2(i * 80 + 55, 60)) + else + -- don't question my code choices, i really tried. + -- The bugs didn't even make sense atp so yeah. + -- - entar + viz.position = abot.position:Add(Vector2(100000000, 10000000)) + end + viz.layer = abot.layer - 0.1 viz:Frame(string.format("viz%s", i), 5) visualizers[i] = viz end + + bg = Image("sprites/characters/abot/stereoBG.png") + bg.layer = abot.layer - 0.2 + bg.position = abot.position:Add(Vector2(153, 43)) + + eyes = Atlas("sprites/characters/abot/systemEyes") + eyes.layer = abot.layer - 0.1 + eyes.position = abot.position:Add(Vector2(45, 250)) + eyes:PlayAnimation("a bot eyes lookin") end function module.onCreate(song) @@ -44,44 +61,59 @@ function module.onBeat(beat) end function module.onUpdate(dt, el) - local curSample = inst:tell('samples') + abot.layer = char.sprite.layer - .1 + bg.layer = abot.layer - 0.2 + eyes.layer = bg.layer - local wave = {} - local size = next_possible_size(2048) - if channels == 2 then - for i = curSample, (curSample + (size - 1) / 2) do - local sample = (sound:getSample(i * 2) + sound:getSample(i * 2 + 1)) * 0.5 - table.insert(wave, complex.new(sample, 0)) + abot.position = char.sprite.position:Add(Vector2(-100, 300)):Add(char.stagePosition) + + bg.position = abot.position:Add(Vector2(153, 43)) + eyes.position = abot.position:Add(Vector2(45, 250)) + + pcall(function () + local curSample = inst:tell('samples') + + local wave = {} + local size = next_possible_size(2048) + if channels == 2 then + for i = curSample, (curSample + (size - 1) / 2) do + local sample = (sound:getSample(i * 2) + sound:getSample(i * 2 + 1)) * 0.5 + table.insert(wave, complex.new(sample, 0)) + end + else + for i = curSample, curSample + (size - 1) do + local sample = (sound:getSample(i * 2) + sound:getSample(i * 2 + 1)) * 0.5 + table.insert(wave, complex.new(sample, 0)) + table.insert(wave, complex.new(sound:getSample(i), 0)) + end end - else - for i = curSample, curSample + (size - 1) do - local sample = (sound:getSample(i * 2) + sound:getSample(i * 2 + 1)) * 0.5 - table.insert(wave, complex.new(sample, 0)) - table.insert(wave, complex.new(sound:getSample(i), 0)) + + local spec = fft(wave, false) + + divide(spec, size / 2) + + spectrum = spec + local division = 142.857142857 + + for i=2, (#spectrum/division) do + local n = spectrum[i]:abs() + + visualizers[i]:Frame(string.format("viz%s", i), math.floor(n / 0.06) > 5 and 0 or 5 - math.floor(n / 0.06)) + visualizers[i].layer = abot.layer - 0.1 + visualizers[i].position = abot.position:Add(Vector2(i * 80 + 55, 60)) end - end - - local spec = fft(wave, false) - --local reconstructed = fft(spec,true) - - --divide(reconstructed,size) - divide(spec, size / 2) - - spectrum = spec - local division = 142.857142857 - local actuali = 1 - - for i=1, #spectrum/division do - local n = spectrum[i]:abs() - - visualizers[actuali]:Frame(string.format("viz%s", actuali), math.floor(n / 0.06) > 5 and 0 or 5 - math.floor(n / 0.06)) - - actuali = actuali + 1 - end + end) end function module.onClose() end +function module.onEvent(event) + if event.name == "FocusCamera" then + local str = event.vars.char == 1 and "a bot eyes lookin" or "a bot eyes lookin" + eyes:PlayAnimation(str) + end +end + return module diff --git a/characters/pico-playable.json b/characters/pico-playable.json index 50e3dd9..d726b8d 100644 --- a/characters/pico-playable.json +++ b/characters/pico-playable.json @@ -154,6 +154,17 @@ "name": "burpshit", "indices": [] }, + { + "loop": false, + "offsets": [ + 20, + 0 + ], + "anim": "burpSmile", + "fps": 24, + "name": "burpsmile", + "indices": [] + }, { "loop": false, "offsets": [ diff --git a/charts/blammed/blammed-metadata-pico.json b/charts/blammed/blammed-metadata-pico.json index bb750f2..0906d63 100644 --- a/charts/blammed/blammed-metadata-pico.json +++ b/charts/blammed/blammed-metadata-pico.json @@ -7,7 +7,7 @@ "difficulties": ["easy", "normal", "hard"], "characters": { "player": "pico-playable", - "girlfriend": "gf", + "girlfriend": "nene", "opponent": "pico", "instrumental": "pico", "altInstrumentals": [] diff --git a/charts/cocoa/cocoa-metadata-pico.json b/charts/cocoa/cocoa-metadata-pico.json index 6512a63..7ce6d3c 100644 --- a/charts/cocoa/cocoa-metadata-pico.json +++ b/charts/cocoa/cocoa-metadata-pico.json @@ -7,7 +7,7 @@ "difficulties": ["easy", "normal", "hard"], "characters": { "player": "pico-christmas", - "girlfriend": "gf-christmas", + "girlfriend": "nene-christmas", "opponent": "parents-christmas", "instrumental": "pico", "opponentVocals": ["parents-christmas"], diff --git a/charts/fresh/fresh-metadata-pico.json b/charts/fresh/fresh-metadata-pico.json index 7c43d04..aec9eab 100644 --- a/charts/fresh/fresh-metadata-pico.json +++ b/charts/fresh/fresh-metadata-pico.json @@ -7,7 +7,7 @@ "difficulties": ["easy", "normal", "hard"], "characters": { "player": "pico-playable", - "girlfriend": "gf", + "girlfriend": "nene", "opponent": "dad", "instrumental": "pico", "altInstrumentals": [] diff --git a/charts/guns/guns-metadata-pico.json b/charts/guns/guns-metadata-pico.json index 523e045..f6e9493 100644 --- a/charts/guns/guns-metadata-pico.json +++ b/charts/guns/guns-metadata-pico.json @@ -13,7 +13,7 @@ "difficulties": ["easy", "normal", "hard"], "characters": { "player": "pico-playable", - "girlfriend": "gf", + "girlfriend": "nene", "opponent": "tankman", "instrumental": "pico", "altInstrumentals": [] diff --git a/charts/philly-nice/philly-nice-metadata-pico.json b/charts/philly-nice/philly-nice-metadata-pico.json index 5442ec7..e9240a5 100644 --- a/charts/philly-nice/philly-nice-metadata-pico.json +++ b/charts/philly-nice/philly-nice-metadata-pico.json @@ -7,7 +7,7 @@ "difficulties": ["easy", "normal", "hard"], "characters": { "player": "pico-playable", - "girlfriend": "gf", + "girlfriend": "nene", "opponent": "pico", "instrumental": "pico", "altInstrumentals": [] diff --git a/charts/pico/pico-metadata-pico.json b/charts/pico/pico-metadata-pico.json index 9d0f7e1..9e3f512 100644 --- a/charts/pico/pico-metadata-pico.json +++ b/charts/pico/pico-metadata-pico.json @@ -7,7 +7,7 @@ "difficulties": ["easy", "normal", "hard"], "characters": { "player": "pico-playable", - "girlfriend": "gf", + "girlfriend": "nene", "opponent": "pico", "instrumental": "pico", "altInstrumentals": [] diff --git a/charts/ugh/ugh-metadata-pico.json b/charts/ugh/ugh-metadata-pico.json index 2386889..b3018a6 100644 --- a/charts/ugh/ugh-metadata-pico.json +++ b/charts/ugh/ugh-metadata-pico.json @@ -7,7 +7,7 @@ "difficulties": ["easy", "normal", "hard"], "characters": { "player": "pico-playable", - "girlfriend": "gf", + "girlfriend": "nene", "opponent": "tankman", "instrumental": "pico", "altInstrumentals": [] diff --git a/images/weeb/animatedEvilSchool.png b/images/weeb/animatedEvilSchool.png new file mode 100644 index 0000000..7b8be9e Binary files /dev/null and b/images/weeb/animatedEvilSchool.png differ diff --git a/images/weeb/animatedEvilSchool.xml b/images/weeb/animatedEvilSchool.xml new file mode 100644 index 0000000..b59936d --- /dev/null +++ b/images/weeb/animatedEvilSchool.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/weeb/bgFreaks.png b/images/weeb/bgFreaks.png new file mode 100644 index 0000000..12800ca Binary files /dev/null and b/images/weeb/bgFreaks.png differ diff --git a/images/weeb/bgFreaks.xml b/images/weeb/bgFreaks.xml new file mode 100644 index 0000000..40c04f4 --- /dev/null +++ b/images/weeb/bgFreaks.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/weeb/erect/evilSchoolBG.png b/images/weeb/erect/evilSchoolBG.png new file mode 100644 index 0000000..e9ff73d Binary files /dev/null and b/images/weeb/erect/evilSchoolBG.png differ diff --git a/images/weeb/erect/masks/aBotPixelSpeaker_mask.png b/images/weeb/erect/masks/aBotPixelSpeaker_mask.png new file mode 100644 index 0000000..b823215 Binary files /dev/null and b/images/weeb/erect/masks/aBotPixelSpeaker_mask.png differ diff --git a/images/weeb/erect/masks/bfPixel_mask.png b/images/weeb/erect/masks/bfPixel_mask.png new file mode 100644 index 0000000..f364f91 Binary files /dev/null and b/images/weeb/erect/masks/bfPixel_mask.png differ diff --git a/images/weeb/erect/masks/gfPixel_mask.png b/images/weeb/erect/masks/gfPixel_mask.png new file mode 100644 index 0000000..a41ce3a Binary files /dev/null and b/images/weeb/erect/masks/gfPixel_mask.png differ diff --git a/images/weeb/erect/masks/nenePixel_mask.png b/images/weeb/erect/masks/nenePixel_mask.png new file mode 100644 index 0000000..1ad960a Binary files /dev/null and b/images/weeb/erect/masks/nenePixel_mask.png differ diff --git a/images/weeb/erect/masks/picoPixel_mask.png b/images/weeb/erect/masks/picoPixel_mask.png new file mode 100644 index 0000000..b6e3515 Binary files /dev/null and b/images/weeb/erect/masks/picoPixel_mask.png differ diff --git a/images/weeb/erect/masks/senpai_mask.png b/images/weeb/erect/masks/senpai_mask.png new file mode 100644 index 0000000..ce33122 Binary files /dev/null and b/images/weeb/erect/masks/senpai_mask.png differ diff --git a/images/weeb/erect/petals.png b/images/weeb/erect/petals.png new file mode 100644 index 0000000..0c76591 Binary files /dev/null and b/images/weeb/erect/petals.png differ diff --git a/images/weeb/erect/petals.xml b/images/weeb/erect/petals.xml new file mode 100644 index 0000000..4fc02ca --- /dev/null +++ b/images/weeb/erect/petals.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/weeb/erect/weebBackTrees.png b/images/weeb/erect/weebBackTrees.png new file mode 100644 index 0000000..4117241 Binary files /dev/null and b/images/weeb/erect/weebBackTrees.png differ diff --git a/images/weeb/erect/weebSchool.png b/images/weeb/erect/weebSchool.png new file mode 100644 index 0000000..01d8adf Binary files /dev/null and b/images/weeb/erect/weebSchool.png differ diff --git a/images/weeb/erect/weebSky.png b/images/weeb/erect/weebSky.png new file mode 100644 index 0000000..624eb93 Binary files /dev/null and b/images/weeb/erect/weebSky.png differ diff --git a/images/weeb/erect/weebStreet.png b/images/weeb/erect/weebStreet.png new file mode 100644 index 0000000..1628362 Binary files /dev/null and b/images/weeb/erect/weebStreet.png differ diff --git a/images/weeb/erect/weebTrees.png b/images/weeb/erect/weebTrees.png new file mode 100644 index 0000000..b423a0b Binary files /dev/null and b/images/weeb/erect/weebTrees.png differ diff --git a/images/weeb/erect/weebTrees.txt b/images/weeb/erect/weebTrees.txt new file mode 100644 index 0000000..7846c00 --- /dev/null +++ b/images/weeb/erect/weebTrees.txt @@ -0,0 +1,20 @@ +trees_0 = 0 0 512 512 +trees_1 = 513 0 512 512 +trees_2 = 1539 1026 512 512 +trees_3 = 2052 513 512 512 +trees_4 = 2565 0 512 512 +trees_5 = 3078 0 512 512 +trees_6 = 2565 513 512 512 +trees_7 = 2052 1026 512 512 +trees_8 = 2565 1026 512 512 +trees_9 = 3078 513 512 512 +trees_10 = 1026 0 512 512 +trees_11 = 0 513 512 512 +trees_12 = 513 513 512 512 +trees_13 = 0 1026 512 512 +trees_14 = 513 1026 512 512 +trees_15 = 1026 513 512 512 +trees_16 = 1026 1026 512 512 +trees_17 = 1539 0 512 512 +trees_18 = 1539 513 512 512 +trees_19 = 2052 0 512 512 \ No newline at end of file diff --git a/images/weeb/erect/weebTreesBack.png b/images/weeb/erect/weebTreesBack.png new file mode 100644 index 0000000..569f831 Binary files /dev/null and b/images/weeb/erect/weebTreesBack.png differ diff --git a/images/weeb/evilSchoolBG.png b/images/weeb/evilSchoolBG.png new file mode 100644 index 0000000..4841512 Binary files /dev/null and b/images/weeb/evilSchoolBG.png differ diff --git a/images/weeb/evilSchoolFG.png b/images/weeb/evilSchoolFG.png new file mode 100644 index 0000000..9d4168d Binary files /dev/null and b/images/weeb/evilSchoolFG.png differ diff --git a/images/weeb/petals.png b/images/weeb/petals.png new file mode 100644 index 0000000..3c597ff Binary files /dev/null and b/images/weeb/petals.png differ diff --git a/images/weeb/petals.xml b/images/weeb/petals.xml new file mode 100644 index 0000000..4fc02ca --- /dev/null +++ b/images/weeb/petals.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/weeb/pixelUI/arrowEndsNew.png b/images/weeb/pixelUI/arrowEndsNew.png new file mode 100644 index 0000000..a468c83 Binary files /dev/null and b/images/weeb/pixelUI/arrowEndsNew.png differ diff --git a/images/weeb/pixelUI/arrows-pixels.png b/images/weeb/pixelUI/arrows-pixels.png new file mode 100644 index 0000000..d4469d6 Binary files /dev/null and b/images/weeb/pixelUI/arrows-pixels.png differ diff --git a/images/weeb/pixelUI/arrows-pixels.xml b/images/weeb/pixelUI/arrows-pixels.xml new file mode 100644 index 0000000..2779acc --- /dev/null +++ b/images/weeb/pixelUI/arrows-pixels.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/weeb/pixelUI/dialogueBox-evil.png b/images/weeb/pixelUI/dialogueBox-evil.png new file mode 100644 index 0000000..7924043 Binary files /dev/null and b/images/weeb/pixelUI/dialogueBox-evil.png differ diff --git a/images/weeb/pixelUI/dialogueBox-evil.xml b/images/weeb/pixelUI/dialogueBox-evil.xml new file mode 100644 index 0000000..32ddfce --- /dev/null +++ b/images/weeb/pixelUI/dialogueBox-evil.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/images/weeb/pixelUI/dialogueBox-evilNew.png b/images/weeb/pixelUI/dialogueBox-evilNew.png new file mode 100644 index 0000000..35a7359 Binary files /dev/null and b/images/weeb/pixelUI/dialogueBox-evilNew.png differ diff --git a/images/weeb/pixelUI/dialogueBox-evilNew.xml b/images/weeb/pixelUI/dialogueBox-evilNew.xml new file mode 100644 index 0000000..c009df1 --- /dev/null +++ b/images/weeb/pixelUI/dialogueBox-evilNew.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/images/weeb/pixelUI/dialogueBox-new.png b/images/weeb/pixelUI/dialogueBox-new.png new file mode 100644 index 0000000..f1edeb3 Binary files /dev/null and b/images/weeb/pixelUI/dialogueBox-new.png differ diff --git a/images/weeb/pixelUI/dialogueBox-new.xml b/images/weeb/pixelUI/dialogueBox-new.xml new file mode 100644 index 0000000..c6d3733 --- /dev/null +++ b/images/weeb/pixelUI/dialogueBox-new.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/weeb/pixelUI/dialogueBox-pixel.png b/images/weeb/pixelUI/dialogueBox-pixel.png new file mode 100644 index 0000000..0322eae Binary files /dev/null and b/images/weeb/pixelUI/dialogueBox-pixel.png differ diff --git a/images/weeb/pixelUI/dialogueBox-pixel.xml b/images/weeb/pixelUI/dialogueBox-pixel.xml new file mode 100644 index 0000000..32f0395 --- /dev/null +++ b/images/weeb/pixelUI/dialogueBox-pixel.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/images/weeb/pixelUI/dialogueBox-senpaiMad.png b/images/weeb/pixelUI/dialogueBox-senpaiMad.png new file mode 100644 index 0000000..a547639 Binary files /dev/null and b/images/weeb/pixelUI/dialogueBox-senpaiMad.png differ diff --git a/images/weeb/pixelUI/dialogueBox-senpaiMad.xml b/images/weeb/pixelUI/dialogueBox-senpaiMad.xml new file mode 100644 index 0000000..e270b8e --- /dev/null +++ b/images/weeb/pixelUI/dialogueBox-senpaiMad.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/images/weeb/pixelUI/hand_textbox.png b/images/weeb/pixelUI/hand_textbox.png new file mode 100644 index 0000000..22f57c4 Binary files /dev/null and b/images/weeb/pixelUI/hand_textbox.png differ diff --git a/images/weeb/portrait-boyfriend.png b/images/weeb/portrait-boyfriend.png new file mode 100644 index 0000000..7c7ac94 Binary files /dev/null and b/images/weeb/portrait-boyfriend.png differ diff --git a/images/weeb/portrait-boyfriend.xml b/images/weeb/portrait-boyfriend.xml new file mode 100644 index 0000000..3275f4e --- /dev/null +++ b/images/weeb/portrait-boyfriend.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/weeb/portrait-nene-peeved.png b/images/weeb/portrait-nene-peeved.png new file mode 100644 index 0000000..5de693b Binary files /dev/null and b/images/weeb/portrait-nene-peeved.png differ diff --git a/images/weeb/portrait-nene-peeved.xml b/images/weeb/portrait-nene-peeved.xml new file mode 100644 index 0000000..b5abfea --- /dev/null +++ b/images/weeb/portrait-nene-peeved.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/weeb/portrait-nene.png b/images/weeb/portrait-nene.png new file mode 100644 index 0000000..1b097eb Binary files /dev/null and b/images/weeb/portrait-nene.png differ diff --git a/images/weeb/portrait-nene.xml b/images/weeb/portrait-nene.xml new file mode 100644 index 0000000..8762c34 --- /dev/null +++ b/images/weeb/portrait-nene.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/weeb/portrait-pico-peeved.png b/images/weeb/portrait-pico-peeved.png new file mode 100644 index 0000000..4a46979 Binary files /dev/null and b/images/weeb/portrait-pico-peeved.png differ diff --git a/images/weeb/portrait-pico-peeved.xml b/images/weeb/portrait-pico-peeved.xml new file mode 100644 index 0000000..3363771 --- /dev/null +++ b/images/weeb/portrait-pico-peeved.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/weeb/portrait-pico.png b/images/weeb/portrait-pico.png new file mode 100644 index 0000000..8c1c9cf Binary files /dev/null and b/images/weeb/portrait-pico.png differ diff --git a/images/weeb/portrait-pico.xml b/images/weeb/portrait-pico.xml new file mode 100644 index 0000000..d80c8e5 --- /dev/null +++ b/images/weeb/portrait-pico.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/weeb/portrait-senpai-angry.png b/images/weeb/portrait-senpai-angry.png new file mode 100644 index 0000000..4ba63ac Binary files /dev/null and b/images/weeb/portrait-senpai-angry.png differ diff --git a/images/weeb/portrait-senpai-angry.xml b/images/weeb/portrait-senpai-angry.xml new file mode 100644 index 0000000..450f211 --- /dev/null +++ b/images/weeb/portrait-senpai-angry.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/weeb/portrait-senpai-bwuh.png b/images/weeb/portrait-senpai-bwuh.png new file mode 100644 index 0000000..beded47 Binary files /dev/null and b/images/weeb/portrait-senpai-bwuh.png differ diff --git a/images/weeb/portrait-senpai-bwuh.xml b/images/weeb/portrait-senpai-bwuh.xml new file mode 100644 index 0000000..d692f1f --- /dev/null +++ b/images/weeb/portrait-senpai-bwuh.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/weeb/portrait-senpai.png b/images/weeb/portrait-senpai.png new file mode 100644 index 0000000..b61ad42 Binary files /dev/null and b/images/weeb/portrait-senpai.png differ diff --git a/images/weeb/portrait-senpai.xml b/images/weeb/portrait-senpai.xml new file mode 100644 index 0000000..5a2f57c --- /dev/null +++ b/images/weeb/portrait-senpai.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/weeb/senpaiCrazy.png b/images/weeb/senpaiCrazy.png new file mode 100644 index 0000000..85d6fee Binary files /dev/null and b/images/weeb/senpaiCrazy.png differ diff --git a/images/weeb/senpaiCrazy.xml b/images/weeb/senpaiCrazy.xml new file mode 100644 index 0000000..d06a0e3 --- /dev/null +++ b/images/weeb/senpaiCrazy.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/weeb/spiritFaceForward.png b/images/weeb/spiritFaceForward.png new file mode 100644 index 0000000..93c7ed0 Binary files /dev/null and b/images/weeb/spiritFaceForward.png differ diff --git a/images/weeb/spiritFaceForward.xml b/images/weeb/spiritFaceForward.xml new file mode 100644 index 0000000..f0d0437 --- /dev/null +++ b/images/weeb/spiritFaceForward.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/images/weeb/weebBackTrees.png b/images/weeb/weebBackTrees.png new file mode 100644 index 0000000..3324287 Binary files /dev/null and b/images/weeb/weebBackTrees.png differ diff --git a/images/weeb/weebSchool.png b/images/weeb/weebSchool.png new file mode 100644 index 0000000..6324c7d Binary files /dev/null and b/images/weeb/weebSchool.png differ diff --git a/images/weeb/weebSky.png b/images/weeb/weebSky.png new file mode 100644 index 0000000..12c7068 Binary files /dev/null and b/images/weeb/weebSky.png differ diff --git a/images/weeb/weebStreet.png b/images/weeb/weebStreet.png new file mode 100644 index 0000000..31a2312 Binary files /dev/null and b/images/weeb/weebStreet.png differ diff --git a/images/weeb/weebTrees.png b/images/weeb/weebTrees.png new file mode 100644 index 0000000..9071e9a Binary files /dev/null and b/images/weeb/weebTrees.png differ diff --git a/images/weeb/weebTrees.txt b/images/weeb/weebTrees.txt new file mode 100644 index 0000000..7846c00 --- /dev/null +++ b/images/weeb/weebTrees.txt @@ -0,0 +1,20 @@ +trees_0 = 0 0 512 512 +trees_1 = 513 0 512 512 +trees_2 = 1539 1026 512 512 +trees_3 = 2052 513 512 512 +trees_4 = 2565 0 512 512 +trees_5 = 3078 0 512 512 +trees_6 = 2565 513 512 512 +trees_7 = 2052 1026 512 512 +trees_8 = 2565 1026 512 512 +trees_9 = 3078 513 512 512 +trees_10 = 1026 0 512 512 +trees_11 = 0 513 512 512 +trees_12 = 513 513 512 512 +trees_13 = 0 1026 512 512 +trees_14 = 513 1026 512 512 +trees_15 = 1026 513 512 512 +trees_16 = 1026 1026 512 512 +trees_17 = 1539 0 512 512 +trees_18 = 1539 513 512 512 +trees_19 = 2052 0 512 512 \ No newline at end of file diff --git a/images/weeb/weebTrees.xml b/images/weeb/weebTrees.xml new file mode 100644 index 0000000..ba229dc --- /dev/null +++ b/images/weeb/weebTrees.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/weeb/weebTreesBack.png b/images/weeb/weebTreesBack.png new file mode 100644 index 0000000..c800d85 Binary files /dev/null and b/images/weeb/weebTreesBack.png differ diff --git a/modules/loveanimate/AnimateAtlas.lua b/modules/loveanimate/AnimateAtlas.lua index e0c4a75..474eada 100644 --- a/modules/loveanimate/AnimateAtlas.lua +++ b/modules/loveanimate/AnimateAtlas.lua @@ -529,7 +529,6 @@ function AnimateAtlas:update(dt) frameIndex = 0 end local loopMode = self._curSymbol.data[optimized and "LP" or "loop"] - print(loopMode) local library = self.libraries[symbolName] local symbolTimeline = library.data @@ -541,7 +540,7 @@ function AnimateAtlas:update(dt) if frameIndex < 0 then frameIndex = length - 1 end - if frameIndex > length - 2 then + if frameIndex > length - 1 then frameIndex = 0 end elseif loopMode == "playonce" or loopMode == "PO" then diff --git a/modules/types/button.lua b/modules/types/button.lua index 6f8bdb9..ab2b1ad 100644 --- a/modules/types/button.lua +++ b/modules/types/button.lua @@ -120,6 +120,7 @@ function Button(position, size, callback, enabled) end ---@param sprite engine.sprite +---@return engine.spritebutton function SpriteButton(sprite, callback, enabled) print("Spritebutton") sprite.__index = SpriteButtonClass diff --git a/modules/types/character.lua b/modules/types/character.lua index 8cfbfe6..e362bdf 100644 --- a/modules/types/character.lua +++ b/modules/types/character.lua @@ -85,14 +85,15 @@ function _G.Character(name) animInfo = {}, sprite = sprite, singing = false, - stagePosition = Vector2(0, 0), -- Changeable stageCamera = Vector2(parsed.camera_position[1], parsed.camera_position[2]), + stagePosition = Vector2(), + hasStagePosition = false, flipX = parsed.flip_x, beats = parsed.beats or 4, animation = "idle", icon = parsed.healthicon, starterFrame = parsed.starter_frame, - colors = parsed.healthbar_colors + colors = parsed.healthbar_colors, }, CharacterClass) for index, alias in next, parsed.animations do @@ -130,6 +131,11 @@ function _G.Character(name) newCharacter.module = loadedModule end + if parsed.stage_positions and parsed.stage_positions[stage.name] then + newCharacter.stagePosition = Vector2(parsed.stage_positions[stage.name][1], parsed.stage_positions[stage.name][2]) + newCharacter.hasStagePosition = true + end + return newCharacter end diff --git a/sprites/characters/Gooey.png b/sprites/characters/Gooey.png deleted file mode 100644 index 30dfbcb..0000000 Binary files a/sprites/characters/Gooey.png and /dev/null differ diff --git a/sprites/characters/abot/aBotViz.png b/sprites/characters/abot/aBotViz.png index 046333e..7037a4f 100644 Binary files a/sprites/characters/abot/aBotViz.png and b/sprites/characters/abot/aBotViz.png differ diff --git a/sprites/characters/abot/aBotViz.xml b/sprites/characters/abot/aBotViz.xml index 3e27ba2..b1f29b2 100644 --- a/sprites/characters/abot/aBotViz.xml +++ b/sprites/characters/abot/aBotViz.xml @@ -1,45 +1,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sprites/characters/abot/systemEyes/Animation.json b/sprites/characters/abot/systemEyes/Animation.json index feb6091..c6ddd94 100644 --- a/sprites/characters/abot/systemEyes/Animation.json +++ b/sprites/characters/abot/systemEyes/Animation.json @@ -1 +1,780 @@ -{"ANIMATION":{"name":"gf_assets(1)","StageInstance":{"SYMBOL_Instance":{"SYMBOL_name":"a bot eyes lookin","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":52.85,"y":19.15},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":562.9,"m31":731.2,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":562.9,"y":731.2,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}},"SYMBOL_name":"a bot eyes lookin","TIMELINE":{"LAYERS":[{"Layer_name":"Layer_1","Frames":[{"index":0,"duration":8,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":53.2,"y":20.25},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":0.0,"m31":-0.95,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":0.0,"y":-0.95,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":8,"duration":2,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":53.2,"y":20.25},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-0.75,"m31":-0.95,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-0.75,"y":-0.95,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":10,"duration":1,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":53.2,"y":20.25},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-4.0,"m31":-0.95,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-4.0,"y":-0.95,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":11,"duration":2,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes 2","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":39.800000000000007,"y":11.75},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-6.75,"m31":17.35,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-6.75,"y":17.35,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":13,"duration":3,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes 2","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":39.800000000000007,"y":11.75},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-8.5,"m31":17.35,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-8.5,"y":17.35,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":16,"duration":6,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes 2","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":39.800000000000007,"y":11.75},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-9.0,"m31":17.35,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-9.0,"y":17.35,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":22,"duration":2,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes 2","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":39.800000000000007,"y":11.75},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-8.25,"m31":17.35,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-8.25,"y":17.35,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":24,"duration":1,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes 2","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":39.800000000000007,"y":11.75},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-6.75,"m31":17.35,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-6.75,"y":17.35,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":25,"duration":2,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":53.2,"y":20.25},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-3.0,"m31":-0.45,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-3.0,"y":-0.45,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":27,"duration":3,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":53.2,"y":20.25},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":-0.5,"m31":-0.95,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":-0.5,"y":-0.95,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]},{"index":30,"duration":2,"elements":[{"SYMBOL_Instance":{"SYMBOL_name":"abot eyes","Instance_Name":"","symbolType":"graphic","firstFrame":0,"loop":"loop","transformationPoint":{"x":53.2,"y":20.25},"Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":0.0,"m31":-0.95,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":0.0,"y":-0.95,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]}]}]}},"SYMBOL_DICTIONARY":{"Symbols":[{"SYMBOL_name":"abot eyes","TIMELINE":{"LAYERS":[{"Layer_name":"Layer_2","Frames":[{"index":0,"duration":1,"elements":[{"ATLAS_SPRITE_instance":{"name":"0000","Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":0.0,"m31":1.0,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":0.0,"y":1.0,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]}]}]}},{"SYMBOL_name":"abot eyes 2","TIMELINE":{"LAYERS":[{"Layer_name":"Layer_2","Frames":[{"index":0,"duration":1,"elements":[{"ATLAS_SPRITE_instance":{"name":"0001","Matrix3D":{"m00":1.0,"m01":0.0,"m02":0.0,"m03":0.0,"m10":0.0,"m11":1.0,"m12":0.0,"m13":0.0,"m20":0.0,"m21":0.0,"m22":1.0,"m23":0.0,"m30":0.0,"m31":0.0,"m32":0.0,"m33":1.0},"DecomposedMatrix":{"Position":{"x":0.0,"y":0.0,"z":0.0},"Rotation":{"x":0.0,"y":-0.0,"z":0.0},"Scaling":{"x":1.0,"y":1.0,"z":1.0}}}}]}]}]}}]},"metadata":{"framerate":24.0}} +{ + "ANIMATION": { + "name": "gf_assets(1)", + "StageInstance": { + "SYMBOL_Instance": { + "SYMBOL_name": "a bot eyes lookin", + "Instance_Name": "", + "symbolType": "graphic", + "firstFrame": 0, + "loop": "loop", + "transformationPoint": { + "x": 52.85, + "y": 19.15 + }, + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": 562.9, + "m31": 731.2, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": 562.9, + "y": 731.2, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + }, + "SYMBOL_name": "a bot eyes lookin", + "TIMELINE": { + "LAYERS": [ + { + "Layer_name": "Layer_1", + "Frames": [ + { + "index": 0, + "duration": 8, + "elements": [ + { + "SYMBOL_Instance": { + "SYMBOL_name": "abot eyes", + "Instance_Name": "", + "symbolType": "graphic", + "firstFrame": 0, + "loop": "loop", + "transformationPoint": { + "x": 53.2, + "y": 20.25 + }, + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": 0.0, + "m31": -0.95, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": 0.0, + "y": -0.95, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + }, + { + "index": 8, + "duration": 2, + "elements": [ + { + "SYMBOL_Instance": { + "SYMBOL_name": "abot eyes", + "Instance_Name": "", + "symbolType": "graphic", + "firstFrame": 0, + "loop": "loop", + "transformationPoint": { + "x": 53.2, + "y": 20.25 + }, + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": -0.75, + "m31": -0.95, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": -0.75, + "y": -0.95, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + }, + { + "index": 10, + "duration": 1, + "elements": [ + { + "SYMBOL_Instance": { + "SYMBOL_name": "abot eyes", + "Instance_Name": "", + "symbolType": "graphic", + "firstFrame": 0, + "loop": "loop", + "transformationPoint": { + "x": 53.2, + "y": 20.25 + }, + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": -4.0, + "m31": -0.95, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": -4.0, + "y": -0.95, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + }, + { + "index": 11, + "duration": 2, + "elements": [ + { + "SYMBOL_Instance": { + "SYMBOL_name": "abot eyes 2", + "Instance_Name": "", + "symbolType": "graphic", + "firstFrame": 0, + "loop": "loop", + "transformationPoint": { + "x": 39.800000000000007, + "y": 11.75 + }, + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": -6.75, + "m31": 17.35, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": -6.75, + "y": 17.35, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + }, + { + "index": 13, + "duration": 3, + "elements": [ + { + "SYMBOL_Instance": { + "SYMBOL_name": "abot eyes 2", + "Instance_Name": "", + "symbolType": "graphic", + "firstFrame": 0, + "loop": "loop", + "transformationPoint": { + "x": 39.800000000000007, + "y": 11.75 + }, + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": -8.5, + "m31": 17.35, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": -8.5, + "y": 17.35, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + }, + { + "index": 16, + "duration": 6, + "elements": [ + { + "SYMBOL_Instance": { + "SYMBOL_name": "abot eyes 2", + "Instance_Name": "", + "symbolType": "graphic", + "firstFrame": 0, + "loop": "loop", + "transformationPoint": { + "x": 39.800000000000007, + "y": 11.75 + }, + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": -9.0, + "m31": 17.35, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": -9.0, + "y": 17.35, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + }, + { + "index": 22, + "duration": 2, + "elements": [ + { + "SYMBOL_Instance": { + "SYMBOL_name": "abot eyes 2", + "Instance_Name": "", + "symbolType": "graphic", + "firstFrame": 0, + "loop": "loop", + "transformationPoint": { + "x": 39.800000000000007, + "y": 11.75 + }, + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": -8.25, + "m31": 17.35, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": -8.25, + "y": 17.35, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + }, + { + "index": 24, + "duration": 1, + "elements": [ + { + "SYMBOL_Instance": { + "SYMBOL_name": "abot eyes 2", + "Instance_Name": "", + "symbolType": "graphic", + "firstFrame": 0, + "loop": "loop", + "transformationPoint": { + "x": 39.800000000000007, + "y": 11.75 + }, + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": -6.75, + "m31": 17.35, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": -6.75, + "y": 17.35, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + }, + { + "index": 25, + "duration": 2, + "elements": [ + { + "SYMBOL_Instance": { + "SYMBOL_name": "abot eyes", + "Instance_Name": "", + "symbolType": "graphic", + "firstFrame": 0, + "loop": "loop", + "transformationPoint": { + "x": 53.2, + "y": 20.25 + }, + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": -3.0, + "m31": -0.45, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": -3.0, + "y": -0.45, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + }, + { + "index": 27, + "duration": 3, + "elements": [ + { + "SYMBOL_Instance": { + "SYMBOL_name": "abot eyes", + "Instance_Name": "", + "symbolType": "graphic", + "firstFrame": 0, + "loop": "loop", + "transformationPoint": { + "x": 53.2, + "y": 20.25 + }, + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": -0.5, + "m31": -0.95, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": -0.5, + "y": -0.95, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + }, + { + "index": 30, + "duration": 2, + "elements": [ + { + "SYMBOL_Instance": { + "SYMBOL_name": "abot eyes", + "Instance_Name": "", + "symbolType": "graphic", + "firstFrame": 0, + "loop": "loop", + "transformationPoint": { + "x": 53.2, + "y": 20.25 + }, + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": 0.0, + "m31": -0.95, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": 0.0, + "y": -0.95, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + } + ] + } + ] + } + }, + "SYMBOL_DICTIONARY": { + "Symbols": [ + { + "SYMBOL_name": "abot eyes", + "TIMELINE": { + "LAYERS": [ + { + "Layer_name": "Layer_2", + "Frames": [ + { + "index": 0, + "duration": 1, + "elements": [ + { + "ATLAS_SPRITE_instance": { + "name": "0000", + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": 0.0, + "m31": 1.0, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": 0.0, + "y": 1.0, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + } + ] + } + ] + } + }, + { + "SYMBOL_name": "abot eyes 2", + "TIMELINE": { + "LAYERS": [ + { + "Layer_name": "Layer_2", + "Frames": [ + { + "index": 0, + "duration": 1, + "elements": [ + { + "ATLAS_SPRITE_instance": { + "name": "0001", + "Matrix3D": { + "m00": 1.0, + "m01": 0.0, + "m02": 0.0, + "m03": 0.0, + "m10": 0.0, + "m11": 1.0, + "m12": 0.0, + "m13": 0.0, + "m20": 0.0, + "m21": 0.0, + "m22": 1.0, + "m23": 0.0, + "m30": 0.0, + "m31": 0.0, + "m32": 0.0, + "m33": 1.0 + }, + "DecomposedMatrix": { + "Position": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "Rotation": { + "x": 0.0, + "y": -0.0, + "z": 0.0 + }, + "Scaling": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + } + } + } + } + ] + } + ] + } + ] + } + } + ] + }, + "metadata": { + "framerate": 24.0 + } +} \ No newline at end of file diff --git a/sprites/characters/abot/systemEyes/spritemap1.json b/sprites/characters/abot/systemEyes/spritemap1.json index 17cc3a0..759682e 100644 --- a/sprites/characters/abot/systemEyes/spritemap1.json +++ b/sprites/characters/abot/systemEyes/spritemap1.json @@ -1 +1 @@ -{"ATLAS":{"SPRITES":[{"SPRITE":{"name":"0000","x":0,"y":0,"w":106,"h":38,"rotated":false}},{"SPRITE":{"name":"0001","x":0,"y":43,"w":79,"h":22,"rotated":false}}]},"meta":{"app":"Adobe Animate","version":"23.0.1.70","image":"spritemap1.png","format":"RGBA8888","size":{"w":106,"h":65},"resolution":"1"}} +{"ATLAS":{"SPRITES":[{"SPRITE":{"name":"0000","x":0,"y":0,"w":106,"h":38,"rotated":false}},{"SPRITE":{"name":"0001","x":0,"y":43,"w":79,"h":22,"rotated":false}}]},"meta":{"app":"Adobe Animate","version":"23.0.1.70","image":"spritemap1.png","format":"RGBA8888","size":{"w":106,"h":65},"resolution":"1"}} diff --git a/sprites/characters/neneChristmas.xml b/sprites/characters/neneChristmas.xml new file mode 100644 index 0000000..c1e5f80 --- /dev/null +++ b/sprites/characters/neneChristmas.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sprites/characters/nene_dark.png b/sprites/characters/nene_dark.png new file mode 100644 index 0000000..d6ebb08 Binary files /dev/null and b/sprites/characters/nene_dark.png differ diff --git a/stages/tank.json b/stages/tank.json index 391307d..b10c0c9 100644 --- a/stages/tank.json +++ b/stages/tank.json @@ -12,5 +12,7 @@ "camera_opponent": [-500, 200], "camera_girlfriend": [0, 0], "camera_speed": 1, - "default": true + "default": true, + + "name": "tank" } diff --git a/states/playstate.lua b/states/playstate.lua index 241a93e..7fff952 100644 --- a/states/playstate.lua +++ b/states/playstate.lua @@ -133,7 +133,7 @@ local function state(songName, songDifficulty, show) local stageString = files.read_file(string.format("stages/%s.json", stageName)) or files.read_file("stages/stage.json") - local stage = json.parse(stageString) + _G.stage = json.parse(stageString) local unspawnedNotes = {} local notes = {} @@ -704,8 +704,18 @@ local function state(songName, songDifficulty, show) Vector2(-stage.camera_boyfriend[1], -stage.camera_boyfriend[2]):Add(characters.bf.stageCamera :Negate()):Add(Vector2(0, -200)) - cameraTween = tween.new(type(event.vars) == "table" and event.vars.duration or 0.5, - render.cameraPosition, { x = cameraPosition.x, y = cameraPosition.y }, tween.easing.inOutQuad) + local ease = tween.easing.outQuad + + local easetime = 1.5 + + if event.vars and type(event.vars) == "table" then + if event.vars.ease and event.vars.ease ~= "CLASSIC" then + easetime = event.vars.duration or 1.5 + end + end + + cameraTween = tween.new(easetime, + render.cameraPosition, { x = cameraPosition.x, y = cameraPosition.y }, ease) elseif event.name == "zoomcamera" then zoomTween = tween.new(event.vars.duration or 32, sharedVars, { defaultZoom = event.vars.zoom }, tween.easing.outExpo) @@ -728,8 +738,6 @@ local function state(songName, songDifficulty, show) characters[chars[event.vars.char] or event.vars.char]:Destroy() characters[chars[event.vars.char] or event.vars.char] = Character(event.vars.to) - characters[chars[event.vars.char] or event.vars.char].stagePosition = Vector2(stage.opponent[1], - stage.opponent[2]) end for index, module in next, modules do @@ -907,15 +915,19 @@ local function state(songName, songDifficulty, show) -- GF first so she is below other chars if metadata.playData.characters.girlfriend then characters.gf = Character(metadata.playData.characters.girlfriend) - characters.gf.stagePosition = Vector2(stage.girlfriend[1], stage.girlfriend[2]) characters.gf:PlayAnimation("danceLeft") characters.gf.sprite.layer = 0 + if not characters.gf.hasStagePosition then + characters.gf.stagePosition = Vector2(stage.girlfriend[1], stage.girlfriend[2]) + end end characters.bf = Character(metadata.playData.characters.player) - characters.bf.stagePosition = Vector2(stage.boyfriend[1], stage.boyfriend[2]) characters.bf:PlayAnimation("idle") characters.bf.sprite.layer = 1 + if not characters.bf.hasStagePosition then + characters.bf.stagePosition = Vector2(stage.boyfriend[1], stage.boyfriend[2]) + end local image = love.graphics.newImage(string.format("images/icons/icon-%s.png", characters.bf.icon)) icons.bf = { @@ -927,9 +939,11 @@ local function state(songName, songDifficulty, show) if metadata.playData.characters.opponent and metadata.playData.characters.opponent ~= "none" then -- you can have no player2 but always player1 characters.dad = Character(metadata.playData.characters.opponent) - characters.dad.stagePosition = Vector2(stage.opponent[1], stage.opponent[2]) characters.dad:PlayAnimation(characters.dad.animInfo.idle and "idle" or "danceLeft") characters.dad.sprite.layer = 1 + if not characters.dad.hasStagePosition then + characters.dad.stagePosition = Vector2(stage.opponent[1], stage.opponent[2]) + end local image = love.graphics.newImage(string.format("images/icons/icon-%s.png", characters.dad.icon)) icons.dad = {