Compare commits

..

5 Commits

114 changed files with 7461 additions and 331 deletions

View File

@ -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
}

View File

@ -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

View File

@ -73,12 +73,8 @@
"fps": 24,
"anim": "hairBlow",
"indices": [
0,
1,
2,
3
],
"name": "HairBlow0"
"name": "Idle"
},
{
"loop": false,
@ -89,20 +85,25 @@
"fps": 24,
"anim": "hairFall",
"indices": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
],
"name": "HairBlow0"
"name": "Idle"
}
],
"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],
"tankErect": [650, -260],
"philly": [320, 80]
}
}

119
characters/nene.lua Normal file
View File

@ -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

View File

@ -0,0 +1,59 @@
{
"animations": [
{
"offsets": [0, 0],
"indices": [],
"fps": 24,
"anim": "idle",
"loop": false,
"name": "otis idle"
},
{
"offsets": [0, 13],
"indices": [],
"fps": 24,
"anim": "shoot1",
"loop": false,
"name": "shoot back"
},
{
"offsets": [-35, 21],
"indices": [],
"fps": 24,
"anim": "shoot2",
"loop": false,
"name": "shoot back low"
},
{
"offsets": [238, 96],
"indices": [],
"fps": 24,
"anim": "shoot3",
"loop": false,
"name": "shoot forward"
},
{
"offsets": [260, 23],
"indices": [],
"fps": 24,
"anim": "shoot4",
"loop": false,
"name": "shoot forward low"
}
],
"vocals_file": "",
"no_antialiasing": false,
"image": "sprites/characters/otisSpeaker",
"position": [-40, 110],
"healthicon": "face",
"flip_x": false,
"healthbar_colors": [161, 161, 161],
"camera_position": [-150, 100],
"sing_duration": 6.1,
"scale": 1,
"_editor_isPlayer": false,
"starter_frame": 1,
"stage_positions": {
"tank": [500, -330]
}
}

119
characters/otis-speaker.lua Normal file
View File

@ -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(0, 0))
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(-80, 320)):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

View File

@ -154,6 +154,17 @@
"name": "burpshit",
"indices": []
},
{
"loop": false,
"offsets": [
30,
0
],
"anim": "burpSmile",
"fps": 24,
"name": "burpsmile",
"indices": []
},
{
"loop": false,
"offsets": [
@ -187,5 +198,8 @@
"sing_duration": 4,
"scale": 1,
"_editor_isPlayer": true,
"starter_frame": 1
"starter_frame": 1,
"stage_positions": {
"tankErect": [1100, -200]
}
}

View File

@ -62,7 +62,7 @@
],
"loop": false,
"fps": 24,
"anim": "singRIGHT",
"anim": "singLEFT",
"indices": [],
"name": "Pico Note Right"
},
@ -73,7 +73,7 @@
],
"loop": false,
"fps": 24,
"anim": "singLEFT",
"anim": "singRIGHT",
"indices": [],
"name": "Pico NOTE LEFT"
},

View File

@ -0,0 +1,79 @@
{
"animations": [
{
"offsets": [0, 52],
"indices": [],
"fps": 24,
"anim": "idle",
"loop": false,
"name": "Tankman Idle bloody"
},
{
"offsets": [-90, 15],
"indices": [],
"fps": 24,
"anim": "singLEFT",
"loop": false,
"name": "Tankman Right Note bloody"
},
{
"offsets": [-62, -105],
"indices": [],
"fps": 24,
"anim": "singDOWN",
"loop": false,
"name": "Tankman DOWN note bloody"
},
{
"offsets": [-47, 165],
"indices": [],
"fps": 24,
"anim": "singUP",
"loop": false,
"name": "Tankman UP note bloody"
},
{
"offsets": [23, 17],
"indices": [],
"fps": 24,
"anim": "singRIGHT",
"loop": false,
"name": "Tankman Note Left bloody"
},
{
"offsets": [110, 117],
"indices": [],
"fps": 30,
"anim": "redheadsAnim",
"loop": false,
"name": "redheads anim"
},
{
"offsets": [0, 90],
"indices": [],
"fps": 30,
"anim": "hehPrettyGood",
"loop": false,
"name": "pretty good anim"
}
],
"vocals_file": "",
"no_antialiasing": false,
"image": "sprites/characters/tankmanCaptainBloody",
"position": [0, 480],
"healthicon": "tankman-bloody",
"flip_x": true,
"healthbar_colors": [
225,
225,
225
],
"camera_position": [-900, -20],
"sing_duration": 6.1,
"scale": 1,
"_editor_isPlayer": false,
"starter_frame": 1,
"stage_positions": {
"tank": [500, -330]
}
}

View File

@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-playable",
"girlfriend": "gf",
"girlfriend": "nene",
"opponent": "pico",
"instrumental": "pico",
"altInstrumentals": []

View File

@ -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"],

View File

@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-playable",
"girlfriend": "gf",
"girlfriend": "nene",
"opponent": "dad",
"instrumental": "pico",
"altInstrumentals": []

View File

@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-playable",
"girlfriend": "gf",
"girlfriend": "nene",
"opponent": "dad",
"instrumental": "pico",
"altInstrumentals": []

View File

@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-playable",
"girlfriend": "gf",
"girlfriend": "nene",
"opponent": "pico",
"instrumental": "pico",
"altInstrumentals": []

View File

@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-playable",
"girlfriend": "gf",
"girlfriend": "nene",
"opponent": "pico",
"instrumental": "pico",
"altInstrumentals": []

View File

@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-dark",
"girlfriend": "gf-dark",
"girlfriend": "nene-dark",
"opponent": "spooky-dark",
"instrumental": "pico",
"altInstrumentals": []

View File

@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-dark",
"girlfriend": "gf-dark",
"girlfriend": "nene-dark",
"opponent": "spooky-dark",
"instrumental": "pico",
"altInstrumentals": []

View File

@ -242,6 +242,11 @@
"e": "FocusCamera",
"v": { "x": 0, "duration": 16, "y": 0, "ease": "expoOut", "char": 1 }
},
{
"t": 61980.0112359550,
"e": "Change Character",
"v": { "char": "dad", "force": true, "to": "tankman-bloody" }
},
{
"t": 61980.0112359551,
"e": "PlayAnimation",

View File

@ -10,7 +10,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-holding-nene",
"girlfriend": "nene",
"girlfriend": "otis-speaker",
"opponent": "tankman",
"instrumental": "pico",
"altInstrumentals": [],

View File

@ -7,7 +7,7 @@
"difficulties": ["easy", "normal", "hard"],
"characters": {
"player": "pico-playable",
"girlfriend": "gf",
"girlfriend": "nene",
"opponent": "tankman",
"instrumental": "pico",
"altInstrumentals": []

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="animatedEvilSchool.png">
<SubTexture name="background 2 instance 10000" x="0" y="0" width="513" height="512" />
<SubTexture name="background 2 instance 10001" x="523" y="0" width="513" height="512" />
<SubTexture name="background 2 instance 10002" x="1046" y="0" width="513" height="512" />
<SubTexture name="background 2 instance 10003" x="1569" y="0" width="513" height="512" />
<SubTexture name="background 2 instance 10004" x="2092" y="0" width="513" height="512" />
<SubTexture name="background 2 instance 10005" x="2615" y="0" width="513" height="512" />
<SubTexture name="background 2 instance 10006" x="3138" y="0" width="513" height="512" />
<SubTexture name="background 2 instance 10007" x="0" y="522" width="513" height="512" />
<SubTexture name="background 2 instance 10008" x="523" y="522" width="513" height="512" />
<SubTexture name="background 2 instance 10009" x="1046" y="522" width="513" height="512" />
<SubTexture name="background 2 instance 10010" x="1569" y="522" width="513" height="512" />
<SubTexture name="background 2 instance 10011" x="2092" y="522" width="513" height="512" />
<SubTexture name="background 2 instance 10012" x="2615" y="522" width="513" height="512" />
<SubTexture name="background 2 instance 10013" x="3138" y="522" width="513" height="512" />
<SubTexture name="background 2 instance 10014" x="0" y="1044" width="513" height="512" />
<SubTexture name="background 2 instance 10015" x="523" y="1044" width="513" height="512" />
<SubTexture name="background 2 instance 10016" x="1046" y="1044" width="513" height="512" />
<SubTexture name="background 2 instance 10017" x="1569" y="1044" width="513" height="512" />
<SubTexture name="background 2 instance 10018" x="2092" y="1044" width="513" height="512" />
<SubTexture name="background 2 instance 10019" x="2615" y="1044" width="513" height="512" />
<SubTexture name="background 2 instance 10020" x="3138" y="1044" width="513" height="512" />
<SubTexture name="background 2 instance 10021" x="0" y="1566" width="513" height="512" />
<SubTexture name="background 2 instance 10022" x="523" y="1566" width="513" height="512" />
<SubTexture name="background 2 instance 10023" x="1046" y="1566" width="513" height="512" />
<SubTexture name="background 2 instance 10024" x="1569" y="1566" width="513" height="512" />
<SubTexture name="background 2 instance 10025" x="2092" y="1566" width="513" height="512" />
<SubTexture name="background 2 instance 10026" x="2615" y="1566" width="513" height="512" />
<SubTexture name="background 2 instance 10027" x="3138" y="1566" width="513" height="512" />
<SubTexture name="background 2 instance 10028" x="0" y="2088" width="513" height="512" />
<SubTexture name="background 2 instance 10029" x="523" y="2088" width="513" height="512" />
<SubTexture name="background 2 instance 10030" x="1046" y="2088" width="513" height="512" />
<SubTexture name="background 2 instance 10031" x="1569" y="2088" width="513" height="512" />
<SubTexture name="background 2 instance 10032" x="2092" y="2088" width="513" height="512" />
<SubTexture name="background 2 instance 10033" x="2615" y="2088" width="513" height="512" />
<SubTexture name="background 2 instance 10034" x="3138" y="2088" width="513" height="512" />
<SubTexture name="background 2 instance 10035" x="0" y="2610" width="513" height="512" />
<SubTexture name="background 2 instance 10036" x="523" y="2610" width="513" height="512" />
<SubTexture name="background 2 instance 10037" x="1046" y="2610" width="513" height="512" />
<SubTexture name="background 2 instance 10038" x="1569" y="2610" width="513" height="512" />
<SubTexture name="background 2 instance 10039" x="2092" y="2610" width="513" height="512" />
</TextureAtlas>

BIN
images/weeb/bgFreaks.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

63
images/weeb/bgFreaks.xml Normal file
View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="bgFreaks.png">
<SubTexture name="BG fangirls dissuaded0000" x="0" y="0" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0001" x="0" y="0" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0002" x="461" y="0" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0003" x="461" y="0" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0004" x="461" y="0" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0005" x="461" y="0" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0006" x="0" y="106" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0007" x="0" y="106" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0008" x="0" y="106" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0009" x="0" y="106" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0010" x="0" y="106" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0011" x="0" y="106" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0012" x="0" y="106" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0013" x="0" y="106" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0014" x="461" y="106" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0015" x="461" y="106" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0016" x="0" y="212" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0017" x="0" y="212" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0018" x="461" y="212" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0019" x="461" y="212" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0020" x="0" y="318" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0021" x="0" y="318" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0022" x="461" y="318" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0023" x="461" y="318" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0024" x="461" y="318" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0025" x="461" y="318" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0026" x="461" y="318" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0027" x="461" y="318" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0028" x="461" y="318" width="451" height="96" />
<SubTexture name="BG fangirls dissuaded0029" x="461" y="318" width="451" height="96" />
<SubTexture name="BG girls group0000" x="0" y="424" width="450" height="96" />
<SubTexture name="BG girls group0001" x="0" y="424" width="450" height="96" />
<SubTexture name="BG girls group0002" x="460" y="424" width="450" height="96" />
<SubTexture name="BG girls group0003" x="460" y="424" width="450" height="96" />
<SubTexture name="BG girls group0004" x="460" y="424" width="450" height="96" />
<SubTexture name="BG girls group0005" x="460" y="424" width="450" height="96" />
<SubTexture name="BG girls group0006" x="0" y="530" width="450" height="96" />
<SubTexture name="BG girls group0007" x="0" y="530" width="450" height="96" />
<SubTexture name="BG girls group0008" x="0" y="530" width="450" height="96" />
<SubTexture name="BG girls group0009" x="0" y="530" width="450" height="96" />
<SubTexture name="BG girls group0010" x="0" y="530" width="450" height="96" />
<SubTexture name="BG girls group0011" x="0" y="530" width="450" height="96" />
<SubTexture name="BG girls group0012" x="0" y="530" width="450" height="96" />
<SubTexture name="BG girls group0013" x="0" y="530" width="450" height="96" />
<SubTexture name="BG girls group0014" x="460" y="530" width="450" height="96" />
<SubTexture name="BG girls group0015" x="460" y="530" width="450" height="96" />
<SubTexture name="BG girls group0016" x="0" y="636" width="450" height="96" />
<SubTexture name="BG girls group0017" x="0" y="636" width="450" height="96" />
<SubTexture name="BG girls group0018" x="0" y="530" width="450" height="96" />
<SubTexture name="BG girls group0019" x="0" y="530" width="450" height="96" />
<SubTexture name="BG girls group0020" x="460" y="636" width="450" height="96" />
<SubTexture name="BG girls group0021" x="460" y="636" width="450" height="96" />
<SubTexture name="BG girls group0022" x="460" y="424" width="450" height="96" />
<SubTexture name="BG girls group0023" x="460" y="424" width="450" height="96" />
<SubTexture name="BG girls group0024" x="460" y="424" width="450" height="96" />
<SubTexture name="BG girls group0025" x="460" y="424" width="450" height="96" />
<SubTexture name="BG girls group0026" x="460" y="424" width="450" height="96" />
<SubTexture name="BG girls group0027" x="460" y="424" width="450" height="96" />
<SubTexture name="BG girls group0028" x="460" y="424" width="450" height="96" />
<SubTexture name="BG girls group0029" x="460" y="424" width="450" height="96" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="petals.png">
<SubTexture name="PETALS ALL0000" x="0" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0001" x="0" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0002" x="313" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0003" x="313" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0004" x="626" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0005" x="939" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0006" x="1252" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0007" x="1252" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0008" x="1565" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0009" x="0" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0010" x="313" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0011" x="626" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0012" x="939" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0013" x="1252" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0014" x="1252" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0015" x="1565" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0016" x="0" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0017" x="313" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0018" x="313" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0019" x="626" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0020" x="939" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0021" x="1252" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0022" x="1252" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0023" x="1565" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0024" x="0" y="489" width="311" height="161" />
<SubTexture name="PETALS ALL0025" x="313" y="489" width="311" height="161" />
<SubTexture name="PETALS ALL0026" x="626" y="489" width="311" height="161" />
<SubTexture name="PETALS ALL0027" x="939" y="489" width="311" height="161" />
<SubTexture name="PETALS ALL0028" x="1252" y="489" width="311" height="161" />
<SubTexture name="PETALS ALL0029" x="1565" y="489" width="311" height="161" />
<SubTexture name="PETALS ALL0030" x="0" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0031" x="313" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0032" x="626" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0033" x="939" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0034" x="1252" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0035" x="1252" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0036" x="1565" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0037" x="0" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0038" x="313" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0039" x="313" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0040" x="626" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0041" x="939" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0042" x="939" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0043" x="1252" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0044" x="1565" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0045" x="0" y="978" width="311" height="161" />
<SubTexture name="PETALS ALL0046" x="313" y="978" width="311" height="161" />
<SubTexture name="PETALS ALL0047" x="626" y="978" width="311" height="161" />
<SubTexture name="PETALS ALL0048" x="939" y="978" width="311" height="161" />
<SubTexture name="PETALS ALL0049" x="1252" y="978" width="311" height="161" />
<SubTexture name="PETALS ALL0050" x="1565" y="978" width="311" height="161" />
<SubTexture name="PETALS ALL0051" x="0" y="1141" width="311" height="161" />
<SubTexture name="PETALS ALL0052" x="313" y="1141" width="311" height="161" />
<SubTexture name="PETALS ALL0053" x="313" y="1141" width="311" height="161" />
<SubTexture name="PETALS ALL0054" x="626" y="1141" width="311" height="161" />
<SubTexture name="PETALS ALL0055" x="0" y="0" width="311" height="161" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
images/weeb/petals.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

59
images/weeb/petals.xml Normal file
View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="petals.png">
<SubTexture name="PETALS ALL0000" x="0" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0001" x="0" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0002" x="313" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0003" x="313" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0004" x="626" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0005" x="939" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0006" x="1252" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0007" x="1252" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0008" x="1565" y="0" width="311" height="161" />
<SubTexture name="PETALS ALL0009" x="0" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0010" x="313" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0011" x="626" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0012" x="939" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0013" x="1252" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0014" x="1252" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0015" x="1565" y="163" width="311" height="161" />
<SubTexture name="PETALS ALL0016" x="0" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0017" x="313" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0018" x="313" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0019" x="626" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0020" x="939" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0021" x="1252" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0022" x="1252" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0023" x="1565" y="326" width="311" height="161" />
<SubTexture name="PETALS ALL0024" x="0" y="489" width="311" height="161" />
<SubTexture name="PETALS ALL0025" x="313" y="489" width="311" height="161" />
<SubTexture name="PETALS ALL0026" x="626" y="489" width="311" height="161" />
<SubTexture name="PETALS ALL0027" x="939" y="489" width="311" height="161" />
<SubTexture name="PETALS ALL0028" x="1252" y="489" width="311" height="161" />
<SubTexture name="PETALS ALL0029" x="1565" y="489" width="311" height="161" />
<SubTexture name="PETALS ALL0030" x="0" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0031" x="313" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0032" x="626" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0033" x="939" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0034" x="1252" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0035" x="1252" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0036" x="1565" y="652" width="311" height="161" />
<SubTexture name="PETALS ALL0037" x="0" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0038" x="313" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0039" x="313" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0040" x="626" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0041" x="939" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0042" x="939" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0043" x="1252" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0044" x="1565" y="815" width="311" height="161" />
<SubTexture name="PETALS ALL0045" x="0" y="978" width="311" height="161" />
<SubTexture name="PETALS ALL0046" x="313" y="978" width="311" height="161" />
<SubTexture name="PETALS ALL0047" x="626" y="978" width="311" height="161" />
<SubTexture name="PETALS ALL0048" x="939" y="978" width="311" height="161" />
<SubTexture name="PETALS ALL0049" x="1252" y="978" width="311" height="161" />
<SubTexture name="PETALS ALL0050" x="1565" y="978" width="311" height="161" />
<SubTexture name="PETALS ALL0051" x="0" y="1141" width="311" height="161" />
<SubTexture name="PETALS ALL0052" x="313" y="1141" width="311" height="161" />
<SubTexture name="PETALS ALL0053" x="313" y="1141" width="311" height="161" />
<SubTexture name="PETALS ALL0054" x="626" y="1141" width="311" height="161" />
<SubTexture name="PETALS ALL0055" x="0" y="0" width="311" height="161" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="arrows-pixels.png">
<SubTexture name="staticLeft0001" x="0" y="0" width="17" height="17" />
<SubTexture name="staticDown0001" x="17" y="0" width="17" height="17" />
<SubTexture name="staticUp0001" x="34" y="0" width="17" height="17" />
<SubTexture name="staticRight0001" x="51" y="0" width="17" height="17" />
<SubTexture name="noteLeft0001" x="0" y="17" width="17" height="17" />
<SubTexture name="noteDown0001" x="17" y="17" width="17" height="17" />
<SubTexture name="noteUp0001" x="34" y="17" width="17" height="17" />
<SubTexture name="noteRight0001" x="51" y="17" width="17" height="17" />
<SubTexture name="pressedLeft0001" x="0" y="17" width="17" height="17" />
<SubTexture name="pressedDown0001" x="17" y="17" width="17" height="17" />
<SubTexture name="pressedUp0001" x="34" y="17" width="17" height="17" />
<SubTexture name="pressedRight0001" x="51" y="17" width="17" height="17" />
<SubTexture name="pressedLeft0002" x="0" y="34" width="17" height="17" />
<SubTexture name="pressedDown0002" x="17" y="34" width="17" height="17" />
<SubTexture name="pressedUp0002" x="34" y="34" width="17" height="17" />
<SubTexture name="pressedRight0002" x="51" y="34" width="17" height="17" />
<SubTexture name="confirmLeft0001" x="0" y="51" width="17" height="17" />
<SubTexture name="confirmDown0001" x="17" y="51" width="17" height="17" />
<SubTexture name="confirmUp0001" x="34" y="51" width="17" height="17" />
<SubTexture name="confirmRight0001" x="51" y="51" width="17" height="17" />
<SubTexture name="confirmLeft0002" x="0" y="68" width="17" height="17" />
<SubTexture name="confirmDown0002" x="17" y="68" width="17" height="17" />
<SubTexture name="confirmUp0002" x="34" y="68" width="17" height="17" />
<SubTexture name="confirmRight0002" x="51" y="68" width="17" height="17" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="dialogueBox-evil.png">
<SubTexture name="Spirit Textbox spawn instance 10000" x="0" y="0" width="249" height="145" />
<SubTexture name="Spirit Textbox spawn instance 10001" x="0" y="0" width="249" height="145" />
<SubTexture name="Spirit Textbox spawn instance 10002" x="259" y="0" width="249" height="145" />
<SubTexture name="Spirit Textbox spawn instance 10003" x="259" y="0" width="249" height="145" />
<SubTexture name="Spirit Textbox spawn instance 10004" x="0" y="155" width="249" height="145" />
<SubTexture name="Spirit Textbox spawn instance 10005" x="0" y="155" width="249" height="145" />
<SubTexture name="Spirit Textbox spawn instance 10006" x="259" y="155" width="249" height="145" />
<SubTexture name="Spirit Textbox spawn instance 10007" x="259" y="155" width="249" height="145" />
<SubTexture name="Spirit Textbox spawn instance 10008" x="0" y="310" width="249" height="145" />
<SubTexture name="Spirit Textbox spawn instance 10009" x="0" y="310" width="249" height="145" />
<SubTexture name="Spirit Textbox spawn instance 10010" x="259" y="310" width="249" height="145" />
<SubTexture name="Spirit Textbox spawn instance 10011" x="259" y="310" width="249" height="145" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="dialogueBoxes-evilNew.png">
<SubTexture name="Spirit Text Box Click0000" x="4" y="4" width="248" height="144" />
<SubTexture name="Spirit Text Box Sentence Complete0000" x="256" y="4" width="248" height="144" />
<SubTexture name="Spirit Textbox0000" x="508" y="4" width="248" height="144" />
<SubTexture name="Spirit Textbox spawn0000" x="760" y="4" width="248" height="144" />
<SubTexture name="Spirit Textbox spawn0001" x="760" y="4" width="248" height="144" />
<SubTexture name="Spirit Textbox spawn0002" x="4" y="152" width="248" height="144" />
<SubTexture name="Spirit Textbox spawn0003" x="4" y="152" width="248" height="144" />
<SubTexture name="Spirit Textbox spawn0004" x="256" y="152" width="248" height="144" />
<SubTexture name="Spirit Textbox spawn0005" x="256" y="152" width="248" height="144" />
<SubTexture name="Spirit Textbox spawn0006" x="508" y="152" width="248" height="144" />
<SubTexture name="Spirit Textbox spawn0007" x="508" y="152" width="248" height="144" />
<SubTexture name="Spirit Textbox spawn0008" x="760" y="152" width="248" height="144" />
<SubTexture name="Spirit Textbox spawn0009" x="760" y="152" width="248" height="144" />
<SubTexture name="Spirit Textbox spawn0010" x="508" y="4" width="248" height="144" />
<SubTexture name="Spirit Textbox spawn0011" x="508" y="4" width="248" height="144" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="Text_Boxes.png">
<SubTexture name="SENPAI ANGRY IMPACT SPEECH0000" x="4" y="4" width="248" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH0001" x="256" y="4" width="248" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH0002" x="508" y="4" width="248" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH0003" x="760" y="4" width="248" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH0004" x="4" y="152" width="248" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH0005" x="4" y="152" width="248" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH0006" x="256" y="152" width="248" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH0007" x="256" y="152" width="248" height="144" />
<SubTexture name="Text Box Appear0000" x="508" y="152" width="248" height="144" />
<SubTexture name="Text Box Appear0001" x="760" y="152" width="248" height="144" />
<SubTexture name="Text Box Appear0002" x="4" y="300" width="248" height="144" />
<SubTexture name="Text Box Appear0003" x="256" y="300" width="248" height="144" />
<SubTexture name="Text Box Appear0004" x="256" y="300" width="248" height="144" />
<SubTexture name="Text Box Speaking0001" x="256" y="300" width="248" height="144" />
<SubTexture name="Text Box CLICK0000" x="508" y="300" width="248" height="144" />
<SubTexture name="Text Box CLICK0001" x="508" y="300" width="248" height="144" />
<SubTexture name="Text Box CLICK0002" x="760" y="300" width="248" height="144" />
<SubTexture name="Text Box CLICK0003" x="256" y="300" width="248" height="144" />
<SubTexture name="Text Box Sentence End0000" x="4" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0001" x="256" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0002" x="256" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0003" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0004" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0005" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0006" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0007" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0008" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0009" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0010" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0011" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0012" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box Sentence End0013" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0000" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0001" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0002" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0003" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0004" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0005" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0006" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0007" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0008" x="760" y="300" width="248" height="144" />
<SubTexture name="Text Box wait to click0009" x="760" y="300" width="248" height="144" />
<SubTexture name="Text Box wait to click0010" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0011" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0012" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0013" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0014" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0015" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0016" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0017" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0018" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0019" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0020" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0021" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0022" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0023" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0024" x="508" y="448" width="248" height="144" />
<SubTexture name="Text Box wait to click0025" x="508" y="448" width="248" height="144" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="dialogueBox-pixel.png">
<SubTexture name="Text Box Appear instance 10000" x="0" y="0" width="249" height="144" />
<SubTexture name="Text Box Appear instance 10001" x="259" y="0" width="249" height="144" />
<SubTexture name="Text Box Appear instance 10002" x="0" y="154" width="249" height="144" />
<SubTexture name="Text Box Appear instance 10003" x="259" y="154" width="249" height="144" />
<SubTexture name="Text Box Appear instance 10004" x="259" y="154" width="249" height="144" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="dialogueBox-senpaiMad.png">
<SubTexture name="SENPAI ANGRY IMPACT SPEECH instance 10000" x="0" y="0" width="249" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH instance 10001" x="259" y="0" width="249" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH instance 10002" x="0" y="154" width="249" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH instance 10003" x="259" y="154" width="249" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH instance 10004" x="0" y="308" width="249" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH instance 10005" x="0" y="308" width="249" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH instance 10006" x="259" y="308" width="249" height="144" />
<SubTexture name="SENPAI ANGRY IMPACT SPEECH instance 10007" x="259" y="308" width="249" height="144" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<TextureAtlas imagePath="spritesheet.png">
<SubTexture name="portraitEnter0000" x="0" y="0" width="70" height="45" frameX="0" frameY="13" frameWidth="70" frameHeight="45" />
<SubTexture name="portraitEnter0001" x="0" y="0" width="70" height="45" frameX="0" frameY="13" frameWidth="70" frameHeight="45" />
<SubTexture name="portraitEnter0002" x="70" y="0" width="70" height="45" frameX="0" frameY="13" frameWidth="70" frameHeight="45" />
<SubTexture name="portraitEnter0003" x="70" y="0" width="70" height="45" frameX="0" frameY="13" frameWidth="70" frameHeight="45" />
<SubTexture name="portraitEnter0004" x="0" y="45" width="70" height="45" frameX="0" frameY="13" frameWidth="70" frameHeight="45" />
<SubTexture name="portraitEnter0005" x="0" y="45" width="70" height="45" frameX="0" frameY="13" frameWidth="70" frameHeight="45" />
<SubTexture name="portraitEnter0006" x="70" y="45" width="70" height="45" frameX="0" frameY="13" frameWidth="70" frameHeight="45" />
<SubTexture name="portraitEnter0007" x="70" y="45" width="70" height="45" frameX="0" frameY="13" frameWidth="70" frameHeight="45" />
<SubTexture name="portraitTalk0000" x="70" y="45" width="70" height="45" frameX="0" frameY="13" frameWidth="70" frameHeight="45" />
<SubTexture name="portraitTalk0001" x="70" y="45" width="70" height="45" frameX="0" frameY="13" frameWidth="70" frameHeight="45" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<TextureAtlas imagePath="spritesheet.png">
<SubTexture name="portraitEnter0000" x="0" y="0" width="63" height="51" frameX="-5" frameY="-7" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0001" x="0" y="0" width="63" height="51" frameX="-5" frameY="-7" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0002" x="63" y="0" width="63" height="51" frameX="-5" frameY="-7" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0003" x="63" y="0" width="63" height="51" frameX="-5" frameY="-7" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0004" x="0" y="51" width="63" height="51" frameX="-5" frameY="-7" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0005" x="0" y="51" width="63" height="51" frameX="-5" frameY="-7" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0006" x="63" y="51" width="63" height="51" frameX="-5" frameY="-7" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0007" x="63" y="51" width="63" height="51" frameX="-5" frameY="-7" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitTalk0000" x="63" y="51" width="63" height="51" frameX="-5" frameY="-7" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitTalk0001" x="63" y="51" width="63" height="51" frameX="-5" frameY="-7" frameWidth="72" frameHeight="58" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<TextureAtlas imagePath="spritesheet.png">
<SubTexture name="portraitEnter0000" x="0" y="0" width="63" height="51" frameX="4" frameY="7" frameWidth="63" frameHeight="51" />
<SubTexture name="portraitEnter0001" x="0" y="0" width="63" height="51" frameX="4" frameY="7" frameWidth="63" frameHeight="51" />
<SubTexture name="portraitEnter0002" x="63" y="0" width="63" height="51" frameX="4" frameY="7" frameWidth="63" frameHeight="51" />
<SubTexture name="portraitEnter0003" x="63" y="0" width="63" height="51" frameX="4" frameY="7" frameWidth="63" frameHeight="51" />
<SubTexture name="portraitEnter0004" x="0" y="51" width="63" height="51" frameX="4" frameY="7" frameWidth="63" frameHeight="51" />
<SubTexture name="portraitEnter0005" x="0" y="51" width="63" height="51" frameX="4" frameY="7" frameWidth="63" frameHeight="51" />
<SubTexture name="portraitEnter0006" x="63" y="51" width="63" height="51" frameX="4" frameY="7" frameWidth="63" frameHeight="51" />
<SubTexture name="portraitEnter0007" x="63" y="51" width="63" height="51" frameX="4" frameY="7" frameWidth="63" frameHeight="51" />
<SubTexture name="portraitTalk0000" x="63" y="51" width="63" height="51" frameX="4" frameY="7" frameWidth="63" frameHeight="51" />
<SubTexture name="portraitTalk0001" x="63" y="51" width="63" height="51" frameX="4" frameY="7" frameWidth="63" frameHeight="51" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<TextureAtlas imagePath="spritesheet.png">
<SubTexture name="portraitEnter0000" x="0" y="0" width="58" height="53" frameX="-8" frameY="-5" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0001" x="0" y="0" width="58" height="53" frameX="-8" frameY="-5" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0002" x="58" y="0" width="58" height="53" frameX="-8" frameY="-5" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0003" x="58" y="0" width="58" height="53" frameX="-8" frameY="-5" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0004" x="0" y="53" width="58" height="53" frameX="-8" frameY="-5" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0005" x="0" y="53" width="58" height="53" frameX="-8" frameY="-5" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0006" x="58" y="53" width="58" height="53" frameX="-8" frameY="-5" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0007" x="58" y="53" width="58" height="53" frameX="-8" frameY="-5" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitTalk0000" x="58" y="53" width="58" height="53" frameX="-8" frameY="-5" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitTalk0001" x="58" y="53" width="58" height="53" frameX="-8" frameY="-5" frameWidth="72" frameHeight="58" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<TextureAtlas imagePath="spritesheet.png">
<SubTexture name="portraitEnter0000" x="0" y="0" width="58" height="53" frameX="7" frameY="5" frameWidth="58" frameHeight="53" />
<SubTexture name="portraitEnter0001" x="0" y="0" width="58" height="53" frameX="7" frameY="5" frameWidth="58" frameHeight="53" />
<SubTexture name="portraitEnter0002" x="58" y="0" width="58" height="53" frameX="7" frameY="5" frameWidth="58" frameHeight="53" />
<SubTexture name="portraitEnter0003" x="58" y="0" width="58" height="53" frameX="7" frameY="5" frameWidth="58" frameHeight="53" />
<SubTexture name="portraitEnter0004" x="0" y="53" width="58" height="53" frameX="7" frameY="5" frameWidth="58" frameHeight="53" />
<SubTexture name="portraitEnter0005" x="0" y="53" width="58" height="53" frameX="7" frameY="5" frameWidth="58" frameHeight="53" />
<SubTexture name="portraitEnter0006" x="58" y="53" width="58" height="53" frameX="7" frameY="5" frameWidth="58" frameHeight="53" />
<SubTexture name="portraitEnter0007" x="58" y="53" width="58" height="53" frameX="7" frameY="5" frameWidth="58" frameHeight="53" />
<SubTexture name="portraitTalk0000" x="58" y="53" width="58" height="53" frameX="7" frameY="5" frameWidth="58" frameHeight="53" />
<SubTexture name="portraitTalk0001" x="58" y="53" width="58" height="53" frameX="7" frameY="5" frameWidth="58" frameHeight="53" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<TextureAtlas imagePath="spritesheet.png">
<SubTexture name="portraitEnter0000" x="0" y="0" width="66" height="58" frameX="4" frameY="0" frameWidth="66" frameHeight="58" />
<SubTexture name="portraitEnter0001" x="0" y="0" width="66" height="58" frameX="4" frameY="0" frameWidth="66" frameHeight="58" />
<SubTexture name="portraitEnter0002" x="66" y="0" width="66" height="58" frameX="4" frameY="0" frameWidth="66" frameHeight="58" />
<SubTexture name="portraitEnter0003" x="66" y="0" width="66" height="58" frameX="4" frameY="0" frameWidth="66" frameHeight="58" />
<SubTexture name="portraitEnter0004" x="0" y="58" width="66" height="58" frameX="4" frameY="0" frameWidth="66" frameHeight="58" />
<SubTexture name="portraitEnter0005" x="0" y="58" width="66" height="58" frameX="4" frameY="0" frameWidth="66" frameHeight="58" />
<SubTexture name="portraitEnter0006" x="66" y="58" width="66" height="58" frameX="4" frameY="0" frameWidth="66" frameHeight="58" />
<SubTexture name="portraitEnter0007" x="66" y="58" width="66" height="58" frameX="4" frameY="0" frameWidth="66" frameHeight="58" />
<SubTexture name="portraitTalk0000" x="66" y="58" width="66" height="58" frameX="4" frameY="0" frameWidth="66" frameHeight="58" />
<SubTexture name="portraitTalk0001" x="66" y="58" width="66" height="58" frameX="4" frameY="0" frameWidth="66" frameHeight="58" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<TextureAtlas imagePath="spritesheet.png">
<SubTexture name="portraitEnter0000" x="0" y="0" width="66" height="58" frameX="-5" frameY="0" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0001" x="0" y="0" width="66" height="58" frameX="-5" frameY="0" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0002" x="66" y="0" width="66" height="58" frameX="-5" frameY="0" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0003" x="66" y="0" width="66" height="58" frameX="-5" frameY="0" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0004" x="0" y="58" width="66" height="58" frameX="-5" frameY="0" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0005" x="0" y="58" width="66" height="58" frameX="-5" frameY="0" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0006" x="66" y="58" width="66" height="58" frameX="-5" frameY="0" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitEnter0007" x="66" y="58" width="66" height="58" frameX="-5" frameY="0" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitTalk0000" x="66" y="58" width="66" height="58" frameX="-5" frameY="0" frameWidth="72" frameHeight="58" />
<SubTexture name="portraitTalk0001" x="66" y="58" width="66" height="58" frameX="-5" frameY="0" frameWidth="72" frameHeight="58" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<TextureAtlas imagePath="spritesheet.png">
<SubTexture name="portraitEnter0000" x="0" y="0" width="63" height="57" frameX="5" frameY="1" frameWidth="63" frameHeight="57" />
<SubTexture name="portraitEnter0001" x="0" y="0" width="63" height="57" frameX="5" frameY="1" frameWidth="63" frameHeight="57" />
<SubTexture name="portraitEnter0002" x="63" y="0" width="63" height="57" frameX="5" frameY="1" frameWidth="63" frameHeight="57" />
<SubTexture name="portraitEnter0003" x="63" y="0" width="63" height="57" frameX="5" frameY="1" frameWidth="63" frameHeight="57" />
<SubTexture name="portraitEnter0004" x="0" y="57" width="63" height="57" frameX="5" frameY="1" frameWidth="63" frameHeight="57" />
<SubTexture name="portraitEnter0005" x="0" y="57" width="63" height="57" frameX="5" frameY="1" frameWidth="63" frameHeight="57" />
<SubTexture name="portraitEnter0006" x="63" y="57" width="63" height="57" frameX="5" frameY="1" frameWidth="63" frameHeight="57" />
<SubTexture name="portraitEnter0007" x="63" y="57" width="63" height="57" frameX="5" frameY="1" frameWidth="63" frameHeight="57" />
<SubTexture name="portraitTalk0000" x="63" y="57" width="63" height="57" frameX="5" frameY="1" frameWidth="63" frameHeight="57" />
<SubTexture name="portraitTalk0001" x="63" y="57" width="63" height="57" frameX="5" frameY="1" frameWidth="63" frameHeight="57" />
</TextureAtlas>

BIN
images/weeb/senpaiCrazy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

128
images/weeb/senpaiCrazy.xml Normal file
View File

@ -0,0 +1,128 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="senpaiCrazy.png">
<SubTexture name="Senpai Pre Explosion instance 10000" x="0" y="0" width="234" height="168" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10001" x="244" y="0" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10002" x="244" y="0" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10003" x="484" y="0" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10004" x="484" y="0" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10005" x="484" y="0" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10006" x="724" y="0" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10007" x="724" y="0" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10008" x="0" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10009" x="240" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10010" x="240" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10011" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10012" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10013" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10014" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10015" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10016" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10017" x="720" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10018" x="720" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10019" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10020" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10021" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10022" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10023" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10024" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10025" x="0" y="352" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10026" x="0" y="352" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10027" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10028" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10029" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10030" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10031" x="720" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10032" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10033" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10034" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10035" x="0" y="352" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10036" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10037" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10038" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10039" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10040" x="0" y="352" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10041" x="0" y="352" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10042" x="0" y="352" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10043" x="0" y="352" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10044" x="720" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10045" x="0" y="352" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10046" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10047" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10048" x="720" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10049" x="0" y="352" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10050" x="0" y="352" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10051" x="720" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10052" x="0" y="352" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10053" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10054" x="720" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10055" x="0" y="352" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10056" x="480" y="178" width="230" height="164" frameX="-18" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10057" x="240" y="352" width="230" height="164" frameX="0" frameY="0" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10058" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10059" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10060" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10061" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10062" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10063" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10064" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10065" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10066" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10067" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10068" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10069" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10070" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10071" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10072" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10073" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10074" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10075" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10076" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10077" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10078" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10079" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10080" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10081" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10082" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10083" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10084" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10085" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10086" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10087" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10088" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10089" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10090" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10091" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10092" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10093" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10094" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10095" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10096" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10097" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10098" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10099" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10100" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10101" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10102" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10103" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10104" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10105" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10106" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10107" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10108" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10109" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10110" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10111" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10112" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10113" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10114" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10115" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10116" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10117" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10118" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10119" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10120" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10121" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10122" x="720" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10123" x="0" y="526" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
<SubTexture name="Senpai Pre Explosion instance 10124" x="480" y="352" width="230" height="164" frameX="0" frameY="-3" frameWidth="252" frameHeight="168" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 B

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="spiritFaceForward.png">
<SubTexture name="portraitEnter0001" x="0" y="0" width="47" height="106" />
<SubTexture name="portraitTalk0001" x="0" y="0" width="47" height="106" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
images/weeb/weebSchool.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
images/weeb/weebSky.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
images/weeb/weebStreet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
images/weeb/weebTrees.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

20
images/weeb/weebTrees.txt Normal file
View File

@ -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

23
images/weeb/weebTrees.xml Normal file
View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="senpaiCrazy.png">
<SubTexture name="Trees0000" x="0" y="0" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0001" x="513" y="0" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0002" x="1539" y="1026" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0003" x="2052" y="513" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0004" x="2565" y="0" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0005" x="3078" y="0" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0006" x="2565" y="513" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0007" x="2052" y="1026" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0008" x="2565" y="1026" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0009" x="3078" y="513" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0010" x="1026" y="0" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0011" x="0" y="513" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0012" x="513" y="513" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0013" x="0" y="1026" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0014" x="513" y="1026" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0015" x="1026" y="513" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0016" x="1026" y="1026" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0017" x="1539" y="0" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0018" x="1539" y="513" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
<SubTexture name="Trees0019" x="2052" y="0" width="512" height="512" frameX="0" frameY="0" frameWidth="512" frameHeight="512" />
</TextureAtlas>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,141 +1,109 @@
--[[
LUA MODULE
complex v$(_VERSION) - complex numbers implemented as Lua tables
SYNOPSIS
-- complex 0.3.0
-- Lua 5.1
local complex = require 'complex'
local cx1 = complex "2+3i" -- or complex.new(2, 3)
local cx2 = complex "3+2i"
assert( complex.add(cx1,cx2) == complex "5+5i" )
assert( tostring(cx1) == "2+3i" )
DESCRIPTION
'complex' provides common tasks with complex numbers
-- 'complex' provides common tasks with complex numbers
function complex.to( arg ); complex( arg )
returns a complex number on success, nil on failure
arg := number or { number,number } or ( "(-)<number>" and/or "(+/-)<number>i" )
e.g. 5; {2,3}; "2", "2+i", "-2i", "2^2*3+1/3i"
note: 'i' is always in the numerator, spaces are not allowed
-- function complex.to( arg ); complex( arg )
-- returns a complex number on success, nil on failure
-- arg := number or { number,number } or ( "(-)<number>" and/or "(+/-)<number>i" )
-- e.g. 5; {2,3}; "2", "2+i", "-2i", "2^2*3+1/3i"
-- note: 'i' is always in the numerator, spaces are not allowed
A complex number is defined as Cartesian complex number
complex number := { real_part, imaginary_part } .
This gives fast access to both parts of the number for calculation.
The access is faster than in a hash table
The metatable is just an add on. When it comes to speed, one is faster using a direct function call.
-- a complex number is defined as carthesic complex number
-- complex number := { real_part, imaginary_part }
-- this gives fast access to both parts of the number for calculation
-- the access is faster than in a hash table
-- the metatable is just a add on, when it comes to speed, one is faster using a direct function call
API
-- http://luaforge.net/projects/LuaMatrix
-- http://lua-users.org/wiki/ComplexNumbers
See code and test_complex.lua.
DEPENDENCIES
None (other than Lua 5.1 or 5.2).
HOME PAGE
http://luamatrix.luaforge.net
http://lua-users.org/wiki/LuaMatrix
DOWNLOAD/INSTALL
./util.mk
cd tmp/*
luarocks make
Licensed under the same terms as Lua itself.
Developers:
Michael Lutz (chillcode)
David Manura http://lua-users.org/wiki/DavidManura (maintainer)
--]]
-- Licensed under the same terms as Lua itself.
--/////////////--
--// complex //--
--/////////////--
-- link to complex table
local complex = {_TYPE='module', _NAME='complex', _VERSION='0.3.3.20111212'}
local complex = {}
-- link to complex metatable
local complex_meta = {}
-- helper functions for parsing complex number strings.
local function parse_scalar(s, pos0)
local x, n, pos = s:match('^([+-]?[%d%.]+)(.?)()', pos0)
if not x then return end
if n == 'e' or n == 'E' then
local x2, n2, pos2 = s:match('^([+-]?%d+)(.?)()', pos)
if not x2 then error 'number format error' end
x = tonumber(x..n..x2)
if not x then error 'number format error' end
return x, n2, pos2
else
x = tonumber(x)
if not x then error 'number format error' end
return x, n, pos
end
end
local function parse_component(s, pos0)
local x, n, pos = parse_scalar(s, pos0)
if not x then
local x2, n2, pos2 = s:match('^([+-]?)(i)()$', pos0)
if not x2 then error 'number format error' end
return (x2=='-' and -1 or 1), n2, pos2
end
if n == '/' then
local x2, n2, pos2 = parse_scalar(s, pos)
x = x / x2
return x, n2, pos2
end
return x, n, pos
end
local function parse_complex(s)
local x, n, pos = parse_component(s, 1)
if n == '+' or n == '-' then
local x2, n2, pos2 = parse_component(s, pos)
if n2 ~= 'i' or pos2 ~= #s+1 then error 'number format error' end
if n == '-' then x2 = - x2 end
return x, x2
elseif n == '' then
return x, 0
elseif n == 'i' then
if pos ~= #s+1 then error 'number format error' end
return 0, x
else
error 'number format error'
end
end
-- complex.to( arg )
-- return a complex number on success
-- return nil on failure
local _retone = function() return 1 end
local _retminusone = function() return -1 end
function complex.to( num )
-- check for table type
if type( num ) == "table" then
-- check for a complex number
if getmetatable( num ) == complex_meta then
return num
end
local real,imag = tonumber( num[1] ),tonumber( num[2] )
if real and imag then
return setmetatable( { real,imag }, complex_meta )
end
return
end
-- check for number
local isnum = tonumber( num )
if isnum then
return setmetatable( { isnum,0 }, complex_meta )
end
if type( num ) == "string" then
local real, imag = parse_complex(num)
return setmetatable( { real, imag }, complex_meta )
end
-- check for table type
if type( num ) == "table" then
-- check for a complex number
if getmetatable( num ) == complex_meta then
return num
end
local real,imag = tonumber( num[1] ),tonumber( num[2] )
if real and imag then
return setmetatable( { real,imag }, complex_meta )
end
return
end
-- check for number
local isnum = tonumber( num )
if isnum then
return setmetatable( { isnum,0 }, complex_meta )
end
if type( num ) == "string" then
-- check for real and complex
-- number chars [%-%+%*%^%d%./Ee]
local real,sign,imag = string.match( num, "^([%-%+%*%^%d%./Ee]*%d)([%+%-])([%-%+%*%^%d%./Ee]*)i$" )
if real then
if string.lower(string.sub(real,1,1)) == "e"
or string.lower(string.sub(imag,1,1)) == "e" then
return
end
if imag == "" then
if sign == "+" then
imag = _retone
else
imag = _retminusone
end
elseif sign == "+" then
imag = loadstring("return tonumber("..imag..")")
else
imag = loadstring("return tonumber("..sign..imag..")")
end
real = loadstring("return tonumber("..real..")")
if real and imag then
return setmetatable( { real(),imag() }, complex_meta )
end
return
end
-- check for complex
local imag = string.match( num,"^([%-%+%*%^%d%./Ee]*)i$" )
if imag then
if imag == "" then
return setmetatable( { 0,1 }, complex_meta )
elseif imag == "-" then
return setmetatable( { 0,-1 }, complex_meta )
end
if string.lower(string.sub(imag,1,1)) ~= "e" then
imag = loadstring("return tonumber("..imag..")")
if imag then
return setmetatable( { 0,imag() }, complex_meta )
end
end
return
end
-- should be real
local real = string.match( num,"^(%-*[%d%.][%-%+%*%^%d%./Ee]*)$" )
if real then
real = loadstring( "return tonumber("..real..")" )
if real then
return setmetatable( { real(),0 }, complex_meta )
end
end
end
end
-- complex( arg )
@ -146,15 +114,15 @@ setmetatable( complex, { __call = function( _,num ) return complex.to( num ) end
-- complex.new( real, complex )
-- fast function to get a complex number, not invoking any checks
function complex.new( ... )
return setmetatable( { ... }, complex_meta )
return setmetatable( { ... }, complex_meta )
end
-- complex.type( arg )
-- is argument of type complex
function complex.type( arg )
if getmetatable( arg ) == complex_meta then
return "complex"
end
if getmetatable( arg ) == complex_meta then
return "complex"
end
end
-- complex.convpolar( r, phi )
@ -162,16 +130,16 @@ end
-- r (radius) is a number
-- phi (angle) must be in radians; e.g. [0 - 2pi]
function complex.convpolar( radius, phi )
return setmetatable( { radius * math.cos( phi ), radius * math.sin( phi ) }, complex_meta )
return setmetatable( { radius * math.cos( phi ), radius * math.sin( phi ) }, complex_meta )
end
-- complex.convpolardeg( r, phi )
-- convert polar coordinates ( r*e^(i*phi) ) to carthesic complex number
-- r (radius) is a number
-- phi must be in degrees; e.g. [0 - 360 deg]
-- phi must be in degrees; e.g. [0° - 360°]
function complex.convpolardeg( radius, phi )
phi = phi/180 * math.pi
return setmetatable( { radius * math.cos( phi ), radius * math.sin( phi ) }, complex_meta )
phi = phi/180 * math.pi
return setmetatable( { radius * math.cos( phi ), radius * math.sin( phi ) }, complex_meta )
end
--// complex number functions only
@ -180,31 +148,31 @@ end
-- to string or real number
-- takes a complex number and returns its string value or real number value
function complex.tostring( cx,formatstr )
local real,imag = cx[1],cx[2]
if formatstr then
if imag == 0 then
return string.format( formatstr, real )
elseif real == 0 then
return string.format( formatstr, imag ).."i"
elseif imag > 0 then
return string.format( formatstr, real ).."+"..string.format( formatstr, imag ).."i"
end
return string.format( formatstr, real )..string.format( formatstr, imag ).."i"
end
if imag == 0 then
return real
elseif real == 0 then
return ((imag==1 and "") or (imag==-1 and "-") or imag).."i"
elseif imag > 0 then
return real.."+"..(imag==1 and "" or imag).."i"
end
return real..(imag==-1 and "-" or imag).."i"
local real,imag = cx[1],cx[2]
if formatstr then
if imag == 0 then
return string.format( formatstr, real )
elseif real == 0 then
return string.format( formatstr, imag ).."i"
elseif imag > 0 then
return string.format( formatstr, real ).."+"..string.format( formatstr, imag ).."i"
end
return string.format( formatstr, real )..string.format( formatstr, imag ).."i"
end
if imag == 0 then
return real
elseif real == 0 then
return ((imag==1 and "") or (imag==-1 and "-") or imag).."i"
elseif imag > 0 then
return real.."+"..(imag==1 and "" or imag).."i"
end
return real..(imag==-1 and "-" or imag).."i"
end
-- complex.print( cx [, formatstr] )
-- print a complex number
function complex.print( ... )
print( complex.tostring( ... ) )
print( complex.tostring( ... ) )
end
-- complex.polar( cx )
@ -212,50 +180,49 @@ end
-- output in radians; [-pi,+pi]
-- returns r (radius), phi (angle)
function complex.polar( cx )
return math.sqrt( cx[1]^2 + cx[2]^2 ), math.atan2( cx[2], cx[1] )
return math.sqrt( cx[1]^2 + cx[2]^2 ), math.atan2( cx[2], cx[1] )
end
-- complex.polardeg( cx )
-- from complex number to polar coordinates
-- output in degrees; [-180, 180 deg]
-- output in degrees; [-180°,180°]
-- returns r (radius), phi (angle)
function complex.polardeg( cx )
return math.sqrt( cx[1]^2 + cx[2]^2 ), math.atan2( cx[2], cx[1] ) / math.pi * 180
return math.sqrt( cx[1]^2 + cx[2]^2 ), math.atan2( cx[2], cx[1] ) / math.pi * 180
end
-- complex.norm2( cx )
-- multiply with conjugate, function returning a scalar number
-- norm2(x + i*y) returns x^2 + y^2
function complex.norm2( cx )
return cx[1]^2 + cx[2]^2
-- complex.mulconjugate( cx )
-- multiply with conjugate, function returning a number
function complex.mulconjugate( cx )
return cx[1]^2 + cx[2]^2
end
-- complex.abs( cx )
-- get the absolute value of a complex number
function complex.abs( cx )
return math.sqrt( cx[1]^2 + cx[2]^2 )
return math.sqrt( cx[1]^2 + cx[2]^2 )
end
-- complex.get( cx )
-- returns real_part, imaginary_part
function complex.get( cx )
return cx[1],cx[2]
return cx[1],cx[2]
end
-- complex.set( cx, real, imag )
-- sets real_part = real and imaginary_part = imag
function complex.set( cx,real,imag )
cx[1],cx[2] = real,imag
cx[1],cx[2] = real,imag
end
-- complex.is( cx, real, imag )
-- returns true if, real_part = real and imaginary_part = imag
-- else returns false
function complex.is( cx,real,imag )
if cx[1] == real and cx[2] == imag then
return true
end
return false
if cx[1] == real and cx[2] == imag then
return true
end
return false
end
--// functions returning a new complex number
@ -263,156 +230,152 @@ end
-- complex.copy( cx )
-- copy complex number
function complex.copy( cx )
return setmetatable( { cx[1],cx[2] }, complex_meta )
return setmetatable( { cx[1],cx[2] }, complex_meta )
end
-- complex.add( cx1, cx2 )
-- add two numbers; cx1 + cx2
function complex.add( cx1,cx2 )
return setmetatable( { cx1[1]+cx2[1], cx1[2]+cx2[2] }, complex_meta )
return setmetatable( { cx1[1]+cx2[1], cx1[2]+cx2[2] }, complex_meta )
end
-- complex.sub( cx1, cx2 )
-- subtract two numbers; cx1 - cx2
function complex.sub( cx1,cx2 )
return setmetatable( { cx1[1]-cx2[1], cx1[2]-cx2[2] }, complex_meta )
return setmetatable( { cx1[1]-cx2[1], cx1[2]-cx2[2] }, complex_meta )
end
-- complex.mul( cx1, cx2 )
-- multiply two numbers; cx1 * cx2
function complex.mul( cx1,cx2 )
return setmetatable( { cx1[1]*cx2[1] - cx1[2]*cx2[2],cx1[1]*cx2[2] + cx1[2]*cx2[1] }, complex_meta )
return setmetatable( { cx1[1]*cx2[1] - cx1[2]*cx2[2],cx1[1]*cx2[2] + cx1[2]*cx2[1] }, complex_meta )
end
-- complex.mulnum( cx, num )
-- multiply complex with number; cx1 * num
function complex.mulnum( cx,num )
return setmetatable( { cx[1]*num,cx[2]*num }, complex_meta )
return setmetatable( { cx[1]*num,cx[2]*num }, complex_meta )
end
-- complex.div( cx1, cx2 )
-- divide 2 numbers; cx1 / cx2
function complex.div( cx1,cx2 )
-- get complex value
local val = cx2[1]^2 + cx2[2]^2
-- multiply cx1 with conjugate complex of cx2 and divide through val
return setmetatable( { (cx1[1]*cx2[1]+cx1[2]*cx2[2])/val,(cx1[2]*cx2[1]-cx1[1]*cx2[2])/val }, complex_meta )
-- get complex value
local val = cx2[1]^2 + cx2[2]^2
-- multiply cx1 with conjugate complex of cx2 and divide through val
return setmetatable( { (cx1[1]*cx2[1]+cx1[2]*cx2[2])/val,(cx1[2]*cx2[1]-cx1[1]*cx2[2])/val }, complex_meta )
end
-- complex.divnum( cx, num )
-- divide through a number
function complex.divnum( cx,num )
return setmetatable( { cx[1]/num,cx[2]/num }, complex_meta )
return setmetatable( { cx[1]/num,cx[2]/num }, complex_meta )
end
-- complex.pow( cx, num )
-- get the power of a complex number
function complex.pow( cx,num )
if math.floor( num ) == num then
if num < 0 then
local val = cx[1]^2 + cx[2]^2
cx = { cx[1]/val,-cx[2]/val }
num = -num
end
local real,imag = cx[1],cx[2]
for i = 2,num do
real,imag = real*cx[1] - imag*cx[2],real*cx[2] + imag*cx[1]
end
return setmetatable( { real,imag }, complex_meta )
end
-- we calculate the polar complex number now
-- since then we have the versatility to calc any potenz of the complex number
-- then we convert it back to a carthesic complex number, we loose precision here
local length,phi = math.sqrt( cx[1]^2 + cx[2]^2 )^num, math.atan2( cx[2], cx[1] )*num
return setmetatable( { length * math.cos( phi ), length * math.sin( phi ) }, complex_meta )
if math.floor( num ) == num then
if num < 0 then
local val = cx[1]^2 + cx[2]^2
cx = { cx[1]/val,-cx[2]/val }
num = -num
end
local real,imag = cx[1],cx[2]
for i = 2,num do
real,imag = real*cx[1] - imag*cx[2],real*cx[2] + imag*cx[1]
end
return setmetatable( { real,imag }, complex_meta )
end
-- we calculate the polar complex number now
-- since then we have the versatility to calc any potenz of the complex number
-- then we convert it back to a carthesic complex number, we loose precision here
local length,phi = math.sqrt( cx[1]^2 + cx[2]^2 )^num, math.atan2( cx[2], cx[1] )*num
return setmetatable( { length * math.cos( phi ), length * math.sin( phi ) }, complex_meta )
end
-- complex.sqrt( cx )
-- get the first squareroot of a complex number, more accurate than cx^.5
function complex.sqrt( cx )
local len = math.sqrt( cx[1]^2+cx[2]^2 )
local sign = (cx[2]<0 and -1) or 1
return setmetatable( { math.sqrt((cx[1]+len)/2), sign*math.sqrt((len-cx[1])/2) }, complex_meta )
local len = math.sqrt( cx[1]^2+cx[2]^2 )
local sign = (cx[2]<0 and -1) or 1
return setmetatable( { math.sqrt((cx[1]+len)/2), sign*math.sqrt((len-cx[1])/2) }, complex_meta )
end
-- complex.ln( cx )
-- natural logarithm of cx
function complex.ln( cx )
return setmetatable( { math.log(math.sqrt( cx[1]^2 + cx[2]^2 )),
math.atan2( cx[2], cx[1] ) }, complex_meta )
return setmetatable( { math.log(math.sqrt( cx[1]^2 + cx[2]^2 )),
math.atan2( cx[2], cx[1] ) }, complex_meta )
end
-- complex.exp( cx )
-- exponent of cx (e^cx)
function complex.exp( cx )
local expreal = math.exp(cx[1])
return setmetatable( { expreal*math.cos(cx[2]), expreal*math.sin(cx[2]) }, complex_meta )
local expreal = math.exp(cx[1])
return setmetatable( { expreal*math.cos(cx[2]), expreal*math.sin(cx[2]) }, complex_meta )
end
-- complex.conjugate( cx )
-- get conjugate complex of number
function complex.conjugate( cx )
return setmetatable( { cx[1], -cx[2] }, complex_meta )
return setmetatable( { cx[1], -cx[2] }, complex_meta )
end
-- complex.round( cx [,idp] )
-- round complex numbers, by default to 0 decimal points
function complex.round( cx,idp )
local mult = 10^( idp or 0 )
return setmetatable( { math.floor( cx[1] * mult + 0.5 ) / mult,
math.floor( cx[2] * mult + 0.5 ) / mult }, complex_meta )
local mult = 10^( idp or 0 )
return setmetatable( { math.floor( cx[1] * mult + 0.5 ) / mult,
math.floor( cx[2] * mult + 0.5 ) / mult }, complex_meta )
end
--// variables
complex.zero = complex.new(0, 0)
complex.one = complex.new(1, 0)
--// metatable functions
complex_meta.__add = function( cx1,cx2 )
local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
return complex.add( cx1,cx2 )
local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
return complex.add( cx1,cx2 )
end
complex_meta.__sub = function( cx1,cx2 )
local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
return complex.sub( cx1,cx2 )
local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
return complex.sub( cx1,cx2 )
end
complex_meta.__mul = function( cx1,cx2 )
local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
return complex.mul( cx1,cx2 )
local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
return complex.mul( cx1,cx2 )
end
complex_meta.__div = function( cx1,cx2 )
local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
return complex.div( cx1,cx2 )
local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
return complex.div( cx1,cx2 )
end
complex_meta.__pow = function( cx,num )
if num == "*" then
return complex.conjugate( cx )
end
return complex.pow( cx,num )
if num == "*" then
return complex.conjugate( cx )
end
return complex.pow( cx,num )
end
complex_meta.__unm = function( cx )
return setmetatable( { -cx[1], -cx[2] }, complex_meta )
return setmetatable( { -cx[1], -cx[2] }, complex_meta )
end
complex_meta.__eq = function( cx1,cx2 )
if cx1[1] == cx2[1] and cx1[2] == cx2[2] then
return true
end
return false
if cx1[1] == cx2[1] and cx1[2] == cx2[2] then
return true
end
return false
end
complex_meta.__tostring = function( cx )
return tostring( complex.tostring( cx ) )
return tostring( complex.tostring( cx ) )
end
complex_meta.__concat = function( cx,cx2 )
return tostring(cx)..tostring(cx2)
return tostring(cx)..tostring(cx2)
end
-- cx( cx, formatstr )
complex_meta.__call = function( ... )
print( complex.tostring( ... ) )
print( complex.tostring( ... ) )
end
complex_meta.__index = {}
for k,v in pairs( complex ) do
complex_meta.__index[k] = v
complex_meta.__index[k] = v
end
return complex

View File

@ -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

360
modules/luafft.lua Normal file
View File

@ -0,0 +1,360 @@
--[[
This package provides functions to carry out Fast Fourier Transformations.
Copyright (C) 2011 by Benjamin von Ardenne
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
]]
complex = require "modules.complex"
---------------------------------------------------------------
--This is a lua port of the KissFFT Library by Mark Borgerding
--It provides a simple function to carry out a fast fourier transformation (FFT).
--
--module("LuaFFT", package.seeall)
local cos,sin = math.cos,math.sin
debugging = false
function msg(...)
if debugging == true then
print(...)
end
end
---------------------------------------------------------------
-- Returns the next possible size for data input
--
--@param n Size
--
--@return Next fast size.
function next_possible_size(n)
local m = n
while (1) do
m = n
while m%2 == 0 do m = m/2 end
while m%3 == 0 do m = m/3 end
while m%5 == 0 do m = m/5 end
if m <= 1 then break end
n = n + 1
end
return n
end
---------------------------------------------------------------
--Calculates the Fast Fourier Transformation of the given input
--
--@param input A set of points that will be transformed.
-- At this point, the input has to be a list of complex numbers,
-- according to the format in complex.lua.
--@param inverse Boolean that controls whether a transformation
-- or inverse transformation will be carried out.
--@return Returns a list of complex numbers with the same size
-- as the input list. Contains the fourier transformation of the input.
---------------------------------------------------------------
function fft(input, inverse)
--the size of input defines the number of total points
local num_points = #input
assert(#input == next_possible_size(#input), string.format("The size of your input is not correct. For your size=%i, use a table of size=%i with zeros at the end.", #input, next_possible_size(#input)))
local twiddles = {}
for i = 0,num_points-1 do
local phase = -2*math.pi * i / num_points
if inverse then phase = phase * -1 end
twiddles[1+i] = complex.new( cos(phase), sin(phase) )
end
msg("Twiddles initialized...")
local factors = calculate_factors(num_points)
local output = {}
msg("FFT Initialization completed.\nFactors of size " .. #factors)
work(input, output, 1, 1, factors,1, twiddles, 1, 1, inverse)
return output
end
---------------------------------------------------------------
--Calculates the real Fast Fourier Transformation of the given real input
--
---------------------------------------------------------------
function fftr(input, inverse)
end
---------------------------------------------------------------
-- Short helper function that provides an easy way to print a list with values.
---------------------------------------------------------------
function print_list(list)
for i,v in ipairs(list) do print(i,v) end
end
---------------------------------------------------------------
--The essential work function that performs the FFT
---------------------------------------------------------------
function work(input, output, out_index, f, factors, factors_index, twiddles, fstride, in_stride, inverse)
local p = factors[factors_index]
local m = factors[factors_index+1]
factors_index = factors_index + 2
msg(p,m)
local last = out_index + p*m
local beg = out_index
if m == 1 then
repeat
if type(input[f]) == "number" then output[out_index] = complex.new(input[f],0)
else output[out_index] = input[f] end
f = f + fstride*in_stride
out_index = out_index +1
until out_index == last
else
repeat
--msg("Out_index", out_index,"f", f)
work(input, output,out_index, f, factors, factors_index, twiddles, fstride*p, in_stride, inverse)
f = f + fstride*in_stride
out_index = out_index + m
until out_index == last
end
out_index = beg
if p == 2 then butterfly2(output,out_index, fstride, twiddles, m, inverse)
elseif p == 3 then butterfly3(output,out_index, fstride, twiddles, m, inverse)
elseif p == 4 then butterfly4(output,out_index, fstride, twiddles, m, inverse)
elseif p == 5 then butterfly5(output,out_index, fstride, twiddles, m, inverse)
else butterfly_generic(output,out_index, fstride, twiddles, m, p, inverse) end
end
---------------------------------------------------------------
---devides a number into a sequence of factors
--
--@param num_points Number of points that are used.
--
--@return Returns a list with the factors
---------------------------------------------------------------
function calculate_factors(num_points)
local buf = {}
local p = 4
floor_sqrt = math.floor( math.sqrt( num_points) )
local n = num_points
repeat
while n%p > 0 do
if p == 4 then p = 2
elseif p == 2 then p = 3
else p = p + 2 end
if p > floor_sqrt then p = n end
end
n = n / p
table.insert(buf, p)
table.insert(buf, n)
until n <= 1
return buf
end
---------------------------------------------------------------
--Carries out a butterfly 2 run of the input sample.
---------------------------------------------------------------
function butterfly2(input,out_index,fstride, twiddles, m, inverse)
local i1 = out_index
local i2 = out_index + m
local ti = 1
repeat
local t = input[i2]* twiddles[ti]
ti = ti + fstride
input[i2] = input[i1] - t
input[i1] = input[i1] + t
i1 = i1 + 1
i2 = i2 + 1
m = m - 1
until m == 0
end
---------------------------------------------------------------
--Carries out a butterfly 4 run of the input sample.
---------------------------------------------------------------
function butterfly4(input,out_index, fstride, twiddles, m, inverse)
local ti1, ti2, ti3 = 1,1,1
local scratch = {}
local k = m
local m2 = 2*m
local m3 = 3*m
local i = out_index
repeat
scratch[0] = input[i+m]*twiddles[ti1]
scratch[1] = input[i+m2]*twiddles[ti2]
scratch[2] = input[i+m3]*twiddles[ti3]
scratch[5] = input[i]-scratch[1]
input[i] = input[i] + scratch[1]
scratch[3] = scratch[0] + scratch[2]
scratch[4] = scratch[0] - scratch[2]
input[i+m2] = input[i] - scratch[3]
ti1 = ti1 + fstride
ti2 = ti2 + fstride*2
ti3 = ti3 + fstride*3
input[i] = input[i] + scratch[3]
if inverse then
input[i+m][1] = scratch[5][1] - scratch[4][2]
input[i+m][2] = scratch[5][2] + scratch[4][1]
input[i+m3][1] = scratch[5][1] + scratch[4][2]
input[i+m3][2] = scratch[5][2] - scratch[4][1]
else
input[i+m][1] = scratch[5][1] + scratch[4][2]
input[i+m][2] = scratch[5][2] - scratch[4][1]
input[i+m3][1] = scratch[5][1] - scratch[4][2]
input[i+m3][2] = scratch[5][2] + scratch[4][1]
end
i = i + 1
k = k - 1
until k == 0
end
---------------------------------------------------------------
--Carries out a butterfly 3 run of the input sample.
---------------------------------------------------------------
function butterfly3(input,out_index, fstride, twiddles, m, inverse)
local k = m
local m2 = m*2
local tw1, tw2 = 1,1
local scratch = {}
local epi3 = twiddles[fstride*m]
local i = out_index
repeat
scratch[1] = input[i+m] * twiddles[tw1]
scratch[2] = input[i+m2] * twiddles[tw2]
scratch[3] = scratch[1] + scratch[2]
scratch[0] = scratch[1] - scratch[2]
tw1 = tw1 + fstride
tw2 = tw2 + fstride*2
input[i+m][1] = input[i][1] - scratch[3][1]*0.5
input[i+m][2] = input[i][2] - scratch[3][2]*0.5
scratch[0] = scratch[0]:mulnum(epi3[2] )
input[i] = input[i] + scratch[3]
input[i+m2][1] = input[i+m][1] + scratch[0][2]
input[i+m2][2] = input[i+m][2] - scratch[0][1]
input[i+m][1] = input[i+m][1] - scratch[0][2]
input[i+m][2] = input[i+m][2] + scratch[0][1]
i = i + 1
k = k-1
until k == 0
end
---------------------------------------------------------------
--Carries out a butterfly 5 run of the input sample.
---------------------------------------------------------------
function butterfly5(input,out_index, fstride, twiddles, m, inverse)
local i0,i1,i2,i3,i4 = out_index,out_index+m,out_index+2*m,out_index+3*m,out_index+4*m
local scratch = {}
local tw = twiddles
local ya,yb = tw[1+fstride*m],tw[1+fstride*2*m]
for u = 0,m-1 do
scratch[0] = input[i0]
scratch[1] = input[i1] * tw[1+u*fstride]
scratch[2] = input[i2] * tw[1+2*u*fstride]
scratch[3] = input[i3] * tw[1+3*u*fstride]
scratch[4] = input[i4] * tw[1+4*u*fstride]
scratch[7] = scratch[1] + scratch[4]
scratch[8] = scratch[2] + scratch[3]
scratch[9] = scratch[2] - scratch[3]
scratch[10] = scratch[1] - scratch[4]
input[i0][1] = input[i0][1] + scratch[7][1] + scratch[8][1]
input[i0][2] = input[i0][2] + scratch[7][2] + scratch[8][2]
scratch[5] = complex.new( scratch[0][1] + scratch[7][1]*ya[1] + scratch[8][1]*yb[1],
scratch[0][2] + scratch[7][2]*ya[1] + scratch[8][2]*yb[1])
scratch[6] = complex.new( scratch[10][2]*ya[2] + scratch[9][2]*yb[2],
-1* scratch[10][1]*ya[2] + scratch[9][1]*yb[2])
input[i1] = scratch[5] - scratch[6]
input[i4] = scratch[5] + scratch[6]
scratch[11] = complex.new( scratch[0][1] + scratch[7][1]*yb[1] + scratch[8][1]*ya[1],
scratch[0][2] + scratch[7][2]*yb[1] + scratch[8][2]*ya[1])
scratch[12] = complex.new( -1* scratch[10][2]*yb[2] + scratch[9][2]*ya[2],
scratch[10][1]*yb[2] - scratch[9][1]*ya[2])
input[i2] = scratch[11] + scratch[12]
input[i3] = scratch[11] - scratch[12]
i0=i0+1
i1=i1+1
i2=i2+1
i3=i3+1
i4=i4+1
end
end
---------------------------------------------------------------
--Carries out a generic butterfly run of the input sample.
---------------------------------------------------------------
function butterfly_generic(input,out_index, fstride, twiddles, m, p, inverse )
local norig = #input
for u = 0,m-1 do
local k = u
for q1 = 0,p-1 do
scratchbuf[q1] = input[out_index+k]
k = k + m
end
k = u
for q1=0,p-1 do
local twidx = 0
input[out_index+k] = scratchbuf[0]
for q=1,p-1 do
twidx = twidx + fstride*k
if twidx >= Norix then twidx = twidx - Norig end
local t = scratchbuf[q] * twiddles[1+twidx]
input[out_index+k] = input[out_index+k] + t
end
k = k + m
end
end
end

View File

@ -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

View File

@ -6,6 +6,20 @@ local json = require("modules.json")
---Character class, child of Sprite class. Makes work with characters easier by calling some sprite functions with preset character file arguments.
---@class engine.character
---@field scale number
---@field animations table
---@field animInfo table
---@field sprite engine.sprite
---@field singing boolean
---@field stagePosition engine.vector2
---@field stageCamera engine.vector2
---@field flipX boolean
---@field beats number
---@field animation string
---@field icon string
---@field starterFrame number
---@field colors table
---@field module engine.module?
local CharacterClass = {}
CharacterClass.__index = CharacterClass
@ -40,6 +54,9 @@ function CharacterClass:PlayAnimation(name)
end
function CharacterClass:Destroy()
if self.module then
self.module.onClose()
end
self.sprite:Destroy()
self = nil
end
@ -70,14 +87,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
@ -105,6 +123,21 @@ function _G.Character(name)
newCharacter:PlayAnimation("danceLeft")
end
local charModule = files.read_file(string.format("characters/%s.lua", name))
if charModule then
local loadedModule = require(string.format("characters.%s", name))
modules[#modules+1] = loadedModule
if loadedModule.onAdded then
loadedModule.onAdded(newCharacter)
end
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

View File

@ -133,7 +133,7 @@ function _G.Sprite(image, sheet)
name = sprite["_name"]
rotated = sprite["_rotated"]
end
print(name)
-- print(name)
local num = tonumber(string.sub(name, name:len() - 3, name:len()))
@ -186,7 +186,7 @@ end
--- Plays a animation on the sprite.
--- @param name string
--- @param fps number
--- @param loop boolean
--- @param loop boolean?
--- @param allowed table?
function Sprite:PlayAnimation(name, fps, loop, allowed)
self.animation = name

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

@ -1,45 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="aBotViz.png">
<SubTexture name="viz10000" x="212" y="0" width="68" height="196" />
<SubTexture name="viz10001" x="538" y="0" width="68" height="169" frameX="0" frameY="-27" frameWidth="68" frameHeight="196" />
<SubTexture name="viz10002" x="538" y="173" width="65" height="135" frameX="-3" frameY="-61" frameWidth="68" frameHeight="196" />
<SubTexture name="viz10003" x="806" y="195" width="60" height="96" frameX="-8" frameY="-100" frameWidth="68" frameHeight="196" />
<SubTexture name="viz10004" x="928" y="299" width="53" height="53" frameX="-15" frameY="-143" frameWidth="68" frameHeight="196" />
<SubTexture name="viz10005" x="531" y="312" width="46" height="28" frameX="-22" frameY="-168" frameWidth="68" frameHeight="196" />
<SubTexture name="viz20000" x="407" y="0" width="58" height="209" />
<SubTexture name="viz20001" x="870" y="0" width="58" height="183" frameX="0" frameY="-26" frameWidth="58" frameHeight="209" />
<SubTexture name="viz20002" x="607" y="189" width="57" height="141" frameX="-1" frameY="-68" frameWidth="58" frameHeight="209" />
<SubTexture name="viz20003" x="407" y="213" width="54" height="99" frameX="-4" frameY="-110" frameWidth="58" frameHeight="209" />
<SubTexture name="viz20004" x="741" y="300" width="48" height="56" frameX="-10" frameY="-153" frameWidth="58" frameHeight="209" />
<SubTexture name="viz20005" x="383" y="316" width="43" height="27" frameX="-15" frameY="-182" frameWidth="58" frameHeight="209" />
<SubTexture name="viz30000" x="284" y="0" width="58" height="215" />
<SubTexture name="viz30001" x="747" y="0" width="58" height="188" frameX="0" frameY="-27" frameWidth="58" frameHeight="215" />
<SubTexture name="viz30002" x="469" y="182" width="58" height="151" frameX="0" frameY="-64" frameWidth="58" frameHeight="215" />
<SubTexture name="viz30003" x="212" y="200" width="55" height="100" frameX="-3" frameY="-115" frameWidth="58" frameHeight="215" />
<SubTexture name="viz30004" x="271" y="286" width="50" height="57" frameX="-8" frameY="-158" frameWidth="58" frameHeight="215" />
<SubTexture name="viz30005" x="668" y="316" width="45" height="22" frameX="-13" frameY="-193" frameWidth="58" frameHeight="215" />
<SubTexture name="viz40000" x="346" y="0" width="57" height="216" />
<SubTexture name="viz40001" x="809" y="0" width="57" height="191" frameX="0" frameY="-25" frameWidth="57" frameHeight="216" />
<SubTexture name="viz40002" x="870" y="187" width="54" height="153" frameX="0" frameY="-63" frameWidth="57" frameHeight="216" />
<SubTexture name="viz40003" x="132" y="219" width="52" height="101" frameX="0" frameY="-115" frameWidth="57" frameHeight="216" />
<SubTexture name="viz40004" x="806" y="295" width="49" height="58" frameX="0" frameY="-158" frameWidth="57" frameHeight="216" />
<SubTexture name="viz40005" x="109" y="324" width="44" height="22" frameX="-2" frameY="-194" frameWidth="57" frameHeight="216" />
<SubTexture name="viz60000" x="0" y="0" width="67" height="207" />
<SubTexture name="viz60001" x="469" y="0" width="65" height="178" frameX="0" frameY="-29" frameWidth="67" frameHeight="207" />
<SubTexture name="viz60002" x="675" y="168" width="62" height="144" frameX="0" frameY="-63" frameWidth="67" frameHeight="207" />
<SubTexture name="viz60003" x="71" y="197" width="57" height="101" frameX="0" frameY="-106" frameWidth="67" frameHeight="207" />
<SubTexture name="viz60004" x="329" y="220" width="51" height="61" frameX="0" frameY="-146" frameWidth="67" frameHeight="207" />
<SubTexture name="viz60005" x="188" y="304" width="45" height="30" frameX="0" frameY="-177" frameWidth="67" frameHeight="207" />
<SubTexture name="viz70000" x="71" y="0" width="71" height="193" />
<SubTexture name="viz70001" x="675" y="0" width="68" height="164" frameX="0" frameY="-29" frameWidth="71" frameHeight="193" />
<SubTexture name="viz70002" x="932" y="0" width="66" height="139" frameX="0" frameY="-54" frameWidth="71" frameHeight="193" />
<SubTexture name="viz70003" x="741" y="192" width="61" height="104" frameX="0" frameY="-89" frameWidth="71" frameHeight="193" />
<SubTexture name="viz70004" x="271" y="219" width="54" height="63" frameX="0" frameY="-130" frameWidth="71" frameHeight="193" />
<SubTexture name="viz70005" x="59" y="302" width="46" height="32" frameX="0" frameY="-161" frameWidth="71" frameHeight="193" />
<SubTexture name="viz50000" x="146" y="0" width="62" height="215" />
<SubTexture name="viz50001" x="610" y="0" width="61" height="185" frameX="0" frameY="-30" frameWidth="62" frameHeight="215" />
<SubTexture name="viz50002" x="932" y="143" width="59" height="152" frameX="0" frameY="-63" frameWidth="62" frameHeight="215" />
<SubTexture name="viz50003" x="0" y="211" width="55" height="100" frameX="0" frameY="-115" frameWidth="62" frameHeight="215" />
<SubTexture name="viz50004" x="329" y="285" width="50" height="60" frameX="0" frameY="-155" frameWidth="62" frameHeight="215" />
<SubTexture name="viz50005" x="0" y="315" width="46" height="27" frameX="0" frameY="-188" frameWidth="62" frameHeight="215" />
</TextureAtlas>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Created with Funkin Packer v0.1.3 https://neeeoo.github.io/funkin-packer/
-->
<TextureAtlas imagePath="texture.png" width="620" height="595">
<SubTexture name="viz10000" x="71" y="219" width="68" height="196" frameX="-0" frameY="-0" frameWidth="68" frameHeight="196"/>
<SubTexture name="viz10001" x="368" y="189" width="68" height="169" frameX="-0" frameY="-27" frameWidth="68" frameHeight="196"/>
<SubTexture name="viz10002" x="439" y="143" width="65" height="135" frameX="-3" frameY="-61" frameWidth="68" frameHeight="196"/>
<SubTexture name="viz10003" x="503" y="308" width="60" height="95" frameX="-8" frameY="-101" frameWidth="68" frameHeight="196"/>
<SubTexture name="viz10004" x="566" y="1" width="53" height="53" frameX="-15" frameY="-143" frameWidth="68" frameHeight="196"/>
<SubTexture name="viz10005" x="566" y="57" width="46" height="27" frameX="-22" frameY="-169" frameWidth="68" frameHeight="196"/>
<SubTexture name="viz20000" x="187" y="1" width="58" height="209" frameX="-0" frameY="-0" frameWidth="58" frameHeight="209"/>
<SubTexture name="viz20001" x="307" y="189" width="58" height="183" frameX="-0" frameY="-26" frameWidth="58" frameHeight="209"/>
<SubTexture name="viz20002" x="215" y="403" width="57" height="141" frameX="-1" frameY="-68" frameWidth="58" frameHeight="209"/>
<SubTexture name="viz20003" x="508" y="104" width="54" height="99" frameX="-4" frameY="-110" frameWidth="58" frameHeight="209"/>
<SubTexture name="viz20004" x="499" y="526" width="48" height="56" frameX="-10" frameY="-153" frameWidth="58" frameHeight="209"/>
<SubTexture name="viz20005" x="566" y="185" width="43" height="27" frameX="-15" frameY="-182" frameWidth="58" frameHeight="209"/>
<SubTexture name="viz30000" x="61" y="1" width="58" height="215" frameX="-0" frameY="-0" frameWidth="58" frameHeight="215"/>
<SubTexture name="viz30001" x="215" y="213" width="58" height="187" frameX="-0" frameY="-28" frameWidth="58" frameHeight="215"/>
<SubTexture name="viz30002" x="58" y="430" width="58" height="151" frameX="-0" frameY="-64" frameWidth="58" frameHeight="215"/>
<SubTexture name="viz30003" x="508" y="1" width="55" height="100" frameX="-3" frameY="-115" frameWidth="58" frameHeight="215"/>
<SubTexture name="viz30004" x="499" y="406" width="50" height="57" frameX="-8" frameY="-158" frameWidth="58" frameHeight="215"/>
<SubTexture name="viz30005" x="119" y="572" width="45" height="22" frameX="-13" frameY="-193" frameWidth="58" frameHeight="215"/>
<SubTexture name="viz40000" x="1" y="1" width="57" height="216" frameX="-0" frameY="-0" frameWidth="57" frameHeight="216"/>
<SubTexture name="viz40001" x="248" y="1" width="56" height="190" frameX="-0" frameY="-26" frameWidth="57" frameHeight="216"/>
<SubTexture name="viz40002" x="1" y="430" width="54" height="153" frameX="-0" frameY="-63" frameWidth="57" frameHeight="216"/>
<SubTexture name="viz40003" x="439" y="387" width="52" height="101" frameX="-0" frameY="-115" frameWidth="57" frameHeight="216"/>
<SubTexture name="viz40004" x="499" y="466" width="48" height="57" frameX="-1" frameY="-159" frameWidth="57" frameHeight="216"/>
<SubTexture name="viz40005" x="167" y="572" width="43" height="22" frameX="-3" frameY="-194" frameWidth="57" frameHeight="216"/>
<SubTexture name="viz60000" x="1" y="220" width="67" height="207" frameX="-0" frameY="-0" frameWidth="67" frameHeight="207"/>
<SubTexture name="viz60001" x="371" y="1" width="65" height="178" frameX="-0" frameY="-29" frameWidth="67" frameHeight="207"/>
<SubTexture name="viz60002" x="276" y="375" width="62" height="143" frameX="-0" frameY="-64" frameWidth="67" frameHeight="207"/>
<SubTexture name="viz60003" x="439" y="491" width="57" height="101" frameX="-0" frameY="-106" frameWidth="67" frameHeight="207"/>
<SubTexture name="viz60004" x="331" y="528" width="51" height="60" frameX="-0" frameY="-147" frameWidth="67" frameHeight="207"/>
<SubTexture name="viz60005" x="566" y="152" width="45" height="30" frameX="-0" frameY="-177" frameWidth="67" frameHeight="207"/>
<SubTexture name="viz70000" x="142" y="219" width="70" height="193" frameX="-0" frameY="-0" frameWidth="71" frameHeight="193"/>
<SubTexture name="viz70001" x="368" y="361" width="68" height="164" frameX="-0" frameY="-29" frameWidth="71" frameHeight="193"/>
<SubTexture name="viz70002" x="439" y="1" width="66" height="139" frameX="-0" frameY="-54" frameWidth="71" frameHeight="193"/>
<SubTexture name="viz70003" x="439" y="281" width="61" height="103" frameX="-0" frameY="-90" frameWidth="71" frameHeight="193"/>
<SubTexture name="viz70004" x="275" y="528" width="53" height="63" frameX="-0" frameY="-130" frameWidth="71" frameHeight="193"/>
<SubTexture name="viz70005" x="566" y="117" width="46" height="32" frameX="-0" frameY="-161" frameWidth="71" frameHeight="193"/>
<SubTexture name="viz50000" x="122" y="1" width="62" height="215" frameX="-0" frameY="-0" frameWidth="62" frameHeight="215"/>
<SubTexture name="viz50001" x="307" y="1" width="61" height="185" frameX="-0" frameY="-30" frameWidth="62" frameHeight="215"/>
<SubTexture name="viz50002" x="119" y="418" width="59" height="151" frameX="-0" frameY="-64" frameWidth="62" frameHeight="215"/>
<SubTexture name="viz50003" x="507" y="206" width="55" height="99" frameX="-0" frameY="-116" frameWidth="62" frameHeight="215"/>
<SubTexture name="viz50004" x="385" y="528" width="50" height="59" frameX="-0" frameY="-156" frameWidth="62" frameHeight="215"/>
<SubTexture name="viz50005" x="566" y="87" width="46" height="27" frameX="-0" frameY="-188" frameWidth="62" frameHeight="215"/>
</TextureAtlas>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -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"}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

After

Width:  |  Height:  |  Size: 2.9 MiB

Some files were not shown because too many files have changed in this diff Show More