This pull request cannot be merged due to branch status being changed after the request was sent.
| 2018-06-16 06:19:52 | 683e7efc | Fixed addalpha tr... |
| @@ -1,41 +0,0 @@ | ||
| 1 | -MIT License | |
| 2 | - | |
| 3 | -Original work Copyright (c) 2016 Suehiro | |
| 4 | -Modified work Copyright (c) 2018 K4thos | |
| 5 | - | |
| 6 | -Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 7 | -of this software and associated documentation files (the "Software"), to deal | |
| 8 | -in the Software without restriction, including without limitation the rights | |
| 9 | -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 10 | -copies of the Software, and to permit persons to whom the Software is | |
| 11 | -furnished to do so, subject to the following conditions: | |
| 12 | - | |
| 13 | -The above copyright notice and this permission notice shall be included in all | |
| 14 | -copies or substantial portions of the Software. | |
| 15 | - | |
| 16 | -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 17 | -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 18 | -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 19 | -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 20 | -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 21 | -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 22 | -SOFTWARE. | |
| 23 | - | |
| 24 | - | |
| 25 | -以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」) | |
| 26 | -の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。 | |
| 27 | -これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および | |
| 28 | -または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。 | |
| 29 | - | |
| 30 | -上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。 | |
| 31 | - | |
| 32 | -ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。 | |
| 33 | -ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、 | |
| 34 | -それに限定されるものではありません。 作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、 | |
| 35 | -ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、 | |
| 36 | -その他の義務について何らの責任も負わないものとします。 | |
| 37 | - | |
| 38 | - | |
| 39 | -※注意 | |
| 40 | -data以下のファイル, font以下のファイルには第三者が作成したコンテンツを含んでいるため、 | |
| 41 | -このライセンスの対象外となります。 |
| @@ -1,5 +0,0 @@ | ||
| 1 | -set GOPATH=%cd%/go | |
| 2 | -set CGO_ENABLED=1 | |
| 3 | -set GOOS=windows | |
| 4 | -go build -ldflags -H=windowsgui -o Ikemen_GO.exe ./src | |
| 5 | -pause |
| @@ -1,10 +0,0 @@ | ||
| 1 | - | |
| 2 | -[Command] | |
| 3 | -name = "v" | |
| 4 | -command = v | |
| 5 | -time = 1 | |
| 6 | - | |
| 7 | -[Command] | |
| 8 | -name = "w" | |
| 9 | -command = w | |
| 10 | -time = 1 |
| @@ -5,7 +5,3 @@ go get -u github.com/go-gl/glfw/v3.2/glfw | ||
| 5 | 5 | go get -u github.com/go-gl/gl/v2.1/gl |
| 6 | 6 | go get -u github.com/jfreymuth/go-vorbis/ogg/vorbis |
| 7 | 7 | go get -u github.com/timshannon/go-openal/openal |
| 8 | -go get -u github.com/faiface/beep | |
| 9 | -go get -u github.com/hajimehoshi/oto | |
| 10 | -go get -u github.com/hajimehoshi/go-mp3 | |
| 11 | -go get -u github.com/pkg/errors |
| @@ -0,0 +1,4 @@ | ||
| 1 | +#!/bin/sh | |
| 2 | +export GOPATH=$PWD/go | |
| 3 | +go fmt ./src/*.go | |
| 4 | +go run ./src/*.go |
| @@ -0,0 +1,108 @@ | ||
| 1 | + | |
| 2 | +addHotkey('c', true, false, false, 'toggleClsnDraw()') | |
| 3 | +addHotkey('d', true, false, false, 'toggleDebugDraw()') | |
| 4 | +addHotkey('s', true, false, false, 'changeSpeed()') | |
| 5 | +addHotkey('l', true, false, false, 'toggleStatusDraw()') | |
| 6 | +addHotkey('1', true, false, false, 'toggleAI(1)') | |
| 7 | +addHotkey('2', true, false, false, 'toggleAI(2)') | |
| 8 | +addHotkey('3', true, false, false, 'toggleAI(3)') | |
| 9 | +addHotkey('4', true, false, false, 'toggleAI(4)') | |
| 10 | +addHotkey('F1', false, false, false, 'kill(2);kill(4)') | |
| 11 | +addHotkey('F1', true, false, false, 'kill(1);kill(3)') | |
| 12 | +addHotkey('F2', false, false, false, 'kill(1,1);kill(2,1);kill(3,1);kill(4,1)') | |
| 13 | +addHotkey('F2', true, false, false, 'kill(1,1);kill(3,1)') | |
| 14 | +addHotkey('F2', false, false, true, 'kill(2,1);kill(4,1)') | |
| 15 | +addHotkey('F3', false, false, false, 'powMax(1);powMax(2)') | |
| 16 | +addHotkey('F4', false, false, false, 'roundReset()') | |
| 17 | +addHotkey('F4', false, false, true, 'reload()') | |
| 18 | +addHotkey('F5', false, false, false, 'setTime(0)') | |
| 19 | +addHotkey( | |
| 20 | + 'SPACE', false, false, false, | |
| 21 | + 'full(1);full(2);full(3);full(4);setTime(getRoundTime())') | |
| 22 | +addHotkey('p', false, false, false, 'togglePause()') | |
| 23 | +addHotkey('RETURN', false, false, false, 'step()') | |
| 24 | +addHotkey('i', true, false, false, 'stand(1);stand(2);stand(3);stand(4)') | |
| 25 | + | |
| 26 | + | |
| 27 | +speed = 1.0 | |
| 28 | + | |
| 29 | +function changeSpeed() | |
| 30 | + if speed >= 4 then | |
| 31 | + speed = 0.25 | |
| 32 | + else | |
| 33 | + speed = speed*2.0 | |
| 34 | + end | |
| 35 | + setAccel(speed) | |
| 36 | +end | |
| 37 | + | |
| 38 | +function toggleAI(p) | |
| 39 | + local oldid = id() | |
| 40 | + if player(p) then | |
| 41 | + if ailevel() > 0 then | |
| 42 | + setAILevel(0) | |
| 43 | + else | |
| 44 | + setAILevel(8) | |
| 45 | + end | |
| 46 | + playerid(oldid) | |
| 47 | + end | |
| 48 | +end | |
| 49 | + | |
| 50 | +function kill(p, ...) | |
| 51 | + local oldid = id() | |
| 52 | + if player(p) then | |
| 53 | + local n = ... | |
| 54 | + if not n then n = 0 end | |
| 55 | + setLife(n) | |
| 56 | + playerid(oldid) | |
| 57 | + end | |
| 58 | +end | |
| 59 | + | |
| 60 | +function powMax(p) | |
| 61 | + local oldid = id() | |
| 62 | + if player(p) then | |
| 63 | + setPower(powermax()) | |
| 64 | + playerid(oldid) | |
| 65 | + end | |
| 66 | +end | |
| 67 | + | |
| 68 | +function full(p) | |
| 69 | + local oldid = id() | |
| 70 | + if player(p) then | |
| 71 | + setLife(lifemax()) | |
| 72 | + setPower(powermax()) | |
| 73 | + playerid(oldid) | |
| 74 | + end | |
| 75 | +end | |
| 76 | + | |
| 77 | +function stand(p) | |
| 78 | + local oldid = id() | |
| 79 | + if player(p) then | |
| 80 | + selfState(0) | |
| 81 | + playerid(oldid) | |
| 82 | + end | |
| 83 | +end | |
| 84 | + | |
| 85 | +function info() | |
| 86 | + puts( | |
| 87 | + string.format( | |
| 88 | + 'name:%s state:%d>%d %s move:%s physics:%s', | |
| 89 | + name(), prevstateno(), stateno(), statetype(), movetype(), physics())) | |
| 90 | + puts( | |
| 91 | + string.format( | |
| 92 | + 'anim:%d %d elem:%d %d pos:%.3f,%.3f vel:%.3f,%.3f', | |
| 93 | + anim(), animtime(), animelemno(0), animelemtime(animelemno(0)), | |
| 94 | + posX(), posY(), velX(), velY())) | |
| 95 | +end | |
| 96 | + | |
| 97 | +function status(p) | |
| 98 | + local oldid = id() | |
| 99 | + if not player(p) then return false end | |
| 100 | + ret = | |
| 101 | + string.format( | |
| 102 | + 'STA:%s%s%s%6d(%d) ANI:%6d(%d)%2d LIF:%5d POW:%5d TIM:%d', | |
| 103 | + statetype(), movetype(), physics(), stateno(), stateOwner(), | |
| 104 | + anim(), animOwner(), animelemno(0), life(), power(), time()) | |
| 105 | + playerid(oldid) | |
| 106 | + return ret; | |
| 107 | +end | |
| 108 | + |
| @@ -0,0 +1,687 @@ | ||
| 1 | + | |
| 2 | +setRoundTime(999 * 6)--frames | |
| 3 | +setLifeMul(1.0) | |
| 4 | +setTeam1VS2Life(1.0) | |
| 5 | +setTurnsRecoveryRate(1.0 / 300.0) | |
| 6 | + | |
| 7 | +setZoom(false) | |
| 8 | +setZoomMin(0.25) | |
| 9 | +setZoomMax(1.0) | |
| 10 | +setZoomSpeed(1.0) | |
| 11 | + | |
| 12 | +loadLifebar('data/gms_lifebar/fight.def') | |
| 13 | +loadDebugFont('data/gms_lifebar/font2.fnt') | |
| 14 | +setDebugScript('script/debug.lua') | |
| 15 | + | |
| 16 | +selectColumns = 10 | |
| 17 | + | |
| 18 | + | |
| 19 | +require('script.randomtest') | |
| 20 | + | |
| 21 | +function addWithRefresh(addFn, text) | |
| 22 | + local nextRefresh = os.clock() + 0.02 | |
| 23 | + for i, c | |
| 24 | + in ipairs(script.randomtest.strsplit('\n', | |
| 25 | + text:gsub('^%s*(.-)%s*$', '%1'))) | |
| 26 | + do | |
| 27 | + addFn(c) | |
| 28 | + if os.clock() >= nextRefresh then | |
| 29 | + refresh() | |
| 30 | + nextRefresh = os.clock() + 0.02 | |
| 31 | + end | |
| 32 | + end | |
| 33 | +end | |
| 34 | + | |
| 35 | +orgAddChar = addChar | |
| 36 | +orgAddStage = addStage | |
| 37 | + | |
| 38 | +function addChar(text) | |
| 39 | + addWithRefresh(orgAddChar, text) | |
| 40 | +end | |
| 41 | + | |
| 42 | +function addStage(text) | |
| 43 | + addWithRefresh(orgAddStage, text) | |
| 44 | +end | |
| 45 | + | |
| 46 | +assert(loadfile('script/select.lua'))() | |
| 47 | + | |
| 48 | + | |
| 49 | +math.randomseed(os.time()) | |
| 50 | + | |
| 51 | +------------------------------------------------------------ | |
| 52 | +sysSff = sffNew('script/system.sff') | |
| 53 | +sysSnd = sndNew('script/system.snd') | |
| 54 | +jgFnt = fontNew('data/gms_lifebar/font2.fnt') | |
| 55 | + | |
| 56 | +bgm = '' | |
| 57 | +playBGM(bgm) | |
| 58 | + | |
| 59 | +------------------------------------------------------------ | |
| 60 | +function setCommand(c) | |
| 61 | + commandAdd(c, 'u', '$U') | |
| 62 | + commandAdd(c, 'd', '$D') | |
| 63 | + commandAdd(c, 'l', '$B') | |
| 64 | + commandAdd(c, 'r', '$F') | |
| 65 | + commandAdd(c, 'a', 'a') | |
| 66 | + commandAdd(c, 'b', 'b') | |
| 67 | + commandAdd(c, 'c', 'c') | |
| 68 | + commandAdd(c, 'x', 'x') | |
| 69 | + commandAdd(c, 'y', 'y') | |
| 70 | + commandAdd(c, 'z', 'z') | |
| 71 | + commandAdd(c, 's', 's') | |
| 72 | + commandAdd(c, 'holds', '/s') | |
| 73 | + commandAdd(c, 'su', '/s, U') | |
| 74 | + commandAdd(c, 'sd', '/s, D') | |
| 75 | +end | |
| 76 | + | |
| 77 | +p1Cmd = commandNew() | |
| 78 | +setCommand(p1Cmd) | |
| 79 | + | |
| 80 | +p2Cmd = commandNew() | |
| 81 | +setCommand(p2Cmd) | |
| 82 | + | |
| 83 | +------------------------------------------------------------ | |
| 84 | +selectRows = math.floor(selectColumns * 2 / 5.0) | |
| 85 | + | |
| 86 | +setRandomSpr(sysSff, 151, 0, 5.0/selectColumns, 5.0/selectColumns) | |
| 87 | +setSelColRow(selectColumns, selectRows) | |
| 88 | +setSelCellSize(29*5.0/selectColumns, 29*5.0/selectColumns) | |
| 89 | +setSelCellScale(5.0/selectColumns, 5.0/selectColumns) | |
| 90 | + | |
| 91 | +function init() | |
| 92 | + p1TeamMode = 0 | |
| 93 | + p1NumTurns = 2 | |
| 94 | + p1SelOffset = 0 | |
| 95 | + p1SelX = 0 | |
| 96 | + p1SelY = 0 | |
| 97 | + p1Portrait = nil | |
| 98 | + | |
| 99 | + p2TeamMode = 0 | |
| 100 | + p2NumTurns = 2 | |
| 101 | + p2SelOffset = 0 | |
| 102 | + p2SelX = 0 | |
| 103 | + p2SelY = 0 | |
| 104 | + p2Portrait = nil | |
| 105 | + | |
| 106 | + stageNo = 0 | |
| 107 | + setStage(0) | |
| 108 | +end | |
| 109 | + | |
| 110 | +init() | |
| 111 | + | |
| 112 | +function noTask() | |
| 113 | +end | |
| 114 | + | |
| 115 | + | |
| 116 | +function animPosDraw(a, x, y) | |
| 117 | + animSetPos(a, x, y) | |
| 118 | + animDraw(a) | |
| 119 | +end | |
| 120 | + | |
| 121 | +function textImgPosDraw(ti, x, y) | |
| 122 | + textImgSetPos(ti, x, y) | |
| 123 | + textImgDraw(ti) | |
| 124 | +end | |
| 125 | + | |
| 126 | +function createTextImg(font, bank, aline, text, x, y) | |
| 127 | + local ti = textImgNew() | |
| 128 | + textImgSetFont(ti, font) | |
| 129 | + textImgSetBank(ti, bank) | |
| 130 | + textImgSetAlign(ti, aline) | |
| 131 | + textImgSetText(ti, text) | |
| 132 | + textImgSetPos(ti, x, y) | |
| 133 | + return ti | |
| 134 | +end | |
| 135 | + | |
| 136 | +function btnPalNo(cmd) | |
| 137 | + local s = 0 | |
| 138 | + if commandGetState(cmd, 'holds') then s = 6 end | |
| 139 | + if commandGetState(cmd, 'a') then return 1 + s end | |
| 140 | + if commandGetState(cmd, 'b') then return 2 + s end | |
| 141 | + if commandGetState(cmd, 'c') then return 3 + s end | |
| 142 | + if commandGetState(cmd, 'x') then return 4 + s end | |
| 143 | + if commandGetState(cmd, 'y') then return 5 + s end | |
| 144 | + if commandGetState(cmd, 'z') then return 6 + s end | |
| 145 | + return 0 | |
| 146 | +end | |
| 147 | + | |
| 148 | +------------------------------------------------------------ | |
| 149 | +p1SelTmTxt = createTextImg(jgFnt, 0, 1, 'Team Mode', 20, 30) | |
| 150 | +p1SingleTxt = createTextImg(jgFnt, 0, 1, 'Single', 20, 50) | |
| 151 | +p1SimulTxt = createTextImg(jgFnt, 0, 1, 'Simul', 20, 65) | |
| 152 | +p1TurnsTxt = createTextImg(jgFnt, 0, 1, 'Turns', 20, 80) | |
| 153 | + | |
| 154 | +p1TmCursor = animNew(sysSff, [[ | |
| 155 | +180,0, 0,0, -1 | |
| 156 | +]]) | |
| 157 | + | |
| 158 | +p1TmIcon = animNew(sysSff, [[ | |
| 159 | +181,0, 0,0, -1 | |
| 160 | +]]) | |
| 161 | + | |
| 162 | +function p1TmSub() | |
| 163 | + if commandGetState(p1Cmd, 'u') then | |
| 164 | + sndPlay(sysSnd, 100, 0) | |
| 165 | + p1TeamMode = p1TeamMode - 1 | |
| 166 | + if p1TeamMode < 0 then p1TeamMode = 2 end | |
| 167 | + elseif commandGetState(p1Cmd, 'd') then | |
| 168 | + sndPlay(sysSnd, 100, 0) | |
| 169 | + p1TeamMode = p1TeamMode + 1 | |
| 170 | + if p1TeamMode > 2 then p1TeamMode = 0 end | |
| 171 | + elseif p1TeamMode == 2 then | |
| 172 | + if commandGetState(p1Cmd, 'l') then | |
| 173 | + sndPlay(sysSnd, 100, 0) | |
| 174 | + p1NumTurns = p1NumTurns - 1 | |
| 175 | + if p1NumTurns < 1 then p1NumTurns = 1 end | |
| 176 | + elseif commandGetState(p1Cmd, 'r') then | |
| 177 | + sndPlay(sysSnd, 100, 0) | |
| 178 | + p1NumTurns = p1NumTurns + 1 | |
| 179 | + if p1NumTurns > 4 then p1NumTurns = 4 end | |
| 180 | + end | |
| 181 | + end | |
| 182 | + textImgDraw(p1SelTmTxt) | |
| 183 | + textImgDraw(p1SingleTxt) | |
| 184 | + textImgDraw(p1SimulTxt) | |
| 185 | + textImgDraw(p1TurnsTxt) | |
| 186 | + animUpdate(p1TmIcon) | |
| 187 | + animPosDraw(p1TmIcon, 80, 66) | |
| 188 | + animPosDraw(p1TmIcon, 86, 66) | |
| 189 | + for i = 1, p1NumTurns do | |
| 190 | + animPosDraw(p1TmIcon, 74 + i*6, 81) | |
| 191 | + end | |
| 192 | + animUpdate(p1TmCursor) | |
| 193 | + animPosDraw(p1TmCursor, 10, 47 + p1TeamMode*15) | |
| 194 | + if btnPalNo(p1Cmd) > 0 then | |
| 195 | + sndPlay(sysSnd, 100, 1) | |
| 196 | + setTeamMode(1, p1TeamMode, p1NumTurns) | |
| 197 | + p1Selected = {} | |
| 198 | + p1SelEnd = false | |
| 199 | + p1Task = p1SelSub | |
| 200 | + end | |
| 201 | +end | |
| 202 | + | |
| 203 | + | |
| 204 | +------------------------------------------------------------ | |
| 205 | +p2SelTmTxt = createTextImg(jgFnt, 0, -1, 'Team Mode', 300, 30) | |
| 206 | +p2SingleTxt = createTextImg(jgFnt, 0, -1, 'Single', 300, 50) | |
| 207 | +p2SimulTxt = createTextImg(jgFnt, 0, -1, 'Simul', 300, 65) | |
| 208 | +p2TurnsTxt = createTextImg(jgFnt, 0, -1, 'Turns', 300, 80) | |
| 209 | + | |
| 210 | +p2TmCursor = animNew(sysSff, [[ | |
| 211 | +190,0, 0,0, -1 | |
| 212 | +]]) | |
| 213 | + | |
| 214 | +p2TmIcon = animNew(sysSff, [[ | |
| 215 | +191,0, 0,0, -1 | |
| 216 | +]]) | |
| 217 | + | |
| 218 | +function p2TmSub() | |
| 219 | + if commandGetState(p2Cmd, 'u') then | |
| 220 | + sndPlay(sysSnd, 100, 0) | |
| 221 | + p2TeamMode = p2TeamMode - 1 | |
| 222 | + if p2TeamMode < 0 then p2TeamMode = 2 end | |
| 223 | + elseif commandGetState(p2Cmd, 'd') then | |
| 224 | + sndPlay(sysSnd, 100, 0) | |
| 225 | + p2TeamMode = p2TeamMode + 1 | |
| 226 | + if p2TeamMode > 2 then p2TeamMode = 0 end | |
| 227 | + elseif p2TeamMode == 2 then | |
| 228 | + if commandGetState(p2Cmd, 'r') then | |
| 229 | + sndPlay(sysSnd, 100, 0) | |
| 230 | + p2NumTurns = p2NumTurns - 1 | |
| 231 | + if p2NumTurns < 1 then p2NumTurns = 1 end | |
| 232 | + elseif commandGetState(p2Cmd, 'l') then | |
| 233 | + sndPlay(sysSnd, 100, 0) | |
| 234 | + p2NumTurns = p2NumTurns + 1 | |
| 235 | + if p2NumTurns > 4 then p2NumTurns = 4 end | |
| 236 | + end | |
| 237 | + end | |
| 238 | + textImgDraw(p2SelTmTxt) | |
| 239 | + textImgDraw(p2SingleTxt) | |
| 240 | + textImgDraw(p2SimulTxt) | |
| 241 | + textImgDraw(p2TurnsTxt) | |
| 242 | + animUpdate(p2TmIcon) | |
| 243 | + animPosDraw(p2TmIcon, 240, 66) | |
| 244 | + animPosDraw(p2TmIcon, 234, 66) | |
| 245 | + for i = 1, p2NumTurns do | |
| 246 | + animPosDraw(p2TmIcon, 246 - i*6, 81) | |
| 247 | + end | |
| 248 | + animUpdate(p2TmCursor) | |
| 249 | + animPosDraw(p2TmCursor, 310, 47 + p2TeamMode*15) | |
| 250 | + if btnPalNo(p2Cmd) > 0 then | |
| 251 | + sndPlay(sysSnd, 100, 1) | |
| 252 | + setTeamMode(2, p2TeamMode, p2NumTurns) | |
| 253 | + p2Selected = {} | |
| 254 | + p2SelEnd = false | |
| 255 | + p2Task = p2SelSub | |
| 256 | + end | |
| 257 | +end | |
| 258 | + | |
| 259 | + | |
| 260 | +------------------------------------------------------------ | |
| 261 | +p1Cursor = animNew(sysSff, [[ | |
| 262 | +160,0, 0,0, -1 | |
| 263 | +]]) | |
| 264 | +animSetScale(p1Cursor, 5.0/selectColumns, 5.0/selectColumns) | |
| 265 | + | |
| 266 | +p1NameTxt = createTextImg(jgFnt, 0, 1, '', 0, 0) | |
| 267 | +textImgSetScale(p1NameTxt, 0.5, 0.5) | |
| 268 | + | |
| 269 | +function p1DrawSelectName() | |
| 270 | + local y = 162 | |
| 271 | + for i = 1, #p1Selected do | |
| 272 | + textImgSetText(p1NameTxt, getCharName(p1Selected[i])) | |
| 273 | + textImgPosDraw(p1NameTxt, 10, y) | |
| 274 | + y = y + 7 | |
| 275 | + end | |
| 276 | + return y | |
| 277 | +end | |
| 278 | + | |
| 279 | +function p1SelSub() | |
| 280 | + local n = p1SelOffset + p1SelX + selectColumns*p1SelY | |
| 281 | + p1Portrait = n | |
| 282 | + local y = p1DrawSelectName() | |
| 283 | + if not p1SelEnd then | |
| 284 | + if commandGetState(p1Cmd, 'su') then | |
| 285 | + sndPlay(sysSnd, 100, 0) | |
| 286 | + p1SelY = p1SelY - 20 | |
| 287 | + elseif commandGetState(p1Cmd, 'sd') then | |
| 288 | + sndPlay(sysSnd, 100, 0) | |
| 289 | + p1SelY = p1SelY + 20 | |
| 290 | + elseif commandGetState(p1Cmd, 'u') then | |
| 291 | + sndPlay(sysSnd, 100, 0) | |
| 292 | + p1SelY = p1SelY - 1 | |
| 293 | + elseif commandGetState(p1Cmd, 'd') then | |
| 294 | + sndPlay(sysSnd, 100, 0) | |
| 295 | + p1SelY = p1SelY + 1 | |
| 296 | + elseif commandGetState(p1Cmd, 'l') then | |
| 297 | + sndPlay(sysSnd, 100, 0) | |
| 298 | + p1SelX = p1SelX - 1 | |
| 299 | + elseif commandGetState(p1Cmd, 'r') then | |
| 300 | + sndPlay(sysSnd, 100, 0) | |
| 301 | + p1SelX = p1SelX + 1 | |
| 302 | + end | |
| 303 | + if p1SelY < 0 then | |
| 304 | + p1SelOffset = p1SelOffset + selectColumns*p1SelY | |
| 305 | + p1SelY = 0 | |
| 306 | + elseif p1SelY >= selectRows then | |
| 307 | + p1SelOffset = p1SelOffset + selectColumns*(p1SelY - (selectRows - 1)) | |
| 308 | + p1SelY = selectRows - 1 | |
| 309 | + end | |
| 310 | + if p1SelX < 0 then | |
| 311 | + p1SelX = selectColumns - 1 | |
| 312 | + elseif p1SelX >= selectColumns then | |
| 313 | + p1SelX = 0 | |
| 314 | + end | |
| 315 | + animUpdate(p1Cursor) | |
| 316 | + animPosDraw( | |
| 317 | + p1Cursor, 10 + 29*p1SelX*5.0/selectColumns, | |
| 318 | + 170 + 29*p1SelY*5.0/selectColumns) | |
| 319 | + textImgSetText(p1NameTxt, getCharName(n)) | |
| 320 | + textImgPosDraw(p1NameTxt, 10, y) | |
| 321 | + local selval = selectChar(1, n, btnPalNo(p1Cmd)) | |
| 322 | + if selval > 0 then | |
| 323 | + sndPlay(sysSnd, 100, 1) | |
| 324 | + p1Selected[#p1Selected+1] = n | |
| 325 | + end | |
| 326 | + if selval == 2 then | |
| 327 | + p1SelEnd = true | |
| 328 | + if p2In == 1 then | |
| 329 | + p2Task = p2TmSub | |
| 330 | + commandBufReset(p2Cmd) | |
| 331 | + end | |
| 332 | + end | |
| 333 | + end | |
| 334 | +end | |
| 335 | + | |
| 336 | + | |
| 337 | +------------------------------------------------------------ | |
| 338 | +p2Cursor = animNew(sysSff, [[ | |
| 339 | +170,0, 0,0, -1 | |
| 340 | +]]) | |
| 341 | +animSetScale(p2Cursor, 5.0/selectColumns, 5.0/selectColumns) | |
| 342 | + | |
| 343 | +p2NameTxt = createTextImg(jgFnt, 0, -1, '', 0, 0) | |
| 344 | +textImgSetScale(p2NameTxt, 0.5, 0.5) | |
| 345 | + | |
| 346 | +function p2DrawSelectName() | |
| 347 | + local y = 162 | |
| 348 | + for i = 1, #p2Selected do | |
| 349 | + textImgSetText(p2NameTxt, getCharName(p2Selected[i])) | |
| 350 | + textImgPosDraw(p2NameTxt, 310, y) | |
| 351 | + y = y + 7 | |
| 352 | + end | |
| 353 | + return y | |
| 354 | +end | |
| 355 | + | |
| 356 | +function p2SelSub() | |
| 357 | + local n = p2SelOffset + p2SelX + selectColumns*p2SelY | |
| 358 | + p2Portrait = n | |
| 359 | + local y = p2DrawSelectName() | |
| 360 | + if not p2SelEnd then | |
| 361 | + if commandGetState(p2Cmd, 'su') then | |
| 362 | + sndPlay(sysSnd, 100, 0) | |
| 363 | + p2SelY = p2SelY - 20 | |
| 364 | + elseif commandGetState(p2Cmd, 'sd') then | |
| 365 | + sndPlay(sysSnd, 100, 0) | |
| 366 | + p2SelY = p2SelY + 20 | |
| 367 | + elseif commandGetState(p2Cmd, 'u') then | |
| 368 | + sndPlay(sysSnd, 100, 0) | |
| 369 | + p2SelY = p2SelY - 1 | |
| 370 | + elseif commandGetState(p2Cmd, 'd') then | |
| 371 | + sndPlay(sysSnd, 100, 0) | |
| 372 | + p2SelY = p2SelY + 1 | |
| 373 | + elseif commandGetState(p2Cmd, 'l') then | |
| 374 | + sndPlay(sysSnd, 100, 0) | |
| 375 | + p2SelX = p2SelX - 1 | |
| 376 | + elseif commandGetState(p2Cmd, 'r') then | |
| 377 | + sndPlay(sysSnd, 100, 0) | |
| 378 | + p2SelX = p2SelX + 1 | |
| 379 | + end | |
| 380 | + if p2SelY < 0 then | |
| 381 | + p2SelOffset = p2SelOffset + selectColumns*p2SelY | |
| 382 | + p2SelY = 0 | |
| 383 | + elseif p2SelY >= selectRows then | |
| 384 | + p2SelOffset = p2SelOffset + selectColumns*(p2SelY - (selectRows - 1)) | |
| 385 | + p2SelY = selectRows - 1 | |
| 386 | + end | |
| 387 | + if p2SelX < 0 then | |
| 388 | + p2SelX = selectColumns - 1 | |
| 389 | + elseif p2SelX >= selectColumns then | |
| 390 | + p2SelX = 0 | |
| 391 | + end | |
| 392 | + animUpdate(p2Cursor) | |
| 393 | + animPosDraw( | |
| 394 | + p2Cursor, 169 + 29*p2SelX*5.0/selectColumns, | |
| 395 | + 170 + 29*p2SelY*5.0/selectColumns) | |
| 396 | + textImgSetText(p2NameTxt, getCharName(n)) | |
| 397 | + textImgPosDraw(p2NameTxt, 310, y) | |
| 398 | + local selval = selectChar(2, n, btnPalNo(p2Cmd)) | |
| 399 | + if selval > 0 then | |
| 400 | + sndPlay(sysSnd, 100, 1) | |
| 401 | + p2Selected[#p2Selected+1] = n | |
| 402 | + end | |
| 403 | + if selval == 2 then | |
| 404 | + p2SelEnd = true | |
| 405 | + if p1In == 2 then | |
| 406 | + p1Task = p1TmSub | |
| 407 | + commandBufReset(p1Cmd) | |
| 408 | + end | |
| 409 | + end | |
| 410 | + end | |
| 411 | +end | |
| 412 | + | |
| 413 | + | |
| 414 | +------------------------------------------------------------ | |
| 415 | +selStageTxt = createTextImg(jgFnt, 0, 0, '', 160, 237) | |
| 416 | +textImgSetScale(selStageTxt, 0.5, 0.5) | |
| 417 | + | |
| 418 | +function selStageSub() | |
| 419 | + if commandGetState(p1Cmd, 'l') then | |
| 420 | + sndPlay(sysSnd, 100, 0) | |
| 421 | + stageNo = setStage(stageNo - 1) | |
| 422 | + elseif commandGetState(p1Cmd, 'r') then | |
| 423 | + sndPlay(sysSnd, 100, 0) | |
| 424 | + stageNo = setStage(stageNo + 1) | |
| 425 | + elseif commandGetState(p1Cmd, 'u') then | |
| 426 | + sndPlay(sysSnd, 100, 0) | |
| 427 | + stageNo = setStage(stageNo - 10) | |
| 428 | + elseif commandGetState(p1Cmd, 'd') then | |
| 429 | + sndPlay(sysSnd, 100, 0) | |
| 430 | + stageNo = setStage(stageNo + 10) | |
| 431 | + end | |
| 432 | + textImgSetText( | |
| 433 | + selStageTxt, 'Stage ' .. stageNo .. ': ' .. getStageName(stageNo)) | |
| 434 | + textImgDraw(selStageTxt) | |
| 435 | + if btnPalNo(p1Cmd) > 0 then | |
| 436 | + selectStage(stageNo) | |
| 437 | + selMode = false | |
| 438 | + end | |
| 439 | +end | |
| 440 | + | |
| 441 | + | |
| 442 | +------------------------------------------------------------ | |
| 443 | +selBG = animNew(sysSff, [[ | |
| 444 | +100,0, 0,0, -1 | |
| 445 | +]]) | |
| 446 | +animSetTile(selBG, 1, 1) | |
| 447 | +animSetColorKey(selBG, -1) | |
| 448 | +animSetScale(selBG, 0.5, 0.5) | |
| 449 | + | |
| 450 | +selBox = animNew(sysSff, [[ | |
| 451 | +100,1, 0,0, -1 | |
| 452 | +]]) | |
| 453 | +animSetTile(selBox, 1, 0) | |
| 454 | +animSetColorKey(selBox, -1) | |
| 455 | +animSetAlpha(selBox, 1, 255) | |
| 456 | +animSetPos(selBox, 0, 166) | |
| 457 | +animSetWindow(selBox, 5, 0, 151, 240) | |
| 458 | + | |
| 459 | +selBox2 = animNew(sysSff, [[ | |
| 460 | +100,1, 0,0, -1 | |
| 461 | +]]) | |
| 462 | +animSetTile(selBox2, 1, 0) | |
| 463 | +animSetColorKey(selBox2, -1) | |
| 464 | +animSetAlpha(selBox2, 1, 255) | |
| 465 | +animSetPos(selBox2, 0, 166) | |
| 466 | +animSetWindow(selBox2, 164, 0, 151, 240) | |
| 467 | + | |
| 468 | +function bgSub() | |
| 469 | + animAddPos(selBG, 1, 1) | |
| 470 | + animUpdate(selBG) | |
| 471 | + animDraw(selBG) | |
| 472 | + animAddPos(selBox, 1, 0) | |
| 473 | + animUpdate(selBox) | |
| 474 | + animDraw(selBox) | |
| 475 | + animAddPos(selBox2, 1, 0) | |
| 476 | + animUpdate(selBox2) | |
| 477 | + animDraw(selBox2) | |
| 478 | +end | |
| 479 | + | |
| 480 | + | |
| 481 | +------------------------------------------------------------ | |
| 482 | +watchMode = createTextImg(jgFnt, 0, 1, 'Watch Mode', 100, 80) | |
| 483 | +p1VsComTxt = createTextImg(jgFnt, 0, 1, '1P vs. Com', 100, 100) | |
| 484 | +p1VsP2 = createTextImg(jgFnt, 0, 1, '1P vs. 2P', 100, 120) | |
| 485 | +netplay = createTextImg(jgFnt, 0, 1, 'Netplay', 100, 140) | |
| 486 | +portChange = createTextImg(jgFnt, 0, 1, '', 100, 160) | |
| 487 | +replay = createTextImg(jgFnt, 0, 1, 'Replay', 100, 180) | |
| 488 | +comVsP1 = createTextImg(jgFnt, 0, 1, 'Com vs. 1P', 100, 200) | |
| 489 | +autoRandomTest = createTextImg(jgFnt, 0, 1, 'Auto Random Test', 100, 220) | |
| 490 | + | |
| 491 | +connecting = createTextImg(jgFnt, 0, 1, '', 10, 140) | |
| 492 | +loading = createTextImg(jgFnt, 0, 1, 'Loading...', 100, 210) | |
| 493 | + | |
| 494 | +inputdia = inputDialogNew() | |
| 495 | + | |
| 496 | +function cmdInput() | |
| 497 | + commandInput(p1Cmd, p1In) | |
| 498 | + commandInput(p2Cmd, p2In) | |
| 499 | +end | |
| 500 | + | |
| 501 | +function main() | |
| 502 | + while true do | |
| 503 | + p1Selected = {} | |
| 504 | + p1SelEnd = false | |
| 505 | + p1Portrait = nil | |
| 506 | + | |
| 507 | + p2Selected = {} | |
| 508 | + p2SelEnd = false | |
| 509 | + p2Portrait = nil | |
| 510 | + | |
| 511 | + if gameMode == 6 then | |
| 512 | + p1Task = noTask | |
| 513 | + p2Task = p2TmSub | |
| 514 | + else | |
| 515 | + p1Task = p1TmSub | |
| 516 | + p2Task = noTask | |
| 517 | + if gameMode > 1 then p2Task = p2TmSub end | |
| 518 | + end | |
| 519 | + | |
| 520 | + refresh() | |
| 521 | + | |
| 522 | + commandBufReset(p1Cmd) | |
| 523 | + commandBufReset(p2Cmd) | |
| 524 | + | |
| 525 | + selMode = true | |
| 526 | + selectStart() | |
| 527 | + | |
| 528 | + ------------------------------------------------------------ | |
| 529 | + --メインループ | |
| 530 | + ------------------------------------------------------------ | |
| 531 | + while selMode do | |
| 532 | + if esc() then return end | |
| 533 | + bgSub() | |
| 534 | + if p1Portrait then drawPortrait(p1Portrait, 18, 13, 1, 1) end | |
| 535 | + if p2Portrait then drawPortrait(p2Portrait, 302, 13, -1, 1) end | |
| 536 | + drawFace(10, 170, p1SelOffset) | |
| 537 | + drawFace(169, 170, p2SelOffset) | |
| 538 | + if p1SelEnd and p2SelEnd then selStageSub() end | |
| 539 | + p2Task() | |
| 540 | + p1Task() | |
| 541 | + cmdInput() | |
| 542 | + refresh() | |
| 543 | + end | |
| 544 | + for i = 1, 20 do | |
| 545 | + animDraw(selBG) | |
| 546 | + local k = 0 | |
| 547 | + for j = 1, #p1Selected do | |
| 548 | + local scl = 10000.0 / (10000.0 - k*i) | |
| 549 | + local tmp = i*k / 20 | |
| 550 | + drawPortrait(p1Selected[j], 18 - tmp, 13 + tmp/3, scl, scl) | |
| 551 | + k = k + 48 | |
| 552 | + end | |
| 553 | + k = 0 | |
| 554 | + for j = 1, #p2Selected do | |
| 555 | + local scl = 10000.0 / (10000.0 - k*i) | |
| 556 | + local tmp = i*k / 20 | |
| 557 | + drawPortrait(p2Selected[j], 302 + tmp, 13 + tmp/3, -scl, scl) | |
| 558 | + k = k + 48 | |
| 559 | + end | |
| 560 | + p1DrawSelectName() | |
| 561 | + p2DrawSelectName() | |
| 562 | + textImgDraw(loading) | |
| 563 | + refresh() | |
| 564 | + end | |
| 565 | + game() | |
| 566 | + playBGM(bgm) | |
| 567 | + end | |
| 568 | +end | |
| 569 | + | |
| 570 | +function modeSel() | |
| 571 | + while true do | |
| 572 | + exitNetPlay() | |
| 573 | + exitReplay() | |
| 574 | + | |
| 575 | + gameMode = 0 | |
| 576 | + p1In = 1 | |
| 577 | + p2In = 1 | |
| 578 | + | |
| 579 | + for i = 1, 8 do | |
| 580 | + setCom(i, 8) | |
| 581 | + end | |
| 582 | + setAutoLevel(false) | |
| 583 | + setMatchNo(1) | |
| 584 | + setHomeTeam(1) | |
| 585 | + resetRemapInput() | |
| 586 | + | |
| 587 | + textImgSetText(portChange, 'Port Change(' .. getListenPort() .. ')') | |
| 588 | + | |
| 589 | + refresh() | |
| 590 | + commandBufReset(p1Cmd) | |
| 591 | + | |
| 592 | + while btnPalNo(p1Cmd) <= 0 do | |
| 593 | + if commandGetState(p1Cmd, 'u') then | |
| 594 | + sndPlay(sysSnd, 100, 0) | |
| 595 | + gameMode = gameMode - 1 | |
| 596 | + elseif commandGetState(p1Cmd, 'd') then | |
| 597 | + sndPlay(sysSnd, 100, 0) | |
| 598 | + gameMode = gameMode + 1 | |
| 599 | + end | |
| 600 | + if gameMode < 0 then | |
| 601 | + gameMode = 7 | |
| 602 | + elseif gameMode > 7 then | |
| 603 | + gameMode = 0 | |
| 604 | + end | |
| 605 | + textImgDraw(watchMode) | |
| 606 | + textImgDraw(p1VsComTxt) | |
| 607 | + textImgDraw(p1VsP2) | |
| 608 | + textImgDraw(netplay) | |
| 609 | + textImgDraw(portChange) | |
| 610 | + textImgDraw(replay) | |
| 611 | + textImgDraw(comVsP1) | |
| 612 | + textImgDraw(autoRandomTest) | |
| 613 | + animUpdate(p1TmCursor) | |
| 614 | + animPosDraw(p1TmCursor, 95, 77 + 20*gameMode) | |
| 615 | + cmdInput() | |
| 616 | + refresh() | |
| 617 | + end | |
| 618 | + sndPlay(sysSnd, 100, 1) | |
| 619 | + | |
| 620 | + local cancel = false | |
| 621 | + | |
| 622 | + if gameMode == 0 then | |
| 623 | + elseif gameMode == 1 then | |
| 624 | + setCom(1, 0) | |
| 625 | + elseif gameMode == 2 then | |
| 626 | + p2In = 2 | |
| 627 | + setCom(1, 0) | |
| 628 | + setCom(2, 0) | |
| 629 | + elseif gameMode == 3 then | |
| 630 | + p2In = 2 | |
| 631 | + setCom(1, 0) | |
| 632 | + setCom(2, 0) | |
| 633 | + inputDialogPopup(inputdia, 'Input Server') | |
| 634 | + while not inputDialogIsDone(inputdia) do | |
| 635 | + refresh() | |
| 636 | + end | |
| 637 | + textImgSetText( | |
| 638 | + connecting, | |
| 639 | + 'Now connecting.. ' .. inputDialogGetStr(inputdia) | |
| 640 | + .. ' ' .. getListenPort()) | |
| 641 | + enterNetPlay(inputDialogGetStr(inputdia)) | |
| 642 | + while not connected() do | |
| 643 | + if esc() then | |
| 644 | + cancel = true | |
| 645 | + break | |
| 646 | + end | |
| 647 | + textImgDraw(connecting) | |
| 648 | + refresh() | |
| 649 | + end | |
| 650 | + if not cancel then | |
| 651 | + init() | |
| 652 | + synchronize() | |
| 653 | + math.randomseed(sszRandom()) | |
| 654 | + end | |
| 655 | + elseif gameMode == 4 then | |
| 656 | + inputDialogPopup(inputdia, 'Input Port') | |
| 657 | + while not inputDialogIsDone(inputdia) do | |
| 658 | + refresh() | |
| 659 | + end | |
| 660 | + setListenPort(inputDialogGetStr(inputdia)) | |
| 661 | + cancel = true | |
| 662 | + elseif gameMode == 5 then | |
| 663 | + p2In = 2 | |
| 664 | + setCom(1, 0) | |
| 665 | + setCom(2, 0) | |
| 666 | + enterReplay('replay/netplay.replay') | |
| 667 | + init() | |
| 668 | + synchronize() | |
| 669 | + math.randomseed(sszRandom()) | |
| 670 | + elseif gameMode == 6 then | |
| 671 | + remapInput(1, 2) | |
| 672 | + remapInput(2, 1) | |
| 673 | + p1In = 2 | |
| 674 | + p2In = 2 | |
| 675 | + setCom(2, 0) | |
| 676 | + elseif gameMode == 7 then | |
| 677 | + script.randomtest.run() | |
| 678 | + cancel = true | |
| 679 | + end | |
| 680 | + if not cancel then | |
| 681 | + main() | |
| 682 | + end | |
| 683 | + end | |
| 684 | +end | |
| 685 | + | |
| 686 | +modeSel() | |
| 687 | + |
| @@ -0,0 +1,291 @@ | ||
| 1 | + | |
| 2 | +module(..., package.seeall) | |
| 3 | + | |
| 4 | +function strsplit(delimiter, text) | |
| 5 | + local list = {} | |
| 6 | + local pos = 1 | |
| 7 | + if string.find('', delimiter, 1) then | |
| 8 | + if string.len(text) == 0 then | |
| 9 | + table.insert(list, text) | |
| 10 | + else | |
| 11 | + for i = 1, string.len(text) do | |
| 12 | + table.insert(list, string.sub(text, i, i)) | |
| 13 | + end | |
| 14 | + end | |
| 15 | + else | |
| 16 | + while true do | |
| 17 | + local first, last = string.find(text, delimiter, pos) | |
| 18 | + if first then | |
| 19 | + table.insert(list, string.sub(text, pos, first-1)) | |
| 20 | + pos = last+1 | |
| 21 | + else | |
| 22 | + table.insert(list, string.sub(text, pos)) | |
| 23 | + break | |
| 24 | + end | |
| 25 | + end | |
| 26 | + end | |
| 27 | + return list | |
| 28 | +end | |
| 29 | + | |
| 30 | +function strtrim(s) | |
| 31 | + return string.match(s,'^()%s*$') and '' or string.match(s,'^%s*(.*%S)') | |
| 32 | +end | |
| 33 | + | |
| 34 | +function map(func, table) | |
| 35 | + local dest = {} | |
| 36 | + for k, v in pairs(table) do | |
| 37 | + dest[k] = func(v) | |
| 38 | + end | |
| 39 | + return dest | |
| 40 | +end | |
| 41 | + | |
| 42 | + | |
| 43 | +tuyoiBorder = 0 | |
| 44 | +juuni = 12 | |
| 45 | +moudeta = {} | |
| 46 | +rank = 0 | |
| 47 | +saikyou = false | |
| 48 | +roster = {} | |
| 49 | +debugText = '' | |
| 50 | +numChars = 0 | |
| 51 | +nextChar = 1 | |
| 52 | + | |
| 53 | +function addMoudeta(rank) | |
| 54 | + moudeta[#moudeta + 1] = rank | |
| 55 | + local max = | |
| 56 | + math.floor( | |
| 57 | + numChars / (math.min(numChars / (juuni*10) + 3, juuni)*juuni)) | |
| 58 | + while #moudeta > max do | |
| 59 | + table.remove(moudeta, 1) | |
| 60 | + end | |
| 61 | +end | |
| 62 | +function randRank() | |
| 63 | + local r = 0 | |
| 64 | + while true do | |
| 65 | + r = math.random(1, tuyoiBorder + juuni - 2); | |
| 66 | + local notbroken = true | |
| 67 | + for i = 1, #moudeta do | |
| 68 | + if math.abs(moudeta[i] - r) <= math.floor(juuni/3) then | |
| 69 | + notbroken = false | |
| 70 | + break | |
| 71 | + end | |
| 72 | + end | |
| 73 | + if notbroken then | |
| 74 | + break | |
| 75 | + end | |
| 76 | + end | |
| 77 | + return r | |
| 78 | +end | |
| 79 | + | |
| 80 | +function eachAllChars(f) | |
| 81 | + for cel = 0, numSelCells()-1 do | |
| 82 | + if getCharFileName(cel) ~= 'randomselect' and getCharName(cel) ~= '' then | |
| 83 | + f(cel) | |
| 84 | + end | |
| 85 | + end | |
| 86 | +end | |
| 87 | + | |
| 88 | +function rakuBenry() | |
| 89 | + local alf = 'autolevel.txt' | |
| 90 | + local veljnz = {} | |
| 91 | + local winct = {} | |
| 92 | + local buf = '\239\187\191' | |
| 93 | + local fp = io.open(alf, 'r') | |
| 94 | + if fp then | |
| 95 | + for line in fp:lines() do | |
| 96 | + local tmp = strsplit(',', line) | |
| 97 | + if #tmp >= 2 then | |
| 98 | + for i = 1, 4 do | |
| 99 | + if i == 4 then | |
| 100 | + tmp[1] = string.sub(tmp[1], 4) | |
| 101 | + else | |
| 102 | + if string.byte(tmp[1], i) ~= string.byte(buf, i) then break end | |
| 103 | + end | |
| 104 | + end | |
| 105 | + winct[tmp[1]] = map(tonumber, strsplit(' ', strtrim(tmp[2]))) | |
| 106 | + end | |
| 107 | + end | |
| 108 | + io.close(fp) | |
| 109 | + end | |
| 110 | + numChars = 0 | |
| 111 | + eachAllChars(function(cel) | |
| 112 | + numChars = numChars + 1 | |
| 113 | + end) | |
| 114 | + local tuyoninzu = math.floor(numChars / (juuni*10)) | |
| 115 | + if tuyoninzu < juuni - 1 then | |
| 116 | + tuyoiBorder = math.floor(numChars / (tuyoninzu + 1)) | |
| 117 | + tuyoninzu = juuni - 1 | |
| 118 | + else | |
| 119 | + tuyoiBorder = math.floor(numChars / juuni) | |
| 120 | + end | |
| 121 | + local total = 0 | |
| 122 | + local zero ={} | |
| 123 | + local tsuyoshi = {} | |
| 124 | + local rand = {} | |
| 125 | + local kai = {} | |
| 126 | + local bimyou = {} | |
| 127 | + local tuyocnt = 0 | |
| 128 | + local ran = randRank() | |
| 129 | + eachAllChars(function(cel) | |
| 130 | + if #veljnz < cel*12 then | |
| 131 | + for i = #veljnz + 1, cel*12 do | |
| 132 | + veljnz[i] = 0 | |
| 133 | + end | |
| 134 | + end | |
| 135 | + local wins = winct[getCharFileName(cel)] | |
| 136 | + local tmp = 0 | |
| 137 | + for j = 1, 12 do | |
| 138 | + if wins and j <= #wins then | |
| 139 | + total = total + wins[j] | |
| 140 | + veljnz[cel*12 + j] = wins[j] | |
| 141 | + tmp = tmp + wins[j] | |
| 142 | + else | |
| 143 | + veljnz[cel*12 + j] = 0 | |
| 144 | + end | |
| 145 | + end | |
| 146 | + if tmp >= tuyoiBorder then tuyocnt = tuyocnt + 1 end | |
| 147 | + if tmp >= tuyoiBorder - juuni then table.insert(tsuyoshi, cel) end | |
| 148 | + if tmp >= 1 and tmp <= juuni then table.insert(bimyou, cel) end | |
| 149 | + if tmp > ran-juuni and tmp <= ran then table.insert(rand, cel) end | |
| 150 | + if tmp == 0 then table.insert(zero, cel) end | |
| 151 | + if tmp < 0 then table.insert(kai, cel) end | |
| 152 | + end) | |
| 153 | + function charAdd(cList, numAdd) | |
| 154 | + if numAdd <= 0 then return end | |
| 155 | + for i = 1, numAdd do | |
| 156 | + if #cList == 0 then break end | |
| 157 | + local cidx = math.random(1, #cList) | |
| 158 | + table.insert(roster, cList[cidx]) | |
| 159 | + table.remove(cList, cidx) | |
| 160 | + end | |
| 161 | + end | |
| 162 | + roster = {} | |
| 163 | + nextChar = 1 | |
| 164 | + debugText = '' | |
| 165 | + local numZero = #zero | |
| 166 | + if numZero > 0 then | |
| 167 | + charAdd(zero, numZero) | |
| 168 | + charAdd(kai, tuyoninzu - numZero) | |
| 169 | + rank = 0 | |
| 170 | + elseif #bimyou >= math.max(tuyoninzu*20, math.floor((numChars*3)/20)) then | |
| 171 | + charAdd(bimyou, #bimyou) | |
| 172 | + rank = juuni | |
| 173 | + else | |
| 174 | + for n = 1, 3 do | |
| 175 | + if #rand >= tuyoninzu then break end | |
| 176 | + rand = {} | |
| 177 | + ran = randRank() | |
| 178 | + eachAllChars(function(cel) | |
| 179 | + local tmp = 0 | |
| 180 | + for j = 1, 12 do | |
| 181 | + tmp = tmp + veljnz[cel*12 + j] | |
| 182 | + end | |
| 183 | + if tmp > ran-juuni and tmp <= ran then table.insert(rand, cel) end | |
| 184 | + end) | |
| 185 | + end | |
| 186 | + debugText = ran .. ' ' .. #rand | |
| 187 | + if #rand >= tuyoninzu then | |
| 188 | + charAdd(rand, #rand) | |
| 189 | + rank = ran | |
| 190 | + addMoudeta(rank) | |
| 191 | + elseif tuyocnt >= tuyoninzu then | |
| 192 | + charAdd(tsuyoshi, #tsuyoshi) | |
| 193 | + rank = tuyoiBorder+juuni-1 | |
| 194 | + else | |
| 195 | + addMoudeta(tuyoiBorder + (juuni-2) - math.floor(juuni/3)) | |
| 196 | + charAdd(kai, #kai) | |
| 197 | + rank = -1 | |
| 198 | + end | |
| 199 | + end | |
| 200 | + if numZero == 0 then | |
| 201 | + while total ~= 0 do | |
| 202 | + local i = math.random(1, #veljnz) | |
| 203 | + if total > 0 then | |
| 204 | + veljnz[i] = veljnz[i] - 1 | |
| 205 | + total = total - 1 | |
| 206 | + else | |
| 207 | + veljnz[i] = veljnz[i] + 1 | |
| 208 | + total = total + 1 | |
| 209 | + end | |
| 210 | + end | |
| 211 | + end | |
| 212 | + eachAllChars(function(cel) | |
| 213 | + buf = buf .. getCharFileName(cel) .. ',' | |
| 214 | + for j = 1, 12 do | |
| 215 | + buf = buf .. ' ' .. veljnz[cel*12 + j] | |
| 216 | + end | |
| 217 | + buf = buf .. '\r\n' | |
| 218 | + end) | |
| 219 | + local alv = io.open(alf, 'wb') | |
| 220 | + alv:write(buf) | |
| 221 | + io.close(alv) | |
| 222 | +end | |
| 223 | + | |
| 224 | +function randSel(pno, winner) | |
| 225 | + if winner > 0 and (pno == winner) == not saikyou then return end | |
| 226 | + local team | |
| 227 | + if rank == 0 or rank == 12 or saikyou then | |
| 228 | + team = 0 | |
| 229 | + elseif rank < 0 then | |
| 230 | + team = math.random(0, 2) | |
| 231 | + else | |
| 232 | + team = math.random(0, 1)*2 | |
| 233 | + end | |
| 234 | + setTeamMode(pno, team, math.random(1, 4)) | |
| 235 | + local tmp = 0 | |
| 236 | + while tmp < 2 do | |
| 237 | + tmp = selectChar(pno, roster[nextChar], math.random(1, 12)) | |
| 238 | + nextChar = nextChar + 1 | |
| 239 | + if nextChar > #roster then nextChar = 1 end | |
| 240 | + end | |
| 241 | +end | |
| 242 | + | |
| 243 | +function rosterTxt() | |
| 244 | + local str = "Rank: " .. rank .. ' ' .. debugText | |
| 245 | + for i = 1, #roster do | |
| 246 | + str = str .. '\n' .. getCharFileName(roster[i]) | |
| 247 | + end | |
| 248 | + dscr = io.open('script/randomroster.txt', 'w') | |
| 249 | + dscr:write(str) | |
| 250 | + io.close(dscr) | |
| 251 | +end | |
| 252 | + | |
| 253 | + | |
| 254 | +function init() | |
| 255 | + for i = 1, 8 do | |
| 256 | + setCom(i, 8) | |
| 257 | + end | |
| 258 | + setAutoLevel(true) | |
| 259 | + setMatchNo(1) | |
| 260 | + selectStage(0) | |
| 261 | + rakuBenry() | |
| 262 | + winner = 0 | |
| 263 | + wins = 0 | |
| 264 | + rosterTxt() | |
| 265 | + nextChar = 1 | |
| 266 | + saikyou = rank == tuyoiBorder+juuni-1 | |
| 267 | +end | |
| 268 | + | |
| 269 | +function run() | |
| 270 | + init() | |
| 271 | + refresh() | |
| 272 | + while not esc() do | |
| 273 | + randSel(1, winner) | |
| 274 | + randSel(2, winner) | |
| 275 | + loadStart() | |
| 276 | + local oldwinner = winner | |
| 277 | + winner = game() | |
| 278 | + if winner < 0 or esc() then break end | |
| 279 | + oldwins = wins | |
| 280 | + wins = wins + 1 | |
| 281 | + if winner ~= oldwinner then | |
| 282 | + wins = 1 | |
| 283 | + setHomeTeam(winner == 1 and 2 or 1) | |
| 284 | + end | |
| 285 | + setMatchNo(wins) | |
| 286 | + if winner <= 0 or wins >= 20 or wins == oldwins then | |
| 287 | + init() | |
| 288 | + end | |
| 289 | + refresh() | |
| 290 | + end | |
| 291 | +end |
| @@ -1,6 +1,7 @@ | ||
| 1 | 1 | package main |
| 2 | 2 | |
| 3 | 3 | import ( |
| 4 | + "math" | |
| 4 | 5 | "strconv" |
| 5 | 6 | "strings" |
| 6 | 7 | ) |
| @@ -88,12 +89,14 @@ func ReadAnimFrame(line string) *AnimFrame { | ||
| 88 | 89 | } |
| 89 | 90 | if af.SrcAlpha == 1 && af.DstAlpha == 255 { |
| 90 | 91 | af.SrcAlpha = 0 |
| 92 | + } else if af.SrcAlpha == 255 && af.DstAlpha == 1 { | |
| 93 | + af.DstAlpha = 0 | |
| 91 | 94 | } |
| 92 | 95 | } |
| 93 | 96 | } |
| 94 | 97 | } |
| 95 | 98 | case len(a) > 0 && a[0] == 'a': |
| 96 | - af.SrcAlpha, af.DstAlpha = 255, 255 | |
| 99 | + af.SrcAlpha, af.DstAlpha = 255, 1 | |
| 97 | 100 | } |
| 98 | 101 | if len(ary) > 1 { |
| 99 | 102 | af.Ex = make([][]float32, 3) |
| @@ -113,7 +116,7 @@ func ReadAnimFrame(line string) *AnimFrame { | ||
| 113 | 116 | if err != nil { |
| 114 | 117 | f = 0 |
| 115 | 118 | } |
| 116 | - af.Ex[2] = append(af.Ex[2], float32(f)) // Angle | |
| 119 | + af.Ex[2] = append(af.Ex[2], float32(f*math.Pi/180)) // Angle | |
| 117 | 120 | } |
| 118 | 121 | } |
| 119 | 122 | } |
| @@ -133,34 +136,23 @@ func (af *AnimFrame) Clsn2() []float32 { | ||
| 133 | 136 | } |
| 134 | 137 | |
| 135 | 138 | type Animation struct { |
| 136 | - sff *Sff | |
| 137 | - spr *Sprite | |
| 138 | - frames []AnimFrame | |
| 139 | - tile [4]int32 | |
| 140 | - loopstart int32 | |
| 141 | - interpolate_offset []int32 | |
| 142 | - interpolate_scale []int32 | |
| 143 | - interpolate_angle []int32 | |
| 144 | - interpolate_blend []int32 | |
| 145 | - current int32 | |
| 146 | - drawidx int32 | |
| 147 | - time int32 | |
| 148 | - sumtime int32 | |
| 149 | - totaltime int32 | |
| 150 | - looptime int32 | |
| 151 | - nazotime int32 | |
| 152 | - mask int16 | |
| 153 | - srcAlpha int16 | |
| 154 | - dstAlpha int16 | |
| 155 | - newframe bool | |
| 156 | - loopend bool | |
| 157 | - interpolate_offset_x float32 | |
| 158 | - interpolate_offset_y float32 | |
| 159 | - scale_x float32 | |
| 160 | - scale_y float32 | |
| 161 | - angle float32 | |
| 162 | - interpolate_blend_srcalpha float32 | |
| 163 | - interpolate_blend_dstalpha float32 | |
| 139 | + sff *Sff | |
| 140 | + spr *Sprite | |
| 141 | + frames []AnimFrame | |
| 142 | + tile [4]int32 | |
| 143 | + loopstart int32 | |
| 144 | + current int32 | |
| 145 | + drawidx int32 | |
| 146 | + time int32 | |
| 147 | + sumtime int32 | |
| 148 | + totaltime int32 | |
| 149 | + looptime int32 | |
| 150 | + nazotime int32 | |
| 151 | + mask int16 | |
| 152 | + srcAlpha int16 | |
| 153 | + dstAlpha int16 | |
| 154 | + newframe bool | |
| 155 | + loopend bool | |
| 164 | 156 | } |
| 165 | 157 | |
| 166 | 158 | func newAnimation(sff *Sff) *Animation { |
| @@ -199,14 +191,6 @@ func ReadAnimation(sff *Sff, lines []string, i *int) *Animation { | ||
| 199 | 191 | def1, def2 = true, true |
| 200 | 192 | case len(line) >= 9 && line[:9] == "loopstart": |
| 201 | 193 | a.loopstart = int32(len(a.frames)) |
| 202 | - case len(line) >= 18 && line[:18] == "interpolate offset": | |
| 203 | - a.interpolate_offset = append(a.interpolate_offset, int32(len(a.frames))) | |
| 204 | - case len(line) >= 17 && line[:17] == "interpolate scale": | |
| 205 | - a.interpolate_scale = append(a.interpolate_scale, int32(len(a.frames))) | |
| 206 | - case len(line) >= 17 && line[:17] == "interpolate angle": | |
| 207 | - a.interpolate_angle = append(a.interpolate_angle, int32(len(a.frames))) | |
| 208 | - case len(line) >= 17 && line[:17] == "interpolate blend": | |
| 209 | - a.interpolate_blend = append(a.interpolate_blend, int32(len(a.frames))) | |
| 210 | 194 | case len(line) >= 5 && line[:4] == "clsn": |
| 211 | 195 | ii := strings.Index(line, ":") |
| 212 | 196 | if ii < 0 { |
| @@ -460,93 +444,10 @@ func (a *Animation) UpdateSprite() { | ||
| 460 | 444 | a.time, a.newframe, a.current = 0, true, 0 |
| 461 | 445 | } |
| 462 | 446 | } |
| 463 | - if a.newframe && a.sff != nil && a.frames[a.current].Time != 0 { | |
| 447 | + if a.newframe && a.sff != nil { | |
| 464 | 448 | a.spr = a.sff.GetSprite(a.curFrame().Group, a.curFrame().Number) |
| 465 | 449 | } |
| 466 | 450 | a.newframe, a.drawidx = false, a.current |
| 467 | - | |
| 468 | - a.scale_x = 1 | |
| 469 | - a.scale_y = 1 | |
| 470 | - a.angle = 0 | |
| 471 | - a.interpolate_offset_x = 0 | |
| 472 | - a.interpolate_offset_y = 0 | |
| 473 | - a.interpolate_blend_srcalpha = float32(a.frames[a.drawidx].SrcAlpha) | |
| 474 | - a.interpolate_blend_dstalpha = float32(a.frames[a.drawidx].DstAlpha) | |
| 475 | - | |
| 476 | - if len(a.frames[a.drawidx].Ex) > 2 { | |
| 477 | - if len(a.frames[a.drawidx].Ex[2]) > 0 { | |
| 478 | - a.scale_x = a.frames[a.drawidx].Ex[2][0] | |
| 479 | - if len(a.frames[a.drawidx].Ex[2]) > 1 { | |
| 480 | - a.scale_y = a.frames[a.drawidx].Ex[2][1] | |
| 481 | - if len(a.frames[a.drawidx].Ex[2]) > 2 { | |
| 482 | - a.angle = a.frames[a.drawidx].Ex[2][2] | |
| 483 | - } | |
| 484 | - } | |
| 485 | - } | |
| 486 | - } | |
| 487 | - if int(a.drawidx) < len(a.frames)-1 { | |
| 488 | - for _, i := range a.interpolate_offset { | |
| 489 | - if a.drawidx+1 == i { | |
| 490 | - a.interpolate_offset_x = float32(a.frames[a.drawidx+1].X-a.frames[a.drawidx].X) / float32(a.curFrame().Time) * float32(a.time) | |
| 491 | - a.interpolate_offset_y = float32(a.frames[a.drawidx+1].Y-a.frames[a.drawidx].Y) / float32(a.curFrame().Time) * float32(a.time) | |
| 492 | - break | |
| 493 | - } | |
| 494 | - } | |
| 495 | - for _, i := range a.interpolate_scale { | |
| 496 | - if a.drawidx+1 == i { | |
| 497 | - var drawframe_scale_x, nextframe_scale_x, drawframe_scale_y, nextframe_scale_y float32 = 1, 1, 1, 1 | |
| 498 | - if len(a.frames[a.drawidx].Ex) > 2 { | |
| 499 | - if len(a.frames[a.drawidx].Ex[2]) > 0 { | |
| 500 | - drawframe_scale_x = a.frames[a.drawidx].Ex[2][0] | |
| 501 | - } | |
| 502 | - if len(a.frames[a.drawidx].Ex[2]) > 1 { | |
| 503 | - drawframe_scale_y = a.frames[a.drawidx].Ex[2][1] | |
| 504 | - } | |
| 505 | - } | |
| 506 | - if len(a.frames[a.drawidx+1].Ex) > 2 { | |
| 507 | - if len(a.frames[a.drawidx+1].Ex[2]) > 0 { | |
| 508 | - nextframe_scale_x = a.frames[a.drawidx+1].Ex[2][0] | |
| 509 | - } | |
| 510 | - if len(a.frames[a.drawidx+1].Ex[2]) > 1 { | |
| 511 | - nextframe_scale_y = a.frames[a.drawidx+1].Ex[2][1] | |
| 512 | - } | |
| 513 | - } | |
| 514 | - a.scale_x += (nextframe_scale_x - drawframe_scale_x) / float32(a.curFrame().Time) * float32(a.time) | |
| 515 | - a.scale_y += (nextframe_scale_y - drawframe_scale_y) / float32(a.curFrame().Time) * float32(a.time) | |
| 516 | - break | |
| 517 | - } | |
| 518 | - } | |
| 519 | - for _, i := range a.interpolate_angle { | |
| 520 | - if a.drawidx+1 == i { | |
| 521 | - var drawframe_angle, nextframe_angle float32 = 0, 0 | |
| 522 | - if len(a.frames[a.drawidx].Ex) > 2 { | |
| 523 | - if len(a.frames[a.drawidx].Ex[2]) > 2 { | |
| 524 | - drawframe_angle = a.frames[a.drawidx].Ex[2][2] | |
| 525 | - } | |
| 526 | - } | |
| 527 | - if len(a.frames[a.drawidx+1].Ex) > 2 { | |
| 528 | - if len(a.frames[a.drawidx+1].Ex[2]) > 2 { | |
| 529 | - nextframe_angle = a.frames[a.drawidx+1].Ex[2][2] | |
| 530 | - } | |
| 531 | - } | |
| 532 | - a.angle += (nextframe_angle - drawframe_angle) / float32(a.curFrame().Time) * float32(a.time) | |
| 533 | - break | |
| 534 | - } | |
| 535 | - } | |
| 536 | - if byte(a.interpolate_blend_srcalpha) != 1 || | |
| 537 | - byte(a.interpolate_blend_dstalpha) != 255 { | |
| 538 | - for _, i := range a.interpolate_blend { | |
| 539 | - if a.drawidx+1 == i { | |
| 540 | - a.interpolate_blend_srcalpha += (float32(a.frames[a.drawidx+1].SrcAlpha) - a.interpolate_blend_srcalpha) / float32(a.curFrame().Time) * float32(a.time) | |
| 541 | - a.interpolate_blend_dstalpha += (float32(a.frames[a.drawidx+1].DstAlpha) - a.interpolate_blend_dstalpha) / float32(a.curFrame().Time) * float32(a.time) | |
| 542 | - if byte(a.interpolate_blend_srcalpha) == 1 && byte(a.interpolate_blend_dstalpha) == 255 { | |
| 543 | - a.interpolate_blend_srcalpha = 0 | |
| 544 | - } | |
| 545 | - break | |
| 546 | - } | |
| 547 | - } | |
| 548 | - } | |
| 549 | - } | |
| 550 | 451 | } |
| 551 | 452 | func (a *Animation) Action() { |
| 552 | 453 | if len(a.frames) == 0 { |
| @@ -594,7 +495,7 @@ func (a *Animation) alpha() int32 { | ||
| 594 | 495 | if a.srcAlpha >= 0 { |
| 595 | 496 | sa = byte(a.srcAlpha) |
| 596 | 497 | if a.dstAlpha < 0 { |
| 597 | - da = byte((^a.dstAlpha + int16(a.interpolate_blend_dstalpha)) >> 1) | |
| 498 | + da = byte((^a.dstAlpha + int16(a.frames[a.drawidx].DstAlpha)) >> 1) | |
| 598 | 499 | if sa == 1 && da == 255 { |
| 599 | 500 | sa = 0 |
| 600 | 501 | } |
| @@ -602,8 +503,11 @@ func (a *Animation) alpha() int32 { | ||
| 602 | 503 | da = byte(a.dstAlpha) |
| 603 | 504 | } |
| 604 | 505 | } else { |
| 605 | - sa = byte(a.interpolate_blend_srcalpha) | |
| 606 | - da = byte(a.interpolate_blend_dstalpha) | |
| 506 | + sa = a.frames[a.drawidx].SrcAlpha | |
| 507 | + da = a.frames[a.drawidx].DstAlpha | |
| 508 | + if sa == 255 && da == 1 { | |
| 509 | + da = 255 | |
| 510 | + } | |
| 607 | 511 | } |
| 608 | 512 | if sa == 1 && da == 255 { |
| 609 | 513 | return -2 |
| @@ -629,28 +533,39 @@ func (a *Animation) pal(pfx *PalFX, neg bool) (p []uint32) { | ||
| 629 | 533 | if pfx != nil && len(pfx.remap) > 0 { |
| 630 | 534 | a.sff.palList.SwapPalMap(&pfx.remap) |
| 631 | 535 | } |
| 632 | - return | |
| 536 | + if len(p) == 0 { | |
| 537 | + return | |
| 538 | + } | |
| 539 | + return pfx.getFxPal(p, neg) | |
| 633 | 540 | } |
| 634 | -func (a *Animation) drawSub1(angle, facing float32) (h, v, agl float32) { | |
| 541 | +func (a *Animation) drawSub1(angle float32) (h, v, agl float32) { | |
| 635 | 542 | h, v = float32(a.frames[a.drawidx].H), float32(a.frames[a.drawidx].V) |
| 636 | - agl = angle | |
| 637 | - h *= a.scale_x | |
| 638 | - v *= a.scale_y | |
| 639 | - agl += a.angle * facing | |
| 543 | + agl = float32(float64(angle) * math.Pi / 180) | |
| 544 | + if len(a.frames[a.drawidx].Ex) > 2 { | |
| 545 | + if len(a.frames[a.drawidx].Ex[2]) > 0 { | |
| 546 | + h *= a.frames[a.drawidx].Ex[2][0] | |
| 547 | + if len(a.frames[a.drawidx].Ex[2]) > 1 { | |
| 548 | + v *= a.frames[a.drawidx].Ex[2][1] | |
| 549 | + if len(a.frames[a.drawidx].Ex[2]) > 2 { | |
| 550 | + agl += a.frames[a.drawidx].Ex[2][2] | |
| 551 | + } | |
| 552 | + } | |
| 553 | + } | |
| 554 | + } | |
| 640 | 555 | return |
| 641 | 556 | } |
| 642 | 557 | func (a *Animation) Draw(window *[4]int32, x, y, xcs, ycs, xs, xbs, ys, |
| 643 | - rxadd, angle, yangle, xangle, rcx float32, pfx *PalFX, old bool, facing float32) { | |
| 558 | + rxadd, angle, rcx float32, pfx *PalFX, old bool) { | |
| 644 | 559 | if a.spr == nil || a.spr.Tex == nil { |
| 645 | 560 | return |
| 646 | 561 | } |
| 647 | - h, v, angle := a.drawSub1(angle, facing) | |
| 562 | + h, v, angle := a.drawSub1(angle) | |
| 648 | 563 | xs *= xcs * h |
| 649 | 564 | ys *= ycs * v |
| 650 | - x = xcs*x + xs*(float32(a.frames[a.drawidx].X)+a.interpolate_offset_x)*(1/a.scale_x) | |
| 651 | - y = ycs*y + ys*(float32(a.frames[a.drawidx].Y)+a.interpolate_offset_y)*(1/a.scale_y) | |
| 565 | + x = xcs*x + xs*float32(a.frames[a.drawidx].X) | |
| 566 | + y = ycs*y + ys*float32(a.frames[a.drawidx].Y) | |
| 652 | 567 | var rcy float32 |
| 653 | - if angle == 0 && yangle == 0 && xangle == 0 { | |
| 568 | + if angle == 0 { | |
| 654 | 569 | if xs < 0 { |
| 655 | 570 | x *= -1 |
| 656 | 571 | if old { |
| @@ -691,33 +606,32 @@ func (a *Animation) Draw(window *[4]int32, x, y, xcs, ycs, xs, xbs, ys, | ||
| 691 | 606 | trans := a.alpha() |
| 692 | 607 | a.spr.glDraw(a.pal(pfx, trans == -2), int32(a.mask), x*sys.widthScale, |
| 693 | 608 | y*sys.heightScale, &a.tile, xs*sys.widthScale, xcs*xbs*h*sys.widthScale, |
| 694 | - ys*sys.heightScale, xcs*rxadd*sys.widthScale/sys.heightScale, angle, yangle, xangle, | |
| 609 | + ys*sys.heightScale, xcs*rxadd*sys.widthScale/sys.heightScale, angle, | |
| 695 | 610 | trans, window, rcx, rcy, pfx) |
| 696 | 611 | } |
| 697 | -func (a *Animation) ShadowDraw(x, y, xscl, yscl, vscl, angle, yangle, xangle float32, | |
| 698 | - pfx *PalFX, old bool, color uint32, alpha int32, facing float32) { | |
| 612 | +func (a *Animation) ShadowDraw(x, y, xscl, yscl, vscl, angle float32, | |
| 613 | + pfx *PalFX, old bool, color uint32, alpha int32) { | |
| 699 | 614 | if a.spr == nil || a.spr.Tex == nil { |
| 700 | 615 | return |
| 701 | 616 | } |
| 702 | - h, v, angle := a.drawSub1(angle, facing) | |
| 703 | - angle = -angle | |
| 704 | - x += xscl * h * (float32(a.frames[a.drawidx].X) + a.interpolate_offset_x) | |
| 705 | - y += yscl * vscl * v * (float32(a.frames[a.drawidx].Y) + a.interpolate_offset_y) | |
| 617 | + h, v, angle := a.drawSub1(angle) | |
| 618 | + x += xscl * h * float32(a.frames[a.drawidx].X) | |
| 619 | + y += yscl * vscl * v * float32(a.frames[a.drawidx].Y) | |
| 706 | 620 | var draw func(int32) |
| 707 | - if a.spr.rle <= -11 { | |
| 621 | + if a.spr.rle == -12 { | |
| 708 | 622 | draw = func(trans int32) { |
| 709 | 623 | RenderMugenFcS(*a.spr.Tex, a.spr.Size, |
| 710 | 624 | AbsF(xscl*h)*float32(a.spr.Offset[0])*sys.widthScale, |
| 711 | 625 | AbsF(yscl*v)*float32(a.spr.Offset[1])*sys.heightScale, &a.tile, |
| 712 | 626 | xscl*h*sys.widthScale, xscl*h*sys.widthScale, |
| 713 | - yscl*v*sys.heightScale, vscl, 0, angle, yangle, xangle, trans, &sys.scrrect, | |
| 627 | + yscl*v*sys.heightScale, vscl, 0, angle, trans, &sys.scrrect, | |
| 714 | 628 | (x+float32(sys.gameWidth)/2)*sys.widthScale, y*sys.heightScale, color) |
| 715 | 629 | } |
| 716 | 630 | } else { |
| 717 | 631 | var pal [256]uint32 |
| 718 | - if color != 0 || alpha > 0 { | |
| 632 | + if color != 0 { | |
| 719 | 633 | for i := range pal { |
| 720 | - pal[i] = color | 0xff000000 | |
| 634 | + pal[i] = color | |
| 721 | 635 | } |
| 722 | 636 | } |
| 723 | 637 | draw = func(trans int32) { |
| @@ -725,11 +639,11 @@ func (a *Animation) ShadowDraw(x, y, xscl, yscl, vscl, angle, yangle, xangle flo | ||
| 725 | 639 | AbsF(xscl*h)*float32(a.spr.Offset[0])*sys.widthScale, |
| 726 | 640 | AbsF(yscl*v)*float32(a.spr.Offset[1])*sys.heightScale, &a.tile, |
| 727 | 641 | xscl*h*sys.widthScale, xscl*h*sys.widthScale, |
| 728 | - yscl*v*sys.heightScale, vscl, 0, angle, yangle, xangle, trans, &sys.scrrect, | |
| 642 | + yscl*v*sys.heightScale, vscl, 0, angle, trans, &sys.scrrect, | |
| 729 | 643 | (x+float32(sys.gameWidth)/2)*sys.widthScale, y*sys.heightScale) |
| 730 | 644 | } |
| 731 | 645 | } |
| 732 | - if color != 0 { | |
| 646 | + if int32(color) > 0 { | |
| 733 | 647 | draw(-2) |
| 734 | 648 | } |
| 735 | 649 | if alpha > 0 { |
| @@ -789,13 +703,10 @@ type SprData struct { | ||
| 789 | 703 | alpha [2]int32 |
| 790 | 704 | priority int32 |
| 791 | 705 | angle float32 |
| 792 | - yangle float32 | |
| 793 | - xangle float32 | |
| 794 | 706 | ascl [2]float32 |
| 795 | 707 | screen bool |
| 796 | 708 | bright bool |
| 797 | 709 | oldVer bool |
| 798 | - facing float32 | |
| 799 | 710 | } |
| 800 | 711 | type DrawList []*SprData |
| 801 | 712 |
| @@ -850,7 +761,7 @@ func (dl DrawList) draw(x, y, scl float32) { | ||
| 850 | 761 | (y - s.pos[1])} |
| 851 | 762 | } |
| 852 | 763 | s.anim.Draw(&sys.scrrect, p[0], p[1], cs, cs, s.scl[0], s.scl[0], |
| 853 | - s.scl[1], 0, s.angle, s.yangle, s.xangle, float32(sys.gameWidth)/2, s.fx, s.oldVer, s.facing) | |
| 764 | + s.scl[1], 0, s.angle, float32(sys.gameWidth)/2, s.fx, s.oldVer) | |
| 854 | 765 | sys.brightness = ob |
| 855 | 766 | } |
| 856 | 767 | } |
| @@ -886,9 +797,6 @@ func (sl ShadowList) draw(x, y, scl float32) { | ||
| 886 | 797 | for _, s := range sl { |
| 887 | 798 | intensity := sys.stage.sdw.intensity |
| 888 | 799 | color, alpha := s.shadowColor, s.shadowAlpha |
| 889 | - if alpha >= 255 { | |
| 890 | - alpha = int32(255 - s.anim.interpolate_blend_dstalpha) | |
| 891 | - } | |
| 892 | 800 | fend := float32(sys.stage.sdw.fadeend) * sys.stage.localscl |
| 893 | 801 | fbgn := float32(sys.stage.sdw.fadebgn) * sys.stage.localscl |
| 894 | 802 | if fbgn <= fend { |
| @@ -911,15 +819,18 @@ func (sl ShadowList) draw(x, y, scl float32) { | ||
| 911 | 819 | s.anim.ShadowDraw(sys.cam.Offset[0]-(x-s.pos[0])*scl, |
| 912 | 820 | sys.cam.GroundLevel()+sys.cam.Offset[1]-sys.envShake.getOffset()- |
| 913 | 821 | (y+s.pos[1]*sys.stage.sdw.yscale-s.offsetY)*scl, |
| 914 | - scl*s.scl[0], scl*-s.scl[1], sys.stage.sdw.yscale, s.angle, s.yangle, s.xangle, | |
| 915 | - &sys.bgPalFX, s.oldVer, uint32(color), intensity, s.facing) | |
| 822 | + scl*s.scl[0], scl*-s.scl[1], sys.stage.sdw.yscale, -s.angle, | |
| 823 | + &sys.bgPalFX, s.oldVer, uint32(color), intensity) | |
| 916 | 824 | } |
| 917 | 825 | } |
| 918 | 826 | func (sl ShadowList) drawReflection(x, y, scl float32) { |
| 919 | 827 | for _, s := range sl { |
| 920 | 828 | if s.alpha[0] < 0 { |
| 921 | - s.anim.srcAlpha = int16(s.anim.interpolate_blend_srcalpha) | |
| 922 | - s.anim.dstAlpha = int16(s.anim.interpolate_blend_dstalpha) | |
| 829 | + s.anim.srcAlpha = int16(s.anim.frames[s.anim.drawidx].SrcAlpha) | |
| 830 | + s.anim.dstAlpha = int16(s.anim.frames[s.anim.drawidx].DstAlpha) | |
| 831 | + if s.anim.srcAlpha == 255 && s.anim.dstAlpha == 1 { | |
| 832 | + s.anim.dstAlpha = 255 | |
| 833 | + } | |
| 923 | 834 | } else { |
| 924 | 835 | s.anim.srcAlpha, s.anim.dstAlpha = int16(s.alpha[0]), int16(s.alpha[1]) |
| 925 | 836 | } |
| @@ -935,7 +846,7 @@ func (sl ShadowList) drawReflection(x, y, scl float32) { | ||
| 935 | 846 | s.anim.Draw(&sys.scrrect, sys.cam.Offset[0]/scl-(x-s.pos[0]), |
| 936 | 847 | (sys.cam.GroundLevel()+sys.cam.Offset[1]-sys.envShake.getOffset())/scl- |
| 937 | 848 | (y+s.pos[1]-s.offsetY), scl, scl, s.scl[0], s.scl[0], -s.scl[1], 0, |
| 938 | - -s.angle, -s.yangle, -s.xangle, float32(sys.gameWidth)/2, s.fx, s.oldVer, s.facing) | |
| 849 | + -s.angle, float32(sys.gameWidth)/2, s.fx, s.oldVer) | |
| 939 | 850 | } |
| 940 | 851 | } |
| 941 | 852 |
| @@ -961,8 +872,8 @@ func (a *Anim) AddPos(x, y float32) { | ||
| 961 | 872 | a.x += x |
| 962 | 873 | a.y += y |
| 963 | 874 | } |
| 964 | -func (a *Anim) SetTile(x, y, sx, sy int32) { | |
| 965 | - a.anim.tile[2], a.anim.tile[3], a.anim.tile[0], a.anim.tile[1] = x, y, sx, sy | |
| 875 | +func (a *Anim) SetTile(x, y int32) { | |
| 876 | + a.anim.tile[2], a.anim.tile[3] = x, y | |
| 966 | 877 | } |
| 967 | 878 | func (a *Anim) SetColorKey(mask int16) { |
| 968 | 879 | a.anim.mask = mask |
| @@ -986,9 +897,6 @@ func (a *Anim) Draw() { | ||
| 986 | 897 | if !sys.frameSkip { |
| 987 | 898 | a.anim.Draw(&a.window, a.x+float32(sys.gameWidth-320)/2, |
| 988 | 899 | a.y+float32(sys.gameHeight-240), 1, 1, a.xscl, a.xscl, a.yscl, |
| 989 | - 0, 0, 0, 0, 0, nil, false, 1) | |
| 900 | + 0, 0, 0, nil, false) | |
| 990 | 901 | } |
| 991 | 902 | } |
| 992 | -func (a *Anim) ResetFrames() { | |
| 993 | - a.anim.Reset() | |
| 994 | -} |
| @@ -566,7 +566,12 @@ func (_ BytecodeExp) pow(v1 *BytecodeValue, v2 BytecodeValue, pn int) { | ||
| 566 | 566 | if ValueType(Min(int32(v1.t), int32(v2.t))) == VT_Float { |
| 567 | 567 | v1.SetF(Pow(v1.ToF(), v2.ToF())) |
| 568 | 568 | } else if v2.ToF() < 0 { |
| 569 | - v1.SetF(Pow(v1.ToF(), v2.ToF())) | |
| 569 | + if sys.cgi[pn].ver[0] == 1 { | |
| 570 | + v1.SetF(Pow(v1.ToF(), v2.ToF())) | |
| 571 | + } else { | |
| 572 | + f := Pow(v1.ToF(), v2.ToF()) | |
| 573 | + v1.SetI(*(*int32)(unsafe.Pointer(&f)) << 29) | |
| 574 | + } | |
| 570 | 575 | } else { |
| 571 | 576 | i1, i2, hb := v1.ToI(), v2.ToI(), int32(-1) |
| 572 | 577 | for uint32(i2)>>uint(hb+1) != 0 { |
| @@ -986,9 +991,9 @@ func (be BytecodeExp) run(c *Char) BytecodeValue { | ||
| 986 | 991 | case OC_bottomedge: |
| 987 | 992 | sys.bcStack.PushF(c.bottomEdge()) |
| 988 | 993 | case OC_camerapos_x: |
| 989 | - sys.bcStack.PushF(sys.cam.Pos[0] / oc.localscl) | |
| 994 | + sys.bcStack.PushF(sys.cam.Pos[0]) | |
| 990 | 995 | case OC_camerapos_y: |
| 991 | - sys.bcStack.PushF(sys.cam.Pos[1] / oc.localscl) | |
| 996 | + sys.bcStack.PushF(sys.cam.Pos[1]) | |
| 992 | 997 | case OC_camerazoom: |
| 993 | 998 | sys.bcStack.PushF(sys.cam.Scale) |
| 994 | 999 | case OC_canrecover: |
| @@ -1008,19 +1013,11 @@ func (be BytecodeExp) run(c *Char) BytecodeValue { | ||
| 1008 | 1013 | case OC_frontedgedist: |
| 1009 | 1014 | sys.bcStack.PushI(int32(c.frontEdgeDist())) |
| 1010 | 1015 | case OC_gameheight: |
| 1011 | - if c.gi().ver[0] == 1 && c.gi().ver[1] == 0 { | |
| 1012 | - sys.bcStack.PushF(sys.screenHeight() / oc.localscl) | |
| 1013 | - } else { | |
| 1014 | - sys.bcStack.PushF(c.gameHeight()) | |
| 1015 | - } | |
| 1016 | + sys.bcStack.PushF(c.gameHeight()) | |
| 1016 | 1017 | case OC_gametime: |
| 1017 | 1018 | sys.bcStack.PushI(sys.gameTime) |
| 1018 | 1019 | case OC_gamewidth: |
| 1019 | - if c.gi().ver[0] == 1 && c.gi().ver[1] == 0 { | |
| 1020 | - sys.bcStack.PushF(sys.screenWidth() / oc.localscl) | |
| 1021 | - } else { | |
| 1022 | - sys.bcStack.PushF(c.gameWidth()) | |
| 1023 | - } | |
| 1020 | + sys.bcStack.PushF(c.gameWidth()) | |
| 1024 | 1021 | case OC_hitcount: |
| 1025 | 1022 | sys.bcStack.PushI(c.hitCount) |
| 1026 | 1023 | case OC_hitdefattr: |
| @@ -1035,9 +1032,9 @@ func (be BytecodeExp) run(c *Char) BytecodeValue { | ||
| 1035 | 1032 | case OC_hitshakeover: |
| 1036 | 1033 | sys.bcStack.PushB(c.hitShakeOver()) |
| 1037 | 1034 | case OC_hitvel_x: |
| 1038 | - sys.bcStack.PushF(c.hitVelX() * c.localscl / oc.localscl) | |
| 1035 | + sys.bcStack.PushF(c.hitVelX()) | |
| 1039 | 1036 | case OC_hitvel_y: |
| 1040 | - sys.bcStack.PushF(c.hitVelY() * c.localscl / oc.localscl) | |
| 1037 | + sys.bcStack.PushF(c.hitVelY()) | |
| 1041 | 1038 | case OC_id: |
| 1042 | 1039 | sys.bcStack.PushI(c.id) |
| 1043 | 1040 | case OC_inguarddist: |
| @@ -1078,9 +1075,9 @@ func (be BytecodeExp) run(c *Char) BytecodeValue { | ||
| 1078 | 1075 | case OC_palno: |
| 1079 | 1076 | sys.bcStack.PushI(c.palno()) |
| 1080 | 1077 | case OC_pos_x: |
| 1081 | - sys.bcStack.PushF((c.pos[0]*c.localscl/oc.localscl - sys.cam.Pos[0]/oc.localscl)) | |
| 1078 | + sys.bcStack.PushF(c.pos[0] - sys.cam.Pos[0]) | |
| 1082 | 1079 | case OC_pos_y: |
| 1083 | - sys.bcStack.PushF(c.pos[1] * c.localscl / oc.localscl) | |
| 1080 | + sys.bcStack.PushF(c.pos[1]) | |
| 1084 | 1081 | case OC_power: |
| 1085 | 1082 | sys.bcStack.PushI(c.getPower()) |
| 1086 | 1083 | case OC_powermax: |
| @@ -1106,13 +1103,13 @@ func (be BytecodeExp) run(c *Char) BytecodeValue { | ||
| 1106 | 1103 | case OC_roundstate: |
| 1107 | 1104 | sys.bcStack.PushI(c.roundState()) |
| 1108 | 1105 | case OC_screenheight: |
| 1109 | - sys.bcStack.PushF(sys.screenHeight() / oc.localscl) | |
| 1106 | + sys.bcStack.PushF(sys.screenHeight()) | |
| 1110 | 1107 | case OC_screenpos_x: |
| 1111 | - sys.bcStack.PushF((c.screenPosX()) / oc.localscl) | |
| 1108 | + sys.bcStack.PushF(c.screenPosX()) | |
| 1112 | 1109 | case OC_screenpos_y: |
| 1113 | - sys.bcStack.PushF((c.screenPosY()) / oc.localscl) | |
| 1110 | + sys.bcStack.PushF(c.screenPosY()) | |
| 1114 | 1111 | case OC_screenwidth: |
| 1115 | - sys.bcStack.PushF(sys.screenWidth() / oc.localscl) | |
| 1112 | + sys.bcStack.PushF(sys.screenWidth()) | |
| 1116 | 1113 | case OC_selfanimexist: |
| 1117 | 1114 | *sys.bcStack.Top() = c.selfAnimExist(*sys.bcStack.Top()) |
| 1118 | 1115 | case OC_stateno: |
| @@ -1121,14 +1118,10 @@ func (be BytecodeExp) run(c *Char) BytecodeValue { | ||
| 1121 | 1118 | sys.bcStack.PushB(c.ss.stateType == StateType(be[i])) |
| 1122 | 1119 | i++ |
| 1123 | 1120 | case OC_teammode: |
| 1124 | - if c.teamside == 2 { | |
| 1125 | - sys.bcStack.PushB(TM_Single == TeamMode(be[i])) | |
| 1126 | - } else { | |
| 1127 | - sys.bcStack.PushB(sys.tmode[c.playerNo&1] == TeamMode(be[i])) | |
| 1128 | - } | |
| 1121 | + sys.bcStack.PushB(sys.tmode[c.playerNo&1] == TeamMode(be[i])) | |
| 1129 | 1122 | i++ |
| 1130 | 1123 | case OC_teamside: |
| 1131 | - sys.bcStack.PushI(int32(c.teamside) + 1) | |
| 1124 | + sys.bcStack.PushI(int32(c.playerNo)&1 + 1) | |
| 1132 | 1125 | case OC_time: |
| 1133 | 1126 | sys.bcStack.PushI(c.time()) |
| 1134 | 1127 | case OC_topedge: |
| @@ -1136,15 +1129,15 @@ func (be BytecodeExp) run(c *Char) BytecodeValue { | ||
| 1136 | 1129 | case OC_uniqhitcount: |
| 1137 | 1130 | sys.bcStack.PushI(c.uniqHitCount) |
| 1138 | 1131 | case OC_vel_x: |
| 1139 | - sys.bcStack.PushF(c.vel[0] * c.localscl / oc.localscl) | |
| 1132 | + sys.bcStack.PushF(c.vel[0]) | |
| 1140 | 1133 | case OC_vel_y: |
| 1141 | - sys.bcStack.PushF(c.vel[1] * c.localscl / oc.localscl) | |
| 1134 | + sys.bcStack.PushF(c.vel[1]) | |
| 1142 | 1135 | case OC_st_: |
| 1143 | 1136 | be.run_st(c, &i) |
| 1144 | 1137 | case OC_const_: |
| 1145 | - be.run_const(c, &i, oc) | |
| 1138 | + be.run_const(c, &i) | |
| 1146 | 1139 | case OC_ex_: |
| 1147 | - be.run_ex(c, &i, oc) | |
| 1140 | + be.run_ex(c, &i) | |
| 1148 | 1141 | case OC_var: |
| 1149 | 1142 | *sys.bcStack.Top() = c.varGet(sys.bcStack.Top().ToI()) |
| 1150 | 1143 | case OC_sysvar: |
| @@ -1215,7 +1208,7 @@ func (be BytecodeExp) run_st(c *Char, i *int) { | ||
| 1215 | 1208 | } |
| 1216 | 1209 | } |
| 1217 | 1210 | } |
| 1218 | -func (be BytecodeExp) run_const(c *Char, i *int, oc *Char) { | |
| 1211 | +func (be BytecodeExp) run_const(c *Char, i *int) { | |
| 1219 | 1212 | (*i)++ |
| 1220 | 1213 | switch be[*i-1] { |
| 1221 | 1214 | case OC_const_data_life: |
| @@ -1247,158 +1240,158 @@ func (be BytecodeExp) run_const(c *Char, i *int, oc *Char) { | ||
| 1247 | 1240 | case OC_const_size_yscale: |
| 1248 | 1241 | sys.bcStack.PushF(c.size.yscale) |
| 1249 | 1242 | case OC_const_size_ground_back: |
| 1250 | - sys.bcStack.PushF(c.size.ground.back * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1243 | + sys.bcStack.PushI(c.size.ground.back) | |
| 1251 | 1244 | case OC_const_size_ground_front: |
| 1252 | - sys.bcStack.PushF(c.size.ground.front * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1245 | + sys.bcStack.PushI(c.size.ground.front) | |
| 1253 | 1246 | case OC_const_size_air_back: |
| 1254 | - sys.bcStack.PushF(c.size.air.back * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1247 | + sys.bcStack.PushI(c.size.air.back) | |
| 1255 | 1248 | case OC_const_size_air_front: |
| 1256 | - sys.bcStack.PushF(c.size.air.front * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1249 | + sys.bcStack.PushI(c.size.air.front) | |
| 1257 | 1250 | case OC_const_size_z_width: |
| 1258 | - sys.bcStack.PushF(c.size.z.width * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1251 | + sys.bcStack.PushI(c.size.z.width) | |
| 1259 | 1252 | case OC_const_size_height: |
| 1260 | - sys.bcStack.PushF(c.size.height * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1253 | + sys.bcStack.PushI(c.size.height) | |
| 1261 | 1254 | case OC_const_size_attack_dist: |
| 1262 | - sys.bcStack.PushF(c.size.attack.dist * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1255 | + sys.bcStack.PushI(c.size.attack.dist) | |
| 1263 | 1256 | case OC_const_size_attack_z_width_back: |
| 1264 | - sys.bcStack.PushF(c.size.attack.z.width[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1257 | + sys.bcStack.PushI(c.size.attack.z.width[1]) | |
| 1265 | 1258 | case OC_const_size_attack_z_width_front: |
| 1266 | - sys.bcStack.PushF(c.size.attack.z.width[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1259 | + sys.bcStack.PushI(c.size.attack.z.width[0]) | |
| 1267 | 1260 | case OC_const_size_proj_attack_dist: |
| 1268 | - sys.bcStack.PushF(c.size.proj.attack.dist * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1261 | + sys.bcStack.PushI(c.size.proj.attack.dist) | |
| 1269 | 1262 | case OC_const_size_proj_doscale: |
| 1270 | 1263 | sys.bcStack.PushI(c.size.proj.doscale) |
| 1271 | 1264 | case OC_const_size_head_pos_x: |
| 1272 | - sys.bcStack.PushF(c.size.head.pos[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1265 | + sys.bcStack.PushI(c.size.head.pos[0]) | |
| 1273 | 1266 | case OC_const_size_head_pos_y: |
| 1274 | - sys.bcStack.PushF(c.size.head.pos[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1267 | + sys.bcStack.PushI(c.size.head.pos[1]) | |
| 1275 | 1268 | case OC_const_size_mid_pos_x: |
| 1276 | - sys.bcStack.PushF(c.size.mid.pos[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1269 | + sys.bcStack.PushI(c.size.mid.pos[0]) | |
| 1277 | 1270 | case OC_const_size_mid_pos_y: |
| 1278 | - sys.bcStack.PushF(c.size.mid.pos[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1271 | + sys.bcStack.PushI(c.size.mid.pos[1]) | |
| 1279 | 1272 | case OC_const_size_shadowoffset: |
| 1280 | - sys.bcStack.PushF(c.size.shadowoffset * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1273 | + sys.bcStack.PushI(c.size.shadowoffset) | |
| 1281 | 1274 | case OC_const_size_draw_offset_x: |
| 1282 | - sys.bcStack.PushF(c.size.draw.offset[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1275 | + sys.bcStack.PushI(c.size.draw.offset[0]) | |
| 1283 | 1276 | case OC_const_size_draw_offset_y: |
| 1284 | - sys.bcStack.PushF(c.size.draw.offset[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1277 | + sys.bcStack.PushI(c.size.draw.offset[1]) | |
| 1285 | 1278 | case OC_const_velocity_walk_fwd_x: |
| 1286 | - sys.bcStack.PushF(c.gi().velocity.walk.fwd * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1279 | + sys.bcStack.PushF(c.gi().velocity.walk.fwd) | |
| 1287 | 1280 | case OC_const_velocity_walk_back_x: |
| 1288 | - sys.bcStack.PushF(c.gi().velocity.walk.back * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1281 | + sys.bcStack.PushF(c.gi().velocity.walk.back) | |
| 1289 | 1282 | case OC_const_velocity_walk_up_x: |
| 1290 | - sys.bcStack.PushF(c.gi().velocity.walk.up.x * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1283 | + sys.bcStack.PushF(c.gi().velocity.walk.up.x) | |
| 1291 | 1284 | case OC_const_velocity_walk_down_x: |
| 1292 | - sys.bcStack.PushF(c.gi().velocity.walk.down.x * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1285 | + sys.bcStack.PushF(c.gi().velocity.walk.down.x) | |
| 1293 | 1286 | case OC_const_velocity_run_fwd_x: |
| 1294 | - sys.bcStack.PushF(c.gi().velocity.run.fwd[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1287 | + sys.bcStack.PushF(c.gi().velocity.run.fwd[0]) | |
| 1295 | 1288 | case OC_const_velocity_run_fwd_y: |
| 1296 | - sys.bcStack.PushF(c.gi().velocity.run.fwd[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1289 | + sys.bcStack.PushF(c.gi().velocity.run.fwd[1]) | |
| 1297 | 1290 | case OC_const_velocity_run_back_x: |
| 1298 | - sys.bcStack.PushF(c.gi().velocity.run.back[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1291 | + sys.bcStack.PushF(c.gi().velocity.run.back[0]) | |
| 1299 | 1292 | case OC_const_velocity_run_back_y: |
| 1300 | - sys.bcStack.PushF(c.gi().velocity.run.back[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1293 | + sys.bcStack.PushF(c.gi().velocity.run.back[1]) | |
| 1301 | 1294 | case OC_const_velocity_run_up_x: |
| 1302 | - sys.bcStack.PushF(c.gi().velocity.run.up.x * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1295 | + sys.bcStack.PushF(c.gi().velocity.run.up.x) | |
| 1303 | 1296 | case OC_const_velocity_run_up_y: |
| 1304 | - sys.bcStack.PushF(c.gi().velocity.run.up.y * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1297 | + sys.bcStack.PushF(c.gi().velocity.run.up.y) | |
| 1305 | 1298 | case OC_const_velocity_run_down_x: |
| 1306 | - sys.bcStack.PushF(c.gi().velocity.run.down.x * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1299 | + sys.bcStack.PushF(c.gi().velocity.run.down.x) | |
| 1307 | 1300 | case OC_const_velocity_run_down_y: |
| 1308 | - sys.bcStack.PushF(c.gi().velocity.run.down.y * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1301 | + sys.bcStack.PushF(c.gi().velocity.run.down.y) | |
| 1309 | 1302 | case OC_const_velocity_jump_y: |
| 1310 | - sys.bcStack.PushF(c.gi().velocity.jump.neu[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1303 | + sys.bcStack.PushF(c.gi().velocity.jump.neu[1]) | |
| 1311 | 1304 | case OC_const_velocity_jump_neu_x: |
| 1312 | - sys.bcStack.PushF(c.gi().velocity.jump.neu[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1305 | + sys.bcStack.PushF(c.gi().velocity.jump.neu[0]) | |
| 1313 | 1306 | case OC_const_velocity_jump_back_x: |
| 1314 | - sys.bcStack.PushF(c.gi().velocity.jump.back * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1307 | + sys.bcStack.PushF(c.gi().velocity.jump.back) | |
| 1315 | 1308 | case OC_const_velocity_jump_fwd_x: |
| 1316 | - sys.bcStack.PushF(c.gi().velocity.jump.fwd * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1309 | + sys.bcStack.PushF(c.gi().velocity.jump.fwd) | |
| 1317 | 1310 | case OC_const_velocity_jump_up_x: |
| 1318 | - sys.bcStack.PushF(c.gi().velocity.jump.up.x * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1311 | + sys.bcStack.PushF(c.gi().velocity.jump.up.x) | |
| 1319 | 1312 | case OC_const_velocity_jump_down_x: |
| 1320 | - sys.bcStack.PushF(c.gi().velocity.jump.down.x * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1313 | + sys.bcStack.PushF(c.gi().velocity.jump.down.x) | |
| 1321 | 1314 | case OC_const_velocity_runjump_back_x: |
| 1322 | - sys.bcStack.PushF(c.gi().velocity.runjump.back[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1315 | + sys.bcStack.PushF(c.gi().velocity.runjump.back[0]) | |
| 1323 | 1316 | case OC_const_velocity_runjump_back_y: |
| 1324 | - sys.bcStack.PushF(c.gi().velocity.runjump.back[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1317 | + sys.bcStack.PushF(c.gi().velocity.runjump.back[1]) | |
| 1325 | 1318 | case OC_const_velocity_runjump_y: |
| 1326 | - sys.bcStack.PushF(c.gi().velocity.runjump.fwd[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1319 | + sys.bcStack.PushF(c.gi().velocity.runjump.fwd[1]) | |
| 1327 | 1320 | case OC_const_velocity_runjump_fwd_x: |
| 1328 | - sys.bcStack.PushF(c.gi().velocity.runjump.fwd[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1321 | + sys.bcStack.PushF(c.gi().velocity.runjump.fwd[0]) | |
| 1329 | 1322 | case OC_const_velocity_runjump_up_x: |
| 1330 | - sys.bcStack.PushF(c.gi().velocity.runjump.up.x * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1323 | + sys.bcStack.PushF(c.gi().velocity.runjump.up.x) | |
| 1331 | 1324 | case OC_const_velocity_runjump_down_x: |
| 1332 | - sys.bcStack.PushF(c.gi().velocity.runjump.down.x * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1325 | + sys.bcStack.PushF(c.gi().velocity.runjump.down.x) | |
| 1333 | 1326 | case OC_const_velocity_airjump_y: |
| 1334 | - sys.bcStack.PushF(c.gi().velocity.airjump.neu[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1327 | + sys.bcStack.PushF(c.gi().velocity.airjump.neu[1]) | |
| 1335 | 1328 | case OC_const_velocity_airjump_neu_x: |
| 1336 | - sys.bcStack.PushF(c.gi().velocity.airjump.neu[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1329 | + sys.bcStack.PushF(c.gi().velocity.airjump.neu[0]) | |
| 1337 | 1330 | case OC_const_velocity_airjump_back_x: |
| 1338 | - sys.bcStack.PushF(c.gi().velocity.airjump.back * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1331 | + sys.bcStack.PushF(c.gi().velocity.airjump.back) | |
| 1339 | 1332 | case OC_const_velocity_airjump_fwd_x: |
| 1340 | - sys.bcStack.PushF(c.gi().velocity.airjump.fwd * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1333 | + sys.bcStack.PushF(c.gi().velocity.airjump.fwd) | |
| 1341 | 1334 | case OC_const_velocity_airjump_up_x: |
| 1342 | - sys.bcStack.PushF(c.gi().velocity.airjump.up.x * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1335 | + sys.bcStack.PushF(c.gi().velocity.airjump.up.x) | |
| 1343 | 1336 | case OC_const_velocity_airjump_down_x: |
| 1344 | - sys.bcStack.PushF(c.gi().velocity.airjump.down.x * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1337 | + sys.bcStack.PushF(c.gi().velocity.airjump.down.x) | |
| 1345 | 1338 | case OC_const_velocity_air_gethit_groundrecover_x: |
| 1346 | - sys.bcStack.PushF(c.gi().velocity.air.gethit.groundrecover[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1339 | + sys.bcStack.PushF(c.gi().velocity.air.gethit.groundrecover[0]) | |
| 1347 | 1340 | case OC_const_velocity_air_gethit_groundrecover_y: |
| 1348 | - sys.bcStack.PushF(c.gi().velocity.air.gethit.groundrecover[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1341 | + sys.bcStack.PushF(c.gi().velocity.air.gethit.groundrecover[1]) | |
| 1349 | 1342 | case OC_const_velocity_air_gethit_airrecover_mul_x: |
| 1350 | 1343 | sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.mul[0]) |
| 1351 | 1344 | case OC_const_velocity_air_gethit_airrecover_mul_y: |
| 1352 | 1345 | sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.mul[1]) |
| 1353 | 1346 | case OC_const_velocity_air_gethit_airrecover_add_x: |
| 1354 | - sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.add[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1347 | + sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.add[0]) | |
| 1355 | 1348 | case OC_const_velocity_air_gethit_airrecover_add_y: |
| 1356 | - sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.add[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1349 | + sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.add[1]) | |
| 1357 | 1350 | case OC_const_velocity_air_gethit_airrecover_back: |
| 1358 | - sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.back * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1351 | + sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.back) | |
| 1359 | 1352 | case OC_const_velocity_air_gethit_airrecover_fwd: |
| 1360 | - sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.fwd * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1353 | + sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.fwd) | |
| 1361 | 1354 | case OC_const_velocity_air_gethit_airrecover_up: |
| 1362 | - sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.up * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1355 | + sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.up) | |
| 1363 | 1356 | case OC_const_velocity_air_gethit_airrecover_down: |
| 1364 | - sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.down * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1357 | + sys.bcStack.PushF(c.gi().velocity.air.gethit.airrecover.down) | |
| 1365 | 1358 | case OC_const_movement_airjump_num: |
| 1366 | 1359 | sys.bcStack.PushI(c.gi().movement.airjump.num) |
| 1367 | 1360 | case OC_const_movement_airjump_height: |
| 1368 | - sys.bcStack.PushI(int32(float32(c.gi().movement.airjump.height) * (320 / float32(c.localcoord)) / oc.localscl)) | |
| 1361 | + sys.bcStack.PushI(c.gi().movement.airjump.height) | |
| 1369 | 1362 | case OC_const_movement_yaccel: |
| 1370 | - sys.bcStack.PushF(c.gi().movement.yaccel * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1363 | + sys.bcStack.PushF(c.gi().movement.yaccel) | |
| 1371 | 1364 | case OC_const_movement_stand_friction: |
| 1372 | 1365 | sys.bcStack.PushF(c.gi().movement.stand.friction) |
| 1373 | 1366 | case OC_const_movement_crouch_friction: |
| 1374 | 1367 | sys.bcStack.PushF(c.gi().movement.crouch.friction) |
| 1375 | 1368 | case OC_const_movement_stand_friction_threshold: |
| 1376 | - sys.bcStack.PushF(c.gi().movement.stand.friction_threshold * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1369 | + sys.bcStack.PushF(c.gi().movement.stand.friction_threshold) | |
| 1377 | 1370 | case OC_const_movement_crouch_friction_threshold: |
| 1378 | - sys.bcStack.PushF(c.gi().movement.crouch.friction_threshold * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1371 | + sys.bcStack.PushF(c.gi().movement.crouch.friction_threshold) | |
| 1379 | 1372 | case OC_const_movement_air_gethit_groundlevel: |
| 1380 | - sys.bcStack.PushF(c.gi().movement.air.gethit.groundlevel * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1373 | + sys.bcStack.PushF(c.gi().movement.air.gethit.groundlevel) | |
| 1381 | 1374 | case OC_const_movement_air_gethit_groundrecover_ground_threshold: |
| 1382 | 1375 | sys.bcStack.PushF( |
| 1383 | - c.gi().movement.air.gethit.groundrecover.ground.threshold * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1376 | + c.gi().movement.air.gethit.groundrecover.ground.threshold) | |
| 1384 | 1377 | case OC_const_movement_air_gethit_groundrecover_groundlevel: |
| 1385 | - sys.bcStack.PushF(c.gi().movement.air.gethit.groundrecover.groundlevel * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1378 | + sys.bcStack.PushF(c.gi().movement.air.gethit.groundrecover.groundlevel) | |
| 1386 | 1379 | case OC_const_movement_air_gethit_airrecover_threshold: |
| 1387 | - sys.bcStack.PushF(c.gi().movement.air.gethit.airrecover.threshold * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1380 | + sys.bcStack.PushF(c.gi().movement.air.gethit.airrecover.threshold) | |
| 1388 | 1381 | case OC_const_movement_air_gethit_airrecover_yaccel: |
| 1389 | - sys.bcStack.PushF(c.gi().movement.air.gethit.airrecover.yaccel * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1382 | + sys.bcStack.PushF(c.gi().movement.air.gethit.airrecover.yaccel) | |
| 1390 | 1383 | case OC_const_movement_air_gethit_trip_groundlevel: |
| 1391 | - sys.bcStack.PushF(c.gi().movement.air.gethit.trip.groundlevel * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1384 | + sys.bcStack.PushF(c.gi().movement.air.gethit.trip.groundlevel) | |
| 1392 | 1385 | case OC_const_movement_down_bounce_offset_x: |
| 1393 | - sys.bcStack.PushF(c.gi().movement.down.bounce.offset[0] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1386 | + sys.bcStack.PushF(c.gi().movement.down.bounce.offset[0]) | |
| 1394 | 1387 | case OC_const_movement_down_bounce_offset_y: |
| 1395 | - sys.bcStack.PushF(c.gi().movement.down.bounce.offset[1] * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1388 | + sys.bcStack.PushF(c.gi().movement.down.bounce.offset[1]) | |
| 1396 | 1389 | case OC_const_movement_down_bounce_yaccel: |
| 1397 | - sys.bcStack.PushF(c.gi().movement.down.bounce.yaccel * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1390 | + sys.bcStack.PushF(c.gi().movement.down.bounce.yaccel) | |
| 1398 | 1391 | case OC_const_movement_down_bounce_groundlevel: |
| 1399 | - sys.bcStack.PushF(c.gi().movement.down.bounce.groundlevel * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1392 | + sys.bcStack.PushF(c.gi().movement.down.bounce.groundlevel) | |
| 1400 | 1393 | case OC_const_movement_down_friction_threshold: |
| 1401 | - sys.bcStack.PushF(c.gi().movement.down.friction_threshold * (320 / float32(c.localcoord)) / oc.localscl) | |
| 1394 | + sys.bcStack.PushF(c.gi().movement.down.friction_threshold) | |
| 1402 | 1395 | case OC_const_authorname: |
| 1403 | 1396 | sys.bcStack.PushB(c.gi().authorLow == |
| 1404 | 1397 | sys.stringPool[sys.workingState.playerNo].List[*(*int32)( |
| @@ -1448,13 +1441,13 @@ func (be BytecodeExp) run_const(c *Char, i *int, oc *Char) { | ||
| 1448 | 1441 | c.panic() |
| 1449 | 1442 | } |
| 1450 | 1443 | } |
| 1451 | -func (be BytecodeExp) run_ex(c *Char, i *int, oc *Char) { | |
| 1444 | +func (be BytecodeExp) run_ex(c *Char, i *int) { | |
| 1452 | 1445 | (*i)++ |
| 1453 | 1446 | switch be[*i-1] { |
| 1454 | 1447 | case OC_ex_drawgame: |
| 1455 | 1448 | sys.bcStack.PushB(c.drawgame()) |
| 1456 | 1449 | case OC_ex_ishometeam: |
| 1457 | - sys.bcStack.PushB(c.teamside == sys.home) | |
| 1450 | + sys.bcStack.PushB(c.playerNo&1 == sys.home) | |
| 1458 | 1451 | case OC_ex_lose: |
| 1459 | 1452 | sys.bcStack.PushB(c.lose()) |
| 1460 | 1453 | case OC_ex_loseko: |
| @@ -1478,19 +1471,19 @@ func (be BytecodeExp) run_ex(c *Char, i *int, oc *Char) { | ||
| 1478 | 1471 | case OC_ex_winperfect: |
| 1479 | 1472 | sys.bcStack.PushB(c.winPerfect()) |
| 1480 | 1473 | case OC_ex_p2dist_x: |
| 1481 | - sys.bcStack.Push(c.rdDistX(c.p2(), oc)) | |
| 1474 | + sys.bcStack.Push(c.rdDistX(c.p2())) | |
| 1482 | 1475 | case OC_ex_p2dist_y: |
| 1483 | - sys.bcStack.Push(c.rdDistY(c.p2(), oc)) | |
| 1476 | + sys.bcStack.Push(c.rdDistY(c.p2())) | |
| 1484 | 1477 | case OC_ex_p2bodydist_x: |
| 1485 | - sys.bcStack.Push(c.p2BodyDistX(oc)) | |
| 1478 | + sys.bcStack.Push(c.p2BodyDistX()) | |
| 1486 | 1479 | case OC_ex_rootdist_x: |
| 1487 | - sys.bcStack.Push(c.rdDistX(c.root(), oc)) | |
| 1480 | + sys.bcStack.Push(c.rdDistX(c.root())) | |
| 1488 | 1481 | case OC_ex_rootdist_y: |
| 1489 | - sys.bcStack.Push(c.rdDistY(c.root(), oc)) | |
| 1482 | + sys.bcStack.Push(c.rdDistY(c.root())) | |
| 1490 | 1483 | case OC_ex_parentdist_x: |
| 1491 | - sys.bcStack.Push(c.rdDistX(c.parent(), oc)) | |
| 1484 | + sys.bcStack.Push(c.rdDistX(c.parent())) | |
| 1492 | 1485 | case OC_ex_parentdist_y: |
| 1493 | - sys.bcStack.Push(c.rdDistY(c.parent(), oc)) | |
| 1486 | + sys.bcStack.Push(c.rdDistY(c.parent())) | |
| 1494 | 1487 | case OC_ex_gethitvar_animtype: |
| 1495 | 1488 | sys.bcStack.PushI(int32(c.gethitAnimtype())) |
| 1496 | 1489 | case OC_ex_gethitvar_airtype: |
| @@ -1514,15 +1507,15 @@ func (be BytecodeExp) run_ex(c *Char, i *int, oc *Char) { | ||
| 1514 | 1507 | case OC_ex_gethitvar_recovertime: |
| 1515 | 1508 | sys.bcStack.PushI(c.recoverTime) |
| 1516 | 1509 | case OC_ex_gethitvar_xoff: |
| 1517 | - sys.bcStack.PushF(c.ghv.xoff * c.localscl / oc.localscl) | |
| 1510 | + sys.bcStack.PushF(c.ghv.xoff) | |
| 1518 | 1511 | case OC_ex_gethitvar_yoff: |
| 1519 | - sys.bcStack.PushF(c.ghv.yoff * c.localscl / oc.localscl) | |
| 1512 | + sys.bcStack.PushF(c.ghv.yoff) | |
| 1520 | 1513 | case OC_ex_gethitvar_xvel: |
| 1521 | - sys.bcStack.PushF(c.ghv.xvel * c.facing * c.localscl / oc.localscl) | |
| 1514 | + sys.bcStack.PushF(c.ghv.xvel * c.facing) | |
| 1522 | 1515 | case OC_ex_gethitvar_yvel: |
| 1523 | - sys.bcStack.PushF(c.ghv.yvel * c.localscl / oc.localscl) | |
| 1516 | + sys.bcStack.PushF(c.ghv.yvel) | |
| 1524 | 1517 | case OC_ex_gethitvar_yaccel: |
| 1525 | - sys.bcStack.PushF(c.ghv.getYaccel(oc) * c.localscl / oc.localscl) | |
| 1518 | + sys.bcStack.PushF(c.ghv.getYaccel()) | |
| 1526 | 1519 | case OC_ex_gethitvar_chainid: |
| 1527 | 1520 | sys.bcStack.PushI(c.ghv.chainId()) |
| 1528 | 1521 | case OC_ex_gethitvar_guarded: |
| @@ -1534,9 +1527,9 @@ func (be BytecodeExp) run_ex(c *Char, i *int, oc *Char) { | ||
| 1534 | 1527 | case OC_ex_gethitvar_fall_damage: |
| 1535 | 1528 | sys.bcStack.PushI(c.ghv.fall.damage) |
| 1536 | 1529 | case OC_ex_gethitvar_fall_xvel: |
| 1537 | - sys.bcStack.PushF(c.ghv.fall.xvel() * c.localscl / oc.localscl) | |
| 1530 | + sys.bcStack.PushF(c.ghv.fall.xvel()) | |
| 1538 | 1531 | case OC_ex_gethitvar_fall_yvel: |
| 1539 | - sys.bcStack.PushF(c.ghv.fall.yvelocity * c.localscl / oc.localscl) | |
| 1532 | + sys.bcStack.PushF(c.ghv.fall.yvelocity) | |
| 1540 | 1533 | case OC_ex_gethitvar_fall_recover: |
| 1541 | 1534 | sys.bcStack.PushB(c.ghv.fall.recover) |
| 1542 | 1535 | case OC_ex_gethitvar_fall_time: |
| @@ -1550,9 +1543,9 @@ func (be BytecodeExp) run_ex(c *Char, i *int, oc *Char) { | ||
| 1550 | 1543 | case OC_ex_gethitvar_fall_envshake_freq: |
| 1551 | 1544 | sys.bcStack.PushF(c.ghv.fall.envshake_freq) |
| 1552 | 1545 | case OC_ex_gethitvar_fall_envshake_ampl: |
| 1553 | - sys.bcStack.PushI(int32(float32(c.ghv.fall.envshake_ampl) * c.localscl / oc.localscl)) | |
| 1546 | + sys.bcStack.PushI(c.ghv.fall.envshake_ampl) | |
| 1554 | 1547 | case OC_ex_gethitvar_fall_envshake_phase: |
| 1555 | - sys.bcStack.PushF(c.ghv.fall.envshake_phase * c.localscl / oc.localscl) | |
| 1548 | + sys.bcStack.PushF(c.ghv.fall.envshake_phase) | |
| 1556 | 1549 | case OC_ex_majorversion: |
| 1557 | 1550 | sys.bcStack.PushI(int32(c.gi().ver[0])) |
| 1558 | 1551 | case OC_ex_drawpalno: |
| @@ -1799,7 +1792,7 @@ func (sc stateDef) Run(c *Char) { | ||
| 1799 | 1792 | case stateDef_sprpriority: |
| 1800 | 1793 | c.setSprPriority(exp[0].evalI(c)) |
| 1801 | 1794 | case stateDef_facep2: |
| 1802 | - if exp[0].evalB(c) && c.rdDistX(c.p2(), c).ToF() < 0 { | |
| 1795 | + if exp[0].evalB(c) && c.rdDistX(c.p2()).ToF() < 0 { | |
| 1803 | 1796 | c.setFacing(-c.facing) |
| 1804 | 1797 | } |
| 1805 | 1798 | case stateDef_juggle: |
| @@ -1829,28 +1822,20 @@ const ( | ||
| 1829 | 1822 | hitBy_value byte = iota |
| 1830 | 1823 | hitBy_value2 |
| 1831 | 1824 | hitBy_time |
| 1832 | - hitBy_redirectid | |
| 1833 | 1825 | ) |
| 1834 | 1826 | |
| 1835 | 1827 | func (sc hitBy) Run(c *Char, _ []int32) bool { |
| 1836 | 1828 | time := int32(1) |
| 1837 | - crun := c | |
| 1838 | 1829 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 1839 | 1830 | switch id { |
| 1840 | 1831 | case hitBy_time: |
| 1841 | 1832 | time = exp[0].evalI(c) |
| 1842 | 1833 | case hitBy_value: |
| 1843 | - crun.hitby[0].time = time | |
| 1844 | - crun.hitby[0].flag = exp[0].evalI(c) | |
| 1834 | + c.hitby[0].time = time | |
| 1835 | + c.hitby[0].flag = exp[0].evalI(c) | |
| 1845 | 1836 | case hitBy_value2: |
| 1846 | - crun.hitby[1].time = time | |
| 1847 | - crun.hitby[1].flag = exp[0].evalI(c) | |
| 1848 | - case hitBy_redirectid: | |
| 1849 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 1850 | - crun = rid | |
| 1851 | - } else { | |
| 1852 | - return false | |
| 1853 | - } | |
| 1837 | + c.hitby[1].time = time | |
| 1838 | + c.hitby[1].flag = exp[0].evalI(c) | |
| 1854 | 1839 | } |
| 1855 | 1840 | return true |
| 1856 | 1841 | }) |
| @@ -1861,24 +1846,16 @@ type notHitBy hitBy | ||
| 1861 | 1846 | |
| 1862 | 1847 | func (sc notHitBy) Run(c *Char, _ []int32) bool { |
| 1863 | 1848 | time := int32(1) |
| 1864 | - crun := c | |
| 1865 | 1849 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 1866 | 1850 | switch id { |
| 1867 | 1851 | case hitBy_time: |
| 1868 | 1852 | time = exp[0].evalI(c) |
| 1869 | 1853 | case hitBy_value: |
| 1870 | - crun.hitby[0].time = time | |
| 1871 | - crun.hitby[0].flag = ^exp[0].evalI(c) | |
| 1854 | + c.hitby[0].time = time | |
| 1855 | + c.hitby[0].flag = ^exp[0].evalI(c) | |
| 1872 | 1856 | case hitBy_value2: |
| 1873 | - crun.hitby[1].time = time | |
| 1874 | - crun.hitby[1].flag = ^exp[0].evalI(c) | |
| 1875 | - | |
| 1876 | - case hitBy_redirectid: | |
| 1877 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 1878 | - crun = rid | |
| 1879 | - } else { | |
| 1880 | - return false | |
| 1881 | - } | |
| 1857 | + c.hitby[1].time = time | |
| 1858 | + c.hitby[1].flag = ^exp[0].evalI(c) | |
| 1882 | 1859 | } |
| 1883 | 1860 | return true |
| 1884 | 1861 | }) |
| @@ -1890,23 +1867,15 @@ type assertSpecial StateControllerBase | ||
| 1890 | 1867 | const ( |
| 1891 | 1868 | assertSpecial_flag byte = iota |
| 1892 | 1869 | assertSpecial_flag_g |
| 1893 | - assertSpecial_redirectid | |
| 1894 | 1870 | ) |
| 1895 | 1871 | |
| 1896 | 1872 | func (sc assertSpecial) Run(c *Char, _ []int32) bool { |
| 1897 | - crun := c | |
| 1898 | 1873 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 1899 | 1874 | switch id { |
| 1900 | 1875 | case assertSpecial_flag: |
| 1901 | - crun.setSF(CharSpecialFlag(exp[0].evalI(c))) | |
| 1876 | + c.setSF(CharSpecialFlag(exp[0].evalI(c))) | |
| 1902 | 1877 | case assertSpecial_flag_g: |
| 1903 | 1878 | sys.setSF(GlobalSpecialFlag(exp[0].evalI(c))) |
| 1904 | - case assertSpecial_redirectid: | |
| 1905 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 1906 | - crun = rid | |
| 1907 | - } else { | |
| 1908 | - return false | |
| 1909 | - } | |
| 1910 | 1879 | } |
| 1911 | 1880 | return true |
| 1912 | 1881 | }) |
| @@ -1924,11 +1893,9 @@ const ( | ||
| 1924 | 1893 | playSnd_volume |
| 1925 | 1894 | playSnd_freqmul |
| 1926 | 1895 | playSnd_loop |
| 1927 | - playSnd_redirectid | |
| 1928 | 1896 | ) |
| 1929 | 1897 | |
| 1930 | 1898 | func (sc playSnd) Run(c *Char, _ []int32) bool { |
| 1931 | - crun := c | |
| 1932 | 1899 | f, lw, lp := false, false, false |
| 1933 | 1900 | var g, n, ch, vo int32 = -1, 0, -1, 0 |
| 1934 | 1901 | if c.gi().ver[0] == 1 { |
| @@ -1959,16 +1926,10 @@ func (sc playSnd) Run(c *Char, _ []int32) bool { | ||
| 1959 | 1926 | fr = exp[0].evalF(c) |
| 1960 | 1927 | case playSnd_loop: |
| 1961 | 1928 | lp = exp[0].evalB(c) |
| 1962 | - case playSnd_redirectid: | |
| 1963 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 1964 | - crun = rid | |
| 1965 | - } else { | |
| 1966 | - return false | |
| 1967 | - } | |
| 1968 | 1929 | } |
| 1969 | 1930 | return true |
| 1970 | 1931 | }) |
| 1971 | - crun.playSound(f, lw, lp, g, n, ch, vo, p, fr, x) | |
| 1932 | + c.playSound(f, lw, lp, g, n, ch, vo, p, fr, x) | |
| 1972 | 1933 | return false |
| 1973 | 1934 | } |
| 1974 | 1935 |
| @@ -1978,11 +1939,9 @@ const ( | ||
| 1978 | 1939 | changeState_value byte = iota |
| 1979 | 1940 | changeState_ctrl |
| 1980 | 1941 | changeState_anim |
| 1981 | - changeState_redirectid | |
| 1982 | 1942 | ) |
| 1983 | 1943 | |
| 1984 | 1944 | func (sc changeState) Run(c *Char, _ []int32) bool { |
| 1985 | - crun := c | |
| 1986 | 1945 | var v, a, ctrl int32 = -1, -1, -1 |
| 1987 | 1946 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 1988 | 1947 | switch id { |
| @@ -1992,23 +1951,16 @@ func (sc changeState) Run(c *Char, _ []int32) bool { | ||
| 1992 | 1951 | ctrl = exp[0].evalI(c) |
| 1993 | 1952 | case changeState_anim: |
| 1994 | 1953 | a = exp[0].evalI(c) |
| 1995 | - case changeState_redirectid: | |
| 1996 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 1997 | - crun = rid | |
| 1998 | - } else { | |
| 1999 | - return false | |
| 2000 | - } | |
| 2001 | 1954 | } |
| 2002 | 1955 | return true |
| 2003 | 1956 | }) |
| 2004 | - crun.changeState(v, a, ctrl) | |
| 1957 | + c.changeState(v, a, ctrl) | |
| 2005 | 1958 | return true |
| 2006 | 1959 | } |
| 2007 | 1960 | |
| 2008 | 1961 | type selfState changeState |
| 2009 | 1962 | |
| 2010 | 1963 | func (sc selfState) Run(c *Char, _ []int32) bool { |
| 2011 | - crun := c | |
| 2012 | 1964 | var v, a, ctrl int32 = -1, -1, -1 |
| 2013 | 1965 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2014 | 1966 | switch id { |
| @@ -2018,16 +1970,10 @@ func (sc selfState) Run(c *Char, _ []int32) bool { | ||
| 2018 | 1970 | ctrl = exp[0].evalI(c) |
| 2019 | 1971 | case changeState_anim: |
| 2020 | 1972 | a = exp[0].evalI(c) |
| 2021 | - case changeState_redirectid: | |
| 2022 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2023 | - crun = rid | |
| 2024 | - } else { | |
| 2025 | - return false | |
| 2026 | - } | |
| 2027 | 1973 | } |
| 2028 | 1974 | return true |
| 2029 | 1975 | }) |
| 2030 | - crun.selfState(v, a, ctrl) | |
| 1976 | + c.selfState(v, a, ctrl) | |
| 2031 | 1977 | return true |
| 2032 | 1978 | } |
| 2033 | 1979 |
| @@ -2036,12 +1982,13 @@ type tagIn StateControllerBase | ||
| 2036 | 1982 | const ( |
| 2037 | 1983 | tagIn_stateno = iota |
| 2038 | 1984 | tagIn_partnerstateno |
| 2039 | - tagIn_redirectid | |
| 2040 | 1985 | ) |
| 2041 | 1986 | |
| 2042 | 1987 | func (sc tagIn) Run(c *Char, _ []int32) bool { |
| 2043 | 1988 | p := c.partner(0) |
| 2044 | - crun := c | |
| 1989 | + if p == nil { | |
| 1990 | + return false | |
| 1991 | + } | |
| 2045 | 1992 | sn := int32(-1) |
| 2046 | 1993 | ret := false |
| 2047 | 1994 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| @@ -2049,12 +1996,9 @@ func (sc tagIn) Run(c *Char, _ []int32) bool { | ||
| 2049 | 1996 | case tagIn_stateno: |
| 2050 | 1997 | sn = exp[0].evalI(c) |
| 2051 | 1998 | case tagIn_partnerstateno: |
| 2052 | - if p == nil { | |
| 2053 | - return false | |
| 2054 | - } | |
| 2055 | 1999 | if psn := exp[0].evalI(c); psn >= 0 { |
| 2056 | 2000 | if sn >= 0 { |
| 2057 | - crun.changeState(sn, -1, -1) | |
| 2001 | + c.changeState(sn, -1, -1) | |
| 2058 | 2002 | } |
| 2059 | 2003 | p.unsetSCF(SCF_standby) |
| 2060 | 2004 | p.changeState(psn, -1, -1) |
| @@ -2062,16 +2006,6 @@ func (sc tagIn) Run(c *Char, _ []int32) bool { | ||
| 2062 | 2006 | } else { |
| 2063 | 2007 | return false |
| 2064 | 2008 | } |
| 2065 | - case tagIn_redirectid: | |
| 2066 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2067 | - crun = rid | |
| 2068 | - p = crun.partner(0) | |
| 2069 | - if p == nil { | |
| 2070 | - return false | |
| 2071 | - } | |
| 2072 | - } else { | |
| 2073 | - return false | |
| 2074 | - } | |
| 2075 | 2009 | } |
| 2076 | 2010 | return true |
| 2077 | 2011 | }) |
| @@ -2082,21 +2016,13 @@ type tagOut StateControllerBase | ||
| 2082 | 2016 | |
| 2083 | 2017 | const ( |
| 2084 | 2018 | tagOut_ = iota |
| 2085 | - tagOut_redirectid | |
| 2086 | 2019 | ) |
| 2087 | 2020 | |
| 2088 | 2021 | func (sc tagOut) Run(c *Char, _ []int32) bool { |
| 2089 | - crun := c | |
| 2090 | 2022 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2091 | 2023 | switch id { |
| 2092 | 2024 | case tagOut_: |
| 2093 | - crun.setSCF(SCF_standby) | |
| 2094 | - case tagOut_redirectid: | |
| 2095 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2096 | - crun = rid | |
| 2097 | - } else { | |
| 2098 | - return false | |
| 2099 | - } | |
| 2025 | + c.setSCF(SCF_standby) | |
| 2100 | 2026 | } |
| 2101 | 2027 | return true |
| 2102 | 2028 | }) |
| @@ -2108,11 +2034,9 @@ type destroySelf StateControllerBase | ||
| 2108 | 2034 | const ( |
| 2109 | 2035 | destroySelf_recursive = iota |
| 2110 | 2036 | destroySelf_removeexplods |
| 2111 | - destroySelf_redirectid | |
| 2112 | 2037 | ) |
| 2113 | 2038 | |
| 2114 | 2039 | func (sc destroySelf) Run(c *Char, _ []int32) bool { |
| 2115 | - crun := c | |
| 2116 | 2040 | rec, rem := false, false |
| 2117 | 2041 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2118 | 2042 | switch id { |
| @@ -2120,16 +2044,10 @@ func (sc destroySelf) Run(c *Char, _ []int32) bool { | ||
| 2120 | 2044 | rec = exp[0].evalB(c) |
| 2121 | 2045 | case destroySelf_removeexplods: |
| 2122 | 2046 | rem = exp[0].evalB(c) |
| 2123 | - case destroySelf_redirectid: | |
| 2124 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2125 | - crun = rid | |
| 2126 | - } else { | |
| 2127 | - return false | |
| 2128 | - } | |
| 2129 | 2047 | } |
| 2130 | 2048 | return true |
| 2131 | 2049 | }) |
| 2132 | - return crun.destroySelf(rec, rem) | |
| 2050 | + return c.destroySelf(rec, rem) | |
| 2133 | 2051 | } |
| 2134 | 2052 | |
| 2135 | 2053 | type changeAnim StateControllerBase |
| @@ -2137,11 +2055,9 @@ type changeAnim StateControllerBase | ||
| 2137 | 2055 | const ( |
| 2138 | 2056 | changeAnim_elem byte = iota |
| 2139 | 2057 | changeAnim_value |
| 2140 | - changeAnim_redirectid | |
| 2141 | 2058 | ) |
| 2142 | 2059 | |
| 2143 | 2060 | func (sc changeAnim) Run(c *Char, _ []int32) bool { |
| 2144 | - crun := c | |
| 2145 | 2061 | var elem int32 |
| 2146 | 2062 | setelem := false |
| 2147 | 2063 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| @@ -2150,15 +2066,9 @@ func (sc changeAnim) Run(c *Char, _ []int32) bool { | ||
| 2150 | 2066 | elem = exp[0].evalI(c) |
| 2151 | 2067 | setelem = true |
| 2152 | 2068 | case changeAnim_value: |
| 2153 | - crun.changeAnim(exp[0].evalI(c)) | |
| 2069 | + c.changeAnim(exp[0].evalI(c)) | |
| 2154 | 2070 | if setelem { |
| 2155 | - crun.setAnimElem(elem) | |
| 2156 | - } | |
| 2157 | - case changeAnim_redirectid: | |
| 2158 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2159 | - crun = rid | |
| 2160 | - } else { | |
| 2161 | - return false | |
| 2071 | + c.setAnimElem(elem) | |
| 2162 | 2072 | } |
| 2163 | 2073 | } |
| 2164 | 2074 | return true |
| @@ -2169,7 +2079,6 @@ func (sc changeAnim) Run(c *Char, _ []int32) bool { | ||
| 2169 | 2079 | type changeAnim2 changeAnim |
| 2170 | 2080 | |
| 2171 | 2081 | func (sc changeAnim2) Run(c *Char, _ []int32) bool { |
| 2172 | - crun := c | |
| 2173 | 2082 | var elem int32 |
| 2174 | 2083 | setelem := false |
| 2175 | 2084 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| @@ -2178,15 +2087,9 @@ func (sc changeAnim2) Run(c *Char, _ []int32) bool { | ||
| 2178 | 2087 | elem = exp[0].evalI(c) |
| 2179 | 2088 | setelem = true |
| 2180 | 2089 | case changeAnim_value: |
| 2181 | - crun.changeAnim2(exp[0].evalI(c)) | |
| 2090 | + c.changeAnim2(exp[0].evalI(c)) | |
| 2182 | 2091 | if setelem { |
| 2183 | - crun.setAnimElem(elem) | |
| 2184 | - } | |
| 2185 | - case changeAnim_redirectid: | |
| 2186 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2187 | - crun = rid | |
| 2188 | - } else { | |
| 2189 | - return false | |
| 2092 | + c.setAnimElem(elem) | |
| 2190 | 2093 | } |
| 2191 | 2094 | } |
| 2192 | 2095 | return true |
| @@ -2219,34 +2122,18 @@ const ( | ||
| 2219 | 2122 | helper_facing |
| 2220 | 2123 | helper_pausemovetime |
| 2221 | 2124 | helper_supermovetime |
| 2222 | - helper_redirectid | |
| 2223 | 2125 | ) |
| 2224 | 2126 | |
| 2225 | 2127 | func (sc helper) Run(c *Char, _ []int32) bool { |
| 2226 | - crun := c | |
| 2227 | - var lclscround float32 = 1.0 | |
| 2228 | - var h *Char | |
| 2128 | + h := c.newHelper() | |
| 2129 | + if h == nil { | |
| 2130 | + return false | |
| 2131 | + } | |
| 2229 | 2132 | pt := PT_P1 |
| 2230 | 2133 | var f, st int32 = 1, 0 |
| 2231 | 2134 | op := false |
| 2232 | 2135 | var x, y float32 = 0, 0 |
| 2233 | 2136 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2234 | - if h == nil { | |
| 2235 | - if id == helper_redirectid { | |
| 2236 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2237 | - crun = rid | |
| 2238 | - lclscround = c.localscl / crun.localscl | |
| 2239 | - h = crun.newHelper() | |
| 2240 | - } else { | |
| 2241 | - return false | |
| 2242 | - } | |
| 2243 | - } else { | |
| 2244 | - h = c.newHelper() | |
| 2245 | - } | |
| 2246 | - } | |
| 2247 | - if h == nil { | |
| 2248 | - return false | |
| 2249 | - } | |
| 2250 | 2137 | switch id { |
| 2251 | 2138 | case helper_helpertype: |
| 2252 | 2139 | h.player = exp[0].evalB(c) |
| @@ -2261,29 +2148,29 @@ func (sc helper) Run(c *Char, _ []int32) bool { | ||
| 2261 | 2148 | case helper_size_yscale: |
| 2262 | 2149 | h.size.yscale = exp[0].evalF(c) |
| 2263 | 2150 | case helper_size_ground_back: |
| 2264 | - h.size.ground.back = exp[0].evalF(c) | |
| 2151 | + h.size.ground.back = exp[0].evalI(c) | |
| 2265 | 2152 | case helper_size_ground_front: |
| 2266 | - h.size.ground.front = exp[0].evalF(c) | |
| 2153 | + h.size.ground.front = exp[0].evalI(c) | |
| 2267 | 2154 | case helper_size_air_back: |
| 2268 | - h.size.air.back = exp[0].evalF(c) | |
| 2155 | + h.size.air.back = exp[0].evalI(c) | |
| 2269 | 2156 | case helper_size_air_front: |
| 2270 | - h.size.air.front = exp[0].evalF(c) | |
| 2157 | + h.size.air.front = exp[0].evalI(c) | |
| 2271 | 2158 | case helper_size_height: |
| 2272 | - h.size.height = exp[0].evalF(c) | |
| 2159 | + h.size.height = exp[0].evalI(c) | |
| 2273 | 2160 | case helper_size_proj_doscale: |
| 2274 | 2161 | h.size.proj.doscale = exp[0].evalI(c) |
| 2275 | 2162 | case helper_size_head_pos: |
| 2276 | - h.size.head.pos[0] = exp[0].evalF(c) | |
| 2163 | + h.size.head.pos[0] = exp[0].evalI(c) | |
| 2277 | 2164 | if len(exp) > 1 { |
| 2278 | - h.size.head.pos[1] = exp[1].evalF(c) | |
| 2165 | + h.size.head.pos[1] = exp[1].evalI(c) | |
| 2279 | 2166 | } |
| 2280 | 2167 | case helper_size_mid_pos: |
| 2281 | - h.size.mid.pos[0] = exp[0].evalF(c) | |
| 2168 | + h.size.mid.pos[0] = exp[0].evalI(c) | |
| 2282 | 2169 | if len(exp) > 1 { |
| 2283 | - h.size.mid.pos[1] = exp[1].evalF(c) | |
| 2170 | + h.size.mid.pos[1] = exp[1].evalI(c) | |
| 2284 | 2171 | } |
| 2285 | 2172 | case helper_size_shadowoffset: |
| 2286 | - h.size.shadowoffset = exp[0].evalF(c) | |
| 2173 | + h.size.shadowoffset = exp[0].evalI(c) | |
| 2287 | 2174 | case helper_stateno: |
| 2288 | 2175 | st = exp[0].evalI(c) |
| 2289 | 2176 | case helper_keyctrl: |
| @@ -2291,9 +2178,9 @@ func (sc helper) Run(c *Char, _ []int32) bool { | ||
| 2291 | 2178 | case helper_id: |
| 2292 | 2179 | h.helperId = exp[0].evalI(c) |
| 2293 | 2180 | case helper_pos: |
| 2294 | - x = exp[0].evalF(c) * lclscround | |
| 2181 | + x = exp[0].evalF(c) | |
| 2295 | 2182 | if len(exp) > 1 { |
| 2296 | - y = exp[1].evalF(c) * lclscround | |
| 2183 | + y = exp[1].evalF(c) | |
| 2297 | 2184 | } |
| 2298 | 2185 | case helper_facing: |
| 2299 | 2186 | f = exp[0].evalI(c) |
| @@ -2304,17 +2191,7 @@ func (sc helper) Run(c *Char, _ []int32) bool { | ||
| 2304 | 2191 | } |
| 2305 | 2192 | return true |
| 2306 | 2193 | }) |
| 2307 | - if h == nil { | |
| 2308 | - return false | |
| 2309 | - } | |
| 2310 | - if crun.minus == -2 { | |
| 2311 | - h.localscl = (320 / float32(crun.localcoord)) | |
| 2312 | - h.localcoord = crun.localcoord | |
| 2313 | - } else { | |
| 2314 | - h.localscl = crun.localscl | |
| 2315 | - h.localcoord = crun.localcoord | |
| 2316 | - } | |
| 2317 | - crun.helperInit(h, st, pt, x, y, f, op) | |
| 2194 | + c.helperInit(h, st, pt, x, y, f, op) | |
| 2318 | 2195 | return false |
| 2319 | 2196 | } |
| 2320 | 2197 |
| @@ -2322,21 +2199,13 @@ type ctrlSet StateControllerBase | ||
| 2322 | 2199 | |
| 2323 | 2200 | const ( |
| 2324 | 2201 | ctrlSet_value byte = iota |
| 2325 | - ctrlSet_redirectid | |
| 2326 | 2202 | ) |
| 2327 | 2203 | |
| 2328 | 2204 | func (sc ctrlSet) Run(c *Char, _ []int32) bool { |
| 2329 | - crun := c | |
| 2330 | 2205 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2331 | 2206 | switch id { |
| 2332 | 2207 | case ctrlSet_value: |
| 2333 | - crun.setCtrl(exp[0].evalB(c)) | |
| 2334 | - case ctrlSet_redirectid: | |
| 2335 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2336 | - crun = rid | |
| 2337 | - } else { | |
| 2338 | - return false | |
| 2339 | - } | |
| 2208 | + c.setCtrl(exp[0].evalB(c)) | |
| 2340 | 2209 | } |
| 2341 | 2210 | return true |
| 2342 | 2211 | }) |
| @@ -2373,46 +2242,16 @@ const ( | ||
| 2373 | 2242 | explod_yangle |
| 2374 | 2243 | explod_xangle |
| 2375 | 2244 | explod_ignorehitpause |
| 2376 | - explod_bindid | |
| 2377 | - explod_space | |
| 2378 | - explod_redirectid | |
| 2379 | 2245 | ) |
| 2380 | 2246 | |
| 2381 | 2247 | func (sc explod) Run(c *Char, _ []int32) bool { |
| 2382 | - crun := c | |
| 2383 | - var lclscround float32 = 1.0 | |
| 2384 | - var e *Explod | |
| 2385 | - var i int | |
| 2386 | - //e, i := crun.newExplod() | |
| 2248 | + e, i := c.newExplod() | |
| 2249 | + if e == nil { | |
| 2250 | + return false | |
| 2251 | + } | |
| 2252 | + e.id = 0 | |
| 2387 | 2253 | rp := [...]int32{-1, 0} |
| 2388 | 2254 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2389 | - if e == nil { | |
| 2390 | - if id == explod_redirectid { | |
| 2391 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2392 | - crun = rid | |
| 2393 | - lclscround = c.localscl / crun.localscl | |
| 2394 | - e, i = crun.newExplod() | |
| 2395 | - if e == nil { | |
| 2396 | - return false | |
| 2397 | - } | |
| 2398 | - e.id = 0 | |
| 2399 | - if crun.stCgi().ver[0] == 1 && crun.stCgi().ver[1] == 1 { | |
| 2400 | - e.postype = PT_N | |
| 2401 | - } | |
| 2402 | - } else { | |
| 2403 | - return false | |
| 2404 | - } | |
| 2405 | - } else { | |
| 2406 | - e, i = crun.newExplod() | |
| 2407 | - if e == nil { | |
| 2408 | - return false | |
| 2409 | - } | |
| 2410 | - e.id = 0 | |
| 2411 | - if crun.stCgi().ver[0] == 1 && crun.stCgi().ver[1] == 1 { | |
| 2412 | - e.postype = PT_N | |
| 2413 | - } | |
| 2414 | - } | |
| 2415 | - } | |
| 2416 | 2255 | switch id { |
| 2417 | 2256 | case explod_ownpal: |
| 2418 | 2257 | e.ownpal = exp[0].evalB(c) |
| @@ -2436,30 +2275,28 @@ func (sc explod) Run(c *Char, _ []int32) bool { | ||
| 2436 | 2275 | e.vfacing = 1 |
| 2437 | 2276 | } |
| 2438 | 2277 | case explod_pos: |
| 2439 | - e.offset[0] = exp[0].evalF(c) * lclscround | |
| 2278 | + e.offset[0] = exp[0].evalF(c) | |
| 2440 | 2279 | if len(exp) > 1 { |
| 2441 | - e.offset[1] = exp[1].evalF(c) * lclscround | |
| 2280 | + e.offset[1] = exp[1].evalF(c) | |
| 2442 | 2281 | } |
| 2443 | 2282 | case explod_random: |
| 2444 | - rndx := exp[0].evalF(c) * lclscround | |
| 2445 | - e.offset[0] += RandF(-rndx, rndx-2) * .5 | |
| 2283 | + rndx := exp[0].evalF(c) | |
| 2284 | + e.offset[0] += RandF(-rndx, rndx) | |
| 2446 | 2285 | if len(exp) > 1 { |
| 2447 | - rndy := exp[1].evalF(c) * lclscround | |
| 2448 | - e.offset[1] += RandF(-rndy, rndy-2) * .5 | |
| 2286 | + rndy := exp[1].evalF(c) | |
| 2287 | + e.offset[1] += RandF(-rndy, rndy) | |
| 2449 | 2288 | } |
| 2450 | 2289 | case explod_postype: |
| 2451 | 2290 | e.postype = PosType(exp[0].evalI(c)) |
| 2452 | - case explod_space: | |
| 2453 | - e.space = Space(exp[0].evalI(c)) | |
| 2454 | 2291 | case explod_velocity: |
| 2455 | - e.velocity[0] = exp[0].evalF(c) * lclscround | |
| 2292 | + e.velocity[0] = exp[0].evalF(c) | |
| 2456 | 2293 | if len(exp) > 1 { |
| 2457 | - e.velocity[1] = exp[1].evalF(c) * lclscround | |
| 2294 | + e.velocity[1] = exp[1].evalF(c) | |
| 2458 | 2295 | } |
| 2459 | 2296 | case explod_accel: |
| 2460 | - e.accel[0] = exp[0].evalF(c) * lclscround | |
| 2297 | + e.accel[0] = exp[0].evalF(c) | |
| 2461 | 2298 | if len(exp) > 1 { |
| 2462 | - e.accel[1] = exp[1].evalF(c) * lclscround | |
| 2299 | + e.accel[1] = exp[1].evalF(c) | |
| 2463 | 2300 | } |
| 2464 | 2301 | case explod_scale: |
| 2465 | 2302 | e.scale[0] = exp[0].evalF(c) |
| @@ -2511,38 +2348,26 @@ func (sc explod) Run(c *Char, _ []int32) bool { | ||
| 2511 | 2348 | } |
| 2512 | 2349 | } |
| 2513 | 2350 | case explod_anim: |
| 2514 | - e.anim = crun.getAnim(exp[1].evalI(c), exp[0].evalB(c)) | |
| 2351 | + e.anim = c.getAnim(exp[1].evalI(c), exp[0].evalB(c)) | |
| 2515 | 2352 | case explod_angle: |
| 2516 | 2353 | e.angle = exp[0].evalF(c) |
| 2517 | 2354 | case explod_yangle: |
| 2518 | - e.yangle = exp[0].evalF(c) | |
| 2355 | + exp[0].run(c) | |
| 2519 | 2356 | case explod_xangle: |
| 2520 | - e.xangle = exp[0].evalF(c) | |
| 2357 | + exp[0].run(c) | |
| 2521 | 2358 | case explod_ignorehitpause: |
| 2522 | 2359 | e.ignorehitpause = exp[0].evalB(c) |
| 2523 | - case explod_bindid: | |
| 2524 | - e.bindId = exp[0].evalI(c) | |
| 2525 | 2360 | } |
| 2526 | 2361 | return true |
| 2527 | 2362 | }) |
| 2528 | - if e == nil { | |
| 2529 | - return false | |
| 2530 | - } | |
| 2531 | - if c.minus == -2 { | |
| 2532 | - e.localscl = (320 / float32(crun.localcoord)) | |
| 2533 | - } else { | |
| 2534 | - e.localscl = crun.localscl | |
| 2535 | - } | |
| 2536 | - e.setPos(crun) | |
| 2537 | - crun.insertExplodEx(i, rp) | |
| 2363 | + e.setPos(c) | |
| 2364 | + c.insertExplodEx(i, rp) | |
| 2538 | 2365 | return false |
| 2539 | 2366 | } |
| 2540 | 2367 | |
| 2541 | 2368 | type modifyExplod explod |
| 2542 | 2369 | |
| 2543 | 2370 | func (sc modifyExplod) Run(c *Char, _ []int32) bool { |
| 2544 | - crun := c | |
| 2545 | - var lclscround float32 = 1.0 | |
| 2546 | 2371 | eid := int32(-1) |
| 2547 | 2372 | var expls []*Explod |
| 2548 | 2373 | rp := [...]int32{-1, 0} |
| @@ -2553,13 +2378,6 @@ func (sc modifyExplod) Run(c *Char, _ []int32) bool { | ||
| 2553 | 2378 | } |
| 2554 | 2379 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2555 | 2380 | switch id { |
| 2556 | - case explod_redirectid: | |
| 2557 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2558 | - crun = rid | |
| 2559 | - lclscround = c.localscl / crun.localscl | |
| 2560 | - } else { | |
| 2561 | - return false | |
| 2562 | - } | |
| 2563 | 2381 | case explod_remappal: |
| 2564 | 2382 | rp[0] = exp[0].evalI(c) |
| 2565 | 2383 | if len(exp) > 1 { |
| @@ -2569,13 +2387,13 @@ func (sc modifyExplod) Run(c *Char, _ []int32) bool { | ||
| 2569 | 2387 | eid = exp[0].evalI(c) |
| 2570 | 2388 | default: |
| 2571 | 2389 | if len(expls) == 0 { |
| 2572 | - expls = crun.getExplods(eid) | |
| 2390 | + expls = c.getExplods(eid) | |
| 2573 | 2391 | if len(expls) == 0 { |
| 2574 | 2392 | return false |
| 2575 | 2393 | } |
| 2576 | 2394 | eachExpl(func(e *Explod) { |
| 2577 | 2395 | if e.ownpal { |
| 2578 | - crun.remapPal(e.palfx, [...]int32{1, 1}, rp) | |
| 2396 | + c.remapPal(e.palfx, [...]int32{1, 1}, rp) | |
| 2579 | 2397 | } |
| 2580 | 2398 | }) |
| 2581 | 2399 | } |
| @@ -2593,18 +2411,18 @@ func (sc modifyExplod) Run(c *Char, _ []int32) bool { | ||
| 2593 | 2411 | eachExpl(func(e *Explod) { e.vfacing = 1 }) |
| 2594 | 2412 | } |
| 2595 | 2413 | case explod_pos: |
| 2596 | - x := exp[0].evalF(c) * lclscround | |
| 2414 | + x := exp[0].evalF(c) | |
| 2597 | 2415 | eachExpl(func(e *Explod) { e.offset[0] = x }) |
| 2598 | 2416 | if len(exp) > 1 { |
| 2599 | - y := exp[1].evalF(c) * lclscround | |
| 2417 | + y := exp[1].evalF(c) | |
| 2600 | 2418 | eachExpl(func(e *Explod) { e.offset[1] = y }) |
| 2601 | 2419 | } |
| 2602 | 2420 | case explod_random: |
| 2603 | - rndx := exp[0].evalF(c) * lclscround | |
| 2421 | + rndx := exp[0].evalF(c) | |
| 2604 | 2422 | rndx = RandF(-rndx, rndx) |
| 2605 | 2423 | eachExpl(func(e *Explod) { e.offset[0] += rndx }) |
| 2606 | 2424 | if len(exp) > 1 { |
| 2607 | - rndy := exp[1].evalF(c) * lclscround | |
| 2425 | + rndy := exp[1].evalF(c) | |
| 2608 | 2426 | rndy = RandF(-rndy, rndy) |
| 2609 | 2427 | eachExpl(func(e *Explod) { e.offset[1] += rndy }) |
| 2610 | 2428 | } |
| @@ -2615,17 +2433,17 @@ func (sc modifyExplod) Run(c *Char, _ []int32) bool { | ||
| 2615 | 2433 | e.setPos(c) |
| 2616 | 2434 | }) |
| 2617 | 2435 | case explod_velocity: |
| 2618 | - x := exp[0].evalF(c) * lclscround | |
| 2436 | + x := exp[0].evalF(c) | |
| 2619 | 2437 | eachExpl(func(e *Explod) { e.velocity[0] = x }) |
| 2620 | 2438 | if len(exp) > 1 { |
| 2621 | - y := exp[1].evalF(c) * lclscround | |
| 2439 | + y := exp[1].evalF(c) | |
| 2622 | 2440 | eachExpl(func(e *Explod) { e.velocity[1] = y }) |
| 2623 | 2441 | } |
| 2624 | 2442 | case explod_accel: |
| 2625 | - x := exp[0].evalF(c) * lclscround | |
| 2443 | + x := exp[0].evalF(c) | |
| 2626 | 2444 | eachExpl(func(e *Explod) { e.accel[0] = x }) |
| 2627 | 2445 | if len(exp) > 1 { |
| 2628 | - y := exp[1].evalF(c) * lclscround | |
| 2446 | + y := exp[1].evalF(c) | |
| 2629 | 2447 | eachExpl(func(e *Explod) { e.accel[1] = y }) |
| 2630 | 2448 | } |
| 2631 | 2449 | case explod_scale: |
| @@ -2696,14 +2514,9 @@ func (sc modifyExplod) Run(c *Char, _ []int32) bool { | ||
| 2696 | 2514 | a := exp[0].evalF(c) |
| 2697 | 2515 | eachExpl(func(e *Explod) { e.angle = a }) |
| 2698 | 2516 | case explod_yangle: |
| 2699 | - ya := exp[0].evalF(c) | |
| 2700 | - eachExpl(func(e *Explod) { e.yangle = ya }) | |
| 2517 | + exp[0].run(c) | |
| 2701 | 2518 | case explod_xangle: |
| 2702 | - xa := exp[0].evalF(c) | |
| 2703 | - eachExpl(func(e *Explod) { e.xangle = xa }) | |
| 2704 | - case explod_bindid: | |
| 2705 | - b := exp[0].evalI(c) | |
| 2706 | - eachExpl(func(e *Explod) { e.bindId = b }) | |
| 2519 | + exp[0].run(c) | |
| 2707 | 2520 | } |
| 2708 | 2521 | } |
| 2709 | 2522 | return true |
| @@ -2718,63 +2531,39 @@ const ( | ||
| 2718 | 2531 | gameMakeAnim_random |
| 2719 | 2532 | gameMakeAnim_under |
| 2720 | 2533 | gameMakeAnim_anim |
| 2721 | - gameMakeAnim_redirectid | |
| 2722 | 2534 | ) |
| 2723 | 2535 | |
| 2724 | 2536 | func (sc gameMakeAnim) Run(c *Char, _ []int32) bool { |
| 2725 | - crun := c | |
| 2726 | - var e *Explod | |
| 2727 | - var i int | |
| 2728 | - | |
| 2537 | + e, i := c.newExplod() | |
| 2538 | + if e == nil { | |
| 2539 | + return false | |
| 2540 | + } | |
| 2541 | + e.ontop, e.sprpriority, e.ownpal = true, math.MinInt32, true | |
| 2729 | 2542 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2730 | - if e == nil { | |
| 2731 | - if id == gameMakeAnim_redirectid { | |
| 2732 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2733 | - crun = rid | |
| 2734 | - e, i = crun.newExplod() | |
| 2735 | - if e == nil { | |
| 2736 | - return false | |
| 2737 | - } | |
| 2738 | - e.id = 0 | |
| 2739 | - } else { | |
| 2740 | - return false | |
| 2741 | - } | |
| 2742 | - } else { | |
| 2743 | - e, i = crun.newExplod() | |
| 2744 | - if e == nil { | |
| 2745 | - return false | |
| 2746 | - } | |
| 2747 | - e.id = 0 | |
| 2748 | - } | |
| 2749 | - } | |
| 2750 | 2543 | switch id { |
| 2751 | 2544 | case gameMakeAnim_pos: |
| 2752 | - e.offset[0] = exp[0].evalF(c) * c.localscl / crun.localscl | |
| 2545 | + e.offset[0] = exp[0].evalF(c) | |
| 2753 | 2546 | if len(exp) > 1 { |
| 2754 | - e.offset[1] = exp[1].evalF(c) * c.localscl / crun.localscl | |
| 2547 | + e.offset[1] = exp[1].evalF(c) | |
| 2755 | 2548 | } |
| 2756 | 2549 | case gameMakeAnim_random: |
| 2757 | 2550 | rndx := exp[0].evalF(c) |
| 2758 | - e.offset[0] += RandF(-rndx, rndx) * c.localscl / crun.localscl | |
| 2551 | + e.offset[0] += RandF(-rndx, rndx) | |
| 2759 | 2552 | if len(exp) > 1 { |
| 2760 | 2553 | rndy := exp[1].evalF(c) |
| 2761 | - e.offset[1] += RandF(-rndy, rndy) * c.localscl / crun.localscl | |
| 2554 | + e.offset[1] += RandF(-rndy, rndy) | |
| 2762 | 2555 | } |
| 2763 | 2556 | case gameMakeAnim_under: |
| 2764 | 2557 | e.ontop = !exp[0].evalB(c) |
| 2765 | 2558 | case gameMakeAnim_anim: |
| 2766 | - e.anim = crun.getAnim(exp[1].evalI(c), exp[0].evalB(c)) | |
| 2559 | + e.anim = c.getAnim(exp[1].evalI(c), exp[0].evalB(c)) | |
| 2767 | 2560 | } |
| 2768 | 2561 | return true |
| 2769 | 2562 | }) |
| 2770 | - if e == nil { | |
| 2771 | - return false | |
| 2772 | - } | |
| 2773 | - e.ontop, e.sprpriority, e.ownpal = true, math.MinInt32, true | |
| 2774 | - e.offset[0] -= float32(crun.size.draw.offset[0]) | |
| 2775 | - e.offset[1] -= float32(crun.size.draw.offset[1]) | |
| 2776 | - e.setPos(crun) | |
| 2777 | - crun.insertExplod(i) | |
| 2563 | + e.offset[0] -= float32(c.size.draw.offset[0]) | |
| 2564 | + e.offset[1] -= float32(c.size.draw.offset[1]) | |
| 2565 | + e.setPos(c) | |
| 2566 | + c.insertExplod(i) | |
| 2778 | 2567 | return false |
| 2779 | 2568 | } |
| 2780 | 2569 |
| @@ -2784,27 +2573,17 @@ const ( | ||
| 2784 | 2573 | posSet_x byte = iota |
| 2785 | 2574 | posSet_y |
| 2786 | 2575 | posSet_z |
| 2787 | - posSet_redirectid | |
| 2788 | 2576 | ) |
| 2789 | 2577 | |
| 2790 | 2578 | func (sc posSet) Run(c *Char, _ []int32) bool { |
| 2791 | - crun := c | |
| 2792 | - var lclscround float32 = 1.0 | |
| 2793 | 2579 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2794 | 2580 | switch id { |
| 2795 | 2581 | case posSet_x: |
| 2796 | - crun.setX(sys.cam.Pos[0]/crun.localscl + exp[0].evalF(c)*lclscround) | |
| 2582 | + c.setX(sys.cam.Pos[0] + exp[0].evalF(c)) | |
| 2797 | 2583 | case posSet_y: |
| 2798 | - crun.setY(exp[0].evalF(c) * lclscround) | |
| 2584 | + c.setY(exp[0].evalF(c)) | |
| 2799 | 2585 | case posSet_z: |
| 2800 | 2586 | exp[0].run(c) |
| 2801 | - case posSet_redirectid: | |
| 2802 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2803 | - crun = rid | |
| 2804 | - lclscround = c.localscl / crun.localscl | |
| 2805 | - } else { | |
| 2806 | - return false | |
| 2807 | - } | |
| 2808 | 2587 | } |
| 2809 | 2588 | return true |
| 2810 | 2589 | }) |
| @@ -2814,23 +2593,14 @@ func (sc posSet) Run(c *Char, _ []int32) bool { | ||
| 2814 | 2593 | type posAdd posSet |
| 2815 | 2594 | |
| 2816 | 2595 | func (sc posAdd) Run(c *Char, _ []int32) bool { |
| 2817 | - crun := c | |
| 2818 | - var lclscround float32 = 1.0 | |
| 2819 | 2596 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2820 | 2597 | switch id { |
| 2821 | 2598 | case posSet_x: |
| 2822 | - crun.addX(exp[0].evalF(c) * lclscround) | |
| 2599 | + c.addX(exp[0].evalF(c)) | |
| 2823 | 2600 | case posSet_y: |
| 2824 | - crun.addY(exp[0].evalF(c) * lclscround) | |
| 2601 | + c.addY(exp[0].evalF(c)) | |
| 2825 | 2602 | case posSet_z: |
| 2826 | 2603 | exp[0].run(c) |
| 2827 | - case posSet_redirectid: | |
| 2828 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2829 | - crun = rid | |
| 2830 | - lclscround = c.localscl / crun.localscl | |
| 2831 | - } else { | |
| 2832 | - return false | |
| 2833 | - } | |
| 2834 | 2604 | } |
| 2835 | 2605 | return true |
| 2836 | 2606 | }) |
| @@ -2840,23 +2610,14 @@ func (sc posAdd) Run(c *Char, _ []int32) bool { | ||
| 2840 | 2610 | type velSet posSet |
| 2841 | 2611 | |
| 2842 | 2612 | func (sc velSet) Run(c *Char, _ []int32) bool { |
| 2843 | - crun := c | |
| 2844 | - var lclscround float32 = 1.0 | |
| 2845 | 2613 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2846 | 2614 | switch id { |
| 2847 | 2615 | case posSet_x: |
| 2848 | - crun.setXV(exp[0].evalF(c) * lclscround) | |
| 2616 | + c.setXV(exp[0].evalF(c)) | |
| 2849 | 2617 | case posSet_y: |
| 2850 | - crun.setYV(exp[0].evalF(c) * lclscround) | |
| 2618 | + c.setYV(exp[0].evalF(c)) | |
| 2851 | 2619 | case posSet_z: |
| 2852 | 2620 | exp[0].run(c) |
| 2853 | - case posSet_redirectid: | |
| 2854 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2855 | - crun = rid | |
| 2856 | - lclscround = c.localscl / crun.localscl | |
| 2857 | - } else { | |
| 2858 | - return false | |
| 2859 | - } | |
| 2860 | 2621 | } |
| 2861 | 2622 | return true |
| 2862 | 2623 | }) |
| @@ -2866,23 +2627,14 @@ func (sc velSet) Run(c *Char, _ []int32) bool { | ||
| 2866 | 2627 | type velAdd posSet |
| 2867 | 2628 | |
| 2868 | 2629 | func (sc velAdd) Run(c *Char, _ []int32) bool { |
| 2869 | - crun := c | |
| 2870 | - var lclscround float32 = 1.0 | |
| 2871 | 2630 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2872 | 2631 | switch id { |
| 2873 | 2632 | case posSet_x: |
| 2874 | - crun.addXV(exp[0].evalF(c) * lclscround) | |
| 2633 | + c.addXV(exp[0].evalF(c)) | |
| 2875 | 2634 | case posSet_y: |
| 2876 | - crun.addYV(exp[0].evalF(c) * lclscround) | |
| 2635 | + c.addYV(exp[0].evalF(c)) | |
| 2877 | 2636 | case posSet_z: |
| 2878 | 2637 | exp[0].run(c) |
| 2879 | - case posSet_redirectid: | |
| 2880 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2881 | - crun = rid | |
| 2882 | - lclscround = c.localscl / crun.localscl | |
| 2883 | - } else { | |
| 2884 | - return false | |
| 2885 | - } | |
| 2886 | 2638 | } |
| 2887 | 2639 | return true |
| 2888 | 2640 | }) |
| @@ -2892,21 +2644,14 @@ func (sc velAdd) Run(c *Char, _ []int32) bool { | ||
| 2892 | 2644 | type velMul posSet |
| 2893 | 2645 | |
| 2894 | 2646 | func (sc velMul) Run(c *Char, _ []int32) bool { |
| 2895 | - crun := c | |
| 2896 | 2647 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2897 | 2648 | switch id { |
| 2898 | 2649 | case posSet_x: |
| 2899 | - crun.mulXV(exp[0].evalF(c)) | |
| 2650 | + c.mulXV(exp[0].evalF(c)) | |
| 2900 | 2651 | case posSet_y: |
| 2901 | - crun.mulYV(exp[0].evalF(c)) | |
| 2652 | + c.mulYV(exp[0].evalF(c)) | |
| 2902 | 2653 | case posSet_z: |
| 2903 | 2654 | exp[0].run(c) |
| 2904 | - case posSet_redirectid: | |
| 2905 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2906 | - crun = rid | |
| 2907 | - } else { | |
| 2908 | - return false | |
| 2909 | - } | |
| 2910 | 2655 | } |
| 2911 | 2656 | return true |
| 2912 | 2657 | }) |
| @@ -2923,7 +2668,6 @@ const ( | ||
| 2923 | 2668 | palFX_sinadd |
| 2924 | 2669 | palFX_invertall |
| 2925 | 2670 | palFX_last = iota - 1 |
| 2926 | - palFX_redirectid | |
| 2927 | 2671 | ) |
| 2928 | 2672 | |
| 2929 | 2673 | func (sc palFX) runSub(c *Char, pfd *PalFXDef, |
| @@ -2956,25 +2700,12 @@ func (sc palFX) runSub(c *Char, pfd *PalFXDef, | ||
| 2956 | 2700 | return true |
| 2957 | 2701 | } |
| 2958 | 2702 | func (sc palFX) Run(c *Char, _ []int32) bool { |
| 2959 | - crun := c | |
| 2960 | - pf := crun.palfx | |
| 2703 | + pf := c.palfx | |
| 2961 | 2704 | if pf == nil { |
| 2962 | 2705 | pf = newPalFX() |
| 2963 | 2706 | } |
| 2964 | 2707 | pf.clear2(true) |
| 2965 | 2708 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 2966 | - if id == palFX_redirectid { | |
| 2967 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 2968 | - crun = rid | |
| 2969 | - pf = crun.palfx | |
| 2970 | - if pf == nil { | |
| 2971 | - pf = newPalFX() | |
| 2972 | - } | |
| 2973 | - pf.clear2(true) | |
| 2974 | - } else { | |
| 2975 | - return false | |
| 2976 | - } | |
| 2977 | - } | |
| 2978 | 2709 | sc.runSub(c, &pf.PalFXDef, id, exp) |
| 2979 | 2710 | return true |
| 2980 | 2711 | }) |
| @@ -3019,7 +2750,6 @@ const ( | ||
| 3019 | 2750 | afterImage_paladd |
| 3020 | 2751 | afterImage_palmul |
| 3021 | 2752 | afterImage_last = iota + palFX_last + 1 - 1 |
| 3022 | - afterImage_redirectid | |
| 3023 | 2753 | ) |
| 3024 | 2754 | |
| 3025 | 2755 | func (sc afterImage) runSub(c *Char, ai *AfterImage, |
| @@ -3082,23 +2812,13 @@ func (sc afterImage) runSub(c *Char, ai *AfterImage, | ||
| 3082 | 2812 | } |
| 3083 | 2813 | } |
| 3084 | 2814 | func (sc afterImage) Run(c *Char, _ []int32) bool { |
| 3085 | - crun := c | |
| 3086 | - crun.aimg.clear() | |
| 3087 | - crun.aimg.time = 1 | |
| 2815 | + c.aimg.clear() | |
| 2816 | + c.aimg.time = 1 | |
| 3088 | 2817 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 3089 | - if id == afterImage_redirectid { | |
| 3090 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 3091 | - crun = rid | |
| 3092 | - crun.aimg.clear() | |
| 3093 | - crun.aimg.time = 1 | |
| 3094 | - } else { | |
| 3095 | - return false | |
| 3096 | - } | |
| 3097 | - } | |
| 3098 | - sc.runSub(c, &crun.aimg, id, exp) | |
| 2818 | + sc.runSub(c, &c.aimg, id, exp) | |
| 3099 | 2819 | return true |
| 3100 | 2820 | }) |
| 3101 | - crun.aimg.setupPalFX() | |
| 2821 | + c.aimg.setupPalFX() | |
| 3102 | 2822 | return false |
| 3103 | 2823 | } |
| 3104 | 2824 |
| @@ -3106,25 +2826,16 @@ type afterImageTime StateControllerBase | ||
| 3106 | 2826 | |
| 3107 | 2827 | const ( |
| 3108 | 2828 | afterImageTime_time byte = iota |
| 3109 | - afterImageTime_redirectid | |
| 3110 | 2829 | ) |
| 3111 | 2830 | |
| 3112 | 2831 | func (sc afterImageTime) Run(c *Char, _ []int32) bool { |
| 3113 | - crun := c | |
| 3114 | 2832 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 3115 | - if id == afterImageTime_redirectid { | |
| 3116 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 3117 | - crun = rid | |
| 3118 | - } else { | |
| 3119 | - return false | |
| 3120 | - } | |
| 3121 | - } | |
| 3122 | - if crun.aimg.timegap <= 0 { | |
| 2833 | + if c.aimg.timegap <= 0 { | |
| 3123 | 2834 | return false |
| 3124 | 2835 | } |
| 3125 | 2836 | switch id { |
| 3126 | 2837 | case afterImageTime_time: |
| 3127 | - crun.aimg.time = exp[0].evalI(c) | |
| 2838 | + c.aimg.time = exp[0].evalI(c) | |
| 3128 | 2839 | } |
| 3129 | 2840 | return true |
| 3130 | 2841 | }) |
| @@ -3143,7 +2854,6 @@ const ( | ||
| 3143 | 2854 | hitDef_air_animtype |
| 3144 | 2855 | hitDef_fall_animtype |
| 3145 | 2856 | hitDef_affectteam |
| 3146 | - hitDef_teamside | |
| 3147 | 2857 | hitDef_id |
| 3148 | 2858 | hitDef_chainid |
| 3149 | 2859 | hitDef_nochainid |
| @@ -3216,7 +2926,6 @@ const ( | ||
| 3216 | 2926 | hitDef_fall_envshake_phase |
| 3217 | 2927 | hitDef_fall_envshake_freq |
| 3218 | 2928 | hitDef_last = iota + afterImage_last + 1 - 1 |
| 3219 | - hitDef_redirectid | |
| 3220 | 2929 | ) |
| 3221 | 2930 | |
| 3222 | 2931 | func (sc hitDef) runSub(c *Char, hd *HitDef, id byte, exp []BytecodeExp) bool { |
| @@ -3239,15 +2948,6 @@ func (sc hitDef) runSub(c *Char, hd *HitDef, id byte, exp []BytecodeExp) bool { | ||
| 3239 | 2948 | hd.fall.animtype = Reaction(exp[0].evalI(c)) |
| 3240 | 2949 | case hitDef_affectteam: |
| 3241 | 2950 | hd.affectteam = exp[0].evalI(c) |
| 3242 | - case hitDef_teamside: | |
| 3243 | - n := exp[0].evalI(c) | |
| 3244 | - if n > 3 { | |
| 3245 | - hd.teamside = 3 | |
| 3246 | - } else if n < 1 { | |
| 3247 | - hd.teamside = 1 | |
| 3248 | - } else { | |
| 3249 | - hd.teamside = int(n) | |
| 3250 | - } | |
| 3251 | 2951 | case hitDef_id: |
| 3252 | 2952 | hd.id = Max(0, exp[0].evalI(c)) |
| 3253 | 2953 | case hitDef_chainid: |
| @@ -3493,27 +3193,15 @@ func (sc hitDef) runSub(c *Char, hd *HitDef, id byte, exp []BytecodeExp) bool { | ||
| 3493 | 3193 | return true |
| 3494 | 3194 | } |
| 3495 | 3195 | func (sc hitDef) Run(c *Char, _ []int32) bool { |
| 3496 | - crun := c | |
| 3497 | - crun.hitdef.clear() | |
| 3498 | - crun.hitdef.playerNo = sys.workingState.playerNo | |
| 3499 | - crun.hitdef.sparkno = ^c.gi().data.sparkno | |
| 3500 | - crun.hitdef.guard_sparkno = ^c.gi().data.guard.sparkno | |
| 3196 | + c.hitdef.clear() | |
| 3197 | + c.hitdef.playerNo = sys.workingState.playerNo | |
| 3198 | + c.hitdef.sparkno = ^c.gi().data.sparkno | |
| 3199 | + c.hitdef.guard_sparkno = ^c.gi().data.guard.sparkno | |
| 3501 | 3200 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 3502 | - if id == hitDef_redirectid { | |
| 3503 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 3504 | - crun = rid | |
| 3505 | - crun.hitdef.clear() | |
| 3506 | - crun.hitdef.playerNo = sys.workingState.playerNo | |
| 3507 | - crun.hitdef.sparkno = ^c.gi().data.sparkno | |
| 3508 | - crun.hitdef.guard_sparkno = ^c.gi().data.guard.sparkno | |
| 3509 | - } else { | |
| 3510 | - return false | |
| 3511 | - } | |
| 3512 | - } | |
| 3513 | - sc.runSub(c, &crun.hitdef, id, exp) | |
| 3201 | + sc.runSub(c, &c.hitdef, id, exp) | |
| 3514 | 3202 | return true |
| 3515 | 3203 | }) |
| 3516 | - crun.setHitdefDefault(&crun.hitdef, false) | |
| 3204 | + c.setHitdefDefault(&c.hitdef, false) | |
| 3517 | 3205 | return false |
| 3518 | 3206 | } |
| 3519 | 3207 |
| @@ -3521,31 +3209,21 @@ type reversalDef hitDef | ||
| 3521 | 3209 | |
| 3522 | 3210 | const ( |
| 3523 | 3211 | reversalDef_reversal_attr = iota + hitDef_last + 1 |
| 3524 | - reversalDef_redirectid | |
| 3525 | 3212 | ) |
| 3526 | 3213 | |
| 3527 | 3214 | func (sc reversalDef) Run(c *Char, _ []int32) bool { |
| 3528 | - crun := c | |
| 3529 | - crun.hitdef.clear() | |
| 3530 | - crun.hitdef.playerNo = sys.workingState.playerNo | |
| 3215 | + c.hitdef.clear() | |
| 3216 | + c.hitdef.playerNo = sys.workingState.playerNo | |
| 3531 | 3217 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 3532 | 3218 | switch id { |
| 3533 | 3219 | case reversalDef_reversal_attr: |
| 3534 | - crun.hitdef.reversal_attr = exp[0].evalI(c) | |
| 3535 | - case reversalDef_redirectid: | |
| 3536 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 3537 | - crun = rid | |
| 3538 | - crun.hitdef.clear() | |
| 3539 | - crun.hitdef.playerNo = sys.workingState.playerNo | |
| 3540 | - } else { | |
| 3541 | - return false | |
| 3542 | - } | |
| 3220 | + c.hitdef.reversal_attr = exp[0].evalI(c) | |
| 3543 | 3221 | default: |
| 3544 | - hitDef(sc).runSub(c, &crun.hitdef, id, exp) | |
| 3222 | + hitDef(sc).runSub(c, &c.hitdef, id, exp) | |
| 3545 | 3223 | } |
| 3546 | 3224 | return true |
| 3547 | 3225 | }) |
| 3548 | - crun.setHitdefDefault(&crun.hitdef, false) | |
| 3226 | + c.setHitdefDefault(&c.hitdef, false) | |
| 3549 | 3227 | return false |
| 3550 | 3228 | } |
| 3551 | 3229 |
| @@ -3578,40 +3256,19 @@ const ( | ||
| 3578 | 3256 | projectile_pausemovetime |
| 3579 | 3257 | projectile_ownpal |
| 3580 | 3258 | projectile_remappal |
| 3581 | - projectile_redirectid | |
| 3582 | 3259 | ) |
| 3583 | 3260 | |
| 3584 | 3261 | func (sc projectile) Run(c *Char, _ []int32) bool { |
| 3585 | - crun := c | |
| 3586 | - var lclscround float32 = 1.0 | |
| 3587 | - var p *Projectile | |
| 3262 | + p := c.newProj() | |
| 3263 | + if p == nil { | |
| 3264 | + return false | |
| 3265 | + } | |
| 3266 | + p.hitdef.playerNo = sys.workingState.playerNo | |
| 3588 | 3267 | pt := PT_P1 |
| 3589 | 3268 | var x, y float32 = 0, 0 |
| 3590 | 3269 | op := false |
| 3591 | 3270 | rp := [...]int32{-1, 0} |
| 3592 | 3271 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 3593 | - if p == nil { | |
| 3594 | - if id == projectile_redirectid { | |
| 3595 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 3596 | - crun = rid | |
| 3597 | - lclscround = c.localscl / crun.localscl | |
| 3598 | - p = crun.newProj() | |
| 3599 | - if p == nil { | |
| 3600 | - return false | |
| 3601 | - } | |
| 3602 | - p.hitdef.playerNo = sys.workingState.playerNo | |
| 3603 | - | |
| 3604 | - } else { | |
| 3605 | - return false | |
| 3606 | - } | |
| 3607 | - } else { | |
| 3608 | - p = crun.newProj() | |
| 3609 | - if p == nil { | |
| 3610 | - return false | |
| 3611 | - } | |
| 3612 | - p.hitdef.playerNo = sys.workingState.playerNo | |
| 3613 | - } | |
| 3614 | - } | |
| 3615 | 3272 | switch id { |
| 3616 | 3273 | case projectile_postype: |
| 3617 | 3274 | pt = PosType(exp[0].evalI(c)) |
| @@ -3642,9 +3299,9 @@ func (sc projectile) Run(c *Char, _ []int32) bool { | ||
| 3642 | 3299 | case projectile_projcancelanim: |
| 3643 | 3300 | p.cancelanim = Max(-1, exp[0].evalI(c)) |
| 3644 | 3301 | case projectile_velocity: |
| 3645 | - p.velocity[0] = exp[0].evalF(c) * lclscround | |
| 3302 | + p.velocity[0] = exp[0].evalF(c) | |
| 3646 | 3303 | if len(exp) > 1 { |
| 3647 | - p.velocity[1] = exp[1].evalF(c) * lclscround | |
| 3304 | + p.velocity[1] = exp[1].evalF(c) | |
| 3648 | 3305 | } |
| 3649 | 3306 | case projectile_velmul: |
| 3650 | 3307 | p.velmul[0] = exp[0].evalF(c) |
| @@ -3652,14 +3309,14 @@ func (sc projectile) Run(c *Char, _ []int32) bool { | ||
| 3652 | 3309 | p.velmul[1] = exp[1].evalF(c) |
| 3653 | 3310 | } |
| 3654 | 3311 | case projectile_remvelocity: |
| 3655 | - p.remvelocity[0] = exp[0].evalF(c) * lclscround | |
| 3312 | + p.remvelocity[0] = exp[0].evalF(c) | |
| 3656 | 3313 | if len(exp) > 1 { |
| 3657 | - p.remvelocity[1] = exp[1].evalF(c) * lclscround | |
| 3314 | + p.remvelocity[1] = exp[1].evalF(c) | |
| 3658 | 3315 | } |
| 3659 | 3316 | case projectile_accel: |
| 3660 | - p.accel[0] = exp[0].evalF(c) * lclscround | |
| 3317 | + p.accel[0] = exp[0].evalF(c) | |
| 3661 | 3318 | if len(exp) > 1 { |
| 3662 | - p.accel[1] = exp[1].evalF(c) * lclscround | |
| 3319 | + p.accel[1] = exp[1].evalF(c) | |
| 3663 | 3320 | } |
| 3664 | 3321 | case projectile_projscale: |
| 3665 | 3322 | p.scale[0] = exp[0].evalF(c) |
| @@ -3667,20 +3324,20 @@ func (sc projectile) Run(c *Char, _ []int32) bool { | ||
| 3667 | 3324 | p.scale[1] = exp[1].evalF(c) |
| 3668 | 3325 | } |
| 3669 | 3326 | case projectile_offset: |
| 3670 | - x = exp[0].evalF(c) * lclscround | |
| 3327 | + x = exp[0].evalF(c) | |
| 3671 | 3328 | if len(exp) > 1 { |
| 3672 | - y = exp[1].evalF(c) * lclscround | |
| 3329 | + y = exp[1].evalF(c) | |
| 3673 | 3330 | } |
| 3674 | 3331 | case projectile_projsprpriority: |
| 3675 | 3332 | p.sprpriority = exp[0].evalI(c) |
| 3676 | 3333 | case projectile_projstagebound: |
| 3677 | - p.stagebound = int32(float32(exp[0].evalI(c)) * lclscround) | |
| 3334 | + p.stagebound = exp[0].evalI(c) | |
| 3678 | 3335 | case projectile_projedgebound: |
| 3679 | - p.edgebound = int32(float32(exp[0].evalI(c)) * lclscround) | |
| 3336 | + p.edgebound = exp[0].evalI(c) | |
| 3680 | 3337 | case projectile_projheightbound: |
| 3681 | - p.heightbound[0] = int32(float32(exp[0].evalI(c)) * lclscround) | |
| 3338 | + p.heightbound[0] = exp[0].evalI(c) | |
| 3682 | 3339 | if len(exp) > 1 { |
| 3683 | - p.heightbound[1] = int32(float32(exp[1].evalI(c)) * lclscround) | |
| 3340 | + p.heightbound[1] = exp[1].evalI(c) | |
| 3684 | 3341 | } |
| 3685 | 3342 | case projectile_projanim: |
| 3686 | 3343 | p.anim = exp[0].evalI(c) |
| @@ -3702,10 +3359,7 @@ func (sc projectile) Run(c *Char, _ []int32) bool { | ||
| 3702 | 3359 | } |
| 3703 | 3360 | return true |
| 3704 | 3361 | }) |
| 3705 | - if p == nil { | |
| 3706 | - return false | |
| 3707 | - } | |
| 3708 | - crun.setHitdefDefault(&p.hitdef, true) | |
| 3362 | + c.setHitdefDefault(&p.hitdef, true) | |
| 3709 | 3363 | if p.remanim == IErr { |
| 3710 | 3364 | p.remanim = p.hitanim |
| 3711 | 3365 | } |
| @@ -3715,12 +3369,7 @@ func (sc projectile) Run(c *Char, _ []int32) bool { | ||
| 3715 | 3369 | if p.aimg.time != 0 { |
| 3716 | 3370 | p.aimg.setupPalFX() |
| 3717 | 3371 | } |
| 3718 | - if crun.minus == -2 { | |
| 3719 | - p.localscl = (320 / float32(crun.localcoord)) | |
| 3720 | - } else { | |
| 3721 | - p.localscl = crun.localscl | |
| 3722 | - } | |
| 3723 | - crun.projInit(p, pt, x, y, op, rp[0], rp[1]) | |
| 3372 | + c.projInit(p, pt, x, y, op, rp[0], rp[1]) | |
| 3724 | 3373 | return false |
| 3725 | 3374 | } |
| 3726 | 3375 |
| @@ -3730,39 +3379,29 @@ const ( | ||
| 3730 | 3379 | width_edge byte = iota |
| 3731 | 3380 | width_player |
| 3732 | 3381 | width_value |
| 3733 | - width_redirectid | |
| 3734 | 3382 | ) |
| 3735 | 3383 | |
| 3736 | 3384 | func (sc width) Run(c *Char, _ []int32) bool { |
| 3737 | - crun := c | |
| 3738 | - var lclscround float32 = 1.0 | |
| 3739 | 3385 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 3740 | 3386 | switch id { |
| 3741 | 3387 | case width_edge: |
| 3742 | - crun.setFEdge(exp[0].evalF(c) * lclscround) | |
| 3388 | + c.setFEdge(exp[0].evalF(c)) | |
| 3743 | 3389 | if len(exp) > 1 { |
| 3744 | - crun.setBEdge(exp[1].evalF(c) * lclscround) | |
| 3390 | + c.setBEdge(exp[1].evalF(c)) | |
| 3745 | 3391 | } |
| 3746 | 3392 | case width_player: |
| 3747 | - crun.setFWidth(exp[0].evalF(c) * lclscround) | |
| 3393 | + c.setFWidth(exp[0].evalF(c)) | |
| 3748 | 3394 | if len(exp) > 1 { |
| 3749 | - crun.setBWidth(exp[1].evalF(c) * lclscround) | |
| 3395 | + c.setBWidth(exp[1].evalF(c)) | |
| 3750 | 3396 | } |
| 3751 | 3397 | case width_value: |
| 3752 | - v1 := exp[0].evalF(c) * lclscround | |
| 3753 | - crun.setFEdge(v1) | |
| 3754 | - crun.setFWidth(v1) | |
| 3398 | + v1 := exp[0].evalF(c) | |
| 3399 | + c.setFEdge(v1) | |
| 3400 | + c.setFWidth(v1) | |
| 3755 | 3401 | if len(exp) > 1 { |
| 3756 | - v2 := exp[1].evalF(c) * lclscround | |
| 3757 | - crun.setBEdge(v2) | |
| 3758 | - crun.setBWidth(v2) | |
| 3759 | - } | |
| 3760 | - case width_redirectid: | |
| 3761 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 3762 | - crun = rid | |
| 3763 | - lclscround = (320 / float32(c.localcoord)) / (320 / float32(crun.localcoord)) | |
| 3764 | - } else { | |
| 3765 | - return false | |
| 3402 | + v2 := exp[1].evalF(c) | |
| 3403 | + c.setBEdge(v2) | |
| 3404 | + c.setBWidth(v2) | |
| 3766 | 3405 | } |
| 3767 | 3406 | } |
| 3768 | 3407 | return true |
| @@ -3774,21 +3413,13 @@ type sprPriority StateControllerBase | ||
| 3774 | 3413 | |
| 3775 | 3414 | const ( |
| 3776 | 3415 | sprPriority_value byte = iota |
| 3777 | - sprPriority_redirectid | |
| 3778 | 3416 | ) |
| 3779 | 3417 | |
| 3780 | 3418 | func (sc sprPriority) Run(c *Char, _ []int32) bool { |
| 3781 | - crun := c | |
| 3782 | 3419 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 3783 | 3420 | switch id { |
| 3784 | 3421 | case sprPriority_value: |
| 3785 | - crun.setSprPriority(exp[0].evalI(c)) | |
| 3786 | - case sprPriority_redirectid: | |
| 3787 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 3788 | - crun = rid | |
| 3789 | - } else { | |
| 3790 | - return false | |
| 3791 | - } | |
| 3422 | + c.setSprPriority(exp[0].evalI(c)) | |
| 3792 | 3423 | } |
| 3793 | 3424 | return true |
| 3794 | 3425 | }) |
| @@ -3799,21 +3430,13 @@ type varSet StateControllerBase | ||
| 3799 | 3430 | |
| 3800 | 3431 | const ( |
| 3801 | 3432 | varSet_ byte = iota |
| 3802 | - varSet_redirectid | |
| 3803 | 3433 | ) |
| 3804 | 3434 | |
| 3805 | 3435 | func (sc varSet) Run(c *Char, _ []int32) bool { |
| 3806 | - crun := c | |
| 3807 | 3436 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 3808 | 3437 | switch id { |
| 3809 | 3438 | case varSet_: |
| 3810 | - exp[0].run(crun) | |
| 3811 | - case varSet_redirectid: | |
| 3812 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 3813 | - crun = rid | |
| 3814 | - } else { | |
| 3815 | - return false | |
| 3816 | - } | |
| 3439 | + exp[0].run(c) | |
| 3817 | 3440 | } |
| 3818 | 3441 | return true |
| 3819 | 3442 | }) |
| @@ -3824,21 +3447,13 @@ type turn StateControllerBase | ||
| 3824 | 3447 | |
| 3825 | 3448 | const ( |
| 3826 | 3449 | turn_ byte = iota |
| 3827 | - turn_redirectid | |
| 3828 | 3450 | ) |
| 3829 | 3451 | |
| 3830 | 3452 | func (sc turn) Run(c *Char, _ []int32) bool { |
| 3831 | - crun := c | |
| 3832 | 3453 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 3833 | 3454 | switch id { |
| 3834 | 3455 | case turn_: |
| 3835 | - crun.setFacing(-crun.facing) | |
| 3836 | - case turn_redirectid: | |
| 3837 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 3838 | - crun = rid | |
| 3839 | - } else { | |
| 3840 | - return false | |
| 3841 | - } | |
| 3456 | + c.setFacing(-c.facing) | |
| 3842 | 3457 | } |
| 3843 | 3458 | return true |
| 3844 | 3459 | }) |
| @@ -3850,41 +3465,25 @@ type targetFacing StateControllerBase | ||
| 3850 | 3465 | const ( |
| 3851 | 3466 | targetFacing_id byte = iota |
| 3852 | 3467 | targetFacing_value |
| 3853 | - targetFacing_redirectid | |
| 3854 | 3468 | ) |
| 3855 | 3469 | |
| 3856 | 3470 | func (sc targetFacing) Run(c *Char, _ []int32) bool { |
| 3857 | - crun := c | |
| 3858 | - tar := crun.getTarget(-1) | |
| 3471 | + tar := c.getTarget(-1) | |
| 3472 | + if len(tar) == 0 { | |
| 3473 | + return false | |
| 3474 | + } | |
| 3859 | 3475 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 3860 | 3476 | switch id { |
| 3861 | 3477 | case targetFacing_id: |
| 3478 | + tar = c.getTarget(exp[0].evalI(c)) | |
| 3862 | 3479 | if len(tar) == 0 { |
| 3863 | 3480 | return false |
| 3864 | 3481 | } |
| 3865 | - tar = crun.getTarget(exp[0].evalI(c)) | |
| 3866 | 3482 | case targetFacing_value: |
| 3867 | - if len(tar) == 0 { | |
| 3868 | - return false | |
| 3869 | - } | |
| 3870 | - crun.targetFacing(tar, exp[0].evalI(c)) | |
| 3871 | - case targetFacing_redirectid: | |
| 3872 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 3873 | - crun = rid | |
| 3874 | - tar = crun.getTarget(-1) | |
| 3875 | - if len(tar) == 0 { | |
| 3876 | - return false | |
| 3877 | - } | |
| 3878 | - } else { | |
| 3879 | - return false | |
| 3880 | - } | |
| 3881 | - | |
| 3483 | + c.targetFacing(tar, exp[0].evalI(c)) | |
| 3882 | 3484 | } |
| 3883 | 3485 | return true |
| 3884 | 3486 | }) |
| 3885 | - if len(tar) == 0 { | |
| 3886 | - return false | |
| 3887 | - } | |
| 3888 | 3487 | return false |
| 3889 | 3488 | } |
| 3890 | 3489 |
| @@ -3894,48 +3493,33 @@ const ( | ||
| 3894 | 3493 | targetBind_id byte = iota |
| 3895 | 3494 | targetBind_time |
| 3896 | 3495 | targetBind_pos |
| 3897 | - targetBind_redirectid | |
| 3898 | 3496 | ) |
| 3899 | 3497 | |
| 3900 | 3498 | func (sc targetBind) Run(c *Char, _ []int32) bool { |
| 3901 | - crun := c | |
| 3902 | - var lclscround float32 = 1.0 | |
| 3903 | - tar := crun.getTarget(-1) | |
| 3499 | + tar := c.getTarget(-1) | |
| 3500 | + if len(tar) == 0 { | |
| 3501 | + return false | |
| 3502 | + } | |
| 3904 | 3503 | t := int32(1) |
| 3905 | 3504 | var x, y float32 = 0, 0 |
| 3906 | 3505 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 3907 | 3506 | switch id { |
| 3908 | 3507 | case targetBind_id: |
| 3508 | + tar = c.getTarget(exp[0].evalI(c)) | |
| 3909 | 3509 | if len(tar) == 0 { |
| 3910 | 3510 | return false |
| 3911 | 3511 | } |
| 3912 | - tar = crun.getTarget(exp[0].evalI(c)) | |
| 3913 | 3512 | case targetBind_time: |
| 3914 | 3513 | t = exp[0].evalI(c) |
| 3915 | 3514 | case targetBind_pos: |
| 3916 | - x = exp[0].evalF(c) * lclscround | |
| 3515 | + x = exp[0].evalF(c) | |
| 3917 | 3516 | if len(exp) > 1 { |
| 3918 | - y = exp[1].evalF(c) * lclscround | |
| 3919 | - } | |
| 3920 | - case targetBind_redirectid: | |
| 3921 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 3922 | - crun = rid | |
| 3923 | - lclscround = c.localscl / crun.localscl | |
| 3924 | - tar = crun.getTarget(-1) | |
| 3925 | - if len(tar) == 0 { | |
| 3926 | - return false | |
| 3927 | - } | |
| 3928 | - } else { | |
| 3929 | - return false | |
| 3517 | + y = exp[1].evalF(c) | |
| 3930 | 3518 | } |
| 3931 | - | |
| 3932 | 3519 | } |
| 3933 | 3520 | return true |
| 3934 | 3521 | }) |
| 3935 | - if len(tar) == 0 { | |
| 3936 | - return false | |
| 3937 | - } | |
| 3938 | - crun.targetBind(tar, t, x, y) | |
| 3522 | + c.targetBind(tar, t, x, y) | |
| 3939 | 3523 | return false |
| 3940 | 3524 | } |
| 3941 | 3525 |
| @@ -3945,49 +3529,35 @@ const ( | ||
| 3945 | 3529 | bindToTarget_id byte = iota |
| 3946 | 3530 | bindToTarget_time |
| 3947 | 3531 | bindToTarget_pos |
| 3948 | - bindToTarget_redirectid | |
| 3949 | 3532 | ) |
| 3950 | 3533 | |
| 3951 | 3534 | func (sc bindToTarget) Run(c *Char, _ []int32) bool { |
| 3952 | - crun := c | |
| 3953 | - var lclscround float32 = 1.0 | |
| 3954 | - tar := crun.getTarget(-1) | |
| 3535 | + tar := c.getTarget(-1) | |
| 3536 | + if len(tar) == 0 { | |
| 3537 | + return false | |
| 3538 | + } | |
| 3955 | 3539 | t, x, y, hmf := int32(1), float32(0), float32(math.NaN()), HMF_F |
| 3956 | 3540 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 3957 | 3541 | switch id { |
| 3958 | 3542 | case bindToTarget_id: |
| 3543 | + tar = c.getTarget(exp[0].evalI(c)) | |
| 3959 | 3544 | if len(tar) == 0 { |
| 3960 | 3545 | return false |
| 3961 | 3546 | } |
| 3962 | - tar = crun.getTarget(exp[0].evalI(c)) | |
| 3963 | 3547 | case bindToTarget_time: |
| 3964 | 3548 | t = exp[0].evalI(c) |
| 3965 | 3549 | case bindToTarget_pos: |
| 3966 | - x = exp[0].evalF(c) * lclscround | |
| 3550 | + x = exp[0].evalF(c) | |
| 3967 | 3551 | if len(exp) > 1 { |
| 3968 | - y = exp[1].evalF(c) * lclscround | |
| 3552 | + y = exp[1].evalF(c) | |
| 3969 | 3553 | if len(exp) > 2 { |
| 3970 | 3554 | hmf = HMF(exp[2].evalI(c)) |
| 3971 | 3555 | } |
| 3972 | 3556 | } |
| 3973 | - case bindToTarget_redirectid: | |
| 3974 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 3975 | - crun = rid | |
| 3976 | - lclscround = c.localscl / crun.localscl | |
| 3977 | - tar = crun.getTarget(-1) | |
| 3978 | - if len(tar) == 0 { | |
| 3979 | - return false | |
| 3980 | - } | |
| 3981 | - } else { | |
| 3982 | - return false | |
| 3983 | - } | |
| 3984 | 3557 | } |
| 3985 | 3558 | return true |
| 3986 | 3559 | }) |
| 3987 | - if len(tar) == 0 { | |
| 3988 | - return false | |
| 3989 | - } | |
| 3990 | - crun.bindToTarget(tar, t, x, y, hmf) | |
| 3560 | + c.bindToTarget(tar, t, x, y, hmf) | |
| 3991 | 3561 | return false |
| 3992 | 3562 | } |
| 3993 | 3563 |
| @@ -3998,38 +3568,26 @@ const ( | ||
| 3998 | 3568 | targetLifeAdd_absolute |
| 3999 | 3569 | targetLifeAdd_kill |
| 4000 | 3570 | targetLifeAdd_value |
| 4001 | - targetLifeAdd_redirectid | |
| 4002 | 3571 | ) |
| 4003 | 3572 | |
| 4004 | 3573 | func (sc targetLifeAdd) Run(c *Char, _ []int32) bool { |
| 4005 | - crun := c | |
| 4006 | - tar, a, k := crun.getTarget(-1), false, true | |
| 3574 | + tar, a, k := c.getTarget(-1), false, true | |
| 3575 | + if len(tar) == 0 { | |
| 3576 | + return false | |
| 3577 | + } | |
| 4007 | 3578 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4008 | 3579 | switch id { |
| 4009 | 3580 | case targetLifeAdd_id: |
| 3581 | + tar = c.getTarget(exp[0].evalI(c)) | |
| 4010 | 3582 | if len(tar) == 0 { |
| 4011 | 3583 | return false |
| 4012 | 3584 | } |
| 4013 | - tar = crun.getTarget(exp[0].evalI(c)) | |
| 4014 | 3585 | case targetLifeAdd_absolute: |
| 4015 | 3586 | a = exp[0].evalB(c) |
| 4016 | 3587 | case targetLifeAdd_kill: |
| 4017 | 3588 | k = exp[0].evalB(c) |
| 4018 | 3589 | case targetLifeAdd_value: |
| 4019 | - if len(tar) == 0 { | |
| 4020 | - return false | |
| 4021 | - } | |
| 4022 | - crun.targetLifeAdd(tar, exp[0].evalI(c), k, a) | |
| 4023 | - case targetLifeAdd_redirectid: | |
| 4024 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4025 | - crun = rid | |
| 4026 | - tar = crun.getTarget(-1) | |
| 4027 | - if len(tar) == 0 { | |
| 4028 | - return false | |
| 4029 | - } | |
| 4030 | - } else { | |
| 4031 | - return false | |
| 4032 | - } | |
| 3590 | + c.targetLifeAdd(tar, exp[0].evalI(c), k, a) | |
| 4033 | 3591 | } |
| 4034 | 3592 | return true |
| 4035 | 3593 | }) |
| @@ -4041,34 +3599,22 @@ type targetState StateControllerBase | ||
| 4041 | 3599 | const ( |
| 4042 | 3600 | targetState_id byte = iota |
| 4043 | 3601 | targetState_value |
| 4044 | - targetState_redirectid | |
| 4045 | 3602 | ) |
| 4046 | 3603 | |
| 4047 | 3604 | func (sc targetState) Run(c *Char, _ []int32) bool { |
| 4048 | - crun := c | |
| 4049 | - tar := crun.getTarget(-1) | |
| 3605 | + tar := c.getTarget(-1) | |
| 3606 | + if len(tar) == 0 { | |
| 3607 | + return false | |
| 3608 | + } | |
| 4050 | 3609 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4051 | 3610 | switch id { |
| 4052 | 3611 | case targetState_id: |
| 3612 | + tar = c.getTarget(exp[0].evalI(c)) | |
| 4053 | 3613 | if len(tar) == 0 { |
| 4054 | 3614 | return false |
| 4055 | 3615 | } |
| 4056 | - tar = crun.getTarget(exp[0].evalI(c)) | |
| 4057 | 3616 | case targetState_value: |
| 4058 | - if len(tar) == 0 { | |
| 4059 | - return false | |
| 4060 | - } | |
| 4061 | - crun.targetState(tar, exp[0].evalI(c)) | |
| 4062 | - case targetState_redirectid: | |
| 4063 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4064 | - crun = rid | |
| 4065 | - tar = crun.getTarget(-1) | |
| 4066 | - if len(tar) == 0 { | |
| 4067 | - return false | |
| 4068 | - } | |
| 4069 | - } else { | |
| 4070 | - return false | |
| 4071 | - } | |
| 3617 | + c.targetState(tar, exp[0].evalI(c)) | |
| 4072 | 3618 | } |
| 4073 | 3619 | return true |
| 4074 | 3620 | }) |
| @@ -4081,41 +3627,24 @@ const ( | ||
| 4081 | 3627 | targetVelSet_id byte = iota |
| 4082 | 3628 | targetVelSet_x |
| 4083 | 3629 | targetVelSet_y |
| 4084 | - targetVelSet_redirectid | |
| 4085 | 3630 | ) |
| 4086 | 3631 | |
| 4087 | 3632 | func (sc targetVelSet) Run(c *Char, _ []int32) bool { |
| 4088 | - crun := c | |
| 4089 | - var lclscround float32 = 1.0 | |
| 4090 | - tar := crun.getTarget(-1) | |
| 3633 | + tar := c.getTarget(-1) | |
| 3634 | + if len(tar) == 0 { | |
| 3635 | + return false | |
| 3636 | + } | |
| 4091 | 3637 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4092 | 3638 | switch id { |
| 4093 | 3639 | case targetVelSet_id: |
| 3640 | + tar = c.getTarget(exp[0].evalI(c)) | |
| 4094 | 3641 | if len(tar) == 0 { |
| 4095 | 3642 | return false |
| 4096 | 3643 | } |
| 4097 | - tar = crun.getTarget(exp[0].evalI(c)) | |
| 4098 | 3644 | case targetVelSet_x: |
| 4099 | - if len(tar) == 0 { | |
| 4100 | - return false | |
| 4101 | - } | |
| 4102 | - crun.targetVelSetX(tar, exp[0].evalF(c)*lclscround) | |
| 3645 | + c.targetVelSetX(tar, exp[0].evalF(c)) | |
| 4103 | 3646 | case targetVelSet_y: |
| 4104 | - if len(tar) == 0 { | |
| 4105 | - return false | |
| 4106 | - } | |
| 4107 | - crun.targetVelSetY(tar, exp[0].evalF(c)*lclscround) | |
| 4108 | - case targetVelSet_redirectid: | |
| 4109 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4110 | - crun = rid | |
| 4111 | - lclscround = c.localscl / crun.localscl | |
| 4112 | - tar = crun.getTarget(-1) | |
| 4113 | - if len(tar) == 0 { | |
| 4114 | - return false | |
| 4115 | - } | |
| 4116 | - } else { | |
| 4117 | - return false | |
| 4118 | - } | |
| 3647 | + c.targetVelSetY(tar, exp[0].evalF(c)) | |
| 4119 | 3648 | } |
| 4120 | 3649 | return true |
| 4121 | 3650 | }) |
| @@ -4128,41 +3657,24 @@ const ( | ||
| 4128 | 3657 | targetVelAdd_id byte = iota |
| 4129 | 3658 | targetVelAdd_x |
| 4130 | 3659 | targetVelAdd_y |
| 4131 | - targetVelAdd_redirectid | |
| 4132 | 3660 | ) |
| 4133 | 3661 | |
| 4134 | 3662 | func (sc targetVelAdd) Run(c *Char, _ []int32) bool { |
| 4135 | - crun := c | |
| 4136 | - var lclscround float32 = 1.0 | |
| 4137 | - tar := crun.getTarget(-1) | |
| 3663 | + tar := c.getTarget(-1) | |
| 3664 | + if len(tar) == 0 { | |
| 3665 | + return false | |
| 3666 | + } | |
| 4138 | 3667 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4139 | 3668 | switch id { |
| 4140 | 3669 | case targetVelAdd_id: |
| 3670 | + tar = c.getTarget(exp[0].evalI(c)) | |
| 4141 | 3671 | if len(tar) == 0 { |
| 4142 | 3672 | return false |
| 4143 | 3673 | } |
| 4144 | - tar = crun.getTarget(exp[0].evalI(c)) | |
| 4145 | 3674 | case targetVelAdd_x: |
| 4146 | - if len(tar) == 0 { | |
| 4147 | - return false | |
| 4148 | - } | |
| 4149 | - crun.targetVelAddX(tar, exp[0].evalF(c)*lclscround) | |
| 3675 | + c.targetVelAddX(tar, exp[0].evalF(c)) | |
| 4150 | 3676 | case targetVelAdd_y: |
| 4151 | - if len(tar) == 0 { | |
| 4152 | - return false | |
| 4153 | - } | |
| 4154 | - crun.targetVelAddY(tar, exp[0].evalF(c)*lclscround) | |
| 4155 | - case targetVelAdd_redirectid: | |
| 4156 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4157 | - crun = rid | |
| 4158 | - lclscround = c.localscl / crun.localscl | |
| 4159 | - tar = crun.getTarget(-1) | |
| 4160 | - if len(tar) == 0 { | |
| 4161 | - return false | |
| 4162 | - } | |
| 4163 | - } else { | |
| 4164 | - return false | |
| 4165 | - } | |
| 3677 | + c.targetVelAddY(tar, exp[0].evalF(c)) | |
| 4166 | 3678 | } |
| 4167 | 3679 | return true |
| 4168 | 3680 | }) |
| @@ -4174,34 +3686,22 @@ type targetPowerAdd StateControllerBase | ||
| 4174 | 3686 | const ( |
| 4175 | 3687 | targetPowerAdd_id byte = iota |
| 4176 | 3688 | targetPowerAdd_value |
| 4177 | - targetPowerAdd_redirectid | |
| 4178 | 3689 | ) |
| 4179 | 3690 | |
| 4180 | 3691 | func (sc targetPowerAdd) Run(c *Char, _ []int32) bool { |
| 4181 | - crun := c | |
| 4182 | - tar := crun.getTarget(-1) | |
| 3692 | + tar := c.getTarget(-1) | |
| 3693 | + if len(tar) == 0 { | |
| 3694 | + return false | |
| 3695 | + } | |
| 4183 | 3696 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4184 | 3697 | switch id { |
| 4185 | 3698 | case targetPowerAdd_id: |
| 3699 | + tar = c.getTarget(exp[0].evalI(c)) | |
| 4186 | 3700 | if len(tar) == 0 { |
| 4187 | 3701 | return false |
| 4188 | 3702 | } |
| 4189 | - tar = crun.getTarget(exp[0].evalI(c)) | |
| 4190 | 3703 | case targetPowerAdd_value: |
| 4191 | - if len(tar) == 0 { | |
| 4192 | - return false | |
| 4193 | - } | |
| 4194 | - crun.targetPowerAdd(tar, exp[0].evalI(c)) | |
| 4195 | - case targetPowerAdd_redirectid: | |
| 4196 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4197 | - crun = rid | |
| 4198 | - tar = crun.getTarget(-1) | |
| 4199 | - if len(tar) == 0 { | |
| 4200 | - return false | |
| 4201 | - } | |
| 4202 | - } else { | |
| 4203 | - return false | |
| 4204 | - } | |
| 3704 | + c.targetPowerAdd(tar, exp[0].evalI(c)) | |
| 4205 | 3705 | } |
| 4206 | 3706 | return true |
| 4207 | 3707 | }) |
| @@ -4213,35 +3713,23 @@ type targetDrop StateControllerBase | ||
| 4213 | 3713 | const ( |
| 4214 | 3714 | targetDrop_excludeid byte = iota |
| 4215 | 3715 | targetDrop_keepone |
| 4216 | - targetDrop_redirectid | |
| 4217 | 3716 | ) |
| 4218 | 3717 | |
| 4219 | 3718 | func (sc targetDrop) Run(c *Char, _ []int32) bool { |
| 4220 | - crun := c | |
| 4221 | - tar, eid, ko := crun.getTarget(-1), int32(-1), true | |
| 3719 | + tar, eid, ko := c.getTarget(-1), int32(-1), true | |
| 3720 | + if len(tar) == 0 { | |
| 3721 | + return false | |
| 3722 | + } | |
| 4222 | 3723 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4223 | 3724 | switch id { |
| 4224 | 3725 | case targetDrop_excludeid: |
| 4225 | 3726 | eid = exp[0].evalI(c) |
| 4226 | 3727 | case targetDrop_keepone: |
| 4227 | 3728 | ko = exp[0].evalB(c) |
| 4228 | - case targetDrop_redirectid: | |
| 4229 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4230 | - crun = rid | |
| 4231 | - tar = crun.getTarget(-1) | |
| 4232 | - if len(tar) == 0 { | |
| 4233 | - return false | |
| 4234 | - } | |
| 4235 | - } else { | |
| 4236 | - return false | |
| 4237 | - } | |
| 4238 | 3729 | } |
| 4239 | 3730 | return true |
| 4240 | 3731 | }) |
| 4241 | - if len(tar) == 0 { | |
| 4242 | - return false | |
| 4243 | - } | |
| 4244 | - crun.targetDrop(eid, ko) | |
| 3732 | + c.targetDrop(eid, ko) | |
| 4245 | 3733 | return false |
| 4246 | 3734 | } |
| 4247 | 3735 |
| @@ -4251,12 +3739,10 @@ const ( | ||
| 4251 | 3739 | lifeAdd_absolute byte = iota |
| 4252 | 3740 | lifeAdd_kill |
| 4253 | 3741 | lifeAdd_value |
| 4254 | - lifeAdd_redirectid | |
| 4255 | 3742 | ) |
| 4256 | 3743 | |
| 4257 | 3744 | func (sc lifeAdd) Run(c *Char, _ []int32) bool { |
| 4258 | 3745 | a, k := false, true |
| 4259 | - crun := c | |
| 4260 | 3746 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4261 | 3747 | switch id { |
| 4262 | 3748 | case lifeAdd_absolute: |
| @@ -4264,13 +3750,7 @@ func (sc lifeAdd) Run(c *Char, _ []int32) bool { | ||
| 4264 | 3750 | case lifeAdd_kill: |
| 4265 | 3751 | k = exp[0].evalB(c) |
| 4266 | 3752 | case lifeAdd_value: |
| 4267 | - crun.lifeAdd(float64(exp[0].evalI(c)), k, a) | |
| 4268 | - case lifeAdd_redirectid: | |
| 4269 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4270 | - crun = rid | |
| 4271 | - } else { | |
| 4272 | - return false | |
| 4273 | - } | |
| 3753 | + c.lifeAdd(float64(exp[0].evalI(c)), k, a) | |
| 4274 | 3754 | } |
| 4275 | 3755 | return true |
| 4276 | 3756 | }) |
| @@ -4281,21 +3761,13 @@ type lifeSet StateControllerBase | ||
| 4281 | 3761 | |
| 4282 | 3762 | const ( |
| 4283 | 3763 | lifeSet_value byte = iota |
| 4284 | - lifeSet_redirectid | |
| 4285 | 3764 | ) |
| 4286 | 3765 | |
| 4287 | 3766 | func (sc lifeSet) Run(c *Char, _ []int32) bool { |
| 4288 | - crun := c | |
| 4289 | 3767 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4290 | 3768 | switch id { |
| 4291 | 3769 | case lifeSet_value: |
| 4292 | - crun.lifeSet(exp[0].evalI(c)) | |
| 4293 | - case lifeSet_redirectid: | |
| 4294 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4295 | - crun = rid | |
| 4296 | - } else { | |
| 4297 | - return false | |
| 4298 | - } | |
| 3770 | + c.lifeSet(exp[0].evalI(c)) | |
| 4299 | 3771 | } |
| 4300 | 3772 | return true |
| 4301 | 3773 | }) |
| @@ -4306,21 +3778,13 @@ type powerAdd StateControllerBase | ||
| 4306 | 3778 | |
| 4307 | 3779 | const ( |
| 4308 | 3780 | powerAdd_value byte = iota |
| 4309 | - powerAdd_redirectid | |
| 4310 | 3781 | ) |
| 4311 | 3782 | |
| 4312 | 3783 | func (sc powerAdd) Run(c *Char, _ []int32) bool { |
| 4313 | - crun := c | |
| 4314 | 3784 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4315 | 3785 | switch id { |
| 4316 | 3786 | case powerAdd_value: |
| 4317 | - crun.powerAdd(exp[0].evalI(c)) | |
| 4318 | - case powerAdd_redirectid: | |
| 4319 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4320 | - crun = rid | |
| 4321 | - } else { | |
| 4322 | - return false | |
| 4323 | - } | |
| 3787 | + c.powerAdd(exp[0].evalI(c)) | |
| 4324 | 3788 | } |
| 4325 | 3789 | return true |
| 4326 | 3790 | }) |
| @@ -4331,21 +3795,13 @@ type powerSet StateControllerBase | ||
| 4331 | 3795 | |
| 4332 | 3796 | const ( |
| 4333 | 3797 | powerSet_value byte = iota |
| 4334 | - powerSet_redirectid | |
| 4335 | 3798 | ) |
| 4336 | 3799 | |
| 4337 | 3800 | func (sc powerSet) Run(c *Char, _ []int32) bool { |
| 4338 | - crun := c | |
| 4339 | 3801 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4340 | 3802 | switch id { |
| 4341 | 3803 | case powerSet_value: |
| 4342 | - crun.powerSet(exp[0].evalI(c)) | |
| 4343 | - case powerSet_redirectid: | |
| 4344 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4345 | - crun = rid | |
| 4346 | - } else { | |
| 4347 | - return false | |
| 4348 | - } | |
| 3804 | + c.powerSet(exp[0].evalI(c)) | |
| 4349 | 3805 | } |
| 4350 | 3806 | return true |
| 4351 | 3807 | }) |
| @@ -4357,26 +3813,18 @@ type hitVelSet StateControllerBase | ||
| 4357 | 3813 | const ( |
| 4358 | 3814 | hitVelSet_x byte = iota |
| 4359 | 3815 | hitVelSet_y |
| 4360 | - hitVelSet_redirectid | |
| 4361 | 3816 | ) |
| 4362 | 3817 | |
| 4363 | 3818 | func (sc hitVelSet) Run(c *Char, _ []int32) bool { |
| 4364 | - crun := c | |
| 4365 | 3819 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4366 | 3820 | switch id { |
| 4367 | 3821 | case hitVelSet_x: |
| 4368 | 3822 | if exp[0].evalB(c) { |
| 4369 | - crun.hitVelSetX() | |
| 3823 | + c.hitVelSetX() | |
| 4370 | 3824 | } |
| 4371 | 3825 | case hitVelSet_y: |
| 4372 | 3826 | if exp[0].evalB(c) { |
| 4373 | - crun.hitVelSetY() | |
| 4374 | - } | |
| 4375 | - case hitVelSet_redirectid: | |
| 4376 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4377 | - crun = rid | |
| 4378 | - } else { | |
| 4379 | - return false | |
| 3827 | + c.hitVelSetY() | |
| 4380 | 3828 | } |
| 4381 | 3829 | } |
| 4382 | 3830 | return true |
| @@ -4389,38 +3837,30 @@ type screenBound StateControllerBase | ||
| 4389 | 3837 | const ( |
| 4390 | 3838 | screenBound_value byte = iota |
| 4391 | 3839 | screenBound_movecamera |
| 4392 | - screenBound_redirectid | |
| 4393 | 3840 | ) |
| 4394 | 3841 | |
| 4395 | 3842 | func (sc screenBound) Run(c *Char, _ []int32) bool { |
| 4396 | - crun := c | |
| 4397 | 3843 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4398 | 3844 | switch id { |
| 4399 | 3845 | case screenBound_value: |
| 4400 | 3846 | if exp[0].evalB(c) { |
| 4401 | - crun.setSF(CSF_screenbound) | |
| 3847 | + c.setSF(CSF_screenbound) | |
| 4402 | 3848 | } else { |
| 4403 | - crun.unsetSF(CSF_screenbound) | |
| 3849 | + c.unsetSF(CSF_screenbound) | |
| 4404 | 3850 | } |
| 4405 | 3851 | case screenBound_movecamera: |
| 4406 | 3852 | if exp[0].evalB(c) { |
| 4407 | - crun.setSF(CSF_movecamera_x) | |
| 3853 | + c.setSF(CSF_movecamera_x) | |
| 4408 | 3854 | } else { |
| 4409 | - crun.unsetSF(CSF_movecamera_x) | |
| 3855 | + c.unsetSF(CSF_movecamera_x) | |
| 4410 | 3856 | } |
| 4411 | 3857 | if len(exp) > 1 { |
| 4412 | 3858 | if exp[1].evalB(c) { |
| 4413 | - crun.setSF(CSF_movecamera_y) | |
| 3859 | + c.setSF(CSF_movecamera_y) | |
| 4414 | 3860 | } else { |
| 4415 | - crun.unsetSF(CSF_movecamera_y) | |
| 3861 | + c.unsetSF(CSF_movecamera_y) | |
| 4416 | 3862 | } |
| 4417 | 3863 | } |
| 4418 | - case screenBound_redirectid: | |
| 4419 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4420 | - crun = rid | |
| 4421 | - } else { | |
| 4422 | - return false | |
| 4423 | - } | |
| 4424 | 3864 | } |
| 4425 | 3865 | return true |
| 4426 | 3866 | }) |
| @@ -4431,22 +3871,14 @@ type posFreeze StateControllerBase | ||
| 4431 | 3871 | |
| 4432 | 3872 | const ( |
| 4433 | 3873 | posFreeze_value byte = iota |
| 4434 | - posFreeze_redirectid | |
| 4435 | 3874 | ) |
| 4436 | 3875 | |
| 4437 | 3876 | func (sc posFreeze) Run(c *Char, _ []int32) bool { |
| 4438 | - crun := c | |
| 4439 | 3877 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4440 | 3878 | switch id { |
| 4441 | 3879 | case posFreeze_value: |
| 4442 | 3880 | if exp[0].evalB(c) { |
| 4443 | - crun.setSF(CSF_posfreeze) | |
| 4444 | - } | |
| 4445 | - case posFreeze_redirectid: | |
| 4446 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4447 | - crun = rid | |
| 4448 | - } else { | |
| 4449 | - return false | |
| 3881 | + c.setSF(CSF_posfreeze) | |
| 4450 | 3882 | } |
| 4451 | 3883 | } |
| 4452 | 3884 | return true |
| @@ -4470,9 +3902,9 @@ func (sc envShake) Run(c *Char, _ []int32) bool { | ||
| 4470 | 3902 | case envShake_time: |
| 4471 | 3903 | sys.envShake.time = exp[0].evalI(c) |
| 4472 | 3904 | case envShake_ampl: |
| 4473 | - sys.envShake.ampl = int32(float32(exp[0].evalI(c)) * c.localscl) | |
| 3905 | + sys.envShake.ampl = exp[0].evalI(c) | |
| 4474 | 3906 | case envShake_phase: |
| 4475 | - sys.envShake.phase = MaxF(0, exp[0].evalF(c)*float32(math.Pi)/180) * c.localscl | |
| 3907 | + sys.envShake.phase = MaxF(0, exp[0].evalF(c)*float32(math.Pi)/180) | |
| 4476 | 3908 | case envShake_freq: |
| 4477 | 3909 | sys.envShake.freq = exp[0].evalF(c) |
| 4478 | 3910 | } |
| @@ -4490,11 +3922,9 @@ const ( | ||
| 4490 | 3922 | hitOverride_stateno |
| 4491 | 3923 | hitOverride_time |
| 4492 | 3924 | hitOverride_forceair |
| 4493 | - hitOverride_redirectid | |
| 4494 | 3925 | ) |
| 4495 | 3926 | |
| 4496 | 3927 | func (sc hitOverride) Run(c *Char, _ []int32) bool { |
| 4497 | - crun := c | |
| 4498 | 3928 | var a, s, st, t int32 = 0, 0, -1, 1 |
| 4499 | 3929 | f := false |
| 4500 | 3930 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| @@ -4515,21 +3945,14 @@ func (sc hitOverride) Run(c *Char, _ []int32) bool { | ||
| 4515 | 3945 | } |
| 4516 | 3946 | case hitOverride_forceair: |
| 4517 | 3947 | f = exp[0].evalB(c) |
| 4518 | - case hitOverride_redirectid: | |
| 4519 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4520 | - crun = rid | |
| 4521 | - } else { | |
| 4522 | - return false | |
| 4523 | - } | |
| 4524 | 3948 | } |
| 4525 | 3949 | return true |
| 4526 | 3950 | }) |
| 4527 | 3951 | if st < 0 { |
| 4528 | 3952 | t = 0 |
| 4529 | 3953 | } |
| 4530 | - pn := crun.playerNo | |
| 4531 | - crun.ho[s] = HitOverride{attr: a, stateno: st, time: t, forceair: f, | |
| 4532 | - playerNo: pn} | |
| 3954 | + c.ho[s] = HitOverride{attr: a, stateno: st, time: t, forceair: f, | |
| 3955 | + playerNo: sys.workingState.playerNo} | |
| 4533 | 3956 | return false |
| 4534 | 3957 | } |
| 4535 | 3958 |
| @@ -4540,11 +3963,9 @@ const ( | ||
| 4540 | 3963 | pause_movetime |
| 4541 | 3964 | pause_pausebg |
| 4542 | 3965 | pause_endcmdbuftime |
| 4543 | - pause_redirectid | |
| 4544 | 3966 | ) |
| 4545 | 3967 | |
| 4546 | 3968 | func (sc pause) Run(c *Char, _ []int32) bool { |
| 4547 | - crun := c | |
| 4548 | 3969 | var t, mt int32 = 0, 0 |
| 4549 | 3970 | sys.pausebg, sys.pauseendcmdbuftime = true, 0 |
| 4550 | 3971 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| @@ -4557,16 +3978,10 @@ func (sc pause) Run(c *Char, _ []int32) bool { | ||
| 4557 | 3978 | sys.pausebg = exp[0].evalB(c) |
| 4558 | 3979 | case pause_endcmdbuftime: |
| 4559 | 3980 | sys.pauseendcmdbuftime = exp[0].evalI(c) |
| 4560 | - case pause_redirectid: | |
| 4561 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4562 | - crun = rid | |
| 4563 | - } else { | |
| 4564 | - return false | |
| 4565 | - } | |
| 4566 | 3981 | } |
| 4567 | 3982 | return true |
| 4568 | 3983 | }) |
| 4569 | - crun.setPauseTime(t, mt) | |
| 3984 | + c.setPauseTime(t, mt) | |
| 4570 | 3985 | return false |
| 4571 | 3986 | } |
| 4572 | 3987 |
| @@ -4584,15 +3999,13 @@ const ( | ||
| 4584 | 3999 | superPause_poweradd |
| 4585 | 4000 | superPause_unhittable |
| 4586 | 4001 | superPause_sound |
| 4587 | - superPause_redirectid | |
| 4588 | 4002 | ) |
| 4589 | 4003 | |
| 4590 | 4004 | func (sc superPause) Run(c *Char, _ []int32) bool { |
| 4591 | - crun := c | |
| 4592 | - var t, mt int32 = 30, 0 | |
| 4005 | + var t, mt int32 = 0, 0 | |
| 4593 | 4006 | uh := true |
| 4594 | - sys.superanim, sys.superpmap.remap = crun.getAnim(30, true), nil | |
| 4595 | - sys.superpos, sys.superfacing = [...]float32{crun.pos[0] * crun.localscl, crun.pos[1] * crun.localscl}, crun.facing | |
| 4007 | + sys.superanim, sys.superpmap.remap = c.getAnim(30, true), nil | |
| 4008 | + sys.superpos, sys.superfacing = c.pos, c.facing | |
| 4596 | 4009 | sys.superpausebg, sys.superendcmdbuftime, sys.superdarken = true, 0, true |
| 4597 | 4010 | sys.superp2defmul = sys.super_TargetDefenceMul |
| 4598 | 4011 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| @@ -4609,17 +4022,17 @@ func (sc superPause) Run(c *Char, _ []int32) bool { | ||
| 4609 | 4022 | sys.superdarken = exp[0].evalB(c) |
| 4610 | 4023 | case superPause_anim: |
| 4611 | 4024 | f := exp[0].evalB(c) |
| 4612 | - if sys.superanim = crun.getAnim(exp[1].evalI(c), f); sys.superanim != nil { | |
| 4025 | + if sys.superanim = c.getAnim(exp[1].evalI(c), f); sys.superanim != nil { | |
| 4613 | 4026 | if f { |
| 4614 | 4027 | sys.superpmap.remap = nil |
| 4615 | 4028 | } else { |
| 4616 | - sys.superpmap.remap = crun.getPalMap() | |
| 4029 | + sys.superpmap.remap = c.getPalMap() | |
| 4617 | 4030 | } |
| 4618 | 4031 | } |
| 4619 | 4032 | case superPause_pos: |
| 4620 | - sys.superpos[0] += crun.facing * exp[0].evalF(c) * c.localscl | |
| 4033 | + sys.superpos[0] += c.facing * exp[0].evalF(c) | |
| 4621 | 4034 | if len(exp) > 1 { |
| 4622 | - sys.superpos[1] += exp[1].evalF(c) * c.localscl | |
| 4035 | + sys.superpos[1] += exp[1].evalF(c) | |
| 4623 | 4036 | } |
| 4624 | 4037 | case superPause_p2defmul: |
| 4625 | 4038 | sys.superp2defmul = exp[0].evalF(c) |
| @@ -4627,7 +4040,7 @@ func (sc superPause) Run(c *Char, _ []int32) bool { | ||
| 4627 | 4040 | sys.superp2defmul = sys.super_TargetDefenceMul |
| 4628 | 4041 | } |
| 4629 | 4042 | case superPause_poweradd: |
| 4630 | - crun.powerAdd(exp[0].evalI(c)) | |
| 4043 | + c.powerAdd(exp[0].evalI(c)) | |
| 4631 | 4044 | case superPause_unhittable: |
| 4632 | 4045 | uh = exp[0].evalB(c) |
| 4633 | 4046 | case superPause_sound: |
| @@ -4639,20 +4052,12 @@ func (sc superPause) Run(c *Char, _ []int32) bool { | ||
| 4639 | 4052 | if c.gi().ver[0] == 1 { |
| 4640 | 4053 | vo = 100 |
| 4641 | 4054 | } |
| 4642 | - crun.playSound(exp[0].evalB(c), false, false, exp[1].evalI(c), n, -1, | |
| 4643 | - vo, 0, 1, &crun.pos[0]) | |
| 4644 | - case superPause_redirectid: | |
| 4645 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4646 | - crun = rid | |
| 4647 | - sys.superanim, sys.superpmap.remap = crun.getAnim(30, true), nil | |
| 4648 | - sys.superpos, sys.superfacing = [...]float32{crun.pos[0] * crun.localscl, crun.pos[1] * crun.localscl}, crun.facing | |
| 4649 | - } else { | |
| 4650 | - return false | |
| 4651 | - } | |
| 4055 | + c.playSound(exp[0].evalB(c), false, false, exp[1].evalI(c), n, -1, | |
| 4056 | + vo, 0, 1, &c.pos[0]) | |
| 4652 | 4057 | } |
| 4653 | 4058 | return true |
| 4654 | 4059 | }) |
| 4655 | - crun.setSuperPauseTime(t, mt, uh) | |
| 4060 | + c.setSuperPauseTime(t, mt, uh) | |
| 4656 | 4061 | return false |
| 4657 | 4062 | } |
| 4658 | 4063 |
| @@ -4660,36 +4065,27 @@ type trans StateControllerBase | ||
| 4660 | 4065 | |
| 4661 | 4066 | const ( |
| 4662 | 4067 | trans_trans byte = iota |
| 4663 | - trans_redirectid | |
| 4664 | 4068 | ) |
| 4665 | 4069 | |
| 4666 | 4070 | func (sc trans) Run(c *Char, _ []int32) bool { |
| 4667 | - crun := c | |
| 4668 | - crun.alpha[1] = 255 | |
| 4669 | 4071 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4670 | 4072 | switch id { |
| 4671 | 4073 | case trans_trans: |
| 4672 | - crun.alpha[0] = exp[0].evalI(c) | |
| 4673 | - crun.alpha[1] = exp[1].evalI(c) | |
| 4074 | + c.alpha[0] = exp[0].evalI(c) | |
| 4075 | + c.alpha[1] = exp[1].evalI(c) | |
| 4674 | 4076 | if len(exp) >= 3 { |
| 4675 | - crun.alpha[0] = Max(0, Min(255, crun.alpha[0])) | |
| 4676 | - crun.alpha[1] = Max(0, Min(255, crun.alpha[1])) | |
| 4077 | + c.alpha[0] = Max(0, Min(255, c.alpha[0])) | |
| 4078 | + c.alpha[1] = Max(0, Min(255, c.alpha[1])) | |
| 4677 | 4079 | if len(exp) >= 4 { |
| 4678 | - crun.alpha[1] = ^crun.alpha[1] | |
| 4679 | - } else if crun.alpha[0] == 1 && crun.alpha[1] == 255 { | |
| 4680 | - crun.alpha[0] = 0 | |
| 4080 | + c.alpha[1] = ^c.alpha[1] | |
| 4081 | + } else if c.alpha[0] == 1 && c.alpha[1] == 255 { | |
| 4082 | + c.alpha[0] = 0 | |
| 4681 | 4083 | } |
| 4682 | 4084 | } |
| 4683 | - case trans_redirectid: | |
| 4684 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4685 | - crun = rid | |
| 4686 | - } else { | |
| 4687 | - return false | |
| 4688 | - } | |
| 4689 | 4085 | } |
| 4690 | 4086 | return true |
| 4691 | 4087 | }) |
| 4692 | - crun.setSF(CSF_trans) | |
| 4088 | + c.setSF(CSF_trans) | |
| 4693 | 4089 | return false |
| 4694 | 4090 | } |
| 4695 | 4091 |
| @@ -4697,24 +4093,16 @@ type playerPush StateControllerBase | ||
| 4697 | 4093 | |
| 4698 | 4094 | const ( |
| 4699 | 4095 | playerPush_value byte = iota |
| 4700 | - playerPush_redirectid | |
| 4701 | 4096 | ) |
| 4702 | 4097 | |
| 4703 | 4098 | func (sc playerPush) Run(c *Char, _ []int32) bool { |
| 4704 | - crun := c | |
| 4705 | 4099 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4706 | 4100 | switch id { |
| 4707 | 4101 | case playerPush_value: |
| 4708 | 4102 | if exp[0].evalB(c) { |
| 4709 | - crun.setSF(CSF_playerpush) | |
| 4103 | + c.setSF(CSF_playerpush) | |
| 4710 | 4104 | } else { |
| 4711 | - crun.unsetSF(CSF_playerpush) | |
| 4712 | - } | |
| 4713 | - case playerPush_redirectid: | |
| 4714 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4715 | - crun = rid | |
| 4716 | - } else { | |
| 4717 | - return false | |
| 4105 | + c.unsetSF(CSF_playerpush) | |
| 4718 | 4106 | } |
| 4719 | 4107 | } |
| 4720 | 4108 | return true |
| @@ -4728,25 +4116,17 @@ const ( | ||
| 4728 | 4116 | stateTypeSet_statetype byte = iota |
| 4729 | 4117 | stateTypeSet_movetype |
| 4730 | 4118 | stateTypeSet_physics |
| 4731 | - stateTypeSet_redirectid | |
| 4732 | 4119 | ) |
| 4733 | 4120 | |
| 4734 | 4121 | func (sc stateTypeSet) Run(c *Char, _ []int32) bool { |
| 4735 | - crun := c | |
| 4736 | 4122 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4737 | 4123 | switch id { |
| 4738 | 4124 | case stateTypeSet_statetype: |
| 4739 | - crun.ss.stateType = StateType(exp[0].evalI(c)) | |
| 4125 | + c.ss.stateType = StateType(exp[0].evalI(c)) | |
| 4740 | 4126 | case stateTypeSet_movetype: |
| 4741 | - crun.ss.moveType = MoveType(exp[0].evalI(c)) | |
| 4127 | + c.ss.moveType = MoveType(exp[0].evalI(c)) | |
| 4742 | 4128 | case stateTypeSet_physics: |
| 4743 | - crun.ss.physics = StateType(exp[0].evalI(c)) | |
| 4744 | - case stateTypeSet_redirectid: | |
| 4745 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4746 | - crun = rid | |
| 4747 | - } else { | |
| 4748 | - return false | |
| 4749 | - } | |
| 4129 | + c.ss.physics = StateType(exp[0].evalI(c)) | |
| 4750 | 4130 | } |
| 4751 | 4131 | return true |
| 4752 | 4132 | }) |
| @@ -4758,30 +4138,22 @@ type angleDraw StateControllerBase | ||
| 4758 | 4138 | const ( |
| 4759 | 4139 | angleDraw_value byte = iota |
| 4760 | 4140 | angleDraw_scale |
| 4761 | - angleDraw_redirectid | |
| 4762 | 4141 | ) |
| 4763 | 4142 | |
| 4764 | 4143 | func (sc angleDraw) Run(c *Char, _ []int32) bool { |
| 4765 | - crun := c | |
| 4144 | + c.setSF(CSF_angledraw) | |
| 4766 | 4145 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4767 | 4146 | switch id { |
| 4768 | 4147 | case angleDraw_value: |
| 4769 | - crun.angleSet(exp[0].evalF(c)) | |
| 4148 | + c.angleSet(exp[0].evalF(c)) | |
| 4770 | 4149 | case angleDraw_scale: |
| 4771 | - crun.angleScalse[0] *= exp[0].evalF(c) | |
| 4150 | + c.angleScalse[0] *= exp[0].evalF(c) | |
| 4772 | 4151 | if len(exp) > 1 { |
| 4773 | - crun.angleScalse[1] *= exp[1].evalF(c) | |
| 4774 | - } | |
| 4775 | - case angleDraw_redirectid: | |
| 4776 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4777 | - crun = rid | |
| 4778 | - } else { | |
| 4779 | - return false | |
| 4152 | + c.angleScalse[1] *= exp[1].evalF(c) | |
| 4780 | 4153 | } |
| 4781 | 4154 | } |
| 4782 | 4155 | return true |
| 4783 | 4156 | }) |
| 4784 | - crun.setSF(CSF_angledraw) | |
| 4785 | 4157 | return false |
| 4786 | 4158 | } |
| 4787 | 4159 |
| @@ -4789,21 +4161,13 @@ type angleSet StateControllerBase | ||
| 4789 | 4161 | |
| 4790 | 4162 | const ( |
| 4791 | 4163 | angleSet_value byte = iota |
| 4792 | - angleSet_redirectid | |
| 4793 | 4164 | ) |
| 4794 | 4165 | |
| 4795 | 4166 | func (sc angleSet) Run(c *Char, _ []int32) bool { |
| 4796 | - crun := c | |
| 4797 | 4167 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4798 | 4168 | switch id { |
| 4799 | 4169 | case angleSet_value: |
| 4800 | - crun.angleSet(exp[0].evalF(c)) | |
| 4801 | - case angleSet_redirectid: | |
| 4802 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4803 | - crun = rid | |
| 4804 | - } else { | |
| 4805 | - return false | |
| 4806 | - } | |
| 4170 | + c.angleSet(exp[0].evalF(c)) | |
| 4807 | 4171 | } |
| 4808 | 4172 | return true |
| 4809 | 4173 | }) |
| @@ -4814,21 +4178,13 @@ type angleAdd StateControllerBase | ||
| 4814 | 4178 | |
| 4815 | 4179 | const ( |
| 4816 | 4180 | angleAdd_value byte = iota |
| 4817 | - angleAdd_redirectid | |
| 4818 | 4181 | ) |
| 4819 | 4182 | |
| 4820 | 4183 | func (sc angleAdd) Run(c *Char, _ []int32) bool { |
| 4821 | - crun := c | |
| 4822 | 4184 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4823 | 4185 | switch id { |
| 4824 | 4186 | case angleAdd_value: |
| 4825 | - crun.angleSet(crun.angle + exp[0].evalF(c)) | |
| 4826 | - case angleAdd_redirectid: | |
| 4827 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4828 | - crun = rid | |
| 4829 | - } else { | |
| 4830 | - return false | |
| 4831 | - } | |
| 4187 | + c.angleSet(c.angle + exp[0].evalF(c)) | |
| 4832 | 4188 | } |
| 4833 | 4189 | return true |
| 4834 | 4190 | }) |
| @@ -4839,21 +4195,13 @@ type angleMul StateControllerBase | ||
| 4839 | 4195 | |
| 4840 | 4196 | const ( |
| 4841 | 4197 | angleMul_value byte = iota |
| 4842 | - angleMul_redirectid | |
| 4843 | 4198 | ) |
| 4844 | 4199 | |
| 4845 | 4200 | func (sc angleMul) Run(c *Char, _ []int32) bool { |
| 4846 | - crun := c | |
| 4847 | 4201 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4848 | 4202 | switch id { |
| 4849 | 4203 | case angleMul_value: |
| 4850 | - crun.angleSet(crun.angle * exp[0].evalF(c)) | |
| 4851 | - case angleMul_redirectid: | |
| 4852 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4853 | - crun = rid | |
| 4854 | - } else { | |
| 4855 | - return false | |
| 4856 | - } | |
| 4204 | + c.angleSet(c.angle * exp[0].evalF(c)) | |
| 4857 | 4205 | } |
| 4858 | 4206 | return true |
| 4859 | 4207 | }) |
| @@ -4963,16 +4311,14 @@ const ( | ||
| 4963 | 4311 | makeDust_spacing byte = iota |
| 4964 | 4312 | makeDust_pos |
| 4965 | 4313 | makeDust_pos2 |
| 4966 | - makeDust_redirectid | |
| 4967 | 4314 | ) |
| 4968 | 4315 | |
| 4969 | 4316 | func (sc makeDust) Run(c *Char, _ []int32) bool { |
| 4970 | - crun := c | |
| 4971 | 4317 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 4972 | 4318 | switch id { |
| 4973 | 4319 | case makeDust_spacing: |
| 4974 | 4320 | s := Max(1, exp[0].evalI(c)) |
| 4975 | - if crun.time()%s != s-1 { | |
| 4321 | + if c.time()%s != s-1 { | |
| 4976 | 4322 | return false |
| 4977 | 4323 | } |
| 4978 | 4324 | case makeDust_pos: |
| @@ -4980,21 +4326,15 @@ func (sc makeDust) Run(c *Char, _ []int32) bool { | ||
| 4980 | 4326 | if len(exp) > 1 { |
| 4981 | 4327 | y = exp[1].evalF(c) |
| 4982 | 4328 | } |
| 4983 | - crun.makeDust(x-float32(crun.size.draw.offset[0]), | |
| 4984 | - y-float32(crun.size.draw.offset[1])) | |
| 4329 | + c.makeDust(x-float32(c.size.draw.offset[0]), | |
| 4330 | + y-float32(c.size.draw.offset[1])) | |
| 4985 | 4331 | case makeDust_pos2: |
| 4986 | 4332 | x, y := exp[0].evalF(c), float32(0) |
| 4987 | 4333 | if len(exp) > 1 { |
| 4988 | 4334 | y = exp[1].evalF(c) |
| 4989 | 4335 | } |
| 4990 | - crun.makeDust(x-float32(crun.size.draw.offset[0]), | |
| 4991 | - y-float32(crun.size.draw.offset[1])) | |
| 4992 | - case makeDust_redirectid: | |
| 4993 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 4994 | - crun = rid | |
| 4995 | - } else { | |
| 4996 | - return false | |
| 4997 | - } | |
| 4336 | + c.makeDust(x-float32(c.size.draw.offset[0]), | |
| 4337 | + y-float32(c.size.draw.offset[1])) | |
| 4998 | 4338 | } |
| 4999 | 4339 | return true |
| 5000 | 4340 | }) |
| @@ -5005,23 +4345,13 @@ type attackDist StateControllerBase | ||
| 5005 | 4345 | |
| 5006 | 4346 | const ( |
| 5007 | 4347 | attackDist_value byte = iota |
| 5008 | - attackDist_redirectid | |
| 5009 | 4348 | ) |
| 5010 | 4349 | |
| 5011 | 4350 | func (sc attackDist) Run(c *Char, _ []int32) bool { |
| 5012 | - crun := c | |
| 5013 | - var lclscround float32 = 1.0 | |
| 5014 | 4351 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5015 | 4352 | switch id { |
| 5016 | 4353 | case attackDist_value: |
| 5017 | - crun.attackDist = exp[0].evalF(c) * lclscround | |
| 5018 | - case attackDist_redirectid: | |
| 5019 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5020 | - crun = rid | |
| 5021 | - lclscround = c.localscl / crun.localscl | |
| 5022 | - } else { | |
| 5023 | - return false | |
| 5024 | - } | |
| 4354 | + c.attackDist = exp[0].evalF(c) | |
| 5025 | 4355 | } |
| 5026 | 4356 | return true |
| 5027 | 4357 | }) |
| @@ -5032,21 +4362,13 @@ type attackMulSet StateControllerBase | ||
| 5032 | 4362 | |
| 5033 | 4363 | const ( |
| 5034 | 4364 | attackMulSet_value byte = iota |
| 5035 | - attackMulSet_redirectid | |
| 5036 | 4365 | ) |
| 5037 | 4366 | |
| 5038 | 4367 | func (sc attackMulSet) Run(c *Char, _ []int32) bool { |
| 5039 | - crun := c | |
| 5040 | 4368 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5041 | 4369 | switch id { |
| 5042 | 4370 | case attackMulSet_value: |
| 5043 | - crun.attackMul = float32(crun.gi().data.attack) / 100 * exp[0].evalF(c) | |
| 5044 | - case attackMulSet_redirectid: | |
| 5045 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5046 | - crun = rid | |
| 5047 | - } else { | |
| 5048 | - return false | |
| 5049 | - } | |
| 4371 | + c.attackMul = float32(c.gi().data.attack) / 100 * exp[0].evalF(c) | |
| 5050 | 4372 | } |
| 5051 | 4373 | return true |
| 5052 | 4374 | }) |
| @@ -5057,21 +4379,13 @@ type defenceMulSet StateControllerBase | ||
| 5057 | 4379 | |
| 5058 | 4380 | const ( |
| 5059 | 4381 | defenceMulSet_value byte = iota |
| 5060 | - defenceMulSet_redirectid | |
| 5061 | 4382 | ) |
| 5062 | 4383 | |
| 5063 | 4384 | func (sc defenceMulSet) Run(c *Char, _ []int32) bool { |
| 5064 | - crun := c | |
| 5065 | 4385 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5066 | 4386 | switch id { |
| 5067 | 4387 | case defenceMulSet_value: |
| 5068 | - crun.defenceMul = float32(crun.gi().data.defence) / (exp[0].evalF(c) * 100) | |
| 5069 | - case defenceMulSet_redirectid: | |
| 5070 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5071 | - crun = rid | |
| 5072 | - } else { | |
| 5073 | - return false | |
| 5074 | - } | |
| 4388 | + c.defenceMul = float32(c.gi().data.defence) / (exp[0].evalF(c) * 100) | |
| 5075 | 4389 | } |
| 5076 | 4390 | return true |
| 5077 | 4391 | }) |
| @@ -5082,24 +4396,16 @@ type fallEnvShake StateControllerBase | ||
| 5082 | 4396 | |
| 5083 | 4397 | const ( |
| 5084 | 4398 | fallEnvShake_ byte = iota |
| 5085 | - fallEnvShake_redirectid | |
| 5086 | 4399 | ) |
| 5087 | 4400 | |
| 5088 | 4401 | func (sc fallEnvShake) Run(c *Char, _ []int32) bool { |
| 5089 | - crun := c | |
| 5090 | 4402 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5091 | 4403 | switch id { |
| 5092 | 4404 | case fallEnvShake_: |
| 5093 | - sys.envShake = EnvShake{time: crun.ghv.fall.envshake_time, | |
| 5094 | - freq: crun.ghv.fall.envshake_freq * math.Pi / 180, | |
| 5095 | - ampl: crun.ghv.fall.envshake_ampl, phase: crun.ghv.fall.envshake_phase} | |
| 4405 | + sys.envShake = EnvShake{time: c.ghv.fall.envshake_time, | |
| 4406 | + freq: c.ghv.fall.envshake_freq * math.Pi / 180, | |
| 4407 | + ampl: c.ghv.fall.envshake_ampl, phase: c.ghv.fall.envshake_phase} | |
| 5096 | 4408 | sys.envShake.setDefPhase() |
| 5097 | - case fallEnvShake_redirectid: | |
| 5098 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5099 | - crun = rid | |
| 5100 | - } else { | |
| 5101 | - return false | |
| 5102 | - } | |
| 5103 | 4409 | } |
| 5104 | 4410 | return true |
| 5105 | 4411 | }) |
| @@ -5110,21 +4416,13 @@ type hitFallDamage StateControllerBase | ||
| 5110 | 4416 | |
| 5111 | 4417 | const ( |
| 5112 | 4418 | hitFallDamage_ byte = iota |
| 5113 | - hitFallDamage_redirectid | |
| 5114 | 4419 | ) |
| 5115 | 4420 | |
| 5116 | 4421 | func (sc hitFallDamage) Run(c *Char, _ []int32) bool { |
| 5117 | - crun := c | |
| 5118 | 4422 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5119 | 4423 | switch id { |
| 5120 | 4424 | case hitFallDamage_: |
| 5121 | - crun.hitFallDamage() | |
| 5122 | - case hitFallDamage_redirectid: | |
| 5123 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5124 | - crun = rid | |
| 5125 | - } else { | |
| 5126 | - return false | |
| 5127 | - } | |
| 4425 | + c.hitFallDamage() | |
| 5128 | 4426 | } |
| 5129 | 4427 | return true |
| 5130 | 4428 | }) |
| @@ -5135,21 +4433,13 @@ type hitFallVel StateControllerBase | ||
| 5135 | 4433 | |
| 5136 | 4434 | const ( |
| 5137 | 4435 | hitFallVel_ byte = iota |
| 5138 | - hitFallVel_redirectid | |
| 5139 | 4436 | ) |
| 5140 | 4437 | |
| 5141 | 4438 | func (sc hitFallVel) Run(c *Char, _ []int32) bool { |
| 5142 | - crun := c | |
| 5143 | 4439 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5144 | 4440 | switch id { |
| 5145 | 4441 | case hitFallVel_: |
| 5146 | - crun.hitFallVel() | |
| 5147 | - case hitFallVel_redirectid: | |
| 5148 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5149 | - crun = rid | |
| 5150 | - } else { | |
| 5151 | - return false | |
| 5152 | - } | |
| 4442 | + c.hitFallVel() | |
| 5153 | 4443 | } |
| 5154 | 4444 | return true |
| 5155 | 4445 | }) |
| @@ -5162,33 +4452,25 @@ const ( | ||
| 5162 | 4452 | hitFallSet_value byte = iota |
| 5163 | 4453 | hitFallSet_xvel |
| 5164 | 4454 | hitFallSet_yvel |
| 5165 | - hitFallSet_redirectid | |
| 5166 | 4455 | ) |
| 5167 | 4456 | |
| 5168 | 4457 | func (sc hitFallSet) Run(c *Char, _ []int32) bool { |
| 5169 | - crun := c | |
| 5170 | 4458 | f, xv, yv := int32(-1), float32(math.NaN()), float32(math.NaN()) |
| 5171 | 4459 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5172 | 4460 | switch id { |
| 5173 | 4461 | case hitFallSet_value: |
| 5174 | 4462 | f = exp[0].evalI(c) |
| 5175 | - if len(crun.ghv.hitBy) == 0 { | |
| 4463 | + if len(c.ghv.hitBy) == 0 { | |
| 5176 | 4464 | return false |
| 5177 | 4465 | } |
| 5178 | 4466 | case hitFallSet_xvel: |
| 5179 | 4467 | xv = exp[0].evalF(c) |
| 5180 | 4468 | case hitFallSet_yvel: |
| 5181 | 4469 | yv = exp[0].evalF(c) |
| 5182 | - case hitFallSet_redirectid: | |
| 5183 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5184 | - crun = rid | |
| 5185 | - } else { | |
| 5186 | - return false | |
| 5187 | - } | |
| 5188 | 4470 | } |
| 5189 | 4471 | return true |
| 5190 | 4472 | }) |
| 5191 | - crun.hitFallSet(f, xv, yv) | |
| 4473 | + c.hitFallSet(f, xv, yv) | |
| 5192 | 4474 | return false |
| 5193 | 4475 | } |
| 5194 | 4476 |
| @@ -5199,11 +4481,9 @@ const ( | ||
| 5199 | 4481 | varRangeSet_last |
| 5200 | 4482 | varRangeSet_value |
| 5201 | 4483 | varRangeSet_fvalue |
| 5202 | - varRangeSet_redirectid | |
| 5203 | 4484 | ) |
| 5204 | 4485 | |
| 5205 | 4486 | func (sc varRangeSet) Run(c *Char, _ []int32) bool { |
| 5206 | - crun := c | |
| 5207 | 4487 | var first, last int32 = 0, 0 |
| 5208 | 4488 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5209 | 4489 | switch id { |
| @@ -5215,22 +4495,16 @@ func (sc varRangeSet) Run(c *Char, _ []int32) bool { | ||
| 5215 | 4495 | v := exp[0].evalI(c) |
| 5216 | 4496 | if first >= 0 && last < int32(NumVar) { |
| 5217 | 4497 | for i := first; i <= last; i++ { |
| 5218 | - crun.ivar[i] = v | |
| 4498 | + c.ivar[i] = v | |
| 5219 | 4499 | } |
| 5220 | 4500 | } |
| 5221 | 4501 | case varRangeSet_fvalue: |
| 5222 | 4502 | fv := exp[0].evalF(c) |
| 5223 | 4503 | if first >= 0 && last < int32(NumFvar) { |
| 5224 | 4504 | for i := first; i <= last; i++ { |
| 5225 | - crun.fvar[i] = fv | |
| 4505 | + c.fvar[i] = fv | |
| 5226 | 4506 | } |
| 5227 | 4507 | } |
| 5228 | - case varRangeSet_redirectid: | |
| 5229 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5230 | - crun = rid | |
| 5231 | - } else { | |
| 5232 | - return false | |
| 5233 | - } | |
| 5234 | 4508 | } |
| 5235 | 4509 | return true |
| 5236 | 4510 | }) |
| @@ -5242,11 +4516,9 @@ type remapPal StateControllerBase | ||
| 5242 | 4516 | const ( |
| 5243 | 4517 | remapPal_source byte = iota |
| 5244 | 4518 | remapPal_dest |
| 5245 | - remapPal_redirectid | |
| 5246 | 4519 | ) |
| 5247 | 4520 | |
| 5248 | 4521 | func (sc remapPal) Run(c *Char, _ []int32) bool { |
| 5249 | - crun := c | |
| 5250 | 4522 | src := [...]int32{-1, -1} |
| 5251 | 4523 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5252 | 4524 | switch id { |
| @@ -5255,22 +4527,12 @@ func (sc remapPal) Run(c *Char, _ []int32) bool { | ||
| 5255 | 4527 | if len(exp) > 1 { |
| 5256 | 4528 | src[1] = exp[1].evalI(c) |
| 5257 | 4529 | } |
| 5258 | - if src[0] == -1 { | |
| 5259 | - src[0] = 1 | |
| 5260 | - src[1] = 1 | |
| 5261 | - } | |
| 5262 | 4530 | case remapPal_dest: |
| 5263 | 4531 | dst := [...]int32{exp[0].evalI(c), -1} |
| 5264 | 4532 | if len(exp) > 1 { |
| 5265 | 4533 | dst[1] = exp[1].evalI(c) |
| 5266 | 4534 | } |
| 5267 | - crun.remapPal(crun.getPalfx(), src, dst) | |
| 5268 | - case remapPal_redirectid: | |
| 5269 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5270 | - crun = rid | |
| 5271 | - } else { | |
| 5272 | - return false | |
| 5273 | - } | |
| 4535 | + c.remapPal(c.getPalfx(), src, dst) | |
| 5274 | 4536 | } |
| 5275 | 4537 | return true |
| 5276 | 4538 | }) |
| @@ -5281,24 +4543,16 @@ type stopSnd StateControllerBase | ||
| 5281 | 4543 | |
| 5282 | 4544 | const ( |
| 5283 | 4545 | stopSnd_channel byte = iota |
| 5284 | - stopSnd_redirectid | |
| 5285 | 4546 | ) |
| 5286 | 4547 | |
| 5287 | 4548 | func (sc stopSnd) Run(c *Char, _ []int32) bool { |
| 5288 | - crun := c | |
| 5289 | 4549 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5290 | 4550 | switch id { |
| 5291 | 4551 | case stopSnd_channel: |
| 5292 | 4552 | if ch := Min(255, exp[0].evalI(c)); ch < 0 { |
| 5293 | 4553 | sys.stopAllSound() |
| 5294 | - } else if int(ch) < len(crun.sounds) { | |
| 5295 | - crun.sounds[ch].sound = nil | |
| 5296 | - } | |
| 5297 | - case stopSnd_redirectid: | |
| 5298 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5299 | - crun = rid | |
| 5300 | - } else { | |
| 5301 | - return false | |
| 4554 | + } else if int(ch) < len(c.sounds) { | |
| 4555 | + c.sounds[ch].sound = nil | |
| 5302 | 4556 | } |
| 5303 | 4557 | } |
| 5304 | 4558 | return true |
| @@ -5312,12 +4566,10 @@ const ( | ||
| 5312 | 4566 | sndPan_channel byte = iota |
| 5313 | 4567 | sndPan_pan |
| 5314 | 4568 | sndPan_abspan |
| 5315 | - sndPan_redirectid | |
| 5316 | 4569 | ) |
| 5317 | 4570 | |
| 5318 | 4571 | func (sc sndPan) Run(c *Char, _ []int32) bool { |
| 5319 | - crun := c | |
| 5320 | - ch, pan, x := int32(-1), float32(0), &crun.pos[0] | |
| 4572 | + ch, pan, x := int32(-1), float32(0), &c.pos[0] | |
| 5321 | 4573 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5322 | 4574 | switch id { |
| 5323 | 4575 | case sndPan_channel: |
| @@ -5327,18 +4579,11 @@ func (sc sndPan) Run(c *Char, _ []int32) bool { | ||
| 5327 | 4579 | case sndPan_abspan: |
| 5328 | 4580 | pan = exp[0].evalF(c) |
| 5329 | 4581 | x = nil |
| 5330 | - case sndPan_redirectid: | |
| 5331 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5332 | - crun = rid | |
| 5333 | - x = &crun.pos[0] | |
| 5334 | - } else { | |
| 5335 | - return false | |
| 5336 | - } | |
| 5337 | 4582 | } |
| 5338 | 4583 | return true |
| 5339 | 4584 | }) |
| 5340 | - if ch <= 0 && int(ch) < len(crun.sounds) { | |
| 5341 | - crun.sounds[ch].SetPan(pan, x) | |
| 4585 | + if ch <= 0 && int(ch) < len(c.sounds) { | |
| 4586 | + c.sounds[ch].SetPan(pan, x) | |
| 5342 | 4587 | } |
| 5343 | 4588 | return false |
| 5344 | 4589 | } |
| @@ -5348,32 +4593,23 @@ type varRandom StateControllerBase | ||
| 5348 | 4593 | const ( |
| 5349 | 4594 | varRandom_v byte = iota |
| 5350 | 4595 | varRandom_range |
| 5351 | - varRandom_redirectid | |
| 5352 | 4596 | ) |
| 5353 | 4597 | |
| 5354 | 4598 | func (sc varRandom) Run(c *Char, _ []int32) bool { |
| 5355 | - crun := c | |
| 5356 | 4599 | var v int32 |
| 5357 | - var min, max int32 = 0, 1000 | |
| 5358 | 4600 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5359 | 4601 | switch id { |
| 5360 | 4602 | case varRandom_v: |
| 5361 | 4603 | v = exp[0].evalI(c) |
| 5362 | 4604 | case varRandom_range: |
| 5363 | - min, max = 0, exp[0].evalI(c) | |
| 4605 | + var min, max int32 = 0, exp[0].evalI(c) | |
| 5364 | 4606 | if len(exp) > 1 { |
| 5365 | 4607 | min, max = max, exp[1].evalI(c) |
| 5366 | 4608 | } |
| 5367 | - case varRandom_redirectid: | |
| 5368 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5369 | - crun = rid | |
| 5370 | - } else { | |
| 5371 | - return false | |
| 5372 | - } | |
| 4609 | + c.varSet(v, RandI(min, max)) | |
| 5373 | 4610 | } |
| 5374 | 4611 | return true |
| 5375 | 4612 | }) |
| 5376 | - crun.varSet(v, RandI(min, max)) | |
| 5377 | 4613 | return false |
| 5378 | 4614 | } |
| 5379 | 4615 |
| @@ -5381,21 +4617,13 @@ type gravity StateControllerBase | ||
| 5381 | 4617 | |
| 5382 | 4618 | const ( |
| 5383 | 4619 | gravity_ byte = iota |
| 5384 | - gravity_redirectid | |
| 5385 | 4620 | ) |
| 5386 | 4621 | |
| 5387 | 4622 | func (sc gravity) Run(c *Char, _ []int32) bool { |
| 5388 | - crun := c | |
| 5389 | 4623 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5390 | 4624 | switch id { |
| 5391 | 4625 | case gravity_: |
| 5392 | - crun.gravity() | |
| 5393 | - case gravity_redirectid: | |
| 5394 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5395 | - crun = rid | |
| 5396 | - } else { | |
| 5397 | - return false | |
| 5398 | - } | |
| 4626 | + c.gravity() | |
| 5399 | 4627 | } |
| 5400 | 4628 | return true |
| 5401 | 4629 | }) |
| @@ -5408,92 +4636,63 @@ const ( | ||
| 5408 | 4636 | bindToParent_time byte = iota |
| 5409 | 4637 | bindToParent_facing |
| 5410 | 4638 | bindToParent_pos |
| 5411 | - bindToParent_redirectid | |
| 5412 | 4639 | ) |
| 5413 | 4640 | |
| 5414 | 4641 | func (sc bindToParent) Run(c *Char, _ []int32) bool { |
| 5415 | - crun := c | |
| 5416 | - var lclscround float32 = 1.0 | |
| 5417 | - p := crun.parent() | |
| 5418 | - var x, y float32 = 0, 0 | |
| 5419 | - var time int32 = 1 | |
| 4642 | + p := c.parent() | |
| 4643 | + if p == nil { | |
| 4644 | + return false | |
| 4645 | + } | |
| 4646 | + c.bindTime, c.bindPos = 1, [2]float32{} | |
| 4647 | + c.setBindToId(p) | |
| 5420 | 4648 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5421 | 4649 | switch id { |
| 5422 | 4650 | case bindToParent_time: |
| 5423 | - time = exp[0].evalI(c) | |
| 4651 | + c.setBindTime(exp[0].evalI(c)) | |
| 5424 | 4652 | case bindToParent_facing: |
| 5425 | 4653 | if f := exp[0].evalI(c); f < 0 { |
| 5426 | - crun.bindFacing = -1 | |
| 4654 | + c.bindFacing = -1 | |
| 5427 | 4655 | } else if f > 0 { |
| 5428 | - crun.bindFacing = 1 | |
| 4656 | + c.bindFacing = 1 | |
| 5429 | 4657 | } |
| 5430 | 4658 | case bindToParent_pos: |
| 5431 | - x = exp[0].evalF(c) * lclscround | |
| 4659 | + c.bindPos[0] = exp[0].evalF(c) | |
| 5432 | 4660 | if len(exp) > 1 { |
| 5433 | - y = exp[1].evalF(c) * lclscround | |
| 5434 | - } | |
| 5435 | - case bindToParent_redirectid: | |
| 5436 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5437 | - crun = rid | |
| 5438 | - lclscround = c.localscl / crun.localscl | |
| 5439 | - p = crun.parent() | |
| 5440 | - } else { | |
| 5441 | - return false | |
| 4661 | + c.bindPos[1] = exp[1].evalF(c) | |
| 5442 | 4662 | } |
| 5443 | 4663 | } |
| 5444 | 4664 | return true |
| 5445 | 4665 | }) |
| 5446 | - if p == nil { | |
| 5447 | - return false | |
| 5448 | - } | |
| 5449 | - crun.bindPos[0] = x | |
| 5450 | - crun.bindPos[1] = y | |
| 5451 | - crun.setBindTime(time) | |
| 5452 | - crun.setBindToId(p) | |
| 5453 | 4666 | return false |
| 5454 | 4667 | } |
| 5455 | 4668 | |
| 5456 | 4669 | type bindToRoot bindToParent |
| 5457 | 4670 | |
| 5458 | 4671 | func (sc bindToRoot) Run(c *Char, _ []int32) bool { |
| 5459 | - crun := c | |
| 5460 | - var lclscround float32 = 1.0 | |
| 5461 | - r := crun.root() | |
| 5462 | - var x, y float32 = 0, 0 | |
| 5463 | - var time int32 = 1 | |
| 4672 | + r := c.root() | |
| 4673 | + if r == nil { | |
| 4674 | + return false | |
| 4675 | + } | |
| 4676 | + c.bindTime, c.bindPos = 1, [2]float32{} | |
| 4677 | + c.setBindToId(r) | |
| 5464 | 4678 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5465 | 4679 | switch id { |
| 5466 | 4680 | case bindToParent_time: |
| 5467 | - time = exp[0].evalI(c) | |
| 4681 | + c.setBindTime(exp[0].evalI(c)) | |
| 5468 | 4682 | case bindToParent_facing: |
| 5469 | 4683 | if f := exp[0].evalI(c); f < 0 { |
| 5470 | - crun.bindFacing = -1 | |
| 4684 | + c.bindFacing = -1 | |
| 5471 | 4685 | } else if f > 0 { |
| 5472 | - crun.bindFacing = 1 | |
| 4686 | + c.bindFacing = 1 | |
| 5473 | 4687 | } |
| 5474 | 4688 | case bindToParent_pos: |
| 5475 | - x = exp[0].evalF(c) * lclscround | |
| 4689 | + c.bindPos[0] = exp[0].evalF(c) | |
| 5476 | 4690 | if len(exp) > 1 { |
| 5477 | - y = exp[1].evalF(c) * lclscround | |
| 5478 | - } | |
| 5479 | - case bindToParent_redirectid: | |
| 5480 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5481 | - crun = rid | |
| 5482 | - lclscround = c.localscl / crun.localscl | |
| 5483 | - r = crun.root() | |
| 5484 | - } else { | |
| 5485 | - return false | |
| 4691 | + c.bindPos[1] = exp[1].evalF(c) | |
| 5486 | 4692 | } |
| 5487 | 4693 | } |
| 5488 | 4694 | return true |
| 5489 | 4695 | }) |
| 5490 | - if r == nil { | |
| 5491 | - return false | |
| 5492 | - } | |
| 5493 | - crun.bindPos[0] = x | |
| 5494 | - crun.bindPos[1] = y | |
| 5495 | - crun.setBindTime(time) | |
| 5496 | - crun.setBindToId(r) | |
| 5497 | 4696 | return false |
| 5498 | 4697 | } |
| 5499 | 4698 |
| @@ -5501,21 +4700,13 @@ type removeExplod StateControllerBase | ||
| 5501 | 4700 | |
| 5502 | 4701 | const ( |
| 5503 | 4702 | removeExplod_id byte = iota |
| 5504 | - removeExplod_redirectid | |
| 5505 | 4703 | ) |
| 5506 | 4704 | |
| 5507 | 4705 | func (sc removeExplod) Run(c *Char, _ []int32) bool { |
| 5508 | - crun := c | |
| 5509 | 4706 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5510 | 4707 | switch id { |
| 5511 | 4708 | case removeExplod_id: |
| 5512 | - crun.removeExplod(exp[0].evalI(c)) | |
| 5513 | - case removeExplod_redirectid: | |
| 5514 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5515 | - crun = rid | |
| 5516 | - } else { | |
| 5517 | - return false | |
| 5518 | - } | |
| 4709 | + c.removeExplod(exp[0].evalI(c)) | |
| 5519 | 4710 | } |
| 5520 | 4711 | return true |
| 5521 | 4712 | }) |
| @@ -5527,11 +4718,9 @@ type explodBindTime StateControllerBase | ||
| 5527 | 4718 | const ( |
| 5528 | 4719 | explodBindTime_id byte = iota |
| 5529 | 4720 | explodBindTime_time |
| 5530 | - explodBindTime_redirectid | |
| 5531 | 4721 | ) |
| 5532 | 4722 | |
| 5533 | 4723 | func (sc explodBindTime) Run(c *Char, _ []int32) bool { |
| 5534 | - crun := c | |
| 5535 | 4724 | var eid, time int32 = -1, 0 |
| 5536 | 4725 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5537 | 4726 | switch id { |
| @@ -5539,16 +4728,10 @@ func (sc explodBindTime) Run(c *Char, _ []int32) bool { | ||
| 5539 | 4728 | eid = exp[0].evalI(c) |
| 5540 | 4729 | case explodBindTime_time: |
| 5541 | 4730 | time = exp[0].evalI(c) |
| 5542 | - case explodBindTime_redirectid: | |
| 5543 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5544 | - crun = rid | |
| 5545 | - } else { | |
| 5546 | - return false | |
| 5547 | - } | |
| 5548 | 4731 | } |
| 5549 | 4732 | return true |
| 5550 | 4733 | }) |
| 5551 | - crun.explodBindTime(eid, time) | |
| 4734 | + c.explodBindTime(eid, time) | |
| 5552 | 4735 | return false |
| 5553 | 4736 | } |
| 5554 | 4737 |
| @@ -5556,21 +4739,13 @@ type moveHitReset StateControllerBase | ||
| 5556 | 4739 | |
| 5557 | 4740 | const ( |
| 5558 | 4741 | moveHitReset_ byte = iota |
| 5559 | - moveHitReset_redirectid | |
| 5560 | 4742 | ) |
| 5561 | 4743 | |
| 5562 | 4744 | func (sc moveHitReset) Run(c *Char, _ []int32) bool { |
| 5563 | - crun := c | |
| 5564 | 4745 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5565 | 4746 | switch id { |
| 5566 | 4747 | case moveHitReset_: |
| 5567 | - crun.clearMoveHit() | |
| 5568 | - case moveHitReset_redirectid: | |
| 5569 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5570 | - crun = rid | |
| 5571 | - } else { | |
| 5572 | - return false | |
| 5573 | - } | |
| 4748 | + c.clearMoveHit() | |
| 5574 | 4749 | } |
| 5575 | 4750 | return true |
| 5576 | 4751 | }) |
| @@ -5581,21 +4756,13 @@ type hitAdd StateControllerBase | ||
| 5581 | 4756 | |
| 5582 | 4757 | const ( |
| 5583 | 4758 | hitAdd_value byte = iota |
| 5584 | - hitAdd_redirectid | |
| 5585 | 4759 | ) |
| 5586 | 4760 | |
| 5587 | 4761 | func (sc hitAdd) Run(c *Char, _ []int32) bool { |
| 5588 | - crun := c | |
| 5589 | 4762 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5590 | 4763 | switch id { |
| 5591 | 4764 | case hitAdd_value: |
| 5592 | - crun.hitAdd(exp[0].evalI(c)) | |
| 5593 | - case hitAdd_redirectid: | |
| 5594 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5595 | - crun = rid | |
| 5596 | - } else { | |
| 5597 | - return false | |
| 5598 | - } | |
| 4765 | + c.hitAdd(exp[0].evalI(c)) | |
| 5599 | 4766 | } |
| 5600 | 4767 | return true |
| 5601 | 4768 | }) |
| @@ -5607,23 +4774,15 @@ type offset StateControllerBase | ||
| 5607 | 4774 | const ( |
| 5608 | 4775 | offset_x byte = iota |
| 5609 | 4776 | offset_y |
| 5610 | - offset_redirectid | |
| 5611 | 4777 | ) |
| 5612 | 4778 | |
| 5613 | 4779 | func (sc offset) Run(c *Char, _ []int32) bool { |
| 5614 | - crun := c | |
| 5615 | 4780 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5616 | 4781 | switch id { |
| 5617 | 4782 | case offset_x: |
| 5618 | - crun.offset[0] = exp[0].evalF(c) | |
| 4783 | + c.offset[0] = exp[0].evalF(c) | |
| 5619 | 4784 | case offset_y: |
| 5620 | - crun.offset[1] = exp[0].evalF(c) | |
| 5621 | - case offset_redirectid: | |
| 5622 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5623 | - crun = rid | |
| 5624 | - } else { | |
| 5625 | - return false | |
| 5626 | - } | |
| 4785 | + c.offset[1] = exp[0].evalF(c) | |
| 5627 | 4786 | } |
| 5628 | 4787 | return true |
| 5629 | 4788 | }) |
| @@ -5634,21 +4793,13 @@ type victoryQuote StateControllerBase | ||
| 5634 | 4793 | |
| 5635 | 4794 | const ( |
| 5636 | 4795 | victoryQuote_value byte = iota |
| 5637 | - victoryQuote_redirectid | |
| 5638 | 4796 | ) |
| 5639 | 4797 | |
| 5640 | 4798 | func (sc victoryQuote) Run(c *Char, _ []int32) bool { |
| 5641 | - crun := c | |
| 5642 | 4799 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5643 | 4800 | switch id { |
| 5644 | 4801 | case victoryQuote_value: |
| 5645 | 4802 | exp[0].evalI(c) |
| 5646 | - case victoryQuote_redirectid: | |
| 5647 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5648 | - crun = rid | |
| 5649 | - } else { | |
| 5650 | - return false | |
| 5651 | - } | |
| 5652 | 4803 | } |
| 5653 | 4804 | return true |
| 5654 | 4805 | }) |
| @@ -5660,27 +4811,19 @@ type zoom StateControllerBase | ||
| 5660 | 4811 | const ( |
| 5661 | 4812 | zoom_pos byte = iota |
| 5662 | 4813 | zoom_scale |
| 5663 | - zoom_redirectid | |
| 5664 | 4814 | ) |
| 5665 | 4815 | |
| 5666 | 4816 | func (sc zoom) Run(c *Char, _ []int32) bool { |
| 5667 | - crun := c | |
| 5668 | 4817 | sys.drawScale = sys.cam.Scale |
| 5669 | 4818 | StateControllerBase(sc).run(c, func(id byte, exp []BytecodeExp) bool { |
| 5670 | 4819 | switch id { |
| 5671 | 4820 | case zoom_pos: |
| 5672 | - sys.zoomPos[0] = exp[0].evalF(c) / sys.cam.Scale | |
| 4821 | + sys.zoomPos[0] = exp[0].evalF(c) | |
| 5673 | 4822 | if len(exp) > 1 { |
| 5674 | - sys.zoomPos[1] = exp[1].evalF(c) / sys.cam.Scale | |
| 4823 | + sys.zoomPos[1] = exp[1].evalF(c) | |
| 5675 | 4824 | } |
| 5676 | 4825 | case zoom_scale: |
| 5677 | - sys.drawScale = exp[0].evalF(c) * sys.cam.Scale | |
| 5678 | - case zoom_redirectid: | |
| 5679 | - if rid := sys.playerID(exp[0].evalI(c)); rid != nil { | |
| 5680 | - crun = rid | |
| 5681 | - } else { | |
| 5682 | - return false | |
| 5683 | - } | |
| 4826 | + sys.drawScale = exp[0].evalF(c) | |
| 5684 | 4827 | } |
| 5685 | 4828 | return true |
| 5686 | 4829 | }) |
| @@ -16,13 +16,12 @@ type stageCamera struct { | ||
| 16 | 16 | zoffset int32 |
| 17 | 17 | ztopscale float32 |
| 18 | 18 | drawOffsetY float32 |
| 19 | - mugen_zoomout float32 | |
| 20 | 19 | } |
| 21 | 20 | |
| 22 | 21 | func newStageCamera() *stageCamera { |
| 23 | 22 | return &stageCamera{verticalfollow: 0.2, tension: 50, |
| 24 | 23 | localcoord: [...]int32{320, 240}, localscl: float32(sys.gameWidth / 320), |
| 25 | - mugen_zoomout: 1, ztopscale: 1} | |
| 24 | + ztopscale: 1} | |
| 26 | 25 | } |
| 27 | 26 | |
| 28 | 27 | type Camera struct { |
| @@ -43,8 +42,8 @@ func newCamera() *Camera { | ||
| 43 | 42 | return &Camera{ZoomMin: 5.0 / 6, ZoomMax: 15.0 / 14, ZoomSpeed: 12} |
| 44 | 43 | } |
| 45 | 44 | func (c *Camera) Init() { |
| 46 | - c.boundL = float32(c.boundleft-c.startx)*c.localscl - ((1-c.mugen_zoomout)*100*c.mugen_zoomout)*(1/c.mugen_zoomout)*(1/c.mugen_zoomout)*1.6 | |
| 47 | - c.boundR = float32(c.boundright-c.startx)*c.localscl + ((1-c.mugen_zoomout)*100*c.mugen_zoomout)*(1/c.mugen_zoomout)*(1/c.mugen_zoomout)*1.6 | |
| 45 | + c.boundL = float32(c.boundleft-c.startx) * c.localscl | |
| 46 | + c.boundR = float32(c.boundright-c.startx) * c.localscl | |
| 48 | 47 | c.halfWidth = float32(sys.gameWidth) / 2 |
| 49 | 48 | c.XMin = c.boundL - c.halfWidth/c.BaseScale() |
| 50 | 49 | c.XMax = c.boundR + c.halfWidth/c.BaseScale() |
| @@ -82,14 +81,9 @@ func (c *Camera) Update(scl, x, y float32) { | ||
| 82 | 81 | c.Pos[0] = x |
| 83 | 82 | c.Pos[1] = y |
| 84 | 83 | } |
| 85 | -func (c *Camera) ScaleBound(scl, sclmul float32) float32 { | |
| 84 | +func (c *Camera) ScaleBound(scl float32) float32 { | |
| 86 | 85 | if c.ZoomEnable { |
| 87 | - if sys.debugPaused() { | |
| 88 | - sclmul = 1 | |
| 89 | - } else if sys.turbo < 1 { | |
| 90 | - sclmul = Pow(sclmul, sys.turbo) | |
| 91 | - } | |
| 92 | - return MaxF(c.MinScale, MinF(c.ZoomMax, scl*sclmul)) | |
| 86 | + return MaxF(c.MinScale, MinF(c.ZoomMax, scl)) | |
| 93 | 87 | } |
| 94 | 88 | return 1 |
| 95 | 89 | } |
| @@ -133,11 +127,7 @@ func (c *Camera) action(x, y *float32, leftest, rightest, lowest, highest, | ||
| 133 | 127 | vx += vel |
| 134 | 128 | } |
| 135 | 129 | } |
| 136 | - if sys.debugPaused() { | |
| 137 | - vx = 0 | |
| 138 | - } else { | |
| 139 | - vx *= MinF(1, sys.turbo) | |
| 140 | - } | |
| 130 | + vx *= MinF(1, sys.turbo) | |
| 141 | 131 | if vx < 0 { |
| 142 | 132 | tmp = MaxF(leftest+tension, tmp) |
| 143 | 133 | if vx < tmp { |
| @@ -180,10 +170,9 @@ func (c *Camera) action(x, y *float32, leftest, rightest, lowest, highest, | ||
| 180 | 170 | sclMul = MinF(4.0/3, Pow((Pow(2, c.ZoomSpeed)+3)/Pow(2, c.ZoomSpeed)- |
| 181 | 171 | sclMul, 64)) |
| 182 | 172 | } |
| 183 | - //if pause { | |
| 184 | - // sclMul = 1 | |
| 185 | - //} else if sclMul > 1 { | |
| 186 | - if sclMul > 1 { | |
| 173 | + if pause { | |
| 174 | + sclMul = 1 | |
| 175 | + } else if sclMul > 1 { | |
| 187 | 176 | sclMul = (sclMul-1)*Pow(c.zoomdelay, 8) + 1 |
| 188 | 177 | if tmp*sclMul > sys.xmax-sys.xmin { |
| 189 | 178 | sclMul = (sys.xmax - sys.xmin) / tmp |
| @@ -9,7 +9,6 @@ import ( | ||
| 9 | 9 | ) |
| 10 | 10 | |
| 11 | 11 | const MaxPalNo = 12 |
| 12 | -const MaxQuotes = 100 | |
| 13 | 12 | |
| 14 | 13 | type SystemCharFlag uint32 |
| 15 | 14 |
| @@ -81,14 +80,6 @@ const ( | ||
| 81 | 80 | PT_N |
| 82 | 81 | ) |
| 83 | 82 | |
| 84 | -type Space int32 | |
| 85 | - | |
| 86 | -const ( | |
| 87 | - Space_none Space = iota | |
| 88 | - Space_stage | |
| 89 | - Space_screen | |
| 90 | -) | |
| 91 | - | |
| 92 | 83 | type ClsnRect [][4]float32 |
| 93 | 84 | |
| 94 | 85 | func (cr *ClsnRect) Add(clsn []float32, x, y, xs, ys float32) { |
| @@ -113,7 +104,7 @@ func (cr ClsnRect) draw(trans int32) { | ||
| 113 | 104 | for _, c := range cr { |
| 114 | 105 | RenderMugen(*sys.clsnSpr.Tex, sys.clsnSpr.Pal, -1, sys.clsnSpr.Size, |
| 115 | 106 | -c[0]*sys.widthScale, -c[1]*sys.heightScale, ¬iling, |
| 116 | - c[2]*sys.widthScale, c[2]*sys.widthScale, c[3]*sys.heightScale, 1, 0, 0, 0, 0, | |
| 107 | + c[2]*sys.widthScale, c[2]*sys.widthScale, c[3]*sys.heightScale, 1, 0, 0, | |
| 117 | 108 | trans, &sys.scrrect, 0, 0) |
| 118 | 109 | } |
| 119 | 110 | } |
| @@ -163,38 +154,38 @@ type CharSize struct { | ||
| 163 | 154 | xscale float32 |
| 164 | 155 | yscale float32 |
| 165 | 156 | ground struct { |
| 166 | - back float32 | |
| 167 | - front float32 | |
| 157 | + back int32 | |
| 158 | + front int32 | |
| 168 | 159 | } |
| 169 | 160 | air struct { |
| 170 | - back float32 | |
| 171 | - front float32 | |
| 161 | + back int32 | |
| 162 | + front int32 | |
| 172 | 163 | } |
| 173 | - height float32 | |
| 164 | + height int32 | |
| 174 | 165 | attack struct { |
| 175 | - dist float32 | |
| 166 | + dist int32 | |
| 176 | 167 | z struct { |
| 177 | - width [2]float32 | |
| 168 | + width [2]int32 | |
| 178 | 169 | } |
| 179 | 170 | } |
| 180 | 171 | proj struct { |
| 181 | 172 | attack struct { |
| 182 | - dist float32 | |
| 173 | + dist int32 | |
| 183 | 174 | } |
| 184 | 175 | doscale int32 |
| 185 | 176 | } |
| 186 | 177 | head struct { |
| 187 | - pos [2]float32 | |
| 178 | + pos [2]int32 | |
| 188 | 179 | } |
| 189 | 180 | mid struct { |
| 190 | - pos [2]float32 | |
| 181 | + pos [2]int32 | |
| 191 | 182 | } |
| 192 | - shadowoffset float32 | |
| 183 | + shadowoffset int32 | |
| 193 | 184 | draw struct { |
| 194 | - offset [2]float32 | |
| 185 | + offset [2]int32 | |
| 195 | 186 | } |
| 196 | 187 | z struct { |
| 197 | - width float32 | |
| 188 | + width int32 | |
| 198 | 189 | } |
| 199 | 190 | } |
| 200 | 191 |
| @@ -210,12 +201,12 @@ func (cs *CharSize) init() { | ||
| 210 | 201 | cs.attack.dist = 160 |
| 211 | 202 | cs.proj.attack.dist = 90 |
| 212 | 203 | cs.proj.doscale = 0 |
| 213 | - cs.head.pos = [...]float32{-5, -90} | |
| 214 | - cs.mid.pos = [...]float32{-5, -60} | |
| 204 | + cs.head.pos = [...]int32{-5, -90} | |
| 205 | + cs.mid.pos = [...]int32{-5, -60} | |
| 215 | 206 | cs.shadowoffset = 0 |
| 216 | - cs.draw.offset = [...]float32{0, 0} | |
| 207 | + cs.draw.offset = [...]int32{0, 0} | |
| 217 | 208 | cs.z.width = 3 |
| 218 | - cs.attack.z.width = [...]float32{4, 4} | |
| 209 | + cs.attack.z.width = [...]int32{4, 4} | |
| 219 | 210 | } |
| 220 | 211 | |
| 221 | 212 | type CharVelocity struct { |
| @@ -428,7 +419,6 @@ type HitDef struct { | ||
| 428 | 419 | hitflag int32 |
| 429 | 420 | guardflag int32 |
| 430 | 421 | affectteam int32 |
| 431 | - teamside int | |
| 432 | 422 | animtype Reaction |
| 433 | 423 | air_animtype Reaction |
| 434 | 424 | priority int32 |
| @@ -581,9 +571,9 @@ func (ghv *GetHitVar) clear() { | ||
| 581 | 571 | func (ghv *GetHitVar) clearOff() { |
| 582 | 572 | ghv.xoff, ghv.yoff = 0, 0 |
| 583 | 573 | } |
| 584 | -func (ghv GetHitVar) getYaccel(c *Char) float32 { | |
| 574 | +func (ghv GetHitVar) getYaccel() float32 { | |
| 585 | 575 | if math.IsNaN(float64(ghv.yaccel)) { |
| 586 | - return 0.35 / c.localscl | |
| 576 | + return 0.35 | |
| 587 | 577 | } |
| 588 | 578 | return ghv.yaccel |
| 589 | 579 | } |
| @@ -642,8 +632,6 @@ type aimgImage struct { | ||
| 642 | 632 | anim Animation |
| 643 | 633 | pos, scl, ascl [2]float32 |
| 644 | 634 | angle float32 |
| 645 | - yangle float32 | |
| 646 | - xangle float32 | |
| 647 | 635 | oldVer bool |
| 648 | 636 | } |
| 649 | 637 |
| @@ -764,8 +752,6 @@ func (ai *AfterImage) recAfterImg(sd *SprData) { | ||
| 764 | 752 | img.pos = sd.pos |
| 765 | 753 | img.scl = sd.scl |
| 766 | 754 | img.angle = sd.angle |
| 767 | - img.yangle = sd.yangle | |
| 768 | - img.xangle = sd.xangle | |
| 769 | 755 | img.ascl = sd.ascl |
| 770 | 756 | img.oldVer = sd.oldVer |
| 771 | 757 | ai.imgidx = (ai.imgidx + 1) & 63 |
| @@ -788,8 +774,8 @@ func (ai *AfterImage) recAndCue(sd *SprData, rec bool) { | ||
| 788 | 774 | for i := ai.framegap; i <= end; i += ai.framegap { |
| 789 | 775 | img := &ai.imgs[(ai.imgidx-i)&63] |
| 790 | 776 | sys.sprites.add(&SprData{&img.anim, &ai.palfx[i/ai.framegap-1], img.pos, |
| 791 | - img.scl, ai.alpha, sd.priority - 2, img.angle, img.yangle, img.xangle, img.ascl, | |
| 792 | - false, sd.bright, sd.oldVer, sd.facing}, 0, 0, 0, 0) | |
| 777 | + img.scl, ai.alpha, sd.priority - 2, img.angle, img.ascl, | |
| 778 | + false, sd.bright, sd.oldVer}, 0, 0, 0, 0) | |
| 793 | 779 | } |
| 794 | 780 | if rec { |
| 795 | 781 | ai.recAfterImg(sd) |
| @@ -807,7 +793,6 @@ type Explod struct { | ||
| 807 | 793 | accel [2]float32 |
| 808 | 794 | sprpriority int32 |
| 809 | 795 | postype PosType |
| 810 | - space Space | |
| 811 | 796 | offset [2]float32 |
| 812 | 797 | relativef int32 |
| 813 | 798 | pos [2]float32 |
| @@ -824,17 +809,14 @@ type Explod struct { | ||
| 824 | 809 | bindId int32 |
| 825 | 810 | ignorehitpause bool |
| 826 | 811 | angle float32 |
| 827 | - yangle float32 | |
| 828 | - xangle float32 | |
| 829 | 812 | oldPos [2]float32 |
| 830 | 813 | newPos [2]float32 |
| 831 | 814 | palfx *PalFX |
| 832 | - localscl float32 | |
| 833 | 815 | } |
| 834 | 816 | |
| 835 | 817 | func (e *Explod) clear() { |
| 836 | 818 | *e = Explod{id: IErr, scale: [...]float32{1, 1}, removetime: -2, |
| 837 | - postype: PT_P1, relativef: 1, facing: 1, vfacing: 1, localscl: 1, space: Space_none, | |
| 819 | + postype: PT_P1, relativef: 1, facing: 1, vfacing: 1, | |
| 838 | 820 | alpha: [...]int32{-1, 0}, playerId: -1, bindId: -1, ignorehitpause: true} |
| 839 | 821 | } |
| 840 | 822 | func (e *Explod) setX(x float32) { |
| @@ -847,78 +829,56 @@ func (e *Explod) setPos(c *Char) { | ||
| 847 | 829 | pPos := func(c *Char) { |
| 848 | 830 | e.bindId, e.facing = c.id, c.facing*float32(e.relativef) |
| 849 | 831 | e.offset[0] *= c.facing |
| 850 | - e.setX(c.pos[0]*c.localscl/e.localscl + c.offsetX()*c.localscl/e.localscl + e.offset[0]) | |
| 851 | - e.setY(c.pos[1]*c.localscl/e.localscl + c.offsetY()*c.localscl/e.localscl + e.offset[1]) | |
| 832 | + e.setX(c.pos[0] + c.offsetX() + e.offset[0]) | |
| 833 | + e.setY(c.pos[1] + c.offsetY() + e.offset[1]) | |
| 852 | 834 | if e.bindtime == 0 { |
| 853 | 835 | e.bindtime = 1 |
| 854 | 836 | } |
| 855 | 837 | } |
| 856 | 838 | lPos := func() { |
| 857 | - e.setX(sys.cam.ScreenPos[0]/e.localscl + e.offset[0]/sys.cam.Scale) | |
| 858 | - e.setY(sys.cam.ScreenPos[1]/e.localscl + e.offset[1]/sys.cam.Scale) | |
| 859 | - if e.bindtime == 0 { | |
| 860 | - e.bindtime = 1 | |
| 861 | - } | |
| 839 | + e.setX(sys.cam.ScreenPos[0] + e.offset[0]/sys.cam.Scale) | |
| 840 | + e.setY(sys.cam.ScreenPos[1] + e.offset[1]/sys.cam.Scale) | |
| 862 | 841 | } |
| 863 | 842 | rPos := func() { |
| 864 | - e.setX(sys.cam.ScreenPos[0]/e.localscl + | |
| 865 | - (float32(sys.gameWidth)/e.localscl + e.offset[0]/sys.cam.Scale)) | |
| 866 | - e.setY(sys.cam.ScreenPos[1]/e.localscl + e.offset[1]/sys.cam.Scale) | |
| 867 | - if e.bindtime == 0 { | |
| 868 | - e.bindtime = 1 | |
| 869 | - } | |
| 843 | + e.setX(sys.cam.ScreenPos[0] + | |
| 844 | + (float32(sys.gameWidth)+e.offset[0])/sys.cam.Scale) | |
| 845 | + e.setY(sys.cam.ScreenPos[1] + e.offset[1]/sys.cam.Scale) | |
| 870 | 846 | } |
| 871 | - if e.space >= Space_stage { | |
| 872 | - e.postype = PT_N | |
| 873 | - } | |
| 874 | - if e.space <= Space_none { | |
| 875 | - switch e.postype { | |
| 876 | - case PT_P1: | |
| 877 | - pPos(c) | |
| 878 | - case PT_P2: | |
| 879 | - if p2 := sys.charList.enemyNear(c, 0, true); p2 != nil { | |
| 880 | - pPos(p2) | |
| 847 | + switch e.postype { | |
| 848 | + case PT_P1: | |
| 849 | + pPos(c) | |
| 850 | + case PT_P2: | |
| 851 | + if p2 := sys.charList.enemyNear(c, 0, true); p2 != nil { | |
| 852 | + pPos(p2) | |
| 853 | + } | |
| 854 | + case PT_F, PT_B: | |
| 855 | + e.facing = c.facing * float32(e.relativef) | |
| 856 | + // front と back はバインドの都合で left か right になおす | |
| 857 | + if c.facing > 0 && e.postype == PT_F || c.facing < 0 && e.postype == PT_B { | |
| 858 | + if e.postype == PT_B { | |
| 859 | + e.offset[0] *= -1 | |
| 881 | 860 | } |
| 882 | - case PT_F, PT_B: | |
| 883 | - e.facing = c.facing * float32(e.relativef) | |
| 884 | - // front と back はバインドの都合で left か right になおす | |
| 885 | - if c.facing > 0 && e.postype == PT_F || c.facing < 0 && e.postype == PT_B { | |
| 886 | - if e.postype == PT_B { | |
| 887 | - e.offset[0] *= -1 | |
| 888 | - } | |
| 889 | - e.postype = PT_R | |
| 890 | - rPos() | |
| 891 | - } else { | |
| 892 | - // explod の postype = front はキャラの向きで pos が反転しない | |
| 893 | - //if e.postype == PT_F && c.gi().ver[0] != 1 { | |
| 861 | + e.postype = PT_R | |
| 862 | + rPos() | |
| 863 | + } else { | |
| 864 | + // explod の postype = front はキャラの向きで pos が反転しない | |
| 865 | + if e.postype == PT_F && c.gi().ver[0] != 1 { | |
| 894 | 866 | // 旧バージョンだと front は キャラの向きが facing に反映されない |
| 895 | - // 1.1でも反映されてない模様 | |
| 896 | 867 | e.facing = float32(e.relativef) |
| 897 | - //} | |
| 898 | - e.postype = PT_L | |
| 899 | - lPos() | |
| 900 | 868 | } |
| 901 | - case PT_L: | |
| 902 | - e.facing = float32(e.relativef) | |
| 903 | - lPos() | |
| 904 | - case PT_R: | |
| 905 | - e.facing = float32(e.relativef) | |
| 906 | - rPos() | |
| 907 | - case PT_N: | |
| 908 | - e.facing = float32(e.relativef) | |
| 909 | - e.setX(e.offset[0]) | |
| 910 | - e.setY(e.offset[1]) | |
| 911 | - } | |
| 912 | - } else { | |
| 913 | - switch e.space { | |
| 914 | - case Space_screen: | |
| 915 | - e.facing = float32(e.relativef) | |
| 869 | + e.postype = PT_L | |
| 916 | 870 | lPos() |
| 917 | - case Space_stage: | |
| 918 | - e.facing = float32(e.relativef) | |
| 919 | - e.setX(e.offset[0]) | |
| 920 | - e.setY(e.offset[1]) | |
| 921 | 871 | } |
| 872 | + case PT_L: | |
| 873 | + e.facing = float32(e.relativef) | |
| 874 | + lPos() | |
| 875 | + case PT_R: | |
| 876 | + e.facing = float32(e.relativef) | |
| 877 | + rPos() | |
| 878 | + case PT_N: | |
| 879 | + e.facing = float32(e.relativef) | |
| 880 | + e.setX(e.offset[0]) | |
| 881 | + e.setY(e.offset[1]) | |
| 922 | 882 | } |
| 923 | 883 | } |
| 924 | 884 | func (e *Explod) matchId(eid, pid int32) bool { |
| @@ -936,11 +896,6 @@ func (e *Explod) update(oldVer bool, playerNo int) { | ||
| 936 | 896 | if !e.ignorehitpause || e.removeongethit { |
| 937 | 897 | c = sys.playerID(e.playerId) |
| 938 | 898 | } |
| 939 | - if sys.tickNextFrame() && | |
| 940 | - c != nil && e.removeongethit && c.sf(CSF_gethit) { | |
| 941 | - e.id, e.anim = IErr, nil | |
| 942 | - return | |
| 943 | - } | |
| 944 | 899 | p := false |
| 945 | 900 | if sys.super > 0 { |
| 946 | 901 | p = e.supermovetime >= 0 && e.time >= e.supermovetime |
| @@ -952,37 +907,28 @@ func (e *Explod) update(oldVer bool, playerNo int) { | ||
| 952 | 907 | act = c == nil || c.acttmp%2 >= 0 |
| 953 | 908 | } |
| 954 | 909 | if sys.tickFrame() { |
| 955 | - if e.removetime >= 0 && e.time >= e.removetime || | |
| 910 | + if c != nil && e.removeongethit && c.ss.moveType == MT_H || | |
| 911 | + e.removetime >= 0 && e.time >= e.removetime || | |
| 956 | 912 | act && e.removetime < -1 && e.anim.loopend { |
| 957 | 913 | e.id, e.anim = IErr, nil |
| 958 | 914 | return |
| 959 | 915 | } |
| 960 | 916 | } |
| 961 | 917 | screen := false |
| 962 | - if e.space == Space_screen || e.postype >= PT_L && e.postype != PT_N { | |
| 963 | - screen = true | |
| 964 | - } | |
| 965 | 918 | if e.bindtime != 0 { |
| 966 | - if e.space == Space_screen { | |
| 967 | - e.pos[0] = e.offset[0] | |
| 968 | - e.pos[1] = e.offset[1] | |
| 969 | - e.pos[0] -= float32(sys.gameWidth) / e.localscl / 2 | |
| 970 | - } else if e.postype == PT_N && e.bindId < 0 { | |
| 971 | - e.pos[0] = e.offset[0] | |
| 972 | - e.pos[1] = e.offset[1] | |
| 973 | - e.bindtime = 0 | |
| 974 | - } else if e.postype >= PT_L && e.postype != PT_N { | |
| 975 | - e.pos[0] = e.offset[0] | |
| 976 | - e.pos[1] = e.offset[1] | |
| 919 | + if e.postype == PT_N { | |
| 920 | + e.pos = e.offset | |
| 921 | + } else if e.postype >= PT_L { | |
| 922 | + e.pos, screen = e.offset, true | |
| 977 | 923 | if e.postype == PT_L { |
| 978 | - e.pos[0] -= float32(sys.gameWidth) / e.localscl / 2 | |
| 924 | + e.pos[0] -= float32(sys.gameWidth) / 2 | |
| 979 | 925 | } else { |
| 980 | - e.pos[0] += float32(sys.gameWidth) / e.localscl / 2 | |
| 926 | + e.pos[0] += float32(sys.gameWidth) / 2 | |
| 981 | 927 | } |
| 982 | 928 | } else { |
| 983 | 929 | if c := sys.playerID(e.bindId); c != nil { |
| 984 | - e.pos[0] = c.drawPos[0]*c.localscl/e.localscl + c.offsetX()*c.localscl/e.localscl + e.offset[0] | |
| 985 | - e.pos[1] = c.drawPos[1]*c.localscl/e.localscl + c.offsetY()*c.localscl/e.localscl + e.offset[1] | |
| 930 | + e.pos[0] = c.drawPos[0] + c.offsetX() + e.offset[0] | |
| 931 | + e.pos[1] = c.drawPos[1] + c.offsetY() + e.offset[1] | |
| 986 | 932 | } else { |
| 987 | 933 | e.bindtime = 0 |
| 988 | 934 | } |
| @@ -1013,44 +959,33 @@ func (e *Explod) update(oldVer bool, playerNo int) { | ||
| 1013 | 959 | alp[0] = -1 |
| 1014 | 960 | } |
| 1015 | 961 | agl := e.angle |
| 1016 | - yagl := e.yangle | |
| 1017 | - xagl := e.xangle | |
| 1018 | 962 | if (e.facing < 0) != (e.vfacing < 0) { |
| 1019 | 963 | agl *= -1 |
| 1020 | - yagl *= -1 | |
| 1021 | 964 | } |
| 1022 | - | |
| 1023 | - sdwalp := 255 - alp[1] | |
| 965 | + sdwalp := alp[0] | |
| 1024 | 966 | if sdwalp < 0 { |
| 1025 | 967 | sdwalp = 256 |
| 1026 | 968 | } |
| 1027 | - var epos = [2]float32{e.pos[0] * e.localscl, e.pos[1] * e.localscl} | |
| 1028 | - sprs.add(&SprData{e.anim, pfx, epos, [...]float32{e.facing * e.scale[0] * e.localscl, | |
| 1029 | - e.vfacing * e.scale[1] * e.localscl}, alp, e.sprpriority, agl, yagl, xagl, [...]float32{1, 1}, | |
| 1030 | - screen, playerNo == sys.superplayer, oldVer, e.facing}, | |
| 969 | + sprs.add(&SprData{e.anim, pfx, e.pos, [...]float32{e.facing * e.scale[0], | |
| 970 | + e.vfacing * e.scale[1]}, alp, e.sprpriority, agl, [...]float32{1, 1}, | |
| 971 | + screen, playerNo == sys.superplayer, oldVer}, | |
| 1031 | 972 | e.shadow[0]<<16|e.shadow[1]&0xff<<8|e.shadow[0]&0xff, sdwalp, 0, 0) |
| 1032 | 973 | if sys.tickNextFrame() { |
| 1033 | 974 | if e.bindtime > 0 { |
| 1034 | 975 | e.bindtime-- |
| 976 | + if screen && e.bindtime == 0 { | |
| 977 | + switch e.postype { | |
| 978 | + case PT_L: | |
| 979 | + for i := range e.pos { | |
| 980 | + e.pos[i] = sys.cam.ScreenPos[i] + e.offset[i]/sys.cam.Scale | |
| 981 | + } | |
| 982 | + case PT_R: | |
| 983 | + e.pos[0] = sys.cam.ScreenPos[0] + | |
| 984 | + (float32(sys.gameWidth)+e.offset[0])/sys.cam.Scale | |
| 985 | + e.pos[1] = sys.cam.ScreenPos[1] + e.offset[1]/sys.cam.Scale | |
| 986 | + } | |
| 987 | + } | |
| 1035 | 988 | } |
| 1036 | - //if screen && e.bindtime == 0 { | |
| 1037 | - // if e.space <= Space_none { | |
| 1038 | - // switch e.postype { | |
| 1039 | - // case PT_L: | |
| 1040 | - // for i := range e.pos { | |
| 1041 | - // e.pos[i] = sys.cam.ScreenPos[i] + e.offset[i]/sys.cam.Scale | |
| 1042 | - // } | |
| 1043 | - // case PT_R: | |
| 1044 | - // e.pos[0] = sys.cam.ScreenPos[0] + | |
| 1045 | - // (float32(sys.gameWidth)+e.offset[0])/sys.cam.Scale | |
| 1046 | - // e.pos[1] = sys.cam.ScreenPos[1] + e.offset[1]/sys.cam.Scale | |
| 1047 | - // } | |
| 1048 | - // } else if e.space == Space_screen { | |
| 1049 | - // for i := range e.pos { | |
| 1050 | - // e.pos[i] = sys.cam.ScreenPos[i] + e.offset[i]/sys.cam.Scale | |
| 1051 | - // } | |
| 1052 | - // } | |
| 1053 | - //} | |
| 1054 | 989 | if act { |
| 1055 | 990 | if e.bindtime == 0 { |
| 1056 | 991 | e.oldPos = e.pos |
| @@ -1104,7 +1039,6 @@ type Projectile struct { | ||
| 1104 | 1039 | newPos [2]float32 |
| 1105 | 1040 | aimg AfterImage |
| 1106 | 1041 | palfx *PalFX |
| 1107 | - localscl float32 | |
| 1108 | 1042 | } |
| 1109 | 1043 | |
| 1110 | 1044 | func newProjectile() *Projectile { |
| @@ -1114,7 +1048,7 @@ func newProjectile() *Projectile { | ||
| 1114 | 1048 | } |
| 1115 | 1049 | func (p *Projectile) clear() { |
| 1116 | 1050 | *p = Projectile{id: IErr, hitanim: -1, remanim: IErr, cancelanim: IErr, |
| 1117 | - scale: [...]float32{1, 1}, clsnScale: [...]float32{1, 1}, remove: true, localscl: 1, | |
| 1051 | + scale: [...]float32{1, 1}, clsnScale: [...]float32{1, 1}, remove: true, | |
| 1118 | 1052 | removetime: -1, velmul: [...]float32{1, 1}, hits: 1, priority: 1, |
| 1119 | 1053 | prioritypoint: 1, sprpriority: 3, edgebound: 40, stagebound: 40, |
| 1120 | 1054 | heightbound: [...]int32{-240, 1}, facing: 1, aimg: *newAfterImage()} |
| @@ -1149,12 +1083,12 @@ func (p *Projectile) update(playerNo int) { | ||
| 1149 | 1083 | } else if p.cancelanim != p.anim { |
| 1150 | 1084 | p.ani = sys.chars[playerNo][0].getAnim(p.cancelanim, false) |
| 1151 | 1085 | } |
| 1152 | - } else if p.pos[0] < sys.xmin/p.localscl-float32(p.edgebound) || | |
| 1153 | - p.pos[0] > sys.xmax/p.localscl+float32(p.edgebound) || | |
| 1086 | + } else if p.pos[0] < sys.xmin-float32(p.edgebound) || | |
| 1087 | + p.pos[0] > sys.xmax+float32(p.edgebound) || | |
| 1154 | 1088 | p.velocity[0]*p.facing < 0 && |
| 1155 | - p.pos[0] < sys.cam.XMin/p.localscl-float32(p.stagebound) || | |
| 1089 | + p.pos[0] < sys.cam.XMin-float32(p.stagebound) || | |
| 1156 | 1090 | p.velocity[0]*p.facing > 0 && |
| 1157 | - p.pos[0] > sys.cam.XMax/p.localscl+float32(p.stagebound) || | |
| 1091 | + p.pos[0] > sys.cam.XMax+float32(p.stagebound) || | |
| 1158 | 1092 | p.velocity[1] > 0 && p.pos[1] > float32(p.heightbound[1]) || |
| 1159 | 1093 | p.velocity[1] < 0 && p.pos[1] < float32(p.heightbound[0]) || |
| 1160 | 1094 | p.removetime == 0 || |
| @@ -1189,6 +1123,7 @@ func (p *Projectile) update(playerNo int) { | ||
| 1189 | 1123 | return |
| 1190 | 1124 | } |
| 1191 | 1125 | if sys.tickFrame() { |
| 1126 | + p.oldPos = p.pos | |
| 1192 | 1127 | p.newPos = [...]float32{p.pos[0] + p.velocity[0]*p.facing, |
| 1193 | 1128 | p.pos[1] + p.velocity[1]} |
| 1194 | 1129 | } |
| @@ -1197,7 +1132,6 @@ func (p *Projectile) update(playerNo int) { | ||
| 1197 | 1132 | p.pos[i] = np - (np-p.oldPos[i])*(1-ti) |
| 1198 | 1133 | } |
| 1199 | 1134 | if sys.tickNextFrame() { |
| 1200 | - p.oldPos = p.pos | |
| 1201 | 1135 | for i := range p.velocity { |
| 1202 | 1136 | p.velocity[i] += p.accel[i] |
| 1203 | 1137 | p.velocity[i] *= p.velmul[i] |
| @@ -1236,17 +1170,15 @@ func (p *Projectile) clsn(playerNo int) { | ||
| 1236 | 1170 | } |
| 1237 | 1171 | for i := 0; i < playerNo && p.hits >= 0; i++ { |
| 1238 | 1172 | for j, pr := range sys.projs[i] { |
| 1239 | - if pr.hits < 0 || pr.id < 0 || (pr.hitdef.affectteam != 0 && | |
| 1240 | - (p.hitdef.teamside-1 != pr.hitdef.teamside-1) != (pr.hitdef.affectteam > 0)) || | |
| 1173 | + if pr.hits < 0 || pr.id < 0 || pr.hitdef.affectteam != 0 && | |
| 1174 | + (playerNo&1 != i&1) != (pr.hitdef.affectteam > 0) || | |
| 1241 | 1175 | pr.ani == nil || len(pr.ani.frames) == 0 { |
| 1242 | 1176 | continue |
| 1243 | 1177 | } |
| 1244 | 1178 | clsn1 := pr.ani.CurrentFrame().Clsn2() |
| 1245 | 1179 | clsn2 := p.ani.CurrentFrame().Clsn2() |
| 1246 | - if sys.clsnHantei(clsn1, [...]float32{pr.clsnScale[0] * pr.localscl, pr.clsnScale[1] * pr.localscl}, | |
| 1247 | - [...]float32{pr.pos[0] * pr.localscl, pr.pos[1] * pr.localscl}, pr.facing, | |
| 1248 | - clsn2, [...]float32{p.clsnScale[0] * p.localscl, p.clsnScale[1] * p.localscl}, | |
| 1249 | - [...]float32{p.pos[0] * p.localscl, p.pos[1] * p.localscl}, p.facing) { | |
| 1180 | + if sys.clsnHantei(clsn1, pr.clsnScale, pr.pos, pr.facing, | |
| 1181 | + clsn2, p.clsnScale, p.pos, p.facing) { | |
| 1250 | 1182 | opp, pp := &sys.projs[i][j], p.prioritypoint |
| 1251 | 1183 | cancel(&p.prioritypoint, p.priority, &p.hits, opp.prioritypoint) |
| 1252 | 1184 | cancel(&opp.prioritypoint, opp.priority, &opp.hits, pp) |
| @@ -1293,12 +1225,12 @@ func (p *Projectile) cueDraw(oldVer bool, playerNo int) { | ||
| 1293 | 1225 | } |
| 1294 | 1226 | if sys.clsnDraw && p.ani != nil { |
| 1295 | 1227 | if frm := p.ani.drawFrame(); frm != nil { |
| 1296 | - xs := p.facing * p.clsnScale[0] * p.localscl | |
| 1228 | + xs := p.facing * p.clsnScale[0] | |
| 1297 | 1229 | if clsn := frm.Clsn1(); len(clsn) > 0 { |
| 1298 | - sys.drawc1.Add(clsn, p.pos[0]*p.localscl, p.pos[1]*p.localscl, xs, p.clsnScale[1]*p.localscl) | |
| 1230 | + sys.drawc1.Add(clsn, p.pos[0], p.pos[1], xs, p.clsnScale[1]) | |
| 1299 | 1231 | } |
| 1300 | 1232 | if clsn := frm.Clsn2(); len(clsn) > 0 { |
| 1301 | - sys.drawc2.Add(clsn, p.pos[0]*p.localscl, p.pos[1]*p.localscl, xs, p.clsnScale[1]*p.localscl) | |
| 1233 | + sys.drawc2.Add(clsn, p.pos[0], p.pos[1], xs, p.clsnScale[1]) | |
| 1302 | 1234 | } |
| 1303 | 1235 | } |
| 1304 | 1236 | } |
| @@ -1318,10 +1250,10 @@ func (p *Projectile) cueDraw(oldVer bool, playerNo int) { | ||
| 1318 | 1250 | } |
| 1319 | 1251 | } |
| 1320 | 1252 | if p.ani != nil { |
| 1321 | - sd := &SprData{p.ani, p.palfx, [...]float32{p.pos[0] * p.localscl, p.pos[1] * p.localscl}, | |
| 1322 | - [...]float32{p.facing * p.scale[0] * p.localscl, p.scale[1] * p.localscl}, [2]int32{-1}, | |
| 1323 | - p.sprpriority, 0, 0, 0, [...]float32{1, 1}, false, playerNo == sys.superplayer, | |
| 1324 | - sys.cgi[playerNo].ver[0] != 1, p.facing} | |
| 1253 | + sd := &SprData{p.ani, p.palfx, p.pos, | |
| 1254 | + [...]float32{p.facing * p.scale[0], p.scale[1]}, [2]int32{-1}, | |
| 1255 | + p.sprpriority, 0, [...]float32{1, 1}, false, playerNo == sys.superplayer, | |
| 1256 | + sys.cgi[playerNo].ver[0] != 1} | |
| 1325 | 1257 | p.aimg.recAndCue(sd, sys.tickNextFrame() && notpause) |
| 1326 | 1258 | sys.sprites.add(sd, |
| 1327 | 1259 | p.shadow[0]<<16|p.shadow[1]&255<<8|p.shadow[2]&255, 256, 0, 0) |
| @@ -1367,8 +1299,6 @@ type CharGlobalInfo struct { | ||
| 1367 | 1299 | pctype ProjContact |
| 1368 | 1300 | pctime, pcid int32 |
| 1369 | 1301 | unhittable int32 |
| 1370 | - quotes [MaxQuotes]string | |
| 1371 | - portraitscale float32 | |
| 1372 | 1302 | } |
| 1373 | 1303 | |
| 1374 | 1304 | func (cgi *CharGlobalInfo) clearPCTime() { |
| @@ -1458,7 +1388,6 @@ type Char struct { | ||
| 1458 | 1388 | helperIndex int32 |
| 1459 | 1389 | parentIndex int32 |
| 1460 | 1390 | playerNo int |
| 1461 | - teamside int | |
| 1462 | 1391 | keyctrl bool |
| 1463 | 1392 | player bool |
| 1464 | 1393 | animPN int |
| @@ -1469,9 +1398,6 @@ type Char struct { | ||
| 1469 | 1398 | powerMax int32 |
| 1470 | 1399 | juggle int32 |
| 1471 | 1400 | fallTime int32 |
| 1472 | - localcoord int32 | |
| 1473 | - localscl float32 | |
| 1474 | - oldLocalscl float32 | |
| 1475 | 1401 | size CharSize |
| 1476 | 1402 | clsnScale [2]float32 |
| 1477 | 1403 | hitdef HitDef |
| @@ -1503,14 +1429,10 @@ type Char struct { | ||
| 1503 | 1429 | inguarddist bool |
| 1504 | 1430 | pushed bool |
| 1505 | 1431 | hitdefContact bool |
| 1506 | - movedY bool | |
| 1507 | 1432 | atktmp int8 |
| 1508 | 1433 | hittmp int8 |
| 1509 | 1434 | acttmp int8 |
| 1510 | 1435 | minus int8 |
| 1511 | - winquote int32 | |
| 1512 | - memberNo int | |
| 1513 | - selectNo int | |
| 1514 | 1436 | } |
| 1515 | 1437 | |
| 1516 | 1438 | func newChar(n int, idx int32) (c *Char) { |
| @@ -1529,7 +1451,6 @@ func (c *Char) panic() { | ||
| 1529 | 1451 | func (c *Char) init(n int, idx int32) { |
| 1530 | 1452 | c.clear1() |
| 1531 | 1453 | c.playerNo, c.helperIndex = n, idx |
| 1532 | - c.animPN = c.playerNo | |
| 1533 | 1454 | if c.helperIndex == 0 { |
| 1534 | 1455 | c.keyctrl, c.player = true, true |
| 1535 | 1456 | } |
| @@ -1578,11 +1499,10 @@ func (c *Char) clear1() { | ||
| 1578 | 1499 | c.p1facing = 0 |
| 1579 | 1500 | c.pushed = false |
| 1580 | 1501 | c.atktmp, c.hittmp, c.acttmp, c.minus = 0, 0, 0, 2 |
| 1581 | - c.winquote = -1 | |
| 1582 | 1502 | } |
| 1583 | 1503 | func (c *Char) copyParent(p *Char) { |
| 1584 | 1504 | c.parentIndex = p.helperIndex |
| 1585 | - c.name, c.key, c.size, c.teamside = p.name+"'s helper", p.key, p.size, p.teamside | |
| 1505 | + c.name, c.key, c.size = p.name+"'s helper", p.key, p.size | |
| 1586 | 1506 | c.life, c.lifeMax, c.power, c.powerMax = p.lifeMax, p.lifeMax, 0, p.powerMax |
| 1587 | 1507 | c.clear2() |
| 1588 | 1508 | } |
| @@ -1630,7 +1550,7 @@ func (c *Char) stCgi() *CharGlobalInfo { | ||
| 1630 | 1550 | } |
| 1631 | 1551 | func (c *Char) load(def string) error { |
| 1632 | 1552 | gi := &sys.cgi[c.playerNo] |
| 1633 | - gi.def, gi.displayname, gi.author, gi.sff, gi.snd, gi.quotes = def, "", "", nil, nil, [MaxQuotes]string{} | |
| 1553 | + gi.def, gi.displayname, gi.author, gi.sff, gi.snd = def, "", "", nil, nil | |
| 1634 | 1554 | gi.anim = NewAnimationTable() |
| 1635 | 1555 | for i := range gi.palkeymap { |
| 1636 | 1556 | gi.palkeymap[i] = int32(i) |
| @@ -1642,8 +1562,6 @@ func (c *Char) load(def string) error { | ||
| 1642 | 1562 | lines, i := SplitAndTrim(str, "\n"), 0 |
| 1643 | 1563 | cns, sprite, anim, sound := "", "", "", "" |
| 1644 | 1564 | info, files, keymap := true, true, true |
| 1645 | - c.localcoord = 320 | |
| 1646 | - c.localscl = 1 | |
| 1647 | 1565 | for i < len(lines) { |
| 1648 | 1566 | is, name, subname := ReadIniSection(lines, &i) |
| 1649 | 1567 | switch name { |
| @@ -1659,10 +1577,6 @@ func (c *Char) load(def string) error { | ||
| 1659 | 1577 | gi.author, _, _ = is.getText("author") |
| 1660 | 1578 | gi.authorLow = strings.ToLower(gi.author) |
| 1661 | 1579 | gi.nameLow = strings.ToLower(c.name) |
| 1662 | - is.ReadI32("localcoord", &c.localcoord) | |
| 1663 | - c.localscl = 320 / float32(c.localcoord) | |
| 1664 | - gi.portraitscale = c.localscl | |
| 1665 | - is.ReadF32("portraitscale", &gi.portraitscale) | |
| 1666 | 1580 | } |
| 1667 | 1581 | case "files": |
| 1668 | 1582 | if files { |
| @@ -1702,74 +1616,18 @@ func (c *Char) load(def string) error { | ||
| 1702 | 1616 | } |
| 1703 | 1617 | gi.data.init() |
| 1704 | 1618 | c.size.init() |
| 1705 | - c.size.ground.back = c.size.ground.back / c.localscl | |
| 1706 | - c.size.ground.front = c.size.ground.front / c.localscl | |
| 1707 | - c.size.air.back = c.size.air.back / c.localscl | |
| 1708 | - c.size.air.front = c.size.air.front / c.localscl | |
| 1709 | - c.size.height = c.size.height / c.localscl | |
| 1710 | - c.size.attack.dist = c.size.attack.dist / c.localscl | |
| 1711 | - c.size.proj.attack.dist = c.size.proj.attack.dist / c.localscl | |
| 1712 | - c.size.head.pos[0] = c.size.head.pos[0] / c.localscl | |
| 1713 | - c.size.head.pos[1] = c.size.head.pos[1] / c.localscl | |
| 1714 | - c.size.mid.pos[0] = c.size.mid.pos[0] / c.localscl | |
| 1715 | - c.size.mid.pos[1] = c.size.mid.pos[1] / c.localscl | |
| 1716 | - c.size.shadowoffset = c.size.shadowoffset / c.localscl | |
| 1717 | - c.size.draw.offset[0] = c.size.draw.offset[0] / c.localscl | |
| 1718 | - c.size.draw.offset[1] = c.size.draw.offset[1] / c.localscl | |
| 1719 | - c.size.z.width = c.size.z.width / c.localscl | |
| 1720 | - c.size.attack.z.width[0] = c.size.attack.z.width[0] / c.localscl | |
| 1721 | - c.size.attack.z.width[1] = c.size.attack.z.width[1] / c.localscl | |
| 1722 | - | |
| 1723 | 1619 | gi.velocity.init() |
| 1724 | - | |
| 1725 | - gi.velocity.air.gethit.groundrecover[0] /= c.localscl | |
| 1726 | - gi.velocity.air.gethit.groundrecover[1] /= c.localscl | |
| 1727 | - gi.velocity.air.gethit.airrecover.add[0] /= c.localscl | |
| 1728 | - gi.velocity.air.gethit.airrecover.add[1] /= c.localscl | |
| 1729 | - gi.velocity.air.gethit.airrecover.back /= c.localscl | |
| 1730 | - gi.velocity.air.gethit.airrecover.fwd /= c.localscl | |
| 1731 | - gi.velocity.air.gethit.airrecover.up /= c.localscl | |
| 1732 | - gi.velocity.air.gethit.airrecover.down /= c.localscl | |
| 1733 | - | |
| 1734 | 1620 | gi.movement.init() |
| 1735 | - | |
| 1736 | - gi.movement.airjump.height = int32(float32(gi.movement.airjump.height) / c.localscl) | |
| 1737 | - gi.movement.yaccel /= c.localscl | |
| 1738 | - gi.movement.stand.friction_threshold /= c.localscl | |
| 1739 | - gi.movement.crouch.friction_threshold /= c.localscl | |
| 1740 | - gi.movement.air.gethit.groundlevel /= c.localscl | |
| 1741 | - gi.movement.air.gethit.groundrecover.ground.threshold /= c.localscl | |
| 1742 | - gi.movement.air.gethit.groundrecover.groundlevel /= c.localscl | |
| 1743 | - gi.movement.air.gethit.airrecover.threshold /= c.localscl | |
| 1744 | - gi.movement.air.gethit.airrecover.yaccel /= c.localscl | |
| 1745 | - gi.movement.air.gethit.trip.groundlevel /= c.localscl | |
| 1746 | - gi.movement.down.bounce.offset[0] /= c.localscl | |
| 1747 | - gi.movement.down.bounce.offset[1] /= c.localscl | |
| 1748 | - gi.movement.down.bounce.yaccel /= c.localscl | |
| 1749 | - gi.movement.down.bounce.groundlevel /= c.localscl | |
| 1750 | - gi.movement.down.friction_threshold /= c.localscl | |
| 1751 | - | |
| 1752 | - data, size, velocity, movement, quotes := true, true, true, true, true | |
| 1621 | + data, size, velocity, movement := true, true, true, true | |
| 1753 | 1622 | for i < len(lines) { |
| 1754 | 1623 | is, name, _ := ReadIniSection(lines, &i) |
| 1755 | 1624 | switch name { |
| 1756 | 1625 | case "data": |
| 1757 | 1626 | if data { |
| 1758 | 1627 | data = false |
| 1759 | - var tmp int32 | |
| 1760 | - tmp = Atoi(sys.cmdFlags[fmt.Sprintf("-p%v.life", c.playerNo+1)]) | |
| 1761 | - if tmp != 0 { | |
| 1762 | - gi.data.life = tmp | |
| 1763 | - } else { | |
| 1764 | - is.ReadI32("life", &gi.data.life) | |
| 1765 | - } | |
| 1628 | + is.ReadI32("life", &gi.data.life) | |
| 1766 | 1629 | c.lifeMax = gi.data.life |
| 1767 | - tmp = Atoi(sys.cmdFlags[fmt.Sprintf("-p%v.power", c.playerNo+1)]) | |
| 1768 | - if tmp != 0 { | |
| 1769 | - gi.data.power = tmp | |
| 1770 | - } else { | |
| 1771 | - is.ReadI32("power", &gi.data.power) | |
| 1772 | - } | |
| 1630 | + is.ReadI32("power", &gi.data.power) | |
| 1773 | 1631 | c.powerMax = gi.data.power |
| 1774 | 1632 | is.ReadI32("attack", &gi.data.attack) |
| 1775 | 1633 | is.ReadI32("defence", &gi.data.defence) |
| @@ -1803,24 +1661,23 @@ func (c *Char) load(def string) error { | ||
| 1803 | 1661 | case "size": |
| 1804 | 1662 | if size { |
| 1805 | 1663 | size = false |
| 1806 | - | |
| 1807 | 1664 | is.ReadF32("xscale", &c.size.xscale) |
| 1808 | 1665 | is.ReadF32("yscale", &c.size.yscale) |
| 1809 | - is.ReadF32("ground.back", &c.size.ground.back) | |
| 1810 | - is.ReadF32("ground.front", &c.size.ground.front) | |
| 1811 | - is.ReadF32("air.back", &c.size.air.back) | |
| 1812 | - is.ReadF32("air.front", &c.size.air.front) | |
| 1813 | - is.ReadF32("height", &c.size.height) | |
| 1814 | - is.ReadF32("attack.dist", &c.size.attack.dist) | |
| 1815 | - is.ReadF32("proj.attack.dist", &c.size.proj.attack.dist) | |
| 1666 | + is.ReadI32("ground.back", &c.size.ground.back) | |
| 1667 | + is.ReadI32("ground.front", &c.size.ground.front) | |
| 1668 | + is.ReadI32("air.back", &c.size.air.back) | |
| 1669 | + is.ReadI32("air.front", &c.size.air.front) | |
| 1670 | + is.ReadI32("height", &c.size.height) | |
| 1671 | + is.ReadI32("attack.dist", &c.size.attack.dist) | |
| 1672 | + is.ReadI32("proj.attack.dist", &c.size.proj.attack.dist) | |
| 1816 | 1673 | is.ReadI32("proj.doscale", &c.size.proj.doscale) |
| 1817 | - is.ReadF32("head.pos", &c.size.head.pos[0], &c.size.head.pos[1]) | |
| 1818 | - is.ReadF32("mid.pos", &c.size.mid.pos[0], &c.size.mid.pos[1]) | |
| 1819 | - is.ReadF32("shadowoffset", &c.size.shadowoffset) | |
| 1820 | - is.ReadF32("draw.offset", | |
| 1674 | + is.ReadI32("head.pos", &c.size.head.pos[0], &c.size.head.pos[1]) | |
| 1675 | + is.ReadI32("mid.pos", &c.size.mid.pos[0], &c.size.mid.pos[1]) | |
| 1676 | + is.ReadI32("shadowoffset", &c.size.shadowoffset) | |
| 1677 | + is.ReadI32("draw.offset", | |
| 1821 | 1678 | &c.size.draw.offset[0], &c.size.draw.offset[1]) |
| 1822 | - is.ReadF32("z.width", &c.size.z.width) | |
| 1823 | - is.ReadF32("attack.z.width", | |
| 1679 | + is.ReadI32("z.width", &c.size.z.width) | |
| 1680 | + is.ReadI32("attack.z.width", | |
| 1824 | 1681 | &c.size.attack.z.width[0], &c.size.attack.z.width[1]) |
| 1825 | 1682 | } |
| 1826 | 1683 | case "velocity": |
| @@ -1906,15 +1763,6 @@ func (c *Char) load(def string) error { | ||
| 1906 | 1763 | is.ReadF32("down.friction.threshold", |
| 1907 | 1764 | &gi.movement.down.friction_threshold) |
| 1908 | 1765 | } |
| 1909 | - case "quotes": | |
| 1910 | - if quotes { | |
| 1911 | - quotes = false | |
| 1912 | - for i := 0; i < MaxQuotes; i++ { | |
| 1913 | - if is[fmt.Sprintf("victory%v", i)] != "" { | |
| 1914 | - gi.quotes[i], _, _ = is.getText(fmt.Sprintf("victory%v", i)) | |
| 1915 | - } | |
| 1916 | - } | |
| 1917 | - } | |
| 1918 | 1766 | } |
| 1919 | 1767 | } |
| 1920 | 1768 | if LoadFile(&sprite, def, func(filename string) error { |
| @@ -1929,7 +1777,6 @@ func (c *Char) load(def string) error { | ||
| 1929 | 1777 | if err != nil { |
| 1930 | 1778 | return err |
| 1931 | 1779 | } |
| 1932 | - str = str + sys.commonAir | |
| 1933 | 1780 | lines, i := SplitAndTrim(str, "\n"), 0 |
| 1934 | 1781 | gi.anim = ReadAnimationTable(gi.sff, lines, &i) |
| 1935 | 1782 | return nil |
| @@ -1966,7 +1813,7 @@ func (c *Char) loadPallet() { | ||
| 1966 | 1813 | if _, err = io.ReadFull(f, rgb[:]); err != nil { |
| 1967 | 1814 | break |
| 1968 | 1815 | } |
| 1969 | - pl[i] = uint32(255)<<24 | uint32(rgb[2])<<16 | uint32(rgb[1])<<8 | uint32(rgb[0]) | |
| 1816 | + pl[i] = uint32(rgb[2])<<16 | uint32(rgb[1])<<8 | uint32(rgb[0]) | |
| 1970 | 1817 | } |
| 1971 | 1818 | chk(f.Close()) |
| 1972 | 1819 | if err == nil { |
| @@ -2081,9 +1928,6 @@ func (c *Char) setXV(xv float32) { | ||
| 2081 | 1928 | } |
| 2082 | 1929 | func (c *Char) setYV(yv float32) { |
| 2083 | 1930 | c.vel[1] = yv |
| 2084 | - if yv != 0 { | |
| 2085 | - c.movedY = true | |
| 2086 | - } | |
| 2087 | 1931 | } |
| 2088 | 1932 | func (c *Char) changeAnim(animNo int32) { |
| 2089 | 1933 | if a := c.getAnim(animNo, false); a != nil { |
| @@ -2186,7 +2030,7 @@ func (c *Char) partner(n int32) *Char { | ||
| 2186 | 2030 | p += 2 |
| 2187 | 2031 | } |
| 2188 | 2032 | } |
| 2189 | - if len(sys.chars[p]) > 0 && sys.chars[p][0].teamside < 2 { | |
| 2033 | + if len(sys.chars[p]) > 0 { | |
| 2190 | 2034 | return sys.chars[p][0] |
| 2191 | 2035 | } |
| 2192 | 2036 | return nil |
| @@ -2195,9 +2039,6 @@ func (c *Char) enemy(n int32) *Char { | ||
| 2195 | 2039 | if n < 0 || n >= c.numEnemy() { |
| 2196 | 2040 | return nil |
| 2197 | 2041 | } |
| 2198 | - if c.teamside == 3-1 { | |
| 2199 | - return sys.chars[n][0] | |
| 2200 | - } | |
| 2201 | 2042 | return sys.chars[n*2+int32(^c.playerNo&1)][0] |
| 2202 | 2043 | } |
| 2203 | 2044 | func (c *Char) enemyNear(n int32) *Char { |
| @@ -2257,12 +2098,12 @@ func (c *Char) backEdgeBodyDist() float32 { | ||
| 2257 | 2098 | } |
| 2258 | 2099 | func (c *Char) backEdgeDist() float32 { |
| 2259 | 2100 | if c.facing < 0 { |
| 2260 | - return sys.xmax/c.localscl - c.pos[0] | |
| 2101 | + return sys.xmax - c.pos[0] | |
| 2261 | 2102 | } |
| 2262 | - return c.pos[0] - sys.xmin/c.localscl | |
| 2103 | + return c.pos[0] - sys.xmin | |
| 2263 | 2104 | } |
| 2264 | 2105 | func (c *Char) bottomEdge() float32 { |
| 2265 | - return sys.cam.ScreenPos[1]/c.localscl + c.gameHeight() | |
| 2106 | + return sys.cam.ScreenPos[1] + c.gameHeight() | |
| 2266 | 2107 | } |
| 2267 | 2108 | func (c *Char) canRecover() bool { |
| 2268 | 2109 | return c.ghv.fall.recover && c.fallTime >= c.ghv.fall.recovertime |
| @@ -2273,6 +2114,9 @@ func (c *Char) command(pn, i int) bool { | ||
| 2273 | 2114 | } |
| 2274 | 2115 | cl := c.cmd[pn].At(i) |
| 2275 | 2116 | if len(cl) > 0 && c.key < 0 { |
| 2117 | + if c.gi().ver[0] == 1 && c.helperIndex != 0 { | |
| 2118 | + return false | |
| 2119 | + } | |
| 2276 | 2120 | if c.helperIndex != 0 || len(cl[0].cmd) != 1 || len(cl[0].cmd[0].key) != |
| 2277 | 2121 | 1 || int(Btoi(cl[0].cmd[0].slash)) != len(cl[0].hold) { |
| 2278 | 2122 | return i == int(c.cpucmd) |
| @@ -2312,15 +2156,15 @@ func (c *Char) frontEdgeBodyDist() float32 { | ||
| 2312 | 2156 | } |
| 2313 | 2157 | func (c *Char) frontEdgeDist() float32 { |
| 2314 | 2158 | if c.facing > 0 { |
| 2315 | - return sys.xmax/c.localscl - c.pos[0] | |
| 2159 | + return sys.xmax - c.pos[0] | |
| 2316 | 2160 | } |
| 2317 | - return c.pos[0] - sys.xmin/c.localscl | |
| 2161 | + return c.pos[0] - sys.xmin | |
| 2318 | 2162 | } |
| 2319 | 2163 | func (c *Char) gameHeight() float32 { |
| 2320 | - return 240 / c.localscl / sys.cam.Scale | |
| 2164 | + return 240 / sys.cam.Scale | |
| 2321 | 2165 | } |
| 2322 | 2166 | func (c *Char) gameWidth() float32 { |
| 2323 | - return float32(sys.gameWidth) / c.localscl / sys.cam.Scale | |
| 2167 | + return float32(sys.gameWidth) / sys.cam.Scale | |
| 2324 | 2168 | } |
| 2325 | 2169 | func (c *Char) hitDefAttr(attr int32) bool { |
| 2326 | 2170 | return c.ss.moveType == MT_A && c.hitdef.testAttr(attr) |
| @@ -2351,10 +2195,10 @@ func (c *Char) isHelper(hid BytecodeValue) BytecodeValue { | ||
| 2351 | 2195 | return BytecodeBool(c.helperIndex != 0 && (id <= 0 || c.helperId == id)) |
| 2352 | 2196 | } |
| 2353 | 2197 | func (c *Char) leftEdge() float32 { |
| 2354 | - return sys.cam.ScreenPos[0] / c.localscl | |
| 2198 | + return sys.cam.ScreenPos[0] | |
| 2355 | 2199 | } |
| 2356 | 2200 | func (c *Char) lose() bool { |
| 2357 | - return sys.winTeam == 1^c.teamside | |
| 2201 | + return sys.winTeam == ^c.playerNo&1 | |
| 2358 | 2202 | } |
| 2359 | 2203 | func (c *Char) loseKO() bool { |
| 2360 | 2204 | return c.lose() && sys.finish == FT_KO |
| @@ -2390,9 +2234,6 @@ func (c *Char) numEnemy() int32 { | ||
| 2390 | 2234 | if sys.tmode[^c.playerNo&1] != TM_Simul { |
| 2391 | 2235 | return 1 |
| 2392 | 2236 | } |
| 2393 | - if c.teamside == 3-1 { | |
| 2394 | - return sys.numSimul[0] + sys.numSimul[1] | |
| 2395 | - } | |
| 2396 | 2237 | return sys.numSimul[^c.playerNo&1] |
| 2397 | 2238 | } |
| 2398 | 2239 | func (c *Char) numExplod(eid BytecodeValue) BytecodeValue { |
| @@ -2420,7 +2261,7 @@ func (c *Char) numHelper(hid BytecodeValue) BytecodeValue { | ||
| 2420 | 2261 | return BytecodeInt(n) |
| 2421 | 2262 | } |
| 2422 | 2263 | func (c *Char) numPartner() int32 { |
| 2423 | - if sys.tmode[c.playerNo&1] != TM_Simul || c.teamside >= 2 { | |
| 2264 | + if sys.tmode[c.playerNo&1] != TM_Simul { | |
| 2424 | 2265 | return 0 |
| 2425 | 2266 | } |
| 2426 | 2267 | return sys.numSimul[c.playerNo&1] - 1 |
| @@ -2472,7 +2313,7 @@ func (c *Char) palno() int32 { | ||
| 2472 | 2313 | return c.gi().palno |
| 2473 | 2314 | } |
| 2474 | 2315 | func (c *Char) getPower() int32 { |
| 2475 | - if sys.powerShare[c.playerNo&1] && c.teamside < 2 { | |
| 2316 | + if sys.powerShare[c.playerNo&1] { | |
| 2476 | 2317 | return sys.chars[c.playerNo&1][0].power |
| 2477 | 2318 | } |
| 2478 | 2319 | return sys.chars[c.playerNo][0].power |
| @@ -2518,12 +2359,9 @@ func (c *Char) projHitTime(pid BytecodeValue) BytecodeValue { | ||
| 2518 | 2359 | return BytecodeInt(c.gi().pctime) |
| 2519 | 2360 | } |
| 2520 | 2361 | func (c *Char) rightEdge() float32 { |
| 2521 | - return sys.cam.ScreenPos[0]/c.localscl + c.gameWidth() | |
| 2362 | + return sys.cam.ScreenPos[0] + c.gameWidth() | |
| 2522 | 2363 | } |
| 2523 | 2364 | func (c *Char) roundsExisted() int32 { |
| 2524 | - if c.teamside >= 2 { | |
| 2525 | - return sys.round - 1 | |
| 2526 | - } | |
| 2527 | 2365 | return sys.roundsExisted[c.playerNo&1] |
| 2528 | 2366 | } |
| 2529 | 2367 | func (c *Char) roundState() int32 { |
| @@ -2543,10 +2381,10 @@ func (c *Char) roundState() int32 { | ||
| 2543 | 2381 | } |
| 2544 | 2382 | } |
| 2545 | 2383 | func (c *Char) screenPosX() float32 { |
| 2546 | - return (c.pos[0]*c.localscl - sys.cam.ScreenPos[0]) // * sys.cam.Scale | |
| 2384 | + return (c.pos[0] - sys.cam.ScreenPos[0]) * sys.cam.Scale | |
| 2547 | 2385 | } |
| 2548 | 2386 | func (c *Char) screenPosY() float32 { |
| 2549 | - return (c.pos[1]*c.localscl - sys.cam.ScreenPos[1]) // * sys.cam.Scale | |
| 2387 | + return (c.pos[1] - sys.cam.ScreenPos[1]) * sys.cam.Scale | |
| 2550 | 2388 | } |
| 2551 | 2389 | func (c *Char) selfAnimExist(anim BytecodeValue) BytecodeValue { |
| 2552 | 2390 | if anim.IsSF() { |
| @@ -2558,12 +2396,9 @@ func (c *Char) time() int32 { | ||
| 2558 | 2396 | return c.ss.time |
| 2559 | 2397 | } |
| 2560 | 2398 | func (c *Char) topEdge() float32 { |
| 2561 | - return sys.cam.ScreenPos[1] / c.localscl | |
| 2399 | + return sys.cam.ScreenPos[1] | |
| 2562 | 2400 | } |
| 2563 | 2401 | func (c *Char) win() bool { |
| 2564 | - if c.teamside >= 2 { | |
| 2565 | - return false | |
| 2566 | - } | |
| 2567 | 2402 | return sys.winTeam == c.playerNo&1 |
| 2568 | 2403 | } |
| 2569 | 2404 | func (c *Char) winKO() bool { |
| @@ -2573,9 +2408,6 @@ func (c *Char) winTime() bool { | ||
| 2573 | 2408 | return c.win() && sys.finish == FT_TO |
| 2574 | 2409 | } |
| 2575 | 2410 | func (c *Char) winPerfect() bool { |
| 2576 | - if c.teamside >= 2 { | |
| 2577 | - return false | |
| 2578 | - } | |
| 2579 | 2411 | return c.win() && sys.winType[c.playerNo&1] >= WT_PN |
| 2580 | 2412 | } |
| 2581 | 2413 | func (c *Char) newChannel(ch int32, lowpriority bool) *Sound { |
| @@ -2646,7 +2478,7 @@ func (c *Char) playSound(f, lowpriority, loop bool, g, n, chNo, vol int32, | ||
| 2646 | 2478 | } |
| 2647 | 2479 | func (c *Char) furimuki() { |
| 2648 | 2480 | if c.scf(SCF_ctrl) && c.helperIndex == 0 { |
| 2649 | - if c.rdDistX(sys.charList.enemyNear(c, 0, true), c).ToF() < 0 { | |
| 2481 | + if c.rdDistX(sys.charList.enemyNear(c, 0, true)).ToF() < 0 { | |
| 2650 | 2482 | switch c.ss.stateType { |
| 2651 | 2483 | case ST_S: |
| 2652 | 2484 | c.changeAnim(5) |
| @@ -2667,23 +2499,6 @@ func (c *Char) stateChange1(no int32, pn int) bool { | ||
| 2667 | 2499 | if c.ss.sb.playerNo != c.playerNo && pn != c.ss.sb.playerNo { |
| 2668 | 2500 | c.enemyExplodsRemove(c.ss.sb.playerNo) |
| 2669 | 2501 | } |
| 2670 | - if newLs := 320 / float32(sys.chars[pn][0].localcoord); c.localscl != newLs { | |
| 2671 | - lsRatio := c.localscl / newLs | |
| 2672 | - c.pos[0] *= lsRatio | |
| 2673 | - c.pos[1] *= lsRatio | |
| 2674 | - c.oldPos = c.pos | |
| 2675 | - | |
| 2676 | - c.vel[0] *= lsRatio | |
| 2677 | - c.vel[1] *= lsRatio | |
| 2678 | - | |
| 2679 | - c.ghv.xvel *= lsRatio | |
| 2680 | - c.ghv.yvel *= lsRatio | |
| 2681 | - c.ghv.fall.xvelocity *= lsRatio | |
| 2682 | - c.ghv.fall.yvelocity *= lsRatio | |
| 2683 | - c.ghv.yaccel *= lsRatio | |
| 2684 | - | |
| 2685 | - c.localscl = newLs | |
| 2686 | - } | |
| 2687 | 2502 | var ok bool |
| 2688 | 2503 | if c.ss.sb, ok = sys.cgi[pn].states[no]; !ok { |
| 2689 | 2504 | sys.errLog.Printf("存在しないステート: P%v:%v\n", pn+1, no) |
| @@ -2711,7 +2526,6 @@ func (c *Char) changeStateEx(no int32, pn int, anim, ctrl int32) { | ||
| 2711 | 2526 | if ctrl >= 0 { |
| 2712 | 2527 | c.setCtrl(ctrl != 0) |
| 2713 | 2528 | } |
| 2714 | - c.movedY = false | |
| 2715 | 2529 | if c.stateChange1(no, pn) && sys.changeStateNest == 0 && c.minus == 0 { |
| 2716 | 2530 | for c.stchtmp && sys.changeStateNest < 2500 { |
| 2717 | 2531 | c.stateChange2() |
| @@ -2799,30 +2613,26 @@ func (c *Char) newHelper() (h *Char) { | ||
| 2799 | 2613 | return |
| 2800 | 2614 | } |
| 2801 | 2615 | func (c *Char) helperPos(pt PosType, pos [2]float32, facing int32, |
| 2802 | - dstFacing *float32, localscl float32, isProj bool) (p [2]float32) { | |
| 2616 | + dstFacing *float32) (p [2]float32) { | |
| 2803 | 2617 | if facing < 0 { |
| 2804 | 2618 | *dstFacing *= -1 |
| 2805 | 2619 | } |
| 2806 | 2620 | switch pt { |
| 2807 | 2621 | case PT_P1: |
| 2808 | - p[0] = c.pos[0]*c.localscl/localscl + pos[0]*c.facing | |
| 2809 | - p[1] = c.pos[1]*c.localscl/localscl + pos[1] | |
| 2622 | + p[0] = c.pos[0] + pos[0]*c.facing | |
| 2623 | + p[1] = c.pos[1] + pos[1] | |
| 2810 | 2624 | *dstFacing *= c.facing |
| 2811 | 2625 | case PT_P2: |
| 2812 | 2626 | if p2 := sys.charList.enemyNear(c, 0, true); p2 != nil { |
| 2813 | - p[0] = p2.pos[0]*p2.localscl/localscl + pos[0]*p2.facing | |
| 2814 | - p[1] = p2.pos[1]*p2.localscl/localscl + pos[1] | |
| 2815 | - if isProj { | |
| 2816 | - *dstFacing *= c.facing | |
| 2817 | - } else { | |
| 2818 | - *dstFacing *= p2.facing | |
| 2819 | - } | |
| 2627 | + p[0] = p2.pos[0] + pos[0]*p2.facing | |
| 2628 | + p[1] = p2.pos[1] + pos[1] | |
| 2629 | + *dstFacing *= p2.facing | |
| 2820 | 2630 | } |
| 2821 | 2631 | case PT_F, PT_B: |
| 2822 | 2632 | if c.facing > 0 && pt == PT_F || c.facing < 0 && pt == PT_B { |
| 2823 | - p[0] = c.rightEdge() * c.localscl / localscl | |
| 2633 | + p[0] = c.rightEdge() | |
| 2824 | 2634 | } else { |
| 2825 | - p[0] = c.leftEdge() * c.localscl / localscl | |
| 2635 | + p[0] = c.leftEdge() | |
| 2826 | 2636 | } |
| 2827 | 2637 | if c.facing > 0 { |
| 2828 | 2638 | p[0] += pos[0] |
| @@ -2832,10 +2642,10 @@ func (c *Char) helperPos(pt PosType, pos [2]float32, facing int32, | ||
| 2832 | 2642 | p[1] = pos[1] |
| 2833 | 2643 | *dstFacing *= c.facing |
| 2834 | 2644 | case PT_L: |
| 2835 | - p[0] = c.leftEdge()*c.localscl/localscl + pos[0] | |
| 2645 | + p[0] = c.leftEdge() + pos[0] | |
| 2836 | 2646 | p[1] = pos[1] |
| 2837 | 2647 | case PT_R: |
| 2838 | - p[0] = c.rightEdge()*c.localscl/localscl + pos[0] | |
| 2648 | + p[0] = c.rightEdge() + pos[0] | |
| 2839 | 2649 | p[1] = pos[1] |
| 2840 | 2650 | case PT_N: |
| 2841 | 2651 | p = pos |
| @@ -2844,7 +2654,7 @@ func (c *Char) helperPos(pt PosType, pos [2]float32, facing int32, | ||
| 2844 | 2654 | } |
| 2845 | 2655 | func (c *Char) helperInit(h *Char, st int32, pt PosType, x, y float32, |
| 2846 | 2656 | facing int32, ownpal bool) { |
| 2847 | - p := c.helperPos(pt, [...]float32{x, y}, facing, &h.facing, h.localscl, false) | |
| 2657 | + p := c.helperPos(pt, [...]float32{x, y}, facing, &h.facing) | |
| 2848 | 2658 | h.setX(p[0]) |
| 2849 | 2659 | h.setY(p[1]) |
| 2850 | 2660 | h.vel = [2]float32{} |
| @@ -3001,14 +2811,9 @@ func (c *Char) setPosY(y float32) { | ||
| 3001 | 2811 | c.pos[1] = y |
| 3002 | 2812 | } |
| 3003 | 2813 | func (c *Char) posReset() { |
| 3004 | - if c.teamside >= 2 { | |
| 3005 | - c.facing = 1 | |
| 3006 | - c.setX(0) | |
| 3007 | - } else { | |
| 3008 | - c.facing = 1 - 2*float32(c.playerNo&1) | |
| 3009 | - c.setX((float32(sys.stage.p[c.playerNo&1].startx-sys.cam.startx)* | |
| 3010 | - sys.stage.localscl - c.facing*float32(c.playerNo>>1)*P1P3Dist) / c.localscl) | |
| 3011 | - } | |
| 2814 | + c.facing = 1 - 2*float32(c.playerNo&1) | |
| 2815 | + c.setX(float32(sys.stage.p[c.playerNo&1].startx-sys.cam.startx)* | |
| 2816 | + sys.stage.localscl - c.facing*float32(c.playerNo>>1)*P1P3Dist) | |
| 3012 | 2817 | c.setY(0) |
| 3013 | 2818 | c.setXV(0) |
| 3014 | 2819 | c.setYV(0) |
| @@ -3020,27 +2825,18 @@ func (c *Char) setX(x float32) { | ||
| 3020 | 2825 | func (c *Char) setY(y float32) { |
| 3021 | 2826 | c.oldPos[1], c.drawPos[1] = y, y |
| 3022 | 2827 | c.setPosY(y) |
| 3023 | - if y != 0 { | |
| 3024 | - c.movedY = true | |
| 3025 | - } | |
| 3026 | 2828 | } |
| 3027 | 2829 | func (c *Char) addX(x float32) { |
| 3028 | 2830 | c.setX(c.pos[0] + c.facing*x) |
| 3029 | 2831 | } |
| 3030 | 2832 | func (c *Char) addY(y float32) { |
| 3031 | 2833 | c.setY(c.pos[1] + y) |
| 3032 | - if y != 0 { | |
| 3033 | - c.movedY = true | |
| 3034 | - } | |
| 3035 | 2834 | } |
| 3036 | 2835 | func (c *Char) addXV(xv float32) { |
| 3037 | 2836 | c.vel[0] += xv |
| 3038 | 2837 | } |
| 3039 | 2838 | func (c *Char) addYV(yv float32) { |
| 3040 | 2839 | c.vel[1] += yv |
| 3041 | - if yv != 0 { | |
| 3042 | - c.movedY = true | |
| 3043 | - } | |
| 3044 | 2840 | } |
| 3045 | 2841 | func (c *Char) mulXV(xv float32) { |
| 3046 | 2842 | c.vel[0] *= xv |
| @@ -3075,7 +2871,7 @@ func (c *Char) newProj() *Projectile { | ||
| 3075 | 2871 | } |
| 3076 | 2872 | func (c *Char) projInit(p *Projectile, pt PosType, x, y float32, |
| 3077 | 2873 | op bool, rpg, rpn int32) { |
| 3078 | - p.setPos(c.helperPos(pt, [...]float32{x, y}, 1, &p.facing, p.localscl, true)) | |
| 2874 | + p.setPos(c.helperPos(pt, [...]float32{x, y}, 1, &p.facing)) | |
| 3079 | 2875 | if p.anim < -1 { |
| 3080 | 2876 | p.anim = 0 |
| 3081 | 2877 | } |
| @@ -3148,9 +2944,6 @@ func (c *Char) setHitdefDefault(hd *HitDef, proj bool) { | ||
| 3148 | 2944 | if hd.air_animtype == RA_Unknown { |
| 3149 | 2945 | hd.air_animtype = hd.animtype |
| 3150 | 2946 | } |
| 3151 | - if hd.animtype == RA_Back { | |
| 3152 | - hd.animtype = RA_Hard | |
| 3153 | - } | |
| 3154 | 2947 | if hd.air_type == HT_Unknown { |
| 3155 | 2948 | if hd.ground_type == HT_Trip { |
| 3156 | 2949 | hd.air_type = HT_High |
| @@ -3182,9 +2975,6 @@ func (c *Char) setHitdefDefault(hd *HitDef, proj bool) { | ||
| 3182 | 2975 | if !math.IsNaN(float64(hd.snap[1])) { |
| 3183 | 2976 | hd.maxdist[1], hd.mindist[1] = hd.snap[1], hd.snap[1] |
| 3184 | 2977 | } |
| 3185 | - if hd.teamside == 0 { | |
| 3186 | - hd.teamside = c.teamside + 1 | |
| 3187 | - } | |
| 3188 | 2978 | hd.playerNo = c.ss.sb.playerNo |
| 3189 | 2979 | } |
| 3190 | 2980 | func (c *Char) setFEdge(fe float32) { |
| @@ -3196,11 +2986,11 @@ func (c *Char) setBEdge(be float32) { | ||
| 3196 | 2986 | c.setSF(CSF_backedge) |
| 3197 | 2987 | } |
| 3198 | 2988 | func (c *Char) setFWidth(fw float32) { |
| 3199 | - c.width[0] = c.defFW()*(320/float32(c.localcoord))/c.localscl + fw | |
| 2989 | + c.width[0] = c.defFW() + fw | |
| 3200 | 2990 | c.setSF(CSF_frontwidth) |
| 3201 | 2991 | } |
| 3202 | 2992 | func (c *Char) setBWidth(bw float32) { |
| 3203 | - c.width[1] = c.defBW()*(320/float32(c.localcoord))/c.localscl + bw | |
| 2993 | + c.width[1] = c.defBW() + bw | |
| 3204 | 2994 | c.setSF(CSF_backwidth) |
| 3205 | 2995 | } |
| 3206 | 2996 | func (c *Char) gethitAnimtype() Reaction { |
| @@ -3362,8 +3152,6 @@ func (c *Char) targetBind(tar []int32, time int32, x, y float32) { | ||
| 3362 | 3152 | t.setBindToId(c) |
| 3363 | 3153 | t.setBindTime(time) |
| 3364 | 3154 | t.bindFacing = 0 |
| 3365 | - x *= c.localscl / t.localscl | |
| 3366 | - y *= c.localscl / t.localscl | |
| 3367 | 3155 | t.bindPos = [...]float32{x, y} |
| 3368 | 3156 | } |
| 3369 | 3157 | } |
| @@ -3385,7 +3173,7 @@ func (c *Char) bindToTarget(tar []int32, time int32, x, y float32, hmf HMF) { | ||
| 3385 | 3173 | if !math.IsNaN(float64(y)) { |
| 3386 | 3174 | c.setY(t.pos[1] + y) |
| 3387 | 3175 | } |
| 3388 | - c.targetBind(tar[:1], time, c.facing*c.distX(t, c), (t.pos[1]*t.localscl/c.localscl)-(c.pos[1]*c.localscl/t.localscl)) | |
| 3176 | + c.targetBind(tar[:1], time, c.facing*c.distX(t), t.pos[1]-c.pos[1]) | |
| 3389 | 3177 | } |
| 3390 | 3178 | } |
| 3391 | 3179 | } |
| @@ -3400,7 +3188,7 @@ func (c *Char) targetLifeAdd(tar []int32, add int32, kill, absolute bool) { | ||
| 3400 | 3188 | func (c *Char) targetState(tar []int32, state int32) { |
| 3401 | 3189 | if state >= 0 { |
| 3402 | 3190 | pn := c.ss.sb.playerNo |
| 3403 | - if c.minus == -2 || c.minus == -20 { | |
| 3191 | + if c.minus == -2 { | |
| 3404 | 3192 | pn = c.playerNo |
| 3405 | 3193 | } |
| 3406 | 3194 | for _, tid := range tar { |
| @@ -3414,7 +3202,6 @@ func (c *Char) targetState(tar []int32, state int32) { | ||
| 3414 | 3202 | func (c *Char) targetVelSetX(tar []int32, x float32) { |
| 3415 | 3203 | for _, tid := range tar { |
| 3416 | 3204 | if t := sys.playerID(tid); t != nil { |
| 3417 | - x *= c.localscl / t.localscl | |
| 3418 | 3205 | t.setXV(x) |
| 3419 | 3206 | } |
| 3420 | 3207 | } |
| @@ -3422,7 +3209,6 @@ func (c *Char) targetVelSetX(tar []int32, x float32) { | ||
| 3422 | 3209 | func (c *Char) targetVelSetY(tar []int32, y float32) { |
| 3423 | 3210 | for _, tid := range tar { |
| 3424 | 3211 | if t := sys.playerID(tid); t != nil { |
| 3425 | - y *= c.localscl / t.localscl | |
| 3426 | 3212 | t.setYV(y) |
| 3427 | 3213 | } |
| 3428 | 3214 | } |
| @@ -3430,7 +3216,6 @@ func (c *Char) targetVelSetY(tar []int32, y float32) { | ||
| 3430 | 3216 | func (c *Char) targetVelAddX(tar []int32, x float32) { |
| 3431 | 3217 | for _, tid := range tar { |
| 3432 | 3218 | if t := sys.playerID(tid); t != nil { |
| 3433 | - x *= c.localscl / t.localscl | |
| 3434 | 3219 | t.vel[0] += x |
| 3435 | 3220 | } |
| 3436 | 3221 | } |
| @@ -3438,7 +3223,6 @@ func (c *Char) targetVelAddX(tar []int32, x float32) { | ||
| 3438 | 3223 | func (c *Char) targetVelAddY(tar []int32, y float32) { |
| 3439 | 3224 | for _, tid := range tar { |
| 3440 | 3225 | if t := sys.playerID(tid); t != nil { |
| 3441 | - y *= c.localscl / t.localscl | |
| 3442 | 3226 | t.vel[1] += y |
| 3443 | 3227 | } |
| 3444 | 3228 | } |
| @@ -3521,7 +3305,7 @@ func (c *Char) lifeAdd(add float64, kill, absolute bool) { | ||
| 3521 | 3305 | } |
| 3522 | 3306 | func (c *Char) lifeSet(life int32) { |
| 3523 | 3307 | if c.life = Max(0, Min(c.lifeMax, life)); c.life == 0 { |
| 3524 | - if c.player && c.teamside < 2 { | |
| 3308 | + if c.player { | |
| 3525 | 3309 | if c.alive() && c.helperIndex == 0 { |
| 3526 | 3310 | if c.ss.moveType != MT_H { |
| 3527 | 3311 | if c.playerNo == c.ss.sb.playerNo { |
| @@ -3556,56 +3340,55 @@ func (c *Char) setPower(pow int32) { | ||
| 3556 | 3340 | } |
| 3557 | 3341 | } |
| 3558 | 3342 | func (c *Char) powerAdd(add int32) { |
| 3559 | - if sys.powerShare[c.playerNo&1] && c.teamside < 2 { | |
| 3343 | + if sys.powerShare[c.playerNo&1] { | |
| 3560 | 3344 | sys.chars[c.playerNo&1][0].setPower(c.getPower() + add) |
| 3561 | 3345 | } else { |
| 3562 | 3346 | sys.chars[c.playerNo][0].setPower(c.getPower() + add) |
| 3563 | 3347 | } |
| 3564 | 3348 | } |
| 3565 | 3349 | func (c *Char) powerSet(pow int32) { |
| 3566 | - if sys.powerShare[c.playerNo&1] && c.teamside < 2 { | |
| 3350 | + if sys.powerShare[c.playerNo&1] { | |
| 3567 | 3351 | sys.chars[c.playerNo&1][0].setPower(pow) |
| 3568 | 3352 | } else { |
| 3569 | 3353 | sys.chars[c.playerNo][0].setPower(pow) |
| 3570 | 3354 | } |
| 3571 | 3355 | } |
| 3572 | -func (c *Char) distX(opp *Char, oc *Char) float32 { | |
| 3573 | - return (opp.pos[0]*opp.localscl - c.pos[0]*c.localscl) / oc.localscl | |
| 3356 | +func (c *Char) distX(opp *Char) float32 { | |
| 3357 | + return opp.pos[0] - c.pos[0] | |
| 3574 | 3358 | } |
| 3575 | -func (c *Char) bodyDistX(opp *Char, oc *Char) float32 { | |
| 3576 | - dist := c.distX(opp, oc) | |
| 3359 | +func (c *Char) bodyDistX(opp *Char) float32 { | |
| 3360 | + dist := c.distX(opp) | |
| 3577 | 3361 | var oppw float32 |
| 3578 | 3362 | if dist == 0 || (dist < 0) != (opp.facing < 0) { |
| 3579 | - oppw = opp.facing * opp.width[0] * (320 / float32(opp.localcoord)) / oc.localscl | |
| 3363 | + oppw = opp.facing * opp.width[0] | |
| 3580 | 3364 | } else { |
| 3581 | - oppw = -opp.facing * opp.width[1] * (320 / float32(opp.localcoord)) / oc.localscl | |
| 3365 | + oppw = -opp.facing * opp.width[1] | |
| 3582 | 3366 | } |
| 3583 | 3367 | return dist + oppw - c.facing*c.width[0] |
| 3584 | 3368 | } |
| 3585 | -func (c *Char) rdDistX(rd *Char, oc *Char) BytecodeValue { | |
| 3369 | +func (c *Char) rdDistX(rd *Char) BytecodeValue { | |
| 3586 | 3370 | if rd == nil { |
| 3587 | 3371 | return BytecodeSF() |
| 3588 | 3372 | } |
| 3589 | - dist := c.facing * c.distX(rd, oc) | |
| 3373 | + dist := c.facing * c.distX(rd) | |
| 3590 | 3374 | if c.stCgi().ver[0] != 1 { |
| 3591 | - dist = float32(int32(dist)) //旧バージョンでは小数点切り捨て | |
| 3375 | + dist = float32(int32(dist)) | |
| 3592 | 3376 | } |
| 3593 | 3377 | return BytecodeFloat(dist) |
| 3594 | 3378 | } |
| 3595 | -func (c *Char) rdDistY(rd *Char, oc *Char) BytecodeValue { | |
| 3379 | +func (c *Char) rdDistY(rd *Char) BytecodeValue { | |
| 3596 | 3380 | if rd == nil { |
| 3597 | 3381 | return BytecodeSF() |
| 3598 | 3382 | } |
| 3599 | - dist := (rd.pos[1]*rd.localscl - c.pos[1]*c.localscl) / oc.localscl | |
| 3600 | - return BytecodeFloat(dist) | |
| 3383 | + return BytecodeFloat(rd.pos[1] - c.pos[1]) | |
| 3601 | 3384 | } |
| 3602 | -func (c *Char) p2BodyDistX(oc *Char) BytecodeValue { | |
| 3385 | +func (c *Char) p2BodyDistX() BytecodeValue { | |
| 3603 | 3386 | if p2 := c.p2(); p2 == nil { |
| 3604 | 3387 | return BytecodeSF() |
| 3605 | 3388 | } else { |
| 3606 | - dist := c.facing * c.bodyDistX(p2, oc) | |
| 3389 | + dist := c.facing * c.bodyDistX(p2) | |
| 3607 | 3390 | if c.stCgi().ver[0] != 1 { |
| 3608 | - dist = float32(int32(dist)) //旧バージョンでは小数点切り捨て | |
| 3391 | + dist = float32(int32(dist)) | |
| 3609 | 3392 | } |
| 3610 | 3393 | return BytecodeFloat(dist) |
| 3611 | 3394 | } |
| @@ -3726,7 +3509,6 @@ func (c *Char) makeDust(x, y float32) { | ||
| 3726 | 3509 | func (c *Char) hitFallDamage() { |
| 3727 | 3510 | if c.ss.moveType == MT_H { |
| 3728 | 3511 | c.lifeAdd(-float64(c.ghv.fall.damage), c.ghv.fall.kill, false) |
| 3729 | - c.ghv.fall.damage = 0 | |
| 3730 | 3512 | } |
| 3731 | 3513 | } |
| 3732 | 3514 | func (c *Char) hitFallVel() { |
| @@ -3825,7 +3607,6 @@ func (c *Char) posUpdate() { | ||
| 3825 | 3607 | if AbsF(c.veloff) < 1 { |
| 3826 | 3608 | c.veloff = 0 |
| 3827 | 3609 | } |
| 3828 | - c.oldLocalscl = c.localscl | |
| 3829 | 3610 | } |
| 3830 | 3611 | func (c *Char) addTarget(id int32) { |
| 3831 | 3612 | if !c.hasTarget(id) { |
| @@ -3915,9 +3696,9 @@ func (c *Char) xScreenBound() { | ||
| 3915 | 3696 | if c.facing > 0 { |
| 3916 | 3697 | min, max = -max, -min |
| 3917 | 3698 | } |
| 3918 | - x = MaxF(min+sys.xmin/c.localscl, MinF(max+sys.xmax/c.localscl, x)) | |
| 3699 | + x = MaxF(min+sys.xmin, MinF(max+sys.xmax, x)) | |
| 3919 | 3700 | } |
| 3920 | - x = MaxF(sys.stage.leftbound/c.localscl, MinF(sys.stage.rightbound/c.localscl, x)) | |
| 3701 | + x = MaxF(sys.stage.leftbound, MinF(sys.stage.rightbound, x)) | |
| 3921 | 3702 | c.setPosX(x) |
| 3922 | 3703 | } |
| 3923 | 3704 | func (c *Char) gethitBindClear() { |
| @@ -3967,11 +3748,9 @@ func (c *Char) projClsnCheck(p *Projectile, gethit bool) bool { | ||
| 3967 | 3748 | } else { |
| 3968 | 3749 | clsn1, clsn2 = frm.Clsn2(), c.curFrame.Clsn1() |
| 3969 | 3750 | } |
| 3970 | - return sys.clsnHantei(clsn1, [...]float32{p.clsnScale[0] * p.localscl, p.clsnScale[1] * p.localscl}, | |
| 3971 | - [...]float32{p.pos[0] * p.localscl, p.pos[1] * p.localscl}, p.facing, | |
| 3972 | - clsn2, [...]float32{c.clsnScale[0] * (320 / float32(sys.chars[c.animPN][0].localcoord)), c.clsnScale[1] * (320 / float32(sys.chars[c.animPN][0].localcoord))}, | |
| 3973 | - [...]float32{c.pos[0]*c.localscl + c.offsetX()*c.localscl, | |
| 3974 | - c.pos[1]*c.localscl + c.offsetY()*c.localscl}, c.facing) | |
| 3751 | + return sys.clsnHantei(clsn1, p.clsnScale, p.pos, p.facing, | |
| 3752 | + clsn2, c.clsnScale, | |
| 3753 | + [...]float32{c.pos[0] + c.offsetX(), c.pos[1] + c.offsetY()}, c.facing) | |
| 3975 | 3754 | } |
| 3976 | 3755 | func (c *Char) clsnCheck(atk *Char, c1atk, c1slf bool) bool { |
| 3977 | 3756 | if atk.curFrame == nil || c.curFrame == nil { |
| @@ -3988,12 +3767,10 @@ func (c *Char) clsnCheck(atk *Char, c1atk, c1slf bool) bool { | ||
| 3988 | 3767 | } else { |
| 3989 | 3768 | clsn2 = c.curFrame.Clsn2() |
| 3990 | 3769 | } |
| 3991 | - return sys.clsnHantei(clsn1, [...]float32{sys.chars[atk.animPN][0].clsnScale[0] * (320 / float32(sys.chars[atk.animPN][0].localcoord)), sys.chars[atk.animPN][0].clsnScale[1] * (320 / float32(sys.chars[atk.animPN][0].localcoord))}, | |
| 3992 | - [...]float32{atk.pos[0]*atk.localscl + atk.offsetX()*atk.localscl, | |
| 3993 | - atk.pos[1]*atk.localscl + atk.offsetY()*atk.localscl}, | |
| 3994 | - atk.facing, clsn2, [...]float32{sys.chars[c.animPN][0].clsnScale[0] * (320 / float32(sys.chars[c.animPN][0].localcoord)), sys.chars[c.animPN][0].clsnScale[1] * (320 / float32(sys.chars[c.animPN][0].localcoord))}, | |
| 3995 | - [...]float32{c.pos[0]*c.localscl + c.offsetX()*c.localscl, | |
| 3996 | - c.pos[1]*c.localscl + c.offsetY()*c.localscl}, c.facing) | |
| 3770 | + return sys.clsnHantei(clsn1, atk.clsnScale, | |
| 3771 | + [...]float32{atk.pos[0] + atk.offsetX(), atk.pos[1] + atk.offsetY()}, | |
| 3772 | + atk.facing, clsn2, c.clsnScale, [...]float32{c.pos[0] + c.offsetX(), | |
| 3773 | + c.pos[1] + c.offsetY()}, c.facing) | |
| 3997 | 3774 | } |
| 3998 | 3775 | func (c *Char) hitCheck(e *Char) bool { |
| 3999 | 3776 | return c.clsnCheck(e, true, e.hitdef.reversal_attr > 0) |
| @@ -4090,9 +3867,8 @@ func (c *Char) action() { | ||
| 4090 | 3867 | } |
| 4091 | 3868 | c.acttmp = -int8(Btoi(p)) * 2 |
| 4092 | 3869 | c.unsetSCF(SCF_guard) |
| 4093 | - if !(c.scf(SCF_ko) || c.ctrlOver()) && | |
| 4094 | - ((c.scf(SCF_ctrl) || c.ss.no == 52) && | |
| 4095 | - c.ss.moveType == MT_I || c.inGuardState()) && c.cmd != nil && | |
| 3870 | + if !(c.scf(SCF_ko) || c.ctrlOver()) && (c.scf(SCF_ctrl) || c.ss.no == 52) && | |
| 3871 | + c.ss.moveType == MT_I && c.cmd != nil && | |
| 4096 | 3872 | (sys.autoguard[c.playerNo] || c.cmd[0].Buffer.B > 0) && |
| 4097 | 3873 | (c.ss.stateType == ST_S && !c.sf(CSF_nostandguard) || |
| 4098 | 3874 | c.ss.stateType == ST_C && !c.sf(CSF_nocrouchguard) || |
| @@ -4210,24 +3986,6 @@ func (c *Char) action() { | ||
| 4210 | 3986 | c.angleScalse = [...]float32{1, 1} |
| 4211 | 3987 | c.offset = [2]float32{} |
| 4212 | 3988 | } |
| 4213 | - c.minus = -30 | |
| 4214 | - if c.ss.sb.playerNo == c.playerNo && c.player { | |
| 4215 | - if sb, ok := c.gi().states[-30]; ok { | |
| 4216 | - sb.run(c) | |
| 4217 | - } | |
| 4218 | - } | |
| 4219 | - c.minus = -20 | |
| 4220 | - if c.player { | |
| 4221 | - if sb, ok := c.gi().states[-20]; ok { | |
| 4222 | - sb.run(c) | |
| 4223 | - } | |
| 4224 | - } | |
| 4225 | - c.minus = -10 | |
| 4226 | - if c.keyctrl && c.ss.sb.playerNo == c.playerNo { | |
| 4227 | - if sb, ok := c.gi().states[-10]; ok { | |
| 4228 | - sb.run(c) | |
| 4229 | - } | |
| 4230 | - } | |
| 4231 | 3989 | c.minus = -3 |
| 4232 | 3990 | if c.ss.sb.playerNo == c.playerNo && c.player { |
| 4233 | 3991 | if sb, ok := c.gi().states[-3]; ok { |
| @@ -4301,10 +4059,10 @@ func (c *Char) action() { | ||
| 4301 | 4059 | int8(Btoi(c.hitPause())) |
| 4302 | 4060 | if !c.hitPause() { |
| 4303 | 4061 | if !c.sf(CSF_frontwidth) { |
| 4304 | - c.width[0] = c.defFW() * (320 / float32(c.localcoord)) / c.localscl | |
| 4062 | + c.width[0] = c.defFW() | |
| 4305 | 4063 | } |
| 4306 | 4064 | if !c.sf(CSF_backwidth) { |
| 4307 | - c.width[1] = c.defBW() * (320 / float32(c.localcoord)) / c.localscl | |
| 4065 | + c.width[1] = c.defBW() | |
| 4308 | 4066 | } |
| 4309 | 4067 | if !c.sf(CSF_frontedge) { |
| 4310 | 4068 | c.edge[0] = 0 |
| @@ -4411,20 +4169,20 @@ func (c *Char) update(cvmin, cvmax, | ||
| 4411 | 4169 | min, max = -max, -min |
| 4412 | 4170 | } |
| 4413 | 4171 | if c.sf(CSF_screenbound) { |
| 4414 | - c.drawPos[0] = MaxF(min+sys.xmin/c.localscl, MinF(max+sys.xmax/c.localscl, c.drawPos[0])) | |
| 4172 | + c.drawPos[0] = MaxF(min+sys.xmin, MinF(max+sys.xmax, c.drawPos[0])) | |
| 4415 | 4173 | } |
| 4416 | 4174 | if c.sf(CSF_movecamera_x) { |
| 4417 | - *leftest = MaxF(sys.xmin, MinF(c.drawPos[0]*c.localscl-min*c.localscl, *leftest)) | |
| 4418 | - *rightest = MinF(sys.xmax, MaxF(c.drawPos[0]*c.localscl-max*c.localscl, *rightest)) | |
| 4175 | + *leftest = MaxF(sys.xmin, MinF(c.drawPos[0]-min, *leftest)) | |
| 4176 | + *rightest = MinF(sys.xmax, MaxF(c.drawPos[0]-max, *rightest)) | |
| 4419 | 4177 | if c.acttmp > 0 && !c.sf(CSF_posfreeze) && |
| 4420 | 4178 | (c.bindTime == 0 || math.IsNaN(float64(c.bindPos[0]))) { |
| 4421 | - *cvmin = MinF(*cvmin, c.vel[0]*c.localscl*c.facing) | |
| 4422 | - *cvmax = MaxF(*cvmax, c.vel[0]*c.localscl*c.facing) | |
| 4179 | + *cvmin = MinF(*cvmin, c.vel[0]*c.facing) | |
| 4180 | + *cvmax = MaxF(*cvmax, c.vel[0]*c.facing) | |
| 4423 | 4181 | } |
| 4424 | 4182 | } |
| 4425 | 4183 | if c.sf(CSF_movecamera_y) { |
| 4426 | - *highest = MinF(c.drawPos[1]*c.localscl, *highest) | |
| 4427 | - *lowest = MinF(0, MaxF(c.drawPos[1]*c.localscl, *lowest)) | |
| 4184 | + *highest = MinF(c.drawPos[1], *highest) | |
| 4185 | + *lowest = MinF(0, MaxF(c.drawPos[1], *lowest)) | |
| 4428 | 4186 | } |
| 4429 | 4187 | } |
| 4430 | 4188 | func (c *Char) tick() { |
| @@ -4487,11 +4245,7 @@ func (c *Char) tick() { | ||
| 4487 | 4245 | if c.stchtmp { |
| 4488 | 4246 | c.ss.prevno = 0 |
| 4489 | 4247 | } else if c.ss.stateType == ST_L { |
| 4490 | - if c.movedY { | |
| 4491 | - c.changeStateEx(5020, pn, -1, 0) | |
| 4492 | - } else { | |
| 4493 | - c.changeStateEx(5080, pn, -1, 0) | |
| 4494 | - } | |
| 4248 | + c.changeStateEx(5080, pn, -1, 0) | |
| 4495 | 4249 | } else if c.ghv.guarded && (c.ghv.damage < c.life || sys.sf(GSF_noko)) { |
| 4496 | 4250 | switch c.ss.stateType { |
| 4497 | 4251 | case ST_S: |
| @@ -4571,8 +4325,8 @@ func (c *Char) cueDraw() { | ||
| 4571 | 4325 | return |
| 4572 | 4326 | } |
| 4573 | 4327 | if sys.clsnDraw && c.curFrame != nil { |
| 4574 | - x, y := c.pos[0]*c.oldLocalscl+c.offsetX()*c.oldLocalscl, c.pos[1]*c.oldLocalscl+c.offsetY()*c.oldLocalscl | |
| 4575 | - xs, ys := c.facing*c.clsnScale[0]*(320/float32(sys.chars[c.animPN][0].localcoord)), c.clsnScale[1]*(320/float32(sys.chars[c.animPN][0].localcoord)) | |
| 4328 | + x, y := c.pos[0]+c.offsetX(), c.pos[1]+c.offsetY() | |
| 4329 | + xs, ys := c.facing*c.clsnScale[0], c.clsnScale[1] | |
| 4576 | 4330 | if clsn := c.curFrame.Clsn1(); len(clsn) > 0 && c.atktmp != 0 { |
| 4577 | 4331 | sys.drawc1.Add(clsn, x, y, xs, ys) |
| 4578 | 4332 | } |
| @@ -4593,13 +4347,13 @@ func (c *Char) cueDraw() { | ||
| 4593 | 4347 | } |
| 4594 | 4348 | } |
| 4595 | 4349 | if c.sf(CSF_playerpush) { |
| 4596 | - sys.drawwh.Add([]float32{-c.width[1] * c.oldLocalscl, -c.height() * (320 / float32(c.localcoord)), c.width[0] * c.oldLocalscl, 0}, | |
| 4597 | - c.pos[0]*c.oldLocalscl, c.pos[1]*c.oldLocalscl, c.facing, 1) | |
| 4350 | + sys.drawwh.Add([]float32{-c.width[1], -c.height(), c.width[0], 0}, | |
| 4351 | + c.pos[0], c.pos[1], c.facing, 1) | |
| 4598 | 4352 | } |
| 4599 | 4353 | } |
| 4600 | 4354 | if c.anim != nil { |
| 4601 | - pos := [...]float32{c.drawPos[0]*c.oldLocalscl + c.offsetX()*c.oldLocalscl, c.drawPos[1]*c.oldLocalscl + c.offsetY()*c.oldLocalscl} | |
| 4602 | - scl := [...]float32{c.facing * c.size.xscale * (320 / float32(c.localcoord)), c.size.yscale * (320 / float32(c.localcoord))} | |
| 4355 | + pos := [...]float32{c.drawPos[0] + c.offsetX(), c.drawPos[1] + c.offsetY()} | |
| 4356 | + scl := [...]float32{c.facing * c.size.xscale, c.size.yscale} | |
| 4603 | 4357 | agl := float32(0) |
| 4604 | 4358 | if c.sf(CSF_angledraw) { |
| 4605 | 4359 | agl = c.angle |
| @@ -4612,8 +4366,8 @@ func (c *Char) cueDraw() { | ||
| 4612 | 4366 | rec := sys.tickNextFrame() && c.acttmp > 0 |
| 4613 | 4367 | sdf := func() *SprData { |
| 4614 | 4368 | sd := &SprData{c.anim, c.getPalfx(), pos, |
| 4615 | - scl, c.alpha, c.sprPriority, agl, 0, 0, c.angleScalse, false, | |
| 4616 | - c.playerNo == sys.superplayer, c.gi().ver[0] != 1, c.facing} | |
| 4369 | + scl, c.alpha, c.sprPriority, agl, c.angleScalse, false, | |
| 4370 | + c.playerNo == sys.superplayer, c.gi().ver[0] != 1} | |
| 4617 | 4371 | if !c.sf(CSF_trans) { |
| 4618 | 4372 | sd.alpha[0] = -1 |
| 4619 | 4373 | } |
| @@ -4624,10 +4378,10 @@ func (c *Char) cueDraw() { | ||
| 4624 | 4378 | c.aimg.recAfterImg(sdf()) |
| 4625 | 4379 | } |
| 4626 | 4380 | } else { |
| 4627 | - //if c.gi().ver[0] != 1 && c.sf(CSF_angledraw) && !c.sf(CSF_trans) { | |
| 4628 | - // c.setSF(CSF_trans) | |
| 4629 | - // c.alpha = [...]int32{255, 0} | |
| 4630 | - //} | |
| 4381 | + if c.gi().ver[0] != 1 && c.sf(CSF_angledraw) && !c.sf(CSF_trans) { | |
| 4382 | + c.setSF(CSF_trans) | |
| 4383 | + c.alpha = [...]int32{255, 0} | |
| 4384 | + } | |
| 4631 | 4385 | sd := sdf() |
| 4632 | 4386 | c.aimg.recAndCue(sd, rec) |
| 4633 | 4387 | if c.ghv.hitshaketime > 0 && c.ss.time&1 != 0 { |
| @@ -4638,7 +4392,7 @@ func (c *Char) cueDraw() { | ||
| 4638 | 4392 | sc = 0 |
| 4639 | 4393 | } |
| 4640 | 4394 | if c.sf(CSF_trans) { |
| 4641 | - sa = 255 - c.alpha[1] | |
| 4395 | + sa = c.alpha[0] | |
| 4642 | 4396 | } |
| 4643 | 4397 | sys.sprites.add(sd, sc, sa, float32(c.size.shadowoffset), c.offsetY()) |
| 4644 | 4398 | } |
| @@ -4647,16 +4401,13 @@ func (c *Char) cueDraw() { | ||
| 4647 | 4401 | if c.roundState() == 4 { |
| 4648 | 4402 | c.exitTarget(false) |
| 4649 | 4403 | } |
| 4650 | - if sys.supertime < 0 && c.teamside != sys.superplayer&1 { | |
| 4404 | + if sys.supertime < 0 && c.playerNo&1 != sys.superplayer&1 { | |
| 4651 | 4405 | c.defenceMul *= sys.superp2defmul |
| 4652 | 4406 | } |
| 4653 | 4407 | c.minus = 2 |
| 4654 | 4408 | c.oldPos = c.pos |
| 4655 | 4409 | } |
| 4656 | 4410 | } |
| 4657 | -func (c *Char) victoryQuote(v int32) { | |
| 4658 | - c.winquote = v | |
| 4659 | -} | |
| 4660 | 4411 | |
| 4661 | 4412 | type CharList struct { |
| 4662 | 4413 | runOrder, drawOrder []*Char |
| @@ -4853,9 +4604,7 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 4853 | 4604 | ghv.forcestand = hd.forcestand != 0 |
| 4854 | 4605 | ghv.fall = hd.fall |
| 4855 | 4606 | getter.fallTime = 0 |
| 4856 | - ghv.fall.xvelocity = hd.fall.xvelocity * c.localscl / getter.localscl | |
| 4857 | - ghv.fall.yvelocity = hd.fall.yvelocity * c.localscl / getter.localscl | |
| 4858 | - ghv.yaccel = hd.yaccel * c.localscl / getter.localscl | |
| 4607 | + ghv.yaccel = hd.yaccel | |
| 4859 | 4608 | if hd.forcenofall { |
| 4860 | 4609 | fall = false |
| 4861 | 4610 | } |
| @@ -4875,12 +4624,12 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 4875 | 4624 | ghv.guarded = true |
| 4876 | 4625 | if getter.ss.stateType == ST_A { |
| 4877 | 4626 | ghv.ctrltime = hd.airguard_ctrltime |
| 4878 | - ghv.xvel = hd.airguard_velocity[0] * c.localscl / getter.localscl | |
| 4879 | - ghv.yvel = hd.airguard_velocity[1] * c.localscl / getter.localscl | |
| 4627 | + ghv.xvel = hd.airguard_velocity[0] | |
| 4628 | + ghv.yvel = hd.airguard_velocity[1] | |
| 4880 | 4629 | } else { |
| 4881 | 4630 | ghv.ctrltime = hd.guard_ctrltime |
| 4882 | - ghv.xvel = hd.guard_velocity * c.localscl / getter.localscl | |
| 4883 | - ghv.yvel = hd.ground_velocity[1] * c.localscl / getter.localscl | |
| 4631 | + ghv.xvel = hd.guard_velocity | |
| 4632 | + ghv.yvel = hd.ground_velocity[1] | |
| 4884 | 4633 | } |
| 4885 | 4634 | absdamage = hd.guarddamage |
| 4886 | 4635 | ghv.hitcount = hc |
| @@ -4890,35 +4639,24 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 4890 | 4639 | if getter.ss.stateType == ST_A { |
| 4891 | 4640 | ghv.hittime = hd.air_hittime |
| 4892 | 4641 | ghv.ctrltime = hd.air_hittime |
| 4893 | - ghv.xvel = hd.air_velocity[0] * c.localscl / getter.localscl | |
| 4894 | - ghv.yvel = hd.air_velocity[1] * c.localscl / getter.localscl | |
| 4642 | + ghv.xvel = hd.air_velocity[0] | |
| 4643 | + ghv.yvel = hd.air_velocity[1] | |
| 4895 | 4644 | ghv.fallf = hd.air_fall |
| 4896 | 4645 | } else if getter.ss.stateType == ST_L { |
| 4897 | 4646 | ghv.hittime = hd.down_hittime |
| 4898 | 4647 | ghv.ctrltime = hd.down_hittime |
| 4899 | - ghv.xvel = hd.down_velocity[0] * c.localscl / getter.localscl | |
| 4900 | - if getter.movedY { | |
| 4901 | - ghv.yvel = hd.air_velocity[1] * c.localscl / getter.localscl | |
| 4902 | - } else { | |
| 4903 | - ghv.yvel = hd.down_velocity[1] * c.localscl / getter.localscl | |
| 4904 | - } | |
| 4648 | + ghv.xvel = hd.down_velocity[0] | |
| 4649 | + ghv.yvel = hd.down_velocity[1] | |
| 4905 | 4650 | if !hd.down_bounce { |
| 4906 | 4651 | ghv.fall.xvelocity = float32(math.NaN()) |
| 4907 | 4652 | ghv.fall.yvelocity = 0 |
| 4908 | 4653 | } |
| 4909 | 4654 | } else { |
| 4655 | + ghv.hittime = hd.ground_hittime | |
| 4910 | 4656 | ghv.ctrltime = hd.ground_hittime |
| 4911 | - ghv.xvel = hd.ground_velocity[0] * c.localscl / getter.localscl | |
| 4912 | - ghv.yvel = hd.ground_velocity[1] * c.localscl / getter.localscl | |
| 4657 | + ghv.xvel = hd.ground_velocity[0] | |
| 4658 | + ghv.yvel = hd.ground_velocity[1] | |
| 4913 | 4659 | ghv.fallf = hd.ground_fall |
| 4914 | - if ghv.fallf && ghv.yvel == 0 { | |
| 4915 | - ghv.yvel = -0.001 * c.localscl / getter.localscl //新MUGENだとウィンドウサイズを大きくするとここに入る数値が小さくなるが、再現しないほうがよいと思う。 | |
| 4916 | - } | |
| 4917 | - if ghv.yvel != 0 { | |
| 4918 | - ghv.hittime = hd.air_hittime | |
| 4919 | - } else { | |
| 4920 | - ghv.hittime = hd.ground_hittime | |
| 4921 | - } | |
| 4922 | 4660 | } |
| 4923 | 4661 | if ghv.hittime < 0 { |
| 4924 | 4662 | ghv.hittime = 0 |
| @@ -4952,45 +4690,45 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 4952 | 4690 | } |
| 4953 | 4691 | if !math.IsNaN(float64(hd.maxdist[0])) { |
| 4954 | 4692 | if byf < 0 { |
| 4955 | - if getter.pos[0]*getter.localscl/c.localscl < byPos[0]-hd.maxdist[0] { | |
| 4693 | + if getter.pos[0] < byPos[0]-hd.maxdist[0] { | |
| 4956 | 4694 | snap[0] = byPos[0] - hd.maxdist[0] |
| 4957 | 4695 | } |
| 4958 | 4696 | } else { |
| 4959 | - if getter.pos[0]*getter.localscl/c.localscl > byPos[0]+hd.maxdist[0] { | |
| 4697 | + if getter.pos[0] > byPos[0]+hd.maxdist[0] { | |
| 4960 | 4698 | snap[0] = byPos[0] + hd.maxdist[0] |
| 4961 | 4699 | } |
| 4962 | 4700 | } |
| 4963 | 4701 | } |
| 4964 | 4702 | if hitType == 1 || getter.ss.stateType == ST_A { |
| 4965 | 4703 | if !math.IsNaN(float64(hd.mindist[1])) { |
| 4966 | - if getter.pos[1]*getter.localscl/c.localscl < byPos[1]+hd.mindist[1] { | |
| 4704 | + if getter.pos[1] < byPos[1]+hd.mindist[1] { | |
| 4967 | 4705 | snap[1] = byPos[1] + hd.mindist[1] |
| 4968 | 4706 | } |
| 4969 | 4707 | } |
| 4970 | 4708 | if !math.IsNaN(float64(hd.maxdist[1])) { |
| 4971 | - if getter.pos[1]*getter.localscl/c.localscl > byPos[1]+hd.maxdist[1] { | |
| 4709 | + if getter.pos[1] > byPos[1]+hd.maxdist[1] { | |
| 4972 | 4710 | snap[1] = byPos[1] + hd.maxdist[1] |
| 4973 | 4711 | } |
| 4974 | 4712 | } |
| 4975 | 4713 | } |
| 4976 | 4714 | if !math.IsNaN(float64(snap[0])) { |
| 4977 | - ghv.xoff = snap[0]*c.localscl/getter.localscl - getter.pos[0] | |
| 4715 | + ghv.xoff = snap[0] - getter.pos[0] | |
| 4978 | 4716 | } |
| 4979 | 4717 | if !math.IsNaN(float64(snap[1])) { |
| 4980 | - ghv.yoff = snap[1]*c.localscl/getter.localscl - getter.pos[1] | |
| 4718 | + ghv.yoff = snap[1] - getter.pos[1] | |
| 4981 | 4719 | } |
| 4982 | 4720 | if hd.snapt != 0 && getter.hoIdx < 0 { |
| 4983 | 4721 | getter.setBindToId(c) |
| 4984 | 4722 | getter.setBindTime(hd.snapt + Btoi(hd.snapt > 0 && !c.pause())) |
| 4985 | 4723 | getter.bindFacing = 0 |
| 4986 | 4724 | if !math.IsNaN(float64(snap[0])) { |
| 4987 | - getter.bindPos[0] = hd.mindist[0] * c.localscl / getter.localscl | |
| 4725 | + getter.bindPos[0] = hd.mindist[0] | |
| 4988 | 4726 | } else { |
| 4989 | 4727 | getter.bindPos[0] = float32(math.NaN()) |
| 4990 | 4728 | } |
| 4991 | 4729 | if !math.IsNaN(float64(snap[1])) && |
| 4992 | 4730 | (hitType == 1 || getter.ss.stateType == ST_A) { |
| 4993 | - getter.bindPos[1] = hd.mindist[1] * c.localscl / getter.localscl | |
| 4731 | + getter.bindPos[1] = hd.mindist[1] | |
| 4994 | 4732 | } else { |
| 4995 | 4733 | getter.bindPos[1] = float32(math.NaN()) |
| 4996 | 4734 | } |
| @@ -5025,12 +4763,12 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 5025 | 4763 | } |
| 5026 | 4764 | if getter.ss.stateType == ST_A { |
| 5027 | 4765 | if getter.ghv.xvel < 0 { |
| 5028 | - getter.ghv.xvel -= 2 / c.localscl * getter.localscl | |
| 4766 | + getter.ghv.xvel -= 2 | |
| 5029 | 4767 | } |
| 5030 | 4768 | if getter.ghv.yvel <= 0 { |
| 5031 | - getter.ghv.yvel -= 2 / c.localscl * getter.localscl | |
| 4769 | + getter.ghv.yvel -= 2 | |
| 5032 | 4770 | if getter.ghv.yvel > -3 { |
| 5033 | - getter.ghv.yvel = -3 / c.localscl * getter.localscl | |
| 4771 | + getter.ghv.yvel = -3 | |
| 5034 | 4772 | } |
| 5035 | 4773 | } |
| 5036 | 4774 | } else { |
| @@ -5038,12 +4776,12 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 5038 | 4776 | getter.ghv.xvel *= 0.66 |
| 5039 | 4777 | } |
| 5040 | 4778 | if getter.ghv.xvel < 0 { |
| 5041 | - getter.ghv.xvel -= 2.5 / c.localscl * getter.localscl | |
| 4779 | + getter.ghv.xvel -= 2.5 | |
| 5042 | 4780 | } |
| 5043 | 4781 | if getter.ghv.yvel <= 0 { |
| 5044 | - getter.ghv.yvel -= 2 / c.localscl * getter.localscl | |
| 4782 | + getter.ghv.yvel -= 2 | |
| 5045 | 4783 | if getter.ghv.yvel > -6 { |
| 5046 | - getter.ghv.yvel = -6 / c.localscl * getter.localscl | |
| 4784 | + getter.ghv.yvel = -6 | |
| 5047 | 4785 | } |
| 5048 | 4786 | } |
| 5049 | 4787 | } |
| @@ -5060,24 +4798,22 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 5060 | 4798 | } |
| 5061 | 4799 | off := pos |
| 5062 | 4800 | if !proj { |
| 5063 | - off[0] = p2.pos[0]*p2.localscl - p1.pos[0]*p1.localscl | |
| 4801 | + off[0] = p2.pos[0] - p1.pos[0] | |
| 5064 | 4802 | if (p1.facing < 0) != (p2.facing < 0) { |
| 5065 | - off[0] += p2.facing * p2.width[0] * p2.localscl | |
| 4803 | + off[0] += p2.facing * p2.width[0] | |
| 5066 | 4804 | } else { |
| 5067 | - off[0] -= p2.facing * p2.width[1] * p2.localscl | |
| 4805 | + off[0] -= p2.facing * p2.width[1] | |
| 5068 | 4806 | } |
| 5069 | 4807 | } |
| 5070 | 4808 | off[0] *= p1.facing |
| 5071 | 4809 | if proj { |
| 5072 | - off[0] *= c.localscl | |
| 5073 | - off[1] *= c.localscl | |
| 5074 | - off[0] += hd.sparkxy[0] * projf * p1.facing * c.localscl | |
| 4810 | + off[0] += hd.sparkxy[0] * projf * p1.facing | |
| 5075 | 4811 | } else { |
| 5076 | - off[0] -= hd.sparkxy[0] * c.localscl | |
| 4812 | + off[0] -= hd.sparkxy[0] | |
| 5077 | 4813 | } |
| 5078 | - off[1] += hd.sparkxy[1] * c.localscl | |
| 4814 | + off[1] += hd.sparkxy[1] | |
| 5079 | 4815 | if c.id != p1.id { |
| 5080 | - off[1] += p1.hitdef.sparkxy[1] * c.localscl | |
| 4816 | + off[1] += p1.hitdef.sparkxy[1] | |
| 5081 | 4817 | } |
| 5082 | 4818 | if e, i := c.newExplod(); e != nil { |
| 5083 | 4819 | e.anim = c.getAnim(animNo, ffx) |
| @@ -5087,10 +4823,6 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 5087 | 4823 | e.offset = off |
| 5088 | 4824 | e.supermovetime = -1 |
| 5089 | 4825 | e.pausemovetime = -1 |
| 5090 | - e.localscl = 1 | |
| 5091 | - if !ffx { | |
| 5092 | - e.scale = [...]float32{c.localscl, c.localscl} | |
| 5093 | - } | |
| 5094 | 4826 | e.setPos(p1) |
| 5095 | 4827 | c.insertExplod(i) |
| 5096 | 4828 | } |
| @@ -5198,8 +4930,8 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 5198 | 4930 | if hd.envshake_time > 0 { |
| 5199 | 4931 | sys.envShake.time = hd.envshake_time |
| 5200 | 4932 | sys.envShake.freq = hd.envshake_freq * float32(math.Pi) / 180 |
| 5201 | - sys.envShake.ampl = int32(float32(hd.envshake_ampl) * c.localscl) | |
| 5202 | - sys.envShake.phase = hd.envshake_phase * c.localscl | |
| 4933 | + sys.envShake.ampl = hd.envshake_ampl | |
| 4934 | + sys.envShake.phase = hd.envshake_phase | |
| 5203 | 4935 | sys.envShake.setDefPhase() |
| 5204 | 4936 | } |
| 5205 | 4937 | getter.getcombo += hd.numhits * hits |
| @@ -5256,18 +4988,18 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 5256 | 4988 | for j := range pr { |
| 5257 | 4989 | p := &pr[j] |
| 5258 | 4990 | if p.id < 0 || p.hits < 0 || p.hitdef.affectteam != 0 && |
| 5259 | - (getter.teamside != p.hitdef.teamside-1) != (p.hitdef.affectteam > 0) { | |
| 4991 | + (getter.playerNo&1 != i&1) != (p.hitdef.affectteam > 0) { | |
| 5260 | 4992 | continue |
| 5261 | 4993 | } |
| 5262 | - if dist := (getter.pos[0]*getter.localscl - p.pos[0]*p.localscl) * p.facing; dist >= 0 && | |
| 5263 | - dist <= float32(c.size.proj.attack.dist)*c.localscl { | |
| 4994 | + if dist := (getter.pos[0] - p.pos[0]) * p.facing; dist >= 0 && | |
| 4995 | + dist <= float32(c.size.proj.attack.dist) { | |
| 5264 | 4996 | getter.inguarddist = true |
| 5265 | 4997 | } |
| 5266 | 4998 | if p.hits == 0 { |
| 5267 | 4999 | continue |
| 5268 | 5000 | } |
| 5269 | 5001 | if getter.atktmp != 0 && (getter.hitdef.affectteam == 0 || |
| 5270 | - (p.hitdef.teamside-1 != getter.teamside) == (getter.hitdef.affectteam > 0)) && | |
| 5002 | + (i&1 != getter.playerNo&1) == (getter.hitdef.affectteam > 0)) && | |
| 5271 | 5003 | getter.hitdef.hitflag&int32(ST_P) != 0 && |
| 5272 | 5004 | getter.projClsnCheck(p, false) { |
| 5273 | 5005 | p.hits = -2 |
| @@ -5286,7 +5018,7 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 5286 | 5018 | if getter.sf(CSF_gethit) { |
| 5287 | 5019 | getter.hittmp = int8(Btoi(getter.ghv.fallf)) + 1 |
| 5288 | 5020 | } |
| 5289 | - if dist := -getter.distX(c, getter) * c.facing; dist >= 0 && | |
| 5021 | + if dist := -getter.distX(c) * c.facing; dist >= 0 && | |
| 5290 | 5022 | dist <= float32(p.hitdef.guard_dist) { |
| 5291 | 5023 | getter.inguarddist = true |
| 5292 | 5024 | } |
| @@ -5295,8 +5027,8 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 5295 | 5027 | if p.misstime > 0 { |
| 5296 | 5028 | hits = 1 |
| 5297 | 5029 | } |
| 5298 | - if ht := hit(c, &p.hitdef, [...]float32{p.pos[0] - c.pos[0]*c.localscl/p.localscl, | |
| 5299 | - p.pos[1] - c.pos[1]*c.localscl/p.localscl}, p.facing, hits); ht != 0 { | |
| 5030 | + if ht := hit(c, &p.hitdef, [...]float32{p.pos[0] - c.pos[0], | |
| 5031 | + p.pos[1] - c.pos[1]}, p.facing, hits); ht != 0 { | |
| 5300 | 5032 | p.timemiss = ^Max(0, p.misstime) |
| 5301 | 5033 | if Abs(ht) == 1 { |
| 5302 | 5034 | sys.cgi[i].pctype = PC_Hit |
| @@ -5326,18 +5058,18 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 5326 | 5058 | gxmax += sys.xmax |
| 5327 | 5059 | getter.inguarddist = false |
| 5328 | 5060 | getter.unsetSF(CSF_gethit) |
| 5329 | - gl, gr := -getter.width[0]*getter.localscl, getter.width[1]*getter.localscl | |
| 5061 | + gl, gr := -getter.width[0], getter.width[1] | |
| 5330 | 5062 | if getter.facing > 0 { |
| 5331 | 5063 | gl, gr = -gr, -gl |
| 5332 | 5064 | } |
| 5333 | - gl += getter.pos[0] * getter.localscl | |
| 5334 | - gr += getter.pos[0] * getter.localscl | |
| 5065 | + gl += getter.pos[0] | |
| 5066 | + gr += getter.pos[0] | |
| 5335 | 5067 | getter.enemyNearClear() |
| 5336 | 5068 | for _, c := range cl.runOrder { |
| 5337 | 5069 | contact := 0 |
| 5338 | 5070 | if c.atktmp != 0 && c.id != getter.id && (c.hitdef.affectteam == 0 || |
| 5339 | - (getter.teamside != c.hitdef.teamside-1) == (c.hitdef.affectteam > 0)) { | |
| 5340 | - dist := -getter.distX(c, getter) * c.facing | |
| 5071 | + (getter.playerNo&1 != c.playerNo&1) == (c.hitdef.affectteam > 0)) { | |
| 5072 | + dist := -getter.distX(c) * c.facing | |
| 5341 | 5073 | if c.ss.moveType == MT_A && dist >= 0 && dist <= c.attackDist { |
| 5342 | 5074 | getter.inguarddist = true |
| 5343 | 5075 | } |
| @@ -5405,47 +5137,47 @@ func (cl *CharList) clsn(getter *Char, proj bool) { | ||
| 5405 | 5137 | } |
| 5406 | 5138 | } |
| 5407 | 5139 | } |
| 5408 | - if getter.teamside != c.teamside && getter.sf(CSF_playerpush) && | |
| 5140 | + if getter.playerNo&1 != c.playerNo&1 && getter.sf(CSF_playerpush) && | |
| 5409 | 5141 | c.sf(CSF_playerpush) && (getter.ss.stateType == ST_A || |
| 5410 | - getter.pos[1]*getter.localscl-c.pos[1]*c.localscl < getter.height()*c.localscl) && | |
| 5411 | - (c.ss.stateType == ST_A || c.pos[1]*c.localscl-getter.pos[1]*getter.localscl < c.height()*(320/float32(c.localcoord))) { | |
| 5412 | - cl, cr := -c.width[0]*c.localscl, c.width[1]*c.localscl | |
| 5142 | + getter.pos[1]-c.pos[1] < getter.height()) && | |
| 5143 | + (c.ss.stateType == ST_A || c.pos[1]-getter.pos[1] < c.height()) { | |
| 5144 | + cl, cr := -c.width[0], c.width[1] | |
| 5413 | 5145 | if c.facing > 0 { |
| 5414 | 5146 | cl, cr = -cr, -cl |
| 5415 | 5147 | } |
| 5416 | - cl += c.pos[0] * c.localscl | |
| 5417 | - cr += c.pos[0] * c.localscl | |
| 5148 | + cl += c.pos[0] | |
| 5149 | + cr += c.pos[0] | |
| 5418 | 5150 | if gl < cr && cl < gr && (contact > 0 || |
| 5419 | 5151 | getter.clsnCheck(c, false, false)) { |
| 5420 | 5152 | getter.pushed, c.pushed = true, true |
| 5421 | - tmp := getter.distX(c, getter) | |
| 5153 | + tmp := getter.distX(c) | |
| 5422 | 5154 | if tmp == 0 { |
| 5423 | - if getter.pos[1]*getter.localscl > c.pos[1]*c.localscl { | |
| 5155 | + if getter.pos[1] > c.pos[1] { | |
| 5424 | 5156 | tmp = getter.facing |
| 5425 | 5157 | } else { |
| 5426 | 5158 | tmp = -c.facing |
| 5427 | 5159 | } |
| 5428 | 5160 | } |
| 5429 | 5161 | if tmp > 0 { |
| 5430 | - getter.pos[0] -= ((gr - cl) * 0.5) / getter.localscl | |
| 5431 | - c.pos[0] += ((gr - cl) * 0.5) / c.localscl | |
| 5162 | + getter.pos[0] -= (gr - cl) * 0.5 | |
| 5163 | + c.pos[0] += (gr - cl) * 0.5 | |
| 5432 | 5164 | } else { |
| 5433 | - getter.pos[0] += ((cr - gl) * 0.5) / getter.localscl | |
| 5434 | - c.pos[0] -= ((cr - gl) * 0.5) / c.localscl | |
| 5165 | + getter.pos[0] += (cr - gl) * 0.5 | |
| 5166 | + c.pos[0] -= (cr - gl) * 0.5 | |
| 5435 | 5167 | } |
| 5436 | 5168 | if getter.sf(CSF_screenbound) { |
| 5437 | - getter.pos[0] = MaxF(gxmin/getter.localscl, MinF(gxmax/getter.localscl, getter.pos[0])) | |
| 5169 | + getter.pos[0] = MaxF(gxmin, MinF(gxmax, getter.pos[0])) | |
| 5438 | 5170 | } |
| 5439 | 5171 | if c.sf(CSF_screenbound) { |
| 5440 | 5172 | l, r := c.getEdge(c.edge[0], true), -c.getEdge(c.edge[1], true) |
| 5441 | 5173 | if c.facing > 0 { |
| 5442 | 5174 | l, r = -r, -l |
| 5443 | 5175 | } |
| 5444 | - c.pos[0] = MaxF(l+sys.xmin/c.localscl, MinF(r+sys.xmax/c.localscl, c.pos[0])) | |
| 5176 | + c.pos[0] = MaxF(l+sys.xmin, MinF(r+sys.xmax, c.pos[0])) | |
| 5445 | 5177 | } |
| 5446 | - getter.pos[0] = MaxF(sys.stage.leftbound/getter.localscl, MinF(sys.stage.rightbound/getter.localscl, | |
| 5178 | + getter.pos[0] = MaxF(sys.stage.leftbound, MinF(sys.stage.rightbound, | |
| 5447 | 5179 | getter.pos[0])) |
| 5448 | - c.pos[0] = MaxF(sys.stage.leftbound/c.localscl, MinF(sys.stage.rightbound/c.localscl, | |
| 5180 | + c.pos[0] = MaxF(sys.stage.leftbound, MinF(sys.stage.rightbound, | |
| 5449 | 5181 | c.pos[0])) |
| 5450 | 5182 | getter.drawPos[0], c.drawPos[0] = getter.pos[0], c.pos[0] |
| 5451 | 5183 | } |
| @@ -5501,15 +5233,17 @@ func (cl *CharList) enemyNear(c *Char, n int32, p2 bool) *Char { | ||
| 5501 | 5233 | *cache = append(*cache, e) |
| 5502 | 5234 | return |
| 5503 | 5235 | } |
| 5504 | - if AbsF(c.distX(e, c)) < AbsF(c.distX((*cache)[i], c)) { | |
| 5236 | + if p2 && !e.scf(SCF_ko_round_middle) && | |
| 5237 | + (*cache)[i].scf(SCF_ko_round_middle) || (!p2 || | |
| 5238 | + e.scf(SCF_ko_round_middle) == (*cache)[i].scf(SCF_ko_round_middle)) && | |
| 5239 | + AbsF(c.distX(e)) < AbsF(c.distX((*cache)[i])) { | |
| 5505 | 5240 | add((*cache)[i], i+1) |
| 5506 | 5241 | (*cache)[i] = e |
| 5507 | 5242 | } |
| 5508 | 5243 | } |
| 5509 | 5244 | } |
| 5510 | 5245 | for _, e := range cl.runOrder { |
| 5511 | - if e.player && e.teamside != c.teamside && | |
| 5512 | - (p2 && !e.scf(SCF_ko_round_middle) || !p2 && e.helperIndex == 0) { | |
| 5246 | + if e.player && e.playerNo&1 != c.playerNo&1 { | |
| 5513 | 5247 | add(e, 0) |
| 5514 | 5248 | } |
| 5515 | 5249 | } |
| @@ -245,7 +245,7 @@ func LoadFile(file *string, deffile string, load func(string) error) error { | ||
| 245 | 245 | var fp string |
| 246 | 246 | *file = strings.Replace(*file, "\\", "/", -1) |
| 247 | 247 | defdir := filepath.Dir(strings.Replace(deffile, "\\", "/", -1)) |
| 248 | - if defdir == "." || strings.Contains(*file, ":/") { | |
| 248 | + if defdir == "." { | |
| 249 | 249 | fp = *file |
| 250 | 250 | } else if defdir == "/" { |
| 251 | 251 | fp = "/" + *file |
| @@ -514,16 +514,6 @@ func (is IniSection) getText(name string) (str string, ok bool, err error) { | ||
| 514 | 514 | str = str[1 : len(str)-1] |
| 515 | 515 | return |
| 516 | 516 | } |
| 517 | -func (is IniSection) getString(name string) (str string, ok bool) { | |
| 518 | - str, ok = is[name] | |
| 519 | - if !ok { | |
| 520 | - return | |
| 521 | - } | |
| 522 | - if len(str) >= 2 && str[0] == '"' && str[len(str)-1] == '"' { | |
| 523 | - str = str[1 : len(str)-1] | |
| 524 | - } | |
| 525 | - return | |
| 526 | -} | |
| 527 | 517 | |
| 528 | 518 | type Layout struct { |
| 529 | 519 | offset [2]float32 |
| @@ -562,7 +552,7 @@ func (l *Layout) Read(pre string, is IniSection) { | ||
| 562 | 552 | l.layerno = I32ToI16(Min(2, ln)) |
| 563 | 553 | is.ReadF32(pre+"scale", &l.scale[0], &l.scale[1]) |
| 564 | 554 | } |
| 565 | -func (l *Layout) DrawSprite(x, y float32, ln int16, s *Sprite, fx *PalFX, fscale float32) { | |
| 555 | +func (l *Layout) DrawSprite(x, y float32, ln int16, s *Sprite, fx *PalFX) { | |
| 566 | 556 | if l.layerno == ln && s != nil { |
| 567 | 557 | if l.facing < 0 { |
| 568 | 558 | x += sys.lifebarFontScale |
| @@ -570,8 +560,12 @@ func (l *Layout) DrawSprite(x, y float32, ln int16, s *Sprite, fx *PalFX, fscale | ||
| 570 | 560 | if l.vfacing < 0 { |
| 571 | 561 | y += sys.lifebarFontScale |
| 572 | 562 | } |
| 563 | + pal := s.Pal | |
| 564 | + if pal != nil { | |
| 565 | + pal = fx.getFxPal(pal, false) | |
| 566 | + } | |
| 573 | 567 | s.Draw(x+l.offset[0], y+l.offset[1], |
| 574 | - l.scale[0]*float32(l.facing)*fscale, l.scale[1]*float32(l.vfacing)*fscale, s.Pal, fx) | |
| 568 | + l.scale[0]*float32(l.facing), l.scale[1]*float32(l.vfacing), pal) | |
| 575 | 569 | } |
| 576 | 570 | } |
| 577 | 571 | func (l *Layout) DrawAnim(r *[4]int32, x, y, scl float32, ln int16, |
| @@ -586,7 +580,7 @@ func (l *Layout) DrawAnim(r *[4]int32, x, y, scl float32, ln int16, | ||
| 586 | 580 | a.Draw(r, x+l.offset[0], y+l.offset[1]+float32(sys.gameHeight-240), |
| 587 | 581 | scl, scl, l.scale[0]*float32(l.facing), l.scale[0]*float32(l.facing), |
| 588 | 582 | l.scale[1]*float32(l.vfacing), |
| 589 | - 0, 0, 0, 0, float32(sys.gameWidth-320)/2, nil, false, 1) | |
| 583 | + 0, 0, float32(sys.gameWidth-320)/2, nil, false) | |
| 590 | 584 | } |
| 591 | 585 | } |
| 592 | 586 | func (l *Layout) DrawText(x, y, scl float32, ln int16, |
| @@ -2762,26 +2762,6 @@ func (c *Compiler) paramPostye(is IniSection, sc *StateControllerBase, | ||
| 2762 | 2762 | return nil |
| 2763 | 2763 | }) |
| 2764 | 2764 | } |
| 2765 | - | |
| 2766 | -func (c *Compiler) paramSpace(is IniSection, sc *StateControllerBase, | |
| 2767 | - id byte) error { | |
| 2768 | - return c.stateParam(is, "space", func(data string) error { | |
| 2769 | - if len(data) <= 1 { | |
| 2770 | - return Error("値が指定されていません") | |
| 2771 | - } | |
| 2772 | - var sp Space | |
| 2773 | - if len(data) >= 2 { | |
| 2774 | - if strings.ToLower(data[:2]) == "st" { | |
| 2775 | - sp = Space_stage | |
| 2776 | - } else if strings.ToLower(data[:2]) == "sc" { | |
| 2777 | - sp = Space_screen | |
| 2778 | - } | |
| 2779 | - } | |
| 2780 | - sc.add(id, sc.iToExp(int32(sp))) | |
| 2781 | - return nil | |
| 2782 | - }) | |
| 2783 | -} | |
| 2784 | - | |
| 2785 | 2765 | func (c *Compiler) paramTrans(is IniSection, sc *StateControllerBase, |
| 2786 | 2766 | prefix string, id byte, afterImage bool) error { |
| 2787 | 2767 | return c.stateParam(is, prefix+"trans", func(data string) error { |
| @@ -2823,7 +2803,7 @@ func (c *Compiler) paramTrans(is IniSection, sc *StateControllerBase, | ||
| 2823 | 2803 | } |
| 2824 | 2804 | var exp []BytecodeExp |
| 2825 | 2805 | b := false |
| 2826 | - if !afterImage || sys.cgi[c.playerNo].ver[0] == 1 { | |
| 2806 | + if !afterImage { | |
| 2827 | 2807 | if err := c.stateParam(is, prefix+"alpha", func(data string) error { |
| 2828 | 2808 | b = true |
| 2829 | 2809 | bes, err := c.exprs(data, VT_Int, 2) |
| @@ -2851,7 +2831,7 @@ func (c *Compiler) paramTrans(is IniSection, sc *StateControllerBase, | ||
| 2851 | 2831 | } |
| 2852 | 2832 | if len(bes) > 1 { |
| 2853 | 2833 | exp[1] = bes[1] |
| 2854 | - if tt != TT_alpha && tt != TT_add1 && !(tt == TT_add && sys.cgi[c.playerNo].ver[0] == 1) { | |
| 2834 | + if tt != TT_alpha && tt != TT_add1 { | |
| 2855 | 2835 | exp[1].append(OC_pop) |
| 2856 | 2836 | } |
| 2857 | 2837 | } |
| @@ -2860,15 +2840,7 @@ func (c *Compiler) paramTrans(is IniSection, sc *StateControllerBase, | ||
| 2860 | 2840 | if len(bes) <= 1 { |
| 2861 | 2841 | exp[1].appendValue(BytecodeInt(255)) |
| 2862 | 2842 | } |
| 2863 | - case TT_add: | |
| 2864 | - if sys.cgi[c.playerNo].ver[0] == 1 { | |
| 2865 | - if len(bes) <= 1 { | |
| 2866 | - exp[1].appendValue(BytecodeInt(255)) | |
| 2867 | - } | |
| 2868 | - } else { | |
| 2869 | - exp[1].appendValue(BytecodeInt(255)) | |
| 2870 | - } | |
| 2871 | - case TT_sub: | |
| 2843 | + case TT_add, TT_sub: | |
| 2872 | 2844 | exp[1].appendValue(BytecodeInt(255)) |
| 2873 | 2845 | default: |
| 2874 | 2846 | exp[1].appendValue(BytecodeInt(0)) |
| @@ -3066,10 +3038,6 @@ func (c *Compiler) hitBySub(is IniSection, sc *StateControllerBase) error { | ||
| 3066 | 3038 | func (c *Compiler) hitBy(is IniSection, sc *StateControllerBase, |
| 3067 | 3039 | _ int8) (StateController, error) { |
| 3068 | 3040 | ret, err := (*hitBy)(sc), c.stateSec(is, func() error { |
| 3069 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3070 | - hitBy_redirectid, VT_Int, 1, false); err != nil { | |
| 3071 | - return err | |
| 3072 | - } | |
| 3073 | 3041 | return c.hitBySub(is, sc) |
| 3074 | 3042 | }) |
| 3075 | 3043 | return *ret, err |
| @@ -3077,10 +3045,6 @@ func (c *Compiler) hitBy(is IniSection, sc *StateControllerBase, | ||
| 3077 | 3045 | func (c *Compiler) notHitBy(is IniSection, sc *StateControllerBase, |
| 3078 | 3046 | _ int8) (StateController, error) { |
| 3079 | 3047 | ret, err := (*notHitBy)(sc), c.stateSec(is, func() error { |
| 3080 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3081 | - hitBy_redirectid, VT_Int, 1, false); err != nil { | |
| 3082 | - return err | |
| 3083 | - } | |
| 3084 | 3048 | return c.hitBySub(is, sc) |
| 3085 | 3049 | }) |
| 3086 | 3050 | return *ret, err |
| @@ -3088,10 +3052,6 @@ func (c *Compiler) notHitBy(is IniSection, sc *StateControllerBase, | ||
| 3088 | 3052 | func (c *Compiler) assertSpecial(is IniSection, sc *StateControllerBase, |
| 3089 | 3053 | _ int8) (StateController, error) { |
| 3090 | 3054 | ret, err := (*assertSpecial)(sc), c.stateSec(is, func() error { |
| 3091 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3092 | - assertSpecial_redirectid, VT_Int, 1, false); err != nil { | |
| 3093 | - return err | |
| 3094 | - } | |
| 3095 | 3055 | foo := func(data string) error { |
| 3096 | 3056 | switch strings.ToLower(data) { |
| 3097 | 3057 | case "nostandguard": |
| @@ -3166,10 +3126,6 @@ func (c *Compiler) assertSpecial(is IniSection, sc *StateControllerBase, | ||
| 3166 | 3126 | func (c *Compiler) playSnd(is IniSection, sc *StateControllerBase, |
| 3167 | 3127 | _ int8) (StateController, error) { |
| 3168 | 3128 | ret, err := (*playSnd)(sc), c.stateSec(is, func() error { |
| 3169 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3170 | - playSnd_redirectid, VT_Int, 1, false); err != nil { | |
| 3171 | - return err | |
| 3172 | - } | |
| 3173 | 3129 | f := false |
| 3174 | 3130 | if err := c.stateParam(is, "value", func(data string) error { |
| 3175 | 3131 | f = true |
| @@ -3231,10 +3187,6 @@ func (c *Compiler) playSnd(is IniSection, sc *StateControllerBase, | ||
| 3231 | 3187 | } |
| 3232 | 3188 | func (c *Compiler) changeStateSub(is IniSection, |
| 3233 | 3189 | sc *StateControllerBase) error { |
| 3234 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3235 | - changeState_redirectid, VT_Int, 1, false); err != nil { | |
| 3236 | - return err | |
| 3237 | - } | |
| 3238 | 3190 | if err := c.paramValue(is, sc, "value", |
| 3239 | 3191 | changeState_value, VT_Int, 1, true); err != nil { |
| 3240 | 3192 | return err |
| @@ -3270,10 +3222,6 @@ func (c *Compiler) selfState(is IniSection, sc *StateControllerBase, | ||
| 3270 | 3222 | func (c *Compiler) tagIn(is IniSection, sc *StateControllerBase, |
| 3271 | 3223 | _ int8) (StateController, error) { |
| 3272 | 3224 | ret, err := (*tagIn)(sc), c.stateSec(is, func() error { |
| 3273 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3274 | - tagIn_redirectid, VT_Int, 1, false); err != nil { | |
| 3275 | - return err | |
| 3276 | - } | |
| 3277 | 3225 | if err := c.paramValue(is, sc, "stateno", |
| 3278 | 3226 | tagIn_stateno, VT_Int, 1, true); err != nil { |
| 3279 | 3227 | return err |
| @@ -3299,10 +3247,6 @@ func (c *Compiler) tagIn(is IniSection, sc *StateControllerBase, | ||
| 3299 | 3247 | func (c *Compiler) tagOut(is IniSection, sc *StateControllerBase, |
| 3300 | 3248 | _ int8) (StateController, error) { |
| 3301 | 3249 | ret, err := (*tagOut)(sc), c.stateSec(is, func() error { |
| 3302 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3303 | - tagOut_redirectid, VT_Int, 1, false); err != nil { | |
| 3304 | - return err | |
| 3305 | - } | |
| 3306 | 3250 | sc.add(tagOut_, nil) |
| 3307 | 3251 | return nil |
| 3308 | 3252 | }) |
| @@ -3315,10 +3259,6 @@ func (c *Compiler) tagOut(is IniSection, sc *StateControllerBase, | ||
| 3315 | 3259 | func (c *Compiler) destroySelf(is IniSection, sc *StateControllerBase, |
| 3316 | 3260 | _ int8) (StateController, error) { |
| 3317 | 3261 | ret, err := (*destroySelf)(sc), c.stateSec(is, func() error { |
| 3318 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3319 | - destroySelf_redirectid, VT_Int, 1, false); err != nil { | |
| 3320 | - return err | |
| 3321 | - } | |
| 3322 | 3262 | if err := c.paramValue(is, sc, "recursive", |
| 3323 | 3263 | destroySelf_recursive, VT_Bool, 1, false); err != nil { |
| 3324 | 3264 | return err |
| @@ -3333,10 +3273,6 @@ func (c *Compiler) destroySelf(is IniSection, sc *StateControllerBase, | ||
| 3333 | 3273 | } |
| 3334 | 3274 | func (c *Compiler) changeAnimSub(is IniSection, |
| 3335 | 3275 | sc *StateControllerBase) error { |
| 3336 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3337 | - changeAnim_redirectid, VT_Int, 1, false); err != nil { | |
| 3338 | - return err | |
| 3339 | - } | |
| 3340 | 3276 | if err := c.paramValue(is, sc, "elem", |
| 3341 | 3277 | changeAnim_elem, VT_Int, 1, false); err != nil { |
| 3342 | 3278 | return err |
| @@ -3364,10 +3300,6 @@ func (c *Compiler) changeAnim2(is IniSection, sc *StateControllerBase, | ||
| 3364 | 3300 | func (c *Compiler) helper(is IniSection, sc *StateControllerBase, |
| 3365 | 3301 | _ int8) (StateController, error) { |
| 3366 | 3302 | ret, err := (*helper)(sc), c.stateSec(is, func() error { |
| 3367 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3368 | - helper_redirectid, VT_Int, 1, false); err != nil { | |
| 3369 | - return err | |
| 3370 | - } | |
| 3371 | 3303 | if err := c.stateParam(is, "helpertype", func(data string) error { |
| 3372 | 3304 | if len(data) == 0 { |
| 3373 | 3305 | return Error("値が指定されていません") |
| @@ -3478,10 +3410,6 @@ func (c *Compiler) helper(is IniSection, sc *StateControllerBase, | ||
| 3478 | 3410 | func (c *Compiler) ctrlSet(is IniSection, sc *StateControllerBase, |
| 3479 | 3411 | _ int8) (StateController, error) { |
| 3480 | 3412 | ret, err := (*ctrlSet)(sc), c.stateSec(is, func() error { |
| 3481 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3482 | - ctrlSet_redirectid, VT_Int, 1, false); err != nil { | |
| 3483 | - return err | |
| 3484 | - } | |
| 3485 | 3413 | return c.paramValue(is, sc, "value", ctrlSet_value, VT_Bool, 1, true) |
| 3486 | 3414 | }) |
| 3487 | 3415 | return *ret, err |
| @@ -3515,9 +3443,6 @@ func (c *Compiler) explodSub(is IniSection, | ||
| 3515 | 3443 | if err := c.paramPostye(is, sc, explod_postype); err != nil { |
| 3516 | 3444 | return err |
| 3517 | 3445 | } |
| 3518 | - if err := c.paramSpace(is, sc, explod_space); err != nil { | |
| 3519 | - return err | |
| 3520 | - } | |
| 3521 | 3446 | f := false |
| 3522 | 3447 | if err := c.stateParam(is, "vel", func(data string) error { |
| 3523 | 3448 | f = true |
| @@ -3563,10 +3488,6 @@ func (c *Compiler) explodSub(is IniSection, | ||
| 3563 | 3488 | explod_sprpriority, VT_Int, 1, false); err != nil { |
| 3564 | 3489 | return err |
| 3565 | 3490 | } |
| 3566 | - if err := c.paramValue(is, sc, "bindid", | |
| 3567 | - explod_bindid, VT_Int, 1, false); err != nil { | |
| 3568 | - return err | |
| 3569 | - } | |
| 3570 | 3491 | if err := c.stateParam(is, "ontop", func(data string) error { |
| 3571 | 3492 | if err := c.scAdd(sc, explod_ontop, data, VT_Bool, 1); err != nil { |
| 3572 | 3493 | return err |
| @@ -3594,10 +3515,6 @@ func (c *Compiler) explodSub(is IniSection, | ||
| 3594 | 3515 | func (c *Compiler) explod(is IniSection, sc *StateControllerBase, |
| 3595 | 3516 | ihp int8) (StateController, error) { |
| 3596 | 3517 | ret, err := (*explod)(sc), c.stateSec(is, func() error { |
| 3597 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3598 | - explod_redirectid, VT_Int, 1, false); err != nil { | |
| 3599 | - return err | |
| 3600 | - } | |
| 3601 | 3518 | if err := c.paramValue(is, sc, "ownpal", |
| 3602 | 3519 | explod_ownpal, VT_Bool, 1, false); err != nil { |
| 3603 | 3520 | return err |
| @@ -3638,10 +3555,6 @@ func (c *Compiler) explod(is IniSection, sc *StateControllerBase, | ||
| 3638 | 3555 | func (c *Compiler) modifyExplod(is IniSection, sc *StateControllerBase, |
| 3639 | 3556 | _ int8) (StateController, error) { |
| 3640 | 3557 | ret, err := (*modifyExplod)(sc), c.stateSec(is, func() error { |
| 3641 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3642 | - explod_redirectid, VT_Int, 1, false); err != nil { | |
| 3643 | - return err | |
| 3644 | - } | |
| 3645 | 3558 | if err := c.explodSub(is, sc); err != nil { |
| 3646 | 3559 | return err |
| 3647 | 3560 | } |
| @@ -3664,10 +3577,6 @@ func (c *Compiler) modifyExplod(is IniSection, sc *StateControllerBase, | ||
| 3664 | 3577 | func (c *Compiler) gameMakeAnim(is IniSection, sc *StateControllerBase, |
| 3665 | 3578 | _ int8) (StateController, error) { |
| 3666 | 3579 | ret, err := (*gameMakeAnim)(sc), c.stateSec(is, func() error { |
| 3667 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3668 | - gameMakeAnim_redirectid, VT_Int, 1, false); err != nil { | |
| 3669 | - return err | |
| 3670 | - } | |
| 3671 | 3580 | if err := c.paramValue(is, sc, "pos", |
| 3672 | 3581 | gameMakeAnim_pos, VT_Float, 2, false); err != nil { |
| 3673 | 3582 | return err |
| @@ -3726,10 +3635,6 @@ func (c *Compiler) posSetSub(is IniSection, | ||
| 3726 | 3635 | func (c *Compiler) posSet(is IniSection, sc *StateControllerBase, |
| 3727 | 3636 | _ int8) (StateController, error) { |
| 3728 | 3637 | ret, err := (*posSet)(sc), c.stateSec(is, func() error { |
| 3729 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3730 | - posSet_redirectid, VT_Int, 1, false); err != nil { | |
| 3731 | - return err | |
| 3732 | - } | |
| 3733 | 3638 | return c.posSetSub(is, sc) |
| 3734 | 3639 | }) |
| 3735 | 3640 | return *ret, err |
| @@ -3737,10 +3642,6 @@ func (c *Compiler) posSet(is IniSection, sc *StateControllerBase, | ||
| 3737 | 3642 | func (c *Compiler) posAdd(is IniSection, sc *StateControllerBase, |
| 3738 | 3643 | _ int8) (StateController, error) { |
| 3739 | 3644 | ret, err := (*posAdd)(sc), c.stateSec(is, func() error { |
| 3740 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3741 | - posSet_redirectid, VT_Int, 1, false); err != nil { | |
| 3742 | - return err | |
| 3743 | - } | |
| 3744 | 3645 | return c.posSetSub(is, sc) |
| 3745 | 3646 | }) |
| 3746 | 3647 | return *ret, err |
| @@ -3748,10 +3649,6 @@ func (c *Compiler) posAdd(is IniSection, sc *StateControllerBase, | ||
| 3748 | 3649 | func (c *Compiler) velSet(is IniSection, sc *StateControllerBase, |
| 3749 | 3650 | _ int8) (StateController, error) { |
| 3750 | 3651 | ret, err := (*velSet)(sc), c.stateSec(is, func() error { |
| 3751 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3752 | - posSet_redirectid, VT_Int, 1, false); err != nil { | |
| 3753 | - return err | |
| 3754 | - } | |
| 3755 | 3652 | return c.posSetSub(is, sc) |
| 3756 | 3653 | }) |
| 3757 | 3654 | return *ret, err |
| @@ -3759,10 +3656,6 @@ func (c *Compiler) velSet(is IniSection, sc *StateControllerBase, | ||
| 3759 | 3656 | func (c *Compiler) velAdd(is IniSection, sc *StateControllerBase, |
| 3760 | 3657 | _ int8) (StateController, error) { |
| 3761 | 3658 | ret, err := (*velAdd)(sc), c.stateSec(is, func() error { |
| 3762 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3763 | - posSet_redirectid, VT_Int, 1, false); err != nil { | |
| 3764 | - return err | |
| 3765 | - } | |
| 3766 | 3659 | return c.posSetSub(is, sc) |
| 3767 | 3660 | }) |
| 3768 | 3661 | return *ret, err |
| @@ -3770,10 +3663,6 @@ func (c *Compiler) velAdd(is IniSection, sc *StateControllerBase, | ||
| 3770 | 3663 | func (c *Compiler) velMul(is IniSection, sc *StateControllerBase, |
| 3771 | 3664 | _ int8) (StateController, error) { |
| 3772 | 3665 | ret, err := (*velMul)(sc), c.stateSec(is, func() error { |
| 3773 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3774 | - posSet_redirectid, VT_Int, 1, false); err != nil { | |
| 3775 | - return err | |
| 3776 | - } | |
| 3777 | 3666 | return c.posSetSub(is, sc) |
| 3778 | 3667 | }) |
| 3779 | 3668 | return *ret, err |
| @@ -3836,10 +3725,6 @@ func (c *Compiler) palFXSub(is IniSection, | ||
| 3836 | 3725 | func (c *Compiler) palFX(is IniSection, sc *StateControllerBase, |
| 3837 | 3726 | _ int8) (StateController, error) { |
| 3838 | 3727 | ret, err := (*palFX)(sc), c.stateSec(is, func() error { |
| 3839 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3840 | - palFX_redirectid, VT_Int, 1, false); err != nil { | |
| 3841 | - return err | |
| 3842 | - } | |
| 3843 | 3728 | return c.palFXSub(is, sc, "") |
| 3844 | 3729 | }) |
| 3845 | 3730 | return *ret, err |
| @@ -3860,10 +3745,6 @@ func (c *Compiler) bgPalFX(is IniSection, sc *StateControllerBase, | ||
| 3860 | 3745 | } |
| 3861 | 3746 | func (c *Compiler) afterImageSub(is IniSection, |
| 3862 | 3747 | sc *StateControllerBase, prefix string) error { |
| 3863 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3864 | - afterImage_redirectid, VT_Int, 1, false); err != nil { | |
| 3865 | - return err | |
| 3866 | - } | |
| 3867 | 3748 | if err := c.paramTrans(is, sc, prefix, |
| 3868 | 3749 | afterImage_trans, true); err != nil { |
| 3869 | 3750 | return err |
| @@ -3924,10 +3805,6 @@ func (c *Compiler) afterImage(is IniSection, sc *StateControllerBase, | ||
| 3924 | 3805 | func (c *Compiler) afterImageTime(is IniSection, sc *StateControllerBase, |
| 3925 | 3806 | _ int8) (StateController, error) { |
| 3926 | 3807 | ret, err := (*afterImageTime)(sc), c.stateSec(is, func() error { |
| 3927 | - if err := c.paramValue(is, sc, "redirectid", | |
| 3928 | - afterImageTime_redirectid, VT_Int, 1, false); err != nil { | |
| 3929 | - return err | |
| 3930 | - } | |
| 3931 | 3808 | b := false |
| 3932 | 3809 | if err := c.stateParam(is, "time", func(data string) error { |
| 3933 | 3810 | b = true |
| @@ -4088,10 +3965,6 @@ func (c *Compiler) hitDefSub(is IniSection, | ||
| 4088 | 3965 | }); err != nil { |
| 4089 | 3966 | return err |
| 4090 | 3967 | } |
| 4091 | - if err := c.paramValue(is, sc, "teamside", | |
| 4092 | - hitDef_teamside, VT_Int, 1, false); err != nil { | |
| 4093 | - return err | |
| 4094 | - } | |
| 4095 | 3968 | if err := c.paramValue(is, sc, "id", |
| 4096 | 3969 | hitDef_id, VT_Int, 1, false); err != nil { |
| 4097 | 3970 | return err |
| @@ -4459,10 +4332,6 @@ func (c *Compiler) hitDefSub(is IniSection, | ||
| 4459 | 4332 | func (c *Compiler) hitDef(is IniSection, sc *StateControllerBase, |
| 4460 | 4333 | _ int8) (StateController, error) { |
| 4461 | 4334 | ret, err := (*hitDef)(sc), c.stateSec(is, func() error { |
| 4462 | - if err := c.paramValue(is, sc, "redirectid", | |
| 4463 | - hitDef_redirectid, VT_Int, 1, false); err != nil { | |
| 4464 | - return err | |
| 4465 | - } | |
| 4466 | 4335 | return c.hitDefSub(is, sc) |
| 4467 | 4336 | }) |
| 4468 | 4337 | return *ret, err |
| @@ -4472,10 +4341,6 @@ func (c *Compiler) reversalDef(is IniSection, sc *StateControllerBase, | ||
| 4472 | 4341 | ret, err := (*reversalDef)(sc), c.stateSec(is, func() error { |
| 4473 | 4342 | attr := int32(-1) |
| 4474 | 4343 | var err error |
| 4475 | - if err := c.paramValue(is, sc, "redirectid", | |
| 4476 | - reversalDef_redirectid, VT_Int, 1, false); err != nil { | |
| 4477 | - return err | |
| 4478 | - } | |
| 4479 | 4344 | if err = c.stateParam(is, "reversal.attr", func(data string) error { |
| 4480 | 4345 | attr, err = c.attr(data, false) |
| 4481 | 4346 | return err |
| @@ -4493,10 +4358,6 @@ func (c *Compiler) reversalDef(is IniSection, sc *StateControllerBase, | ||
| 4493 | 4358 | func (c *Compiler) projectile(is IniSection, sc *StateControllerBase, |
| 4494 | 4359 | _ int8) (StateController, error) { |
| 4495 | 4360 | ret, err := (*projectile)(sc), c.stateSec(is, func() error { |
| 4496 | - if err := c.paramValue(is, sc, "redirectid", | |
| 4497 | - projectile_redirectid, VT_Int, 1, false); err != nil { | |
| 4498 | - return err | |
| 4499 | - } | |
| 4500 | 4361 | if err := c.paramPostye(is, sc, projectile_postype); err != nil { |
| 4501 | 4362 | return err |
| 4502 | 4363 | } |
| @@ -4616,10 +4477,6 @@ func (c *Compiler) projectile(is IniSection, sc *StateControllerBase, | ||
| 4616 | 4477 | func (c *Compiler) width(is IniSection, sc *StateControllerBase, |
| 4617 | 4478 | _ int8) (StateController, error) { |
| 4618 | 4479 | ret, err := (*width)(sc), c.stateSec(is, func() error { |
| 4619 | - if err := c.paramValue(is, sc, "redirectid", | |
| 4620 | - width_redirectid, VT_Int, 1, false); err != nil { | |
| 4621 | - return err | |
| 4622 | - } | |
| 4623 | 4480 | b := false |
| 4624 | 4481 | if err := c.stateParam(is, "edge", func(data string) error { |
| 4625 | 4482 | b = true |
| @@ -4652,10 +4509,6 @@ func (c *Compiler) width(is IniSection, sc *StateControllerBase, | ||
| 4652 | 4509 | func (c *Compiler) sprPriority(is IniSection, sc *StateControllerBase, |
| 4653 | 4510 | _ int8) (StateController, error) { |
| 4654 | 4511 | ret, err := (*sprPriority)(sc), c.stateSec(is, func() error { |
| 4655 | - if err := c.paramValue(is, sc, "redirectid", | |
| 4656 | - sprPriority_redirectid, VT_Int, 1, false); err != nil { | |
| 4657 | - return err | |
| 4658 | - } | |
| 4659 | 4512 | return c.paramValue(is, sc, "value", |
| 4660 | 4513 | sprPriority_value, VT_Int, 1, false) |
| 4661 | 4514 | }) |
| @@ -4911,10 +4764,6 @@ func (c *Compiler) varSetSub(is IniSection, | ||
| 4911 | 4764 | func (c *Compiler) varSet(is IniSection, sc *StateControllerBase, |
| 4912 | 4765 | _ int8) (StateController, error) { |
| 4913 | 4766 | ret, err := (*varSet)(sc), c.stateSec(is, func() error { |
| 4914 | - if err := c.paramValue(is, sc, "redirectid", | |
| 4915 | - varSet_redirectid, VT_Int, 1, false); err != nil { | |
| 4916 | - return err | |
| 4917 | - } | |
| 4918 | 4767 | return c.varSetSub(is, sc, OC_rdreset, OC_st_var) |
| 4919 | 4768 | }) |
| 4920 | 4769 | return *ret, err |
| @@ -4922,10 +4771,6 @@ func (c *Compiler) varSet(is IniSection, sc *StateControllerBase, | ||
| 4922 | 4771 | func (c *Compiler) varAdd(is IniSection, sc *StateControllerBase, |
| 4923 | 4772 | _ int8) (StateController, error) { |
| 4924 | 4773 | ret, err := (*varSet)(sc), c.stateSec(is, func() error { |
| 4925 | - if err := c.paramValue(is, sc, "redirectid", | |
| 4926 | - varSet_redirectid, VT_Int, 1, false); err != nil { | |
| 4927 | - return err | |
| 4928 | - } | |
| 4929 | 4774 | return c.varSetSub(is, sc, OC_rdreset, OC_st_varadd) |
| 4930 | 4775 | }) |
| 4931 | 4776 | return *ret, err |
| @@ -4933,10 +4778,6 @@ func (c *Compiler) varAdd(is IniSection, sc *StateControllerBase, | ||
| 4933 | 4778 | func (c *Compiler) parentVarSet(is IniSection, sc *StateControllerBase, |
| 4934 | 4779 | _ int8) (StateController, error) { |
| 4935 | 4780 | ret, err := (*varSet)(sc), c.stateSec(is, func() error { |
| 4936 | - if err := c.paramValue(is, sc, "redirectid", | |
| 4937 | - varSet_redirectid, VT_Int, 1, false); err != nil { | |
| 4938 | - return err | |
| 4939 | - } | |
| 4940 | 4781 | return c.varSetSub(is, sc, OC_parent, OC_st_var) |
| 4941 | 4782 | }) |
| 4942 | 4783 | return *ret, err |
| @@ -4944,10 +4785,6 @@ func (c *Compiler) parentVarSet(is IniSection, sc *StateControllerBase, | ||
| 4944 | 4785 | func (c *Compiler) parentVarAdd(is IniSection, sc *StateControllerBase, |
| 4945 | 4786 | _ int8) (StateController, error) { |
| 4946 | 4787 | ret, err := (*varSet)(sc), c.stateSec(is, func() error { |
| 4947 | - if err := c.paramValue(is, sc, "redirectid", | |
| 4948 | - varSet_redirectid, VT_Int, 1, false); err != nil { | |
| 4949 | - return err | |
| 4950 | - } | |
| 4951 | 4788 | return c.varSetSub(is, sc, OC_parent, OC_st_varadd) |
| 4952 | 4789 | }) |
| 4953 | 4790 | return *ret, err |
| @@ -4955,10 +4792,6 @@ func (c *Compiler) parentVarAdd(is IniSection, sc *StateControllerBase, | ||
| 4955 | 4792 | func (c *Compiler) turn(is IniSection, sc *StateControllerBase, |
| 4956 | 4793 | _ int8) (StateController, error) { |
| 4957 | 4794 | ret, err := (*turn)(sc), c.stateSec(is, func() error { |
| 4958 | - if err := c.paramValue(is, sc, "redirectid", | |
| 4959 | - turn_redirectid, VT_Int, 1, false); err != nil { | |
| 4960 | - return err | |
| 4961 | - } | |
| 4962 | 4795 | sc.add(turn_, nil) |
| 4963 | 4796 | return nil |
| 4964 | 4797 | }) |
| @@ -4967,10 +4800,6 @@ func (c *Compiler) turn(is IniSection, sc *StateControllerBase, | ||
| 4967 | 4800 | func (c *Compiler) targetFacing(is IniSection, sc *StateControllerBase, |
| 4968 | 4801 | _ int8) (StateController, error) { |
| 4969 | 4802 | ret, err := (*targetFacing)(sc), c.stateSec(is, func() error { |
| 4970 | - if err := c.paramValue(is, sc, "redirectid", | |
| 4971 | - targetFacing_redirectid, VT_Int, 1, false); err != nil { | |
| 4972 | - return err | |
| 4973 | - } | |
| 4974 | 4803 | if err := c.paramValue(is, sc, "id", |
| 4975 | 4804 | targetFacing_id, VT_Int, 1, false); err != nil { |
| 4976 | 4805 | return err |
| @@ -4986,10 +4815,6 @@ func (c *Compiler) targetFacing(is IniSection, sc *StateControllerBase, | ||
| 4986 | 4815 | func (c *Compiler) targetBind(is IniSection, sc *StateControllerBase, |
| 4987 | 4816 | _ int8) (StateController, error) { |
| 4988 | 4817 | ret, err := (*targetBind)(sc), c.stateSec(is, func() error { |
| 4989 | - if err := c.paramValue(is, sc, "redirectid", | |
| 4990 | - targetBind_redirectid, VT_Int, 1, false); err != nil { | |
| 4991 | - return err | |
| 4992 | - } | |
| 4993 | 4818 | if err := c.paramValue(is, sc, "id", |
| 4994 | 4819 | targetBind_id, VT_Int, 1, false); err != nil { |
| 4995 | 4820 | return err |
| @@ -5009,10 +4834,6 @@ func (c *Compiler) targetBind(is IniSection, sc *StateControllerBase, | ||
| 5009 | 4834 | func (c *Compiler) bindToTarget(is IniSection, sc *StateControllerBase, |
| 5010 | 4835 | _ int8) (StateController, error) { |
| 5011 | 4836 | ret, err := (*bindToTarget)(sc), c.stateSec(is, func() error { |
| 5012 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5013 | - bindToTarget_redirectid, VT_Int, 1, false); err != nil { | |
| 5014 | - return err | |
| 5015 | - } | |
| 5016 | 4837 | if err := c.paramValue(is, sc, "id", |
| 5017 | 4838 | bindToTarget_id, VT_Int, 1, false); err != nil { |
| 5018 | 4839 | return err |
| @@ -5062,10 +4883,6 @@ func (c *Compiler) bindToTarget(is IniSection, sc *StateControllerBase, | ||
| 5062 | 4883 | func (c *Compiler) targetLifeAdd(is IniSection, sc *StateControllerBase, |
| 5063 | 4884 | _ int8) (StateController, error) { |
| 5064 | 4885 | ret, err := (*targetLifeAdd)(sc), c.stateSec(is, func() error { |
| 5065 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5066 | - targetLifeAdd_redirectid, VT_Int, 1, false); err != nil { | |
| 5067 | - return err | |
| 5068 | - } | |
| 5069 | 4886 | if err := c.paramValue(is, sc, "id", |
| 5070 | 4887 | targetLifeAdd_id, VT_Int, 1, false); err != nil { |
| 5071 | 4888 | return err |
| @@ -5089,10 +4906,6 @@ func (c *Compiler) targetLifeAdd(is IniSection, sc *StateControllerBase, | ||
| 5089 | 4906 | func (c *Compiler) targetState(is IniSection, sc *StateControllerBase, |
| 5090 | 4907 | _ int8) (StateController, error) { |
| 5091 | 4908 | ret, err := (*targetState)(sc), c.stateSec(is, func() error { |
| 5092 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5093 | - targetState_redirectid, VT_Int, 1, false); err != nil { | |
| 5094 | - return err | |
| 5095 | - } | |
| 5096 | 4909 | if err := c.paramValue(is, sc, "id", |
| 5097 | 4910 | targetState_id, VT_Int, 1, false); err != nil { |
| 5098 | 4911 | return err |
| @@ -5108,10 +4921,6 @@ func (c *Compiler) targetState(is IniSection, sc *StateControllerBase, | ||
| 5108 | 4921 | func (c *Compiler) targetVelSet(is IniSection, sc *StateControllerBase, |
| 5109 | 4922 | _ int8) (StateController, error) { |
| 5110 | 4923 | ret, err := (*targetVelSet)(sc), c.stateSec(is, func() error { |
| 5111 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5112 | - targetVelSet_redirectid, VT_Int, 1, false); err != nil { | |
| 5113 | - return err | |
| 5114 | - } | |
| 5115 | 4924 | if err := c.paramValue(is, sc, "id", |
| 5116 | 4925 | targetVelSet_id, VT_Int, 1, false); err != nil { |
| 5117 | 4926 | return err |
| @@ -5131,10 +4940,6 @@ func (c *Compiler) targetVelSet(is IniSection, sc *StateControllerBase, | ||
| 5131 | 4940 | func (c *Compiler) targetVelAdd(is IniSection, sc *StateControllerBase, |
| 5132 | 4941 | _ int8) (StateController, error) { |
| 5133 | 4942 | ret, err := (*targetVelAdd)(sc), c.stateSec(is, func() error { |
| 5134 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5135 | - targetVelAdd_redirectid, VT_Int, 1, false); err != nil { | |
| 5136 | - return err | |
| 5137 | - } | |
| 5138 | 4943 | if err := c.paramValue(is, sc, "id", |
| 5139 | 4944 | targetVelAdd_id, VT_Int, 1, false); err != nil { |
| 5140 | 4945 | return err |
| @@ -5154,10 +4959,6 @@ func (c *Compiler) targetVelAdd(is IniSection, sc *StateControllerBase, | ||
| 5154 | 4959 | func (c *Compiler) targetPowerAdd(is IniSection, sc *StateControllerBase, |
| 5155 | 4960 | _ int8) (StateController, error) { |
| 5156 | 4961 | ret, err := (*targetPowerAdd)(sc), c.stateSec(is, func() error { |
| 5157 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5158 | - targetPowerAdd_redirectid, VT_Int, 1, false); err != nil { | |
| 5159 | - return err | |
| 5160 | - } | |
| 5161 | 4962 | if err := c.paramValue(is, sc, "id", |
| 5162 | 4963 | targetPowerAdd_id, VT_Int, 1, false); err != nil { |
| 5163 | 4964 | return err |
| @@ -5173,10 +4974,6 @@ func (c *Compiler) targetPowerAdd(is IniSection, sc *StateControllerBase, | ||
| 5173 | 4974 | func (c *Compiler) targetDrop(is IniSection, sc *StateControllerBase, |
| 5174 | 4975 | _ int8) (StateController, error) { |
| 5175 | 4976 | ret, err := (*targetDrop)(sc), c.stateSec(is, func() error { |
| 5176 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5177 | - targetDrop_redirectid, VT_Int, 1, false); err != nil { | |
| 5178 | - return err | |
| 5179 | - } | |
| 5180 | 4977 | if err := c.paramValue(is, sc, "excludeid", |
| 5181 | 4978 | targetDrop_excludeid, VT_Int, 1, false); err != nil { |
| 5182 | 4979 | return err |
| @@ -5192,10 +4989,6 @@ func (c *Compiler) targetDrop(is IniSection, sc *StateControllerBase, | ||
| 5192 | 4989 | func (c *Compiler) lifeAdd(is IniSection, sc *StateControllerBase, |
| 5193 | 4990 | _ int8) (StateController, error) { |
| 5194 | 4991 | ret, err := (*lifeAdd)(sc), c.stateSec(is, func() error { |
| 5195 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5196 | - lifeAdd_redirectid, VT_Int, 1, false); err != nil { | |
| 5197 | - return err | |
| 5198 | - } | |
| 5199 | 4992 | if err := c.paramValue(is, sc, "absolute", |
| 5200 | 4993 | lifeAdd_absolute, VT_Bool, 1, false); err != nil { |
| 5201 | 4994 | return err |
| @@ -5215,10 +5008,6 @@ func (c *Compiler) lifeAdd(is IniSection, sc *StateControllerBase, | ||
| 5215 | 5008 | func (c *Compiler) lifeSet(is IniSection, sc *StateControllerBase, |
| 5216 | 5009 | _ int8) (StateController, error) { |
| 5217 | 5010 | ret, err := (*lifeSet)(sc), c.stateSec(is, func() error { |
| 5218 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5219 | - lifeSet_redirectid, VT_Int, 1, false); err != nil { | |
| 5220 | - return err | |
| 5221 | - } | |
| 5222 | 5011 | return c.paramValue(is, sc, "value", lifeSet_value, VT_Int, 1, true) |
| 5223 | 5012 | }) |
| 5224 | 5013 | return *ret, err |
| @@ -5226,10 +5015,6 @@ func (c *Compiler) lifeSet(is IniSection, sc *StateControllerBase, | ||
| 5226 | 5015 | func (c *Compiler) powerAdd(is IniSection, sc *StateControllerBase, |
| 5227 | 5016 | _ int8) (StateController, error) { |
| 5228 | 5017 | ret, err := (*powerAdd)(sc), c.stateSec(is, func() error { |
| 5229 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5230 | - powerAdd_redirectid, VT_Int, 1, false); err != nil { | |
| 5231 | - return err | |
| 5232 | - } | |
| 5233 | 5018 | return c.paramValue(is, sc, "value", powerAdd_value, VT_Int, 1, true) |
| 5234 | 5019 | }) |
| 5235 | 5020 | return *ret, err |
| @@ -5237,10 +5022,6 @@ func (c *Compiler) powerAdd(is IniSection, sc *StateControllerBase, | ||
| 5237 | 5022 | func (c *Compiler) powerSet(is IniSection, sc *StateControllerBase, |
| 5238 | 5023 | _ int8) (StateController, error) { |
| 5239 | 5024 | ret, err := (*powerSet)(sc), c.stateSec(is, func() error { |
| 5240 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5241 | - powerSet_redirectid, VT_Int, 1, false); err != nil { | |
| 5242 | - return err | |
| 5243 | - } | |
| 5244 | 5025 | return c.paramValue(is, sc, "value", powerSet_value, VT_Int, 1, true) |
| 5245 | 5026 | }) |
| 5246 | 5027 | return *ret, err |
| @@ -5248,10 +5029,6 @@ func (c *Compiler) powerSet(is IniSection, sc *StateControllerBase, | ||
| 5248 | 5029 | func (c *Compiler) hitVelSet(is IniSection, sc *StateControllerBase, |
| 5249 | 5030 | _ int8) (StateController, error) { |
| 5250 | 5031 | ret, err := (*hitVelSet)(sc), c.stateSec(is, func() error { |
| 5251 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5252 | - hitVelSet_redirectid, VT_Int, 1, false); err != nil { | |
| 5253 | - return err | |
| 5254 | - } | |
| 5255 | 5032 | if err := c.paramValue(is, sc, "x", |
| 5256 | 5033 | hitVelSet_x, VT_Bool, 1, false); err != nil { |
| 5257 | 5034 | return err |
| @@ -5267,10 +5044,6 @@ func (c *Compiler) hitVelSet(is IniSection, sc *StateControllerBase, | ||
| 5267 | 5044 | func (c *Compiler) screenBound(is IniSection, sc *StateControllerBase, |
| 5268 | 5045 | _ int8) (StateController, error) { |
| 5269 | 5046 | ret, err := (*screenBound)(sc), c.stateSec(is, func() error { |
| 5270 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5271 | - screenBound_redirectid, VT_Int, 1, false); err != nil { | |
| 5272 | - return err | |
| 5273 | - } | |
| 5274 | 5047 | b := false |
| 5275 | 5048 | if err := c.stateParam(is, "value", func(data string) error { |
| 5276 | 5049 | b = true |
| @@ -5298,10 +5071,6 @@ func (c *Compiler) screenBound(is IniSection, sc *StateControllerBase, | ||
| 5298 | 5071 | func (c *Compiler) posFreeze(is IniSection, sc *StateControllerBase, |
| 5299 | 5072 | _ int8) (StateController, error) { |
| 5300 | 5073 | ret, err := (*posFreeze)(sc), c.stateSec(is, func() error { |
| 5301 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5302 | - posFreeze_redirectid, VT_Int, 1, false); err != nil { | |
| 5303 | - return err | |
| 5304 | - } | |
| 5305 | 5074 | b := false |
| 5306 | 5075 | if err := c.stateParam(is, "value", func(data string) error { |
| 5307 | 5076 | b = true |
| @@ -5342,10 +5111,6 @@ func (c *Compiler) envShake(is IniSection, sc *StateControllerBase, | ||
| 5342 | 5111 | func (c *Compiler) hitOverride(is IniSection, sc *StateControllerBase, |
| 5343 | 5112 | _ int8) (StateController, error) { |
| 5344 | 5113 | ret, err := (*hitOverride)(sc), c.stateSec(is, func() error { |
| 5345 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5346 | - hitOverride_redirectid, VT_Int, 1, false); err != nil { | |
| 5347 | - return err | |
| 5348 | - } | |
| 5349 | 5114 | if err := c.stateParam(is, "attr", func(data string) error { |
| 5350 | 5115 | attr, err := c.attr(data, false) |
| 5351 | 5116 | if err != nil { |
| @@ -5379,10 +5144,6 @@ func (c *Compiler) hitOverride(is IniSection, sc *StateControllerBase, | ||
| 5379 | 5144 | func (c *Compiler) pause(is IniSection, sc *StateControllerBase, |
| 5380 | 5145 | _ int8) (StateController, error) { |
| 5381 | 5146 | ret, err := (*pause)(sc), c.stateSec(is, func() error { |
| 5382 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5383 | - pause_redirectid, VT_Int, 1, false); err != nil { | |
| 5384 | - return err | |
| 5385 | - } | |
| 5386 | 5147 | if err := c.paramValue(is, sc, "time", |
| 5387 | 5148 | pause_time, VT_Int, 1, false); err != nil { |
| 5388 | 5149 | return err |
| @@ -5406,10 +5167,6 @@ func (c *Compiler) pause(is IniSection, sc *StateControllerBase, | ||
| 5406 | 5167 | func (c *Compiler) superPause(is IniSection, sc *StateControllerBase, |
| 5407 | 5168 | _ int8) (StateController, error) { |
| 5408 | 5169 | ret, err := (*superPause)(sc), c.stateSec(is, func() error { |
| 5409 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5410 | - superPause_redirectid, VT_Int, 1, false); err != nil { | |
| 5411 | - return err | |
| 5412 | - } | |
| 5413 | 5170 | if err := c.paramValue(is, sc, "time", |
| 5414 | 5171 | superPause_time, VT_Int, 1, false); err != nil { |
| 5415 | 5172 | return err |
| @@ -5485,10 +5242,6 @@ func (c *Compiler) superPause(is IniSection, sc *StateControllerBase, | ||
| 5485 | 5242 | func (c *Compiler) trans(is IniSection, sc *StateControllerBase, |
| 5486 | 5243 | _ int8) (StateController, error) { |
| 5487 | 5244 | ret, err := (*trans)(sc), c.stateSec(is, func() error { |
| 5488 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5489 | - trans_redirectid, VT_Int, 1, false); err != nil { | |
| 5490 | - return err | |
| 5491 | - } | |
| 5492 | 5245 | return c.paramTrans(is, sc, "", trans_trans, false) |
| 5493 | 5246 | }) |
| 5494 | 5247 | return *ret, err |
| @@ -5496,10 +5249,6 @@ func (c *Compiler) trans(is IniSection, sc *StateControllerBase, | ||
| 5496 | 5249 | func (c *Compiler) playerPush(is IniSection, sc *StateControllerBase, |
| 5497 | 5250 | _ int8) (StateController, error) { |
| 5498 | 5251 | ret, err := (*playerPush)(sc), c.stateSec(is, func() error { |
| 5499 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5500 | - playerPush_redirectid, VT_Int, 1, false); err != nil { | |
| 5501 | - return err | |
| 5502 | - } | |
| 5503 | 5252 | b := false |
| 5504 | 5253 | if err := c.stateParam(is, "value", func(data string) error { |
| 5505 | 5254 | b = true |
| @@ -5517,10 +5266,6 @@ func (c *Compiler) playerPush(is IniSection, sc *StateControllerBase, | ||
| 5517 | 5266 | func (c *Compiler) stateTypeSet(is IniSection, sc *StateControllerBase, |
| 5518 | 5267 | _ int8) (StateController, error) { |
| 5519 | 5268 | ret, err := (*stateTypeSet)(sc), c.stateSec(is, func() error { |
| 5520 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5521 | - stateTypeSet_redirectid, VT_Int, 1, false); err != nil { | |
| 5522 | - return err | |
| 5523 | - } | |
| 5524 | 5269 | statetype := func(data string) error { |
| 5525 | 5270 | if len(data) == 0 { |
| 5526 | 5271 | return Error("値が指定されていません") |
| @@ -5604,10 +5349,6 @@ func (c *Compiler) stateTypeSet(is IniSection, sc *StateControllerBase, | ||
| 5604 | 5349 | func (c *Compiler) angleDraw(is IniSection, sc *StateControllerBase, |
| 5605 | 5350 | _ int8) (StateController, error) { |
| 5606 | 5351 | ret, err := (*angleDraw)(sc), c.stateSec(is, func() error { |
| 5607 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5608 | - angleDraw_redirectid, VT_Int, 1, false); err != nil { | |
| 5609 | - return err | |
| 5610 | - } | |
| 5611 | 5352 | if err := c.paramValue(is, sc, "value", |
| 5612 | 5353 | angleDraw_value, VT_Float, 1, false); err != nil { |
| 5613 | 5354 | return err |
| @@ -5623,10 +5364,6 @@ func (c *Compiler) angleDraw(is IniSection, sc *StateControllerBase, | ||
| 5623 | 5364 | func (c *Compiler) angleSet(is IniSection, sc *StateControllerBase, |
| 5624 | 5365 | _ int8) (StateController, error) { |
| 5625 | 5366 | ret, err := (*angleSet)(sc), c.stateSec(is, func() error { |
| 5626 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5627 | - angleSet_redirectid, VT_Int, 1, false); err != nil { | |
| 5628 | - return err | |
| 5629 | - } | |
| 5630 | 5367 | if err := c.paramValue(is, sc, "value", |
| 5631 | 5368 | angleSet_value, VT_Float, 1, false); err != nil { |
| 5632 | 5369 | return err |
| @@ -5638,10 +5375,6 @@ func (c *Compiler) angleSet(is IniSection, sc *StateControllerBase, | ||
| 5638 | 5375 | func (c *Compiler) angleAdd(is IniSection, sc *StateControllerBase, |
| 5639 | 5376 | _ int8) (StateController, error) { |
| 5640 | 5377 | ret, err := (*angleAdd)(sc), c.stateSec(is, func() error { |
| 5641 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5642 | - angleAdd_redirectid, VT_Int, 1, false); err != nil { | |
| 5643 | - return err | |
| 5644 | - } | |
| 5645 | 5378 | if err := c.paramValue(is, sc, "value", |
| 5646 | 5379 | angleAdd_value, VT_Float, 1, false); err != nil { |
| 5647 | 5380 | return err |
| @@ -5653,10 +5386,6 @@ func (c *Compiler) angleAdd(is IniSection, sc *StateControllerBase, | ||
| 5653 | 5386 | func (c *Compiler) angleMul(is IniSection, sc *StateControllerBase, |
| 5654 | 5387 | _ int8) (StateController, error) { |
| 5655 | 5388 | ret, err := (*angleMul)(sc), c.stateSec(is, func() error { |
| 5656 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5657 | - angleMul_redirectid, VT_Int, 1, false); err != nil { | |
| 5658 | - return err | |
| 5659 | - } | |
| 5660 | 5389 | if err := c.paramValue(is, sc, "value", |
| 5661 | 5390 | angleMul_value, VT_Float, 1, false); err != nil { |
| 5662 | 5391 | return err |
| @@ -5757,10 +5486,6 @@ func (c *Compiler) clearClipboard(is IniSection, sc *StateControllerBase, | ||
| 5757 | 5486 | func (c *Compiler) makeDust(is IniSection, sc *StateControllerBase, |
| 5758 | 5487 | _ int8) (StateController, error) { |
| 5759 | 5488 | ret, err := (*makeDust)(sc), c.stateSec(is, func() error { |
| 5760 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5761 | - makeDust_redirectid, VT_Int, 1, false); err != nil { | |
| 5762 | - return err | |
| 5763 | - } | |
| 5764 | 5489 | b := false |
| 5765 | 5490 | if err := c.stateParam(is, "spacing", func(data string) error { |
| 5766 | 5491 | b = true |
| @@ -5792,10 +5517,6 @@ func (c *Compiler) makeDust(is IniSection, sc *StateControllerBase, | ||
| 5792 | 5517 | func (c *Compiler) attackDist(is IniSection, sc *StateControllerBase, |
| 5793 | 5518 | _ int8) (StateController, error) { |
| 5794 | 5519 | ret, err := (*attackDist)(sc), c.stateSec(is, func() error { |
| 5795 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5796 | - attackDist_redirectid, VT_Int, 1, false); err != nil { | |
| 5797 | - return err | |
| 5798 | - } | |
| 5799 | 5520 | if err := c.paramValue(is, sc, "value", |
| 5800 | 5521 | attackDist_value, VT_Float, 1, true); err != nil { |
| 5801 | 5522 | return err |
| @@ -5807,10 +5528,6 @@ func (c *Compiler) attackDist(is IniSection, sc *StateControllerBase, | ||
| 5807 | 5528 | func (c *Compiler) attackMulSet(is IniSection, sc *StateControllerBase, |
| 5808 | 5529 | _ int8) (StateController, error) { |
| 5809 | 5530 | ret, err := (*attackMulSet)(sc), c.stateSec(is, func() error { |
| 5810 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5811 | - attackMulSet_redirectid, VT_Int, 1, false); err != nil { | |
| 5812 | - return err | |
| 5813 | - } | |
| 5814 | 5531 | if err := c.paramValue(is, sc, "value", |
| 5815 | 5532 | attackMulSet_value, VT_Float, 1, true); err != nil { |
| 5816 | 5533 | return err |
| @@ -5822,10 +5539,6 @@ func (c *Compiler) attackMulSet(is IniSection, sc *StateControllerBase, | ||
| 5822 | 5539 | func (c *Compiler) defenceMulSet(is IniSection, sc *StateControllerBase, |
| 5823 | 5540 | _ int8) (StateController, error) { |
| 5824 | 5541 | ret, err := (*defenceMulSet)(sc), c.stateSec(is, func() error { |
| 5825 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5826 | - defenceMulSet_redirectid, VT_Int, 1, false); err != nil { | |
| 5827 | - return err | |
| 5828 | - } | |
| 5829 | 5542 | if err := c.paramValue(is, sc, "value", |
| 5830 | 5543 | defenceMulSet_value, VT_Float, 1, true); err != nil { |
| 5831 | 5544 | return err |
| @@ -5837,10 +5550,6 @@ func (c *Compiler) defenceMulSet(is IniSection, sc *StateControllerBase, | ||
| 5837 | 5550 | func (c *Compiler) fallEnvShake(is IniSection, sc *StateControllerBase, |
| 5838 | 5551 | _ int8) (StateController, error) { |
| 5839 | 5552 | ret, err := (*fallEnvShake)(sc), c.stateSec(is, func() error { |
| 5840 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5841 | - fallEnvShake_redirectid, VT_Int, 1, false); err != nil { | |
| 5842 | - return err | |
| 5843 | - } | |
| 5844 | 5553 | sc.add(fallEnvShake_, nil) |
| 5845 | 5554 | return nil |
| 5846 | 5555 | }) |
| @@ -5849,10 +5558,6 @@ func (c *Compiler) fallEnvShake(is IniSection, sc *StateControllerBase, | ||
| 5849 | 5558 | func (c *Compiler) hitFallDamage(is IniSection, sc *StateControllerBase, |
| 5850 | 5559 | _ int8) (StateController, error) { |
| 5851 | 5560 | ret, err := (*hitFallDamage)(sc), c.stateSec(is, func() error { |
| 5852 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5853 | - hitFallDamage_redirectid, VT_Int, 1, false); err != nil { | |
| 5854 | - return err | |
| 5855 | - } | |
| 5856 | 5561 | sc.add(hitFallDamage_, nil) |
| 5857 | 5562 | return nil |
| 5858 | 5563 | }) |
| @@ -5861,10 +5566,6 @@ func (c *Compiler) hitFallDamage(is IniSection, sc *StateControllerBase, | ||
| 5861 | 5566 | func (c *Compiler) hitFallVel(is IniSection, sc *StateControllerBase, |
| 5862 | 5567 | _ int8) (StateController, error) { |
| 5863 | 5568 | ret, err := (*hitFallVel)(sc), c.stateSec(is, func() error { |
| 5864 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5865 | - hitFallVel_redirectid, VT_Int, 1, false); err != nil { | |
| 5866 | - return err | |
| 5867 | - } | |
| 5868 | 5569 | sc.add(hitFallVel_, nil) |
| 5869 | 5570 | return nil |
| 5870 | 5571 | }) |
| @@ -5873,10 +5574,6 @@ func (c *Compiler) hitFallVel(is IniSection, sc *StateControllerBase, | ||
| 5873 | 5574 | func (c *Compiler) hitFallSet(is IniSection, sc *StateControllerBase, |
| 5874 | 5575 | _ int8) (StateController, error) { |
| 5875 | 5576 | ret, err := (*hitFallSet)(sc), c.stateSec(is, func() error { |
| 5876 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5877 | - hitFallSet_redirectid, VT_Int, 1, false); err != nil { | |
| 5878 | - return err | |
| 5879 | - } | |
| 5880 | 5577 | b := false |
| 5881 | 5578 | if err := c.stateParam(is, "value", func(data string) error { |
| 5882 | 5579 | b = true |
| @@ -5902,10 +5599,6 @@ func (c *Compiler) hitFallSet(is IniSection, sc *StateControllerBase, | ||
| 5902 | 5599 | func (c *Compiler) varRangeSet(is IniSection, sc *StateControllerBase, |
| 5903 | 5600 | _ int8) (StateController, error) { |
| 5904 | 5601 | ret, err := (*varRangeSet)(sc), c.stateSec(is, func() error { |
| 5905 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5906 | - varRangeSet_redirectid, VT_Int, 1, false); err != nil { | |
| 5907 | - return err | |
| 5908 | - } | |
| 5909 | 5602 | if err := c.paramValue(is, sc, "first", |
| 5910 | 5603 | varRangeSet_first, VT_Int, 1, false); err != nil { |
| 5911 | 5604 | return err |
| @@ -5948,10 +5641,6 @@ func (c *Compiler) varRangeSet(is IniSection, sc *StateControllerBase, | ||
| 5948 | 5641 | func (c *Compiler) remapPal(is IniSection, sc *StateControllerBase, |
| 5949 | 5642 | _ int8) (StateController, error) { |
| 5950 | 5643 | ret, err := (*remapPal)(sc), c.stateSec(is, func() error { |
| 5951 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5952 | - remapPal_redirectid, VT_Int, 1, false); err != nil { | |
| 5953 | - return err | |
| 5954 | - } | |
| 5955 | 5644 | if err := c.paramValue(is, sc, "source", |
| 5956 | 5645 | remapPal_source, VT_Int, 2, false); err != nil { |
| 5957 | 5646 | return err |
| @@ -5967,10 +5656,6 @@ func (c *Compiler) remapPal(is IniSection, sc *StateControllerBase, | ||
| 5967 | 5656 | func (c *Compiler) stopSnd(is IniSection, sc *StateControllerBase, |
| 5968 | 5657 | _ int8) (StateController, error) { |
| 5969 | 5658 | ret, err := (*stopSnd)(sc), c.stateSec(is, func() error { |
| 5970 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5971 | - stopSnd_redirectid, VT_Int, 1, false); err != nil { | |
| 5972 | - return err | |
| 5973 | - } | |
| 5974 | 5659 | if err := c.paramValue(is, sc, "channel", |
| 5975 | 5660 | stopSnd_channel, VT_Int, 1, true); err != nil { |
| 5976 | 5661 | return err |
| @@ -5982,10 +5667,6 @@ func (c *Compiler) stopSnd(is IniSection, sc *StateControllerBase, | ||
| 5982 | 5667 | func (c *Compiler) sndPan(is IniSection, sc *StateControllerBase, |
| 5983 | 5668 | _ int8) (StateController, error) { |
| 5984 | 5669 | ret, err := (*sndPan)(sc), c.stateSec(is, func() error { |
| 5985 | - if err := c.paramValue(is, sc, "redirectid", | |
| 5986 | - sndPan_redirectid, VT_Int, 1, false); err != nil { | |
| 5987 | - return err | |
| 5988 | - } | |
| 5989 | 5670 | if err := c.paramValue(is, sc, "channel", |
| 5990 | 5671 | sndPan_channel, VT_Int, 1, true); err != nil { |
| 5991 | 5672 | return err |
| @@ -6005,10 +5686,6 @@ func (c *Compiler) sndPan(is IniSection, sc *StateControllerBase, | ||
| 6005 | 5686 | func (c *Compiler) varRandom(is IniSection, sc *StateControllerBase, |
| 6006 | 5687 | _ int8) (StateController, error) { |
| 6007 | 5688 | ret, err := (*varRandom)(sc), c.stateSec(is, func() error { |
| 6008 | - if err := c.paramValue(is, sc, "redirectid", | |
| 6009 | - varRandom_redirectid, VT_Int, 1, false); err != nil { | |
| 6010 | - return err | |
| 6011 | - } | |
| 6012 | 5689 | if err := c.paramValue(is, sc, "v", |
| 6013 | 5690 | varRandom_v, VT_Int, 1, true); err != nil { |
| 6014 | 5691 | return err |
| @@ -6024,10 +5701,6 @@ func (c *Compiler) varRandom(is IniSection, sc *StateControllerBase, | ||
| 6024 | 5701 | func (c *Compiler) gravity(is IniSection, sc *StateControllerBase, |
| 6025 | 5702 | _ int8) (StateController, error) { |
| 6026 | 5703 | ret, err := (*gravity)(sc), c.stateSec(is, func() error { |
| 6027 | - if err := c.paramValue(is, sc, "redirectid", | |
| 6028 | - gravity_redirectid, VT_Int, 1, false); err != nil { | |
| 6029 | - return err | |
| 6030 | - } | |
| 6031 | 5704 | sc.add(gravity_, nil) |
| 6032 | 5705 | return nil |
| 6033 | 5706 | }) |
| @@ -6035,10 +5708,6 @@ func (c *Compiler) gravity(is IniSection, sc *StateControllerBase, | ||
| 6035 | 5708 | } |
| 6036 | 5709 | func (c *Compiler) bindToParentSub(is IniSection, |
| 6037 | 5710 | sc *StateControllerBase) error { |
| 6038 | - if err := c.paramValue(is, sc, "redirectid", | |
| 6039 | - bindToParent_redirectid, VT_Int, 1, false); err != nil { | |
| 6040 | - return err | |
| 6041 | - } | |
| 6042 | 5711 | if err := c.paramValue(is, sc, "time", |
| 6043 | 5712 | bindToParent_time, VT_Int, 1, false); err != nil { |
| 6044 | 5713 | return err |
| @@ -6070,10 +5739,6 @@ func (c *Compiler) bindToRoot(is IniSection, sc *StateControllerBase, | ||
| 6070 | 5739 | func (c *Compiler) removeExplod(is IniSection, sc *StateControllerBase, |
| 6071 | 5740 | _ int8) (StateController, error) { |
| 6072 | 5741 | ret, err := (*removeExplod)(sc), c.stateSec(is, func() error { |
| 6073 | - if err := c.paramValue(is, sc, "redirectid", | |
| 6074 | - removeExplod_redirectid, VT_Int, 1, false); err != nil { | |
| 6075 | - return err | |
| 6076 | - } | |
| 6077 | 5742 | b := false |
| 6078 | 5743 | if err := c.stateParam(is, "id", func(data string) error { |
| 6079 | 5744 | b = true |
| @@ -6091,10 +5756,6 @@ func (c *Compiler) removeExplod(is IniSection, sc *StateControllerBase, | ||
| 6091 | 5756 | func (c *Compiler) explodBindTime(is IniSection, sc *StateControllerBase, |
| 6092 | 5757 | _ int8) (StateController, error) { |
| 6093 | 5758 | ret, err := (*explodBindTime)(sc), c.stateSec(is, func() error { |
| 6094 | - if err := c.paramValue(is, sc, "redirectid", | |
| 6095 | - explodBindTime_redirectid, VT_Int, 1, false); err != nil { | |
| 6096 | - return err | |
| 6097 | - } | |
| 6098 | 5759 | if err := c.paramValue(is, sc, "id", |
| 6099 | 5760 | explodBindTime_id, VT_Int, 1, false); err != nil { |
| 6100 | 5761 | return err |
| @@ -6119,10 +5780,6 @@ func (c *Compiler) explodBindTime(is IniSection, sc *StateControllerBase, | ||
| 6119 | 5780 | func (c *Compiler) moveHitReset(is IniSection, sc *StateControllerBase, |
| 6120 | 5781 | _ int8) (StateController, error) { |
| 6121 | 5782 | ret, err := (*moveHitReset)(sc), c.stateSec(is, func() error { |
| 6122 | - if err := c.paramValue(is, sc, "redirectid", | |
| 6123 | - moveHitReset_redirectid, VT_Int, 1, false); err != nil { | |
| 6124 | - return err | |
| 6125 | - } | |
| 6126 | 5783 | sc.add(moveHitReset_, nil) |
| 6127 | 5784 | return nil |
| 6128 | 5785 | }) |
| @@ -6131,10 +5788,6 @@ func (c *Compiler) moveHitReset(is IniSection, sc *StateControllerBase, | ||
| 6131 | 5788 | func (c *Compiler) hitAdd(is IniSection, sc *StateControllerBase, |
| 6132 | 5789 | _ int8) (StateController, error) { |
| 6133 | 5790 | ret, err := (*hitAdd)(sc), c.stateSec(is, func() error { |
| 6134 | - if err := c.paramValue(is, sc, "redirectid", | |
| 6135 | - hitAdd_redirectid, VT_Int, 1, false); err != nil { | |
| 6136 | - return err | |
| 6137 | - } | |
| 6138 | 5791 | if err := c.paramValue(is, sc, "value", |
| 6139 | 5792 | hitAdd_value, VT_Int, 1, true); err != nil { |
| 6140 | 5793 | return err |
| @@ -6146,10 +5799,6 @@ func (c *Compiler) hitAdd(is IniSection, sc *StateControllerBase, | ||
| 6146 | 5799 | func (c *Compiler) offset(is IniSection, sc *StateControllerBase, |
| 6147 | 5800 | _ int8) (StateController, error) { |
| 6148 | 5801 | ret, err := (*offset)(sc), c.stateSec(is, func() error { |
| 6149 | - if err := c.paramValue(is, sc, "redirectid", | |
| 6150 | - offset_redirectid, VT_Int, 1, false); err != nil { | |
| 6151 | - return err | |
| 6152 | - } | |
| 6153 | 5802 | if err := c.paramValue(is, sc, "x", |
| 6154 | 5803 | offset_x, VT_Float, 1, false); err != nil { |
| 6155 | 5804 | return err |
| @@ -6165,10 +5814,6 @@ func (c *Compiler) offset(is IniSection, sc *StateControllerBase, | ||
| 6165 | 5814 | func (c *Compiler) victoryQuote(is IniSection, sc *StateControllerBase, |
| 6166 | 5815 | _ int8) (StateController, error) { |
| 6167 | 5816 | ret, err := (*victoryQuote)(sc), c.stateSec(is, func() error { |
| 6168 | - if err := c.paramValue(is, sc, "redirectid", | |
| 6169 | - victoryQuote_redirectid, VT_Int, 1, false); err != nil { | |
| 6170 | - return err | |
| 6171 | - } | |
| 6172 | 5817 | if err := c.paramValue(is, sc, "value", |
| 6173 | 5818 | victoryQuote_value, VT_Int, 1, false); err != nil { |
| 6174 | 5819 | return err |
| @@ -6180,10 +5825,6 @@ func (c *Compiler) victoryQuote(is IniSection, sc *StateControllerBase, | ||
| 6180 | 5825 | func (c *Compiler) zoom(is IniSection, sc *StateControllerBase, |
| 6181 | 5826 | _ int8) (StateController, error) { |
| 6182 | 5827 | ret, err := (*zoom)(sc), c.stateSec(is, func() error { |
| 6183 | - if err := c.paramValue(is, sc, "redirectid", | |
| 6184 | - zoom_redirectid, VT_Int, 1, false); err != nil { | |
| 6185 | - return err | |
| 6186 | - } | |
| 6187 | 5828 | if err := c.paramValue(is, sc, "pos", |
| 6188 | 5829 | zoom_pos, VT_Float, 2, false); err != nil { |
| 6189 | 5830 | return err |
| @@ -7208,14 +6849,13 @@ func (c *Compiler) Compile(pn int, def string) (map[int32]StateBytecode, | ||
| 7208 | 6849 | if err != nil { |
| 7209 | 6850 | return err |
| 7210 | 6851 | } |
| 7211 | - str = str + sys.commonCmd | |
| 7212 | 6852 | lines, i = SplitAndTrim(str, "\n"), 0 |
| 7213 | 6853 | return nil |
| 7214 | 6854 | }); err != nil { |
| 7215 | 6855 | return nil, err |
| 7216 | 6856 | } |
| 7217 | 6857 | if sys.chars[pn][0].cmd == nil { |
| 7218 | - sys.chars[pn][0].cmd = make([]CommandList, MaxSimul*2+MaxAttachedChar) | |
| 6858 | + sys.chars[pn][0].cmd = make([]CommandList, MaxSimul*2) | |
| 7219 | 6859 | b := NewCommandBuffer() |
| 7220 | 6860 | for i := range sys.chars[pn][0].cmd { |
| 7221 | 6861 | sys.chars[pn][0].cmd[i] = *NewCommandList(b) |
| @@ -7246,10 +6886,6 @@ func (c *Compiler) Compile(pn int, def string) (map[int32]StateBytecode, | ||
| 7246 | 6886 | *k, *nk = CK_c, CK_nc |
| 7247 | 6887 | case "s": |
| 7248 | 6888 | *k, *nk = CK_s, CK_ns |
| 7249 | - case "v": | |
| 7250 | - *k, *nk = CK_v, CK_nv | |
| 7251 | - case "w": | |
| 7252 | - *k, *nk = CK_w, CK_nw | |
| 7253 | 6889 | } |
| 7254 | 6890 | } |
| 7255 | 6891 | rm("x", &ckr.x, &ckr.nx) |
| @@ -7259,8 +6895,6 @@ func (c *Compiler) Compile(pn int, def string) (map[int32]StateBytecode, | ||
| 7259 | 6895 | rm("b", &ckr.b, &ckr.nb) |
| 7260 | 6896 | rm("c", &ckr.c, &ckr.nc) |
| 7261 | 6897 | rm("s", &ckr.s, &ckr.ns) |
| 7262 | - rm("v", &ckr.v, &ckr.nv) | |
| 7263 | - rm("w", &ckr.w, &ckr.nw) | |
| 7264 | 6898 | } |
| 7265 | 6899 | case "defaults": |
| 7266 | 6900 | if defaults { |
| @@ -2,12 +2,11 @@ package main | ||
| 2 | 2 | |
| 3 | 3 | import ( |
| 4 | 4 | "encoding/binary" |
| 5 | + "github.com/go-gl/gl/v2.1/gl" | |
| 5 | 6 | "os" |
| 6 | 7 | "regexp" |
| 7 | 8 | "strings" |
| 8 | 9 | "unsafe" |
| 9 | - | |
| 10 | - "github.com/go-gl/gl/v2.1/gl" | |
| 11 | 10 | ) |
| 12 | 11 | |
| 13 | 12 | type FntCharImage struct { |
| @@ -77,7 +76,7 @@ func loadFnt(filename string) (*Fnt, error) { | ||
| 77 | 76 | if err := read(rgb[:]); err != nil { |
| 78 | 77 | return nil, err |
| 79 | 78 | } |
| 80 | - spr.Pal[i] = uint32(255)<<24 | uint32(rgb[2])<<16 | uint32(rgb[1])<<8 | uint32(rgb[0]) | |
| 79 | + spr.Pal[i] = uint32(rgb[2])<<16 | uint32(rgb[1])<<8 | uint32(rgb[0]) | |
| 81 | 80 | } |
| 82 | 81 | px = spr.RlePcxDecode(px) |
| 83 | 82 | fp.Seek(int64(txtDataOffset), 0) |
| @@ -134,12 +133,7 @@ func loadFnt(filename string) (*Fnt, error) { | ||
| 134 | 133 | fci := &FntCharImage{ofs: ofs} |
| 135 | 134 | f.images[c] = fci |
| 136 | 135 | if len(cap[3]) > 0 { |
| 137 | - w := Atoi(cap[3]) | |
| 138 | - if w < 0 { | |
| 139 | - ofs = I32ToU16(int32(ofs) - w) | |
| 140 | - w = -w | |
| 141 | - } | |
| 142 | - fci.w = I32ToU16(w) | |
| 136 | + fci.w = I32ToU16(Atoi(cap[3])) | |
| 143 | 137 | ofs += fci.w - f.Size[0] |
| 144 | 138 | } else { |
| 145 | 139 | fci.w = f.Size[0] |
| @@ -245,7 +239,8 @@ func (f *Fnt) getCharSpr(c rune, bank int32) *Sprite { | ||
| 245 | 239 | } |
| 246 | 240 | return &fci.img[bank] |
| 247 | 241 | } |
| 248 | -func (f *Fnt) drawChar(x, y, xscl, yscl float32, bank int32, c rune) float32 { | |
| 242 | +func (f *Fnt) drawChar(x, y, xscl, yscl float32, bank int32, c rune, | |
| 243 | + paltex uint32) float32 { | |
| 249 | 244 | if c == ' ' { |
| 250 | 245 | return float32(f.Size[0]) * xscl |
| 251 | 246 | } |
| @@ -253,10 +248,10 @@ func (f *Fnt) drawChar(x, y, xscl, yscl float32, bank int32, c rune) float32 { | ||
| 253 | 248 | if spr == nil || spr.Tex == nil { |
| 254 | 249 | return 0 |
| 255 | 250 | } |
| 256 | - RenderMugenPal(*spr.Tex, 0, spr.Size, -x*sys.widthScale, | |
| 251 | + RenderMugenPal(*spr.Tex, paltex, 0, spr.Size, -x*sys.widthScale, | |
| 257 | 252 | -y*sys.heightScale, ¬iling, xscl*sys.widthScale, xscl*sys.widthScale, |
| 258 | - yscl*sys.heightScale, 1, 0, 0, 0, 0, sys.brightness*255>>8|1<<9, &sys.scrrect, | |
| 259 | - 0, 0, false, 1, &[3]float32{0, 0, 0}, &[3]float32{1, 1, 1}) | |
| 253 | + yscl*sys.heightScale, 1, 0, 0, sys.brightness*255>>8|1<<9, &sys.scrrect, | |
| 254 | + 0, 0) | |
| 260 | 255 | return float32(spr.Size[0]) * xscl |
| 261 | 256 | } |
| 262 | 257 | func (f *Fnt) DrawText(txt string, x, y, xscl, yscl float32, |
| @@ -288,7 +283,8 @@ func (f *Fnt) DrawText(txt string, x, y, xscl, yscl float32, | ||
| 288 | 283 | gl.TexParameteri(gl.TEXTURE_1D, gl.TEXTURE_MAG_FILTER, gl.NEAREST) |
| 289 | 284 | gl.TexParameteri(gl.TEXTURE_1D, gl.TEXTURE_MIN_FILTER, gl.NEAREST) |
| 290 | 285 | for _, c := range txt { |
| 291 | - x += f.drawChar(x, y, xscl, yscl, bank, c) + xscl*float32(f.Spacing[0]) | |
| 286 | + x += f.drawChar(x, y, xscl, yscl, bank, c, paltex) + | |
| 287 | + xscl*float32(f.Spacing[0]) | |
| 292 | 288 | } |
| 293 | 289 | gl.DeleteTextures(1, &paltex) |
| 294 | 290 | gl.Disable(gl.TEXTURE_1D) |
| @@ -3,6 +3,7 @@ package main | ||
| 3 | 3 | import ( |
| 4 | 4 | "encoding/binary" |
| 5 | 5 | "fmt" |
| 6 | + "github.com/go-gl/gl/v2.1/gl" | |
| 6 | 7 | "image" |
| 7 | 8 | "image/draw" |
| 8 | 9 | "image/png" |
| @@ -11,8 +12,6 @@ import ( | ||
| 11 | 12 | "os" |
| 12 | 13 | "runtime" |
| 13 | 14 | "unsafe" |
| 14 | - | |
| 15 | - "github.com/go-gl/gl/v2.1/gl" | |
| 16 | 15 | ) |
| 17 | 16 | |
| 18 | 17 | type TransType int32 |
| @@ -130,8 +129,7 @@ func (pf *PalFX) getFxPal(pal []uint32, neg bool) []uint32 { | ||
| 130 | 129 | (((c>>8&0xff)+uint32(a[1]))*uint32(m[1])>>8)<<8 |
| 131 | 130 | tmp = (tmp|uint32(-Btoi(tmp&0xff0000 != 0)<<8))&0xffff | |
| 132 | 131 | (((c>>16&0xff)+uint32(a[2]))*uint32(m[2])>>8)<<16 |
| 133 | - sys.workpal[i] = tmp | uint32(-Btoi(tmp&0xff000000 != 0)<<16) | | |
| 134 | - 0xff000000 | |
| 132 | + sys.workpal[i] = tmp | uint32(-Btoi(tmp&0xff000000 != 0)<<16) | |
| 135 | 133 | } |
| 136 | 134 | return sys.workpal |
| 137 | 135 | } |
| @@ -150,7 +148,7 @@ func (pf *PalFX) getFcPalFx(transNeg bool) (neg bool, color float32, | ||
| 150 | 148 | return |
| 151 | 149 | } |
| 152 | 150 | neg = p.eInvertall |
| 153 | - color = p.eColor | |
| 151 | + color = p.color | |
| 154 | 152 | if !p.eNegType { |
| 155 | 153 | transNeg = false |
| 156 | 154 | } |
| @@ -352,42 +350,11 @@ type Sprite struct { | ||
| 352 | 350 | Offset [2]int16 |
| 353 | 351 | palidx int |
| 354 | 352 | rle int |
| 355 | - paltemp []uint32 | |
| 356 | - PalTex *Texture | |
| 357 | 353 | } |
| 358 | 354 | |
| 359 | 355 | func newSprite() *Sprite { |
| 360 | 356 | return &Sprite{palidx: -1} |
| 361 | 357 | } |
| 362 | -func selectablePalettes(filename string) ([]int32, error) { | |
| 363 | - var pal []int32 | |
| 364 | - f, err := os.Open(filename) | |
| 365 | - if err != nil { | |
| 366 | - return pal, err | |
| 367 | - } | |
| 368 | - defer func() { chk(f.Close()) }() | |
| 369 | - h := &SffHeader{} | |
| 370 | - var lofs, tofs uint32 | |
| 371 | - if err := h.Read(f, &lofs, &tofs); err != nil { | |
| 372 | - return pal, err | |
| 373 | - } | |
| 374 | - read := func(x interface{}) error { | |
| 375 | - return binary.Read(f, binary.LittleEndian, x) | |
| 376 | - } | |
| 377 | - if h.Ver0 != 1 { | |
| 378 | - for i := 0; i < int(h.NumberOfPalettes); i++ { | |
| 379 | - f.Seek(int64(h.FirstPaletteHeaderOffset)+int64(i*16), 0) | |
| 380 | - var gn_ [3]int16 | |
| 381 | - if err := read(gn_[:]); err != nil { | |
| 382 | - return pal, err | |
| 383 | - } | |
| 384 | - if gn_[0] == 1 && gn_[1] <= MaxPalNo { | |
| 385 | - pal = append(pal, int32(gn_[1])) | |
| 386 | - } | |
| 387 | - } | |
| 388 | - } | |
| 389 | - return pal, err | |
| 390 | -} | |
| 391 | 358 | func loadFromSff(filename string, g, n int16) (*Sprite, error) { |
| 392 | 359 | s := newSprite() |
| 393 | 360 | f, err := os.Open(filename) |
| @@ -475,7 +442,7 @@ func loadFromSff(filename string, g, n int16) (*Sprite, error) { | ||
| 475 | 442 | s.palidx = -1 |
| 476 | 443 | return s, nil |
| 477 | 444 | } |
| 478 | - if s.rle > -11 { | |
| 445 | + if s.rle != -12 { | |
| 479 | 446 | read := func(x interface{}) error { |
| 480 | 447 | return binary.Read(f, binary.LittleEndian, x) |
| 481 | 448 | } |
| @@ -503,7 +470,7 @@ func loadFromSff(filename string, g, n int16) (*Sprite, error) { | ||
| 503 | 470 | if err := read(rgba[:]); err != nil { |
| 504 | 471 | return nil, err |
| 505 | 472 | } |
| 506 | - s.Pal[i] = uint32(rgba[3])<<24 | uint32(rgba[2])<<16 | uint32(rgba[1])<<8 | uint32(rgba[0]) | |
| 473 | + s.Pal[i] = uint32(rgba[2])<<16 | uint32(rgba[1])<<8 | uint32(rgba[0]) | |
| 507 | 474 | } |
| 508 | 475 | s.palidx = -1 |
| 509 | 476 | } |
| @@ -516,7 +483,7 @@ func (s *Sprite) shareCopy(src *Sprite) { | ||
| 516 | 483 | s.palidx = src.palidx |
| 517 | 484 | } |
| 518 | 485 | func (s *Sprite) GetPal(pl *PaletteList) []uint32 { |
| 519 | - if s.Pal != nil || s.rle <= -11 { | |
| 486 | + if s.Pal != nil || s.rle == -12 { | |
| 520 | 487 | return s.Pal |
| 521 | 488 | } |
| 522 | 489 | return pl.Get(int(s.palidx)) |
| @@ -684,7 +651,7 @@ func (s *Sprite) read(f *os.File, sh *SffHeader, offset int64, datasize uint32, | ||
| 684 | 651 | if err := read(rgb[:]); err != nil { |
| 685 | 652 | return err |
| 686 | 653 | } |
| 687 | - pal[i] = uint32(255)<<24 | uint32(rgb[2])<<16 | uint32(rgb[1])<<8 | uint32(rgb[0]) | |
| 654 | + pal[i] = uint32(rgb[2])<<16 | uint32(rgb[1])<<8 | uint32(rgb[0]) | |
| 688 | 655 | } |
| 689 | 656 | } |
| 690 | 657 | s.SetPxl(s.RlePcxDecode(px)) |
| @@ -938,8 +905,8 @@ func (s *Sprite) readV2(f *os.File, offset int64, datasize uint32) error { | ||
| 938 | 905 | unsafe.Pointer(&rgba.Pix[0])) |
| 939 | 906 | gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR) |
| 940 | 907 | gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR) |
| 941 | - gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE) | |
| 942 | - gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE) | |
| 908 | + gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP) | |
| 909 | + gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP) | |
| 943 | 910 | gl.Disable(gl.TEXTURE_2D) |
| 944 | 911 | } |
| 945 | 912 | return nil |
| @@ -951,61 +918,21 @@ func (s *Sprite) readV2(f *os.File, offset int64, datasize uint32) error { | ||
| 951 | 918 | return nil |
| 952 | 919 | } |
| 953 | 920 | func (s *Sprite) glDraw(pal []uint32, mask int32, x, y float32, tile *[4]int32, |
| 954 | - xts, xbs, ys, rxadd, agl, yagl, xagl float32, trans int32, window *[4]int32, | |
| 921 | + xts, xbs, ys, rxadd, agl float32, trans int32, window *[4]int32, | |
| 955 | 922 | rcx, rcy float32, pfx *PalFX) { |
| 956 | 923 | if s.Tex == nil { |
| 957 | 924 | return |
| 958 | 925 | } |
| 959 | - neg, color, padd, pmul := pfx.getFcPalFx(trans == -2) | |
| 960 | - if trans == -2 { | |
| 961 | - padd[0] *= -1 | |
| 962 | - padd[1] *= -1 | |
| 963 | - padd[2] *= -1 | |
| 964 | - } | |
| 965 | - | |
| 966 | - if s.rle <= -11 { | |
| 967 | - RenderMugenFc(*s.Tex, s.Size, x, y, tile, xts, xbs, ys, 1, rxadd, agl, yagl, xagl, | |
| 926 | + if s.rle == -12 { | |
| 927 | + neg, color, padd, pmul := pfx.getFcPalFx(trans == -2) | |
| 928 | + RenderMugenFc(*s.Tex, s.Size, x, y, tile, xts, xbs, ys, 1, rxadd, agl, | |
| 968 | 929 | trans, window, rcx, rcy, neg, color, &padd, &pmul) |
| 969 | 930 | } else { |
| 970 | - PalEqual := true | |
| 971 | - if len(pal) != len(s.paltemp) { | |
| 972 | - PalEqual = false | |
| 973 | - } else { | |
| 974 | - for i := range pal { | |
| 975 | - if pal[i] != s.paltemp[i] { | |
| 976 | - PalEqual = false | |
| 977 | - break | |
| 978 | - } | |
| 979 | - } | |
| 980 | - } | |
| 981 | - if PalEqual == true { | |
| 982 | - if s.PalTex == nil { | |
| 983 | - return | |
| 984 | - } | |
| 985 | - gl.ActiveTexture(gl.TEXTURE1) | |
| 986 | - gl.BindTexture(gl.TEXTURE_1D, uint32(*s.PalTex)) | |
| 987 | - RenderMugenPal(*s.Tex, mask, s.Size, x, y, tile, xts, xbs, ys, 1, | |
| 988 | - rxadd, agl, yagl, xagl, trans, window, rcx, rcy, neg, color, &padd, &pmul) | |
| 989 | - gl.Disable(gl.TEXTURE_1D) | |
| 990 | - } else { | |
| 991 | - gl.Enable(gl.TEXTURE_1D) | |
| 992 | - gl.ActiveTexture(gl.TEXTURE1) | |
| 993 | - s.PalTex = newTexture() | |
| 994 | - gl.BindTexture(gl.TEXTURE_1D, uint32(*s.PalTex)) | |
| 995 | - gl.PixelStorei(gl.UNPACK_ALIGNMENT, 1) | |
| 996 | - gl.TexImage1D(gl.TEXTURE_1D, 0, gl.RGBA, 256, 0, gl.RGBA, gl.UNSIGNED_BYTE, | |
| 997 | - unsafe.Pointer(&pal[0])) | |
| 998 | - gl.TexParameteri(gl.TEXTURE_1D, gl.TEXTURE_MAG_FILTER, gl.NEAREST) | |
| 999 | - gl.TexParameteri(gl.TEXTURE_1D, gl.TEXTURE_MIN_FILTER, gl.NEAREST) | |
| 1000 | - tmp := append([]uint32{}, pal...) | |
| 1001 | - s.paltemp = tmp | |
| 1002 | - RenderMugenPal(*s.Tex, mask, s.Size, x, y, tile, xts, xbs, ys, 1, | |
| 1003 | - rxadd, agl, yagl, xagl, trans, window, rcx, rcy, neg, color, &padd, &pmul) | |
| 1004 | - gl.Disable(gl.TEXTURE_1D) | |
| 1005 | - } | |
| 931 | + RenderMugen(*s.Tex, pal, mask, s.Size, x, y, tile, xts, xbs, ys, 1, | |
| 932 | + rxadd, agl, trans, window, rcx, rcy) | |
| 1006 | 933 | } |
| 1007 | 934 | } |
| 1008 | -func (s *Sprite) Draw(x, y, xscale, yscale float32, pal []uint32, fx *PalFX) { | |
| 935 | +func (s *Sprite) Draw(x, y, xscale, yscale float32, pal []uint32) { | |
| 1009 | 936 | x += float32(sys.gameWidth-320)/2 - xscale*float32(s.Offset[0]) |
| 1010 | 937 | y += float32(sys.gameHeight-240) - yscale*float32(s.Offset[1]) |
| 1011 | 938 | if xscale < 0 { |
| @@ -1015,8 +942,8 @@ func (s *Sprite) Draw(x, y, xscale, yscale float32, pal []uint32, fx *PalFX) { | ||
| 1015 | 942 | y *= -1 |
| 1016 | 943 | } |
| 1017 | 944 | s.glDraw(pal, 0, -x*sys.widthScale, -y*sys.heightScale, ¬iling, |
| 1018 | - xscale*sys.widthScale, xscale*sys.widthScale, yscale*sys.heightScale, 0, 0, 0, 0, | |
| 1019 | - sys.brightness*255>>8|1<<9, &sys.scrrect, 0, 0, fx) | |
| 945 | + xscale*sys.widthScale, xscale*sys.widthScale, yscale*sys.heightScale, 0, 0, | |
| 946 | + sys.brightness*255>>8|1<<9, &sys.scrrect, 0, 0, nil) | |
| 1020 | 947 | } |
| 1021 | 948 | |
| 1022 | 949 | type Sff struct { |
| @@ -1078,10 +1005,7 @@ func loadSff(filename string, char bool) (*Sff, error) { | ||
| 1078 | 1005 | if err := read(rgba[:]); err != nil { |
| 1079 | 1006 | return nil, err |
| 1080 | 1007 | } |
| 1081 | - if s.header.Ver2 == 0 { | |
| 1082 | - rgba[3] = 255 | |
| 1083 | - } | |
| 1084 | - pal[i] = uint32(rgba[3])<<24 | uint32(rgba[2])<<16 | uint32(rgba[1])<<8 | uint32(rgba[0]) | |
| 1008 | + pal[i] = uint32(rgba[2])<<16 | uint32(rgba[1])<<8 | uint32(rgba[0]) | |
| 1085 | 1009 | } |
| 1086 | 1010 | idx = i |
| 1087 | 1011 | } |
| @@ -2,12 +2,11 @@ package main | ||
| 2 | 2 | |
| 3 | 3 | import ( |
| 4 | 4 | "encoding/binary" |
| 5 | + "github.com/go-gl/glfw/v3.2/glfw" | |
| 5 | 6 | "net" |
| 6 | 7 | "os" |
| 7 | 8 | "strings" |
| 8 | 9 | "time" |
| 9 | - | |
| 10 | - "github.com/go-gl/glfw/v3.2/glfw" | |
| 11 | 10 | ) |
| 12 | 11 | |
| 13 | 12 | type CommandKey byte |
| @@ -52,8 +51,6 @@ const ( | ||
| 52 | 51 | CK_y |
| 53 | 52 | CK_z |
| 54 | 53 | CK_s |
| 55 | - CK_v | |
| 56 | - CK_w | |
| 57 | 54 | CK_na |
| 58 | 55 | CK_nb |
| 59 | 56 | CK_nc |
| @@ -61,9 +58,7 @@ const ( | ||
| 61 | 58 | CK_ny |
| 62 | 59 | CK_nz |
| 63 | 60 | CK_ns |
| 64 | - CK_nv | |
| 65 | - CK_nw | |
| 66 | - CK_Last = CK_nw | |
| 61 | + CK_Last = CK_ns | |
| 67 | 62 | ) |
| 68 | 63 | |
| 69 | 64 | type NetState int |
| @@ -316,246 +311,6 @@ func StringToKey(s string) glfw.Key { | ||
| 316 | 311 | return glfw.KeyUnknown |
| 317 | 312 | } |
| 318 | 313 | |
| 319 | -func KeyToString(k glfw.Key) string { | |
| 320 | - switch k { | |
| 321 | - case glfw.KeyEnter: | |
| 322 | - return "RETURN" | |
| 323 | - case glfw.KeyEscape: | |
| 324 | - return "ESCAPE" | |
| 325 | - case glfw.KeyBackspace: | |
| 326 | - return "BACKSPACE" | |
| 327 | - case glfw.KeyTab: | |
| 328 | - return "TAB" | |
| 329 | - case glfw.KeySpace: | |
| 330 | - return "SPACE" | |
| 331 | - case glfw.KeyApostrophe: | |
| 332 | - return "QUOTE" | |
| 333 | - case glfw.KeyComma: | |
| 334 | - return "COMMA" | |
| 335 | - case glfw.KeyMinus: | |
| 336 | - return "MINUS" | |
| 337 | - case glfw.KeyPeriod: | |
| 338 | - return "PERIOD" | |
| 339 | - case glfw.KeySlash: | |
| 340 | - return "SLASH" | |
| 341 | - case glfw.Key0: | |
| 342 | - return "0" | |
| 343 | - case glfw.Key1: | |
| 344 | - return "1" | |
| 345 | - case glfw.Key2: | |
| 346 | - return "2" | |
| 347 | - case glfw.Key3: | |
| 348 | - return "3" | |
| 349 | - case glfw.Key4: | |
| 350 | - return "4" | |
| 351 | - case glfw.Key5: | |
| 352 | - return "5" | |
| 353 | - case glfw.Key6: | |
| 354 | - return "6" | |
| 355 | - case glfw.Key7: | |
| 356 | - return "7" | |
| 357 | - case glfw.Key8: | |
| 358 | - return "8" | |
| 359 | - case glfw.Key9: | |
| 360 | - return "9" | |
| 361 | - case glfw.KeySemicolon: | |
| 362 | - return "SEMICOLON" | |
| 363 | - case glfw.KeyEqual: | |
| 364 | - return "EQUALS" | |
| 365 | - case glfw.KeyLeftBracket: | |
| 366 | - return "LEFTBRACKET" | |
| 367 | - case glfw.KeyBackslash: | |
| 368 | - return "BACKSLASH" | |
| 369 | - case glfw.KeyRightBracket: | |
| 370 | - return "RIGHTBRACKET" | |
| 371 | - case glfw.KeyGraveAccent: | |
| 372 | - return "BACKQUOTE" | |
| 373 | - case glfw.KeyA: | |
| 374 | - return "a" | |
| 375 | - case glfw.KeyB: | |
| 376 | - return "b" | |
| 377 | - case glfw.KeyC: | |
| 378 | - return "c" | |
| 379 | - case glfw.KeyD: | |
| 380 | - return "d" | |
| 381 | - case glfw.KeyE: | |
| 382 | - return "e" | |
| 383 | - case glfw.KeyF: | |
| 384 | - return "f" | |
| 385 | - case glfw.KeyG: | |
| 386 | - return "g" | |
| 387 | - case glfw.KeyH: | |
| 388 | - return "h" | |
| 389 | - case glfw.KeyI: | |
| 390 | - return "i" | |
| 391 | - case glfw.KeyJ: | |
| 392 | - return "j" | |
| 393 | - case glfw.KeyK: | |
| 394 | - return "k" | |
| 395 | - case glfw.KeyL: | |
| 396 | - return "l" | |
| 397 | - case glfw.KeyM: | |
| 398 | - return "m" | |
| 399 | - case glfw.KeyN: | |
| 400 | - return "n" | |
| 401 | - case glfw.KeyO: | |
| 402 | - return "o" | |
| 403 | - case glfw.KeyP: | |
| 404 | - return "p" | |
| 405 | - case glfw.KeyQ: | |
| 406 | - return "q" | |
| 407 | - case glfw.KeyR: | |
| 408 | - return "r" | |
| 409 | - case glfw.KeyS: | |
| 410 | - return "s" | |
| 411 | - case glfw.KeyT: | |
| 412 | - return "t" | |
| 413 | - case glfw.KeyU: | |
| 414 | - return "u" | |
| 415 | - case glfw.KeyV: | |
| 416 | - return "v" | |
| 417 | - case glfw.KeyW: | |
| 418 | - return "w" | |
| 419 | - case glfw.KeyX: | |
| 420 | - return "x" | |
| 421 | - case glfw.KeyY: | |
| 422 | - return "y" | |
| 423 | - case glfw.KeyZ: | |
| 424 | - return "z" | |
| 425 | - case glfw.KeyCapsLock: | |
| 426 | - return "CAPSLOCK" | |
| 427 | - case glfw.KeyF1: | |
| 428 | - return "F1" | |
| 429 | - case glfw.KeyF2: | |
| 430 | - return "F2" | |
| 431 | - case glfw.KeyF3: | |
| 432 | - return "F3" | |
| 433 | - case glfw.KeyF4: | |
| 434 | - return "F4" | |
| 435 | - case glfw.KeyF5: | |
| 436 | - return "F5" | |
| 437 | - case glfw.KeyF6: | |
| 438 | - return "F6" | |
| 439 | - case glfw.KeyF7: | |
| 440 | - return "F7" | |
| 441 | - case glfw.KeyF8: | |
| 442 | - return "F8" | |
| 443 | - case glfw.KeyF9: | |
| 444 | - return "F9" | |
| 445 | - case glfw.KeyF10: | |
| 446 | - return "F10" | |
| 447 | - case glfw.KeyF11: | |
| 448 | - return "F11" | |
| 449 | - case glfw.KeyF12: | |
| 450 | - return "F12" | |
| 451 | - case glfw.KeyPrintScreen: | |
| 452 | - return "PRINTSCREEN" | |
| 453 | - case glfw.KeyScrollLock: | |
| 454 | - return "SCROLLLOCK" | |
| 455 | - case glfw.KeyPause: | |
| 456 | - return "PAUSE" | |
| 457 | - case glfw.KeyInsert: | |
| 458 | - return "INSERT" | |
| 459 | - case glfw.KeyHome: | |
| 460 | - return "HOME" | |
| 461 | - case glfw.KeyPageUp: | |
| 462 | - return "PAGEUP" | |
| 463 | - case glfw.KeyDelete: | |
| 464 | - return "DELETE" | |
| 465 | - case glfw.KeyEnd: | |
| 466 | - return "END" | |
| 467 | - case glfw.KeyPageDown: | |
| 468 | - return "PAGEDOWN" | |
| 469 | - case glfw.KeyRight: | |
| 470 | - return "RIGHT" | |
| 471 | - case glfw.KeyLeft: | |
| 472 | - return "LEFT" | |
| 473 | - case glfw.KeyDown: | |
| 474 | - return "DOWN" | |
| 475 | - case glfw.KeyUp: | |
| 476 | - return "UP" | |
| 477 | - case glfw.KeyNumLock: | |
| 478 | - return "NUMLOCKCLEAR" | |
| 479 | - case glfw.KeyKPDivide: | |
| 480 | - return "KP_DIVIDE" | |
| 481 | - case glfw.KeyKPMultiply: | |
| 482 | - return "KP_MULTIPLY" | |
| 483 | - case glfw.KeyKPSubtract: | |
| 484 | - return "KP_MINUS" | |
| 485 | - case glfw.KeyKPAdd: | |
| 486 | - return "KP_PLUS" | |
| 487 | - case glfw.KeyKPEnter: | |
| 488 | - return "KP_ENTER" | |
| 489 | - case glfw.KeyKP1: | |
| 490 | - return "KP_1" | |
| 491 | - case glfw.KeyKP2: | |
| 492 | - return "KP_2" | |
| 493 | - case glfw.KeyKP3: | |
| 494 | - return "KP_3" | |
| 495 | - case glfw.KeyKP4: | |
| 496 | - return "KP_4" | |
| 497 | - case glfw.KeyKP5: | |
| 498 | - return "KP_5" | |
| 499 | - case glfw.KeyKP6: | |
| 500 | - return "KP_6" | |
| 501 | - case glfw.KeyKP7: | |
| 502 | - return "KP_7" | |
| 503 | - case glfw.KeyKP8: | |
| 504 | - return "KP_8" | |
| 505 | - case glfw.KeyKP9: | |
| 506 | - return "KP_9" | |
| 507 | - case glfw.KeyKP0: | |
| 508 | - return "KP_0" | |
| 509 | - case glfw.KeyKPDecimal: | |
| 510 | - return "KP_PERIOD" | |
| 511 | - case glfw.KeyKPEqual: | |
| 512 | - return "KP_EQUALS" | |
| 513 | - case glfw.KeyF13: | |
| 514 | - return "F13" | |
| 515 | - case glfw.KeyF14: | |
| 516 | - return "F14" | |
| 517 | - case glfw.KeyF15: | |
| 518 | - return "F15" | |
| 519 | - case glfw.KeyF16: | |
| 520 | - return "F16" | |
| 521 | - case glfw.KeyF17: | |
| 522 | - return "F17" | |
| 523 | - case glfw.KeyF18: | |
| 524 | - return "F18" | |
| 525 | - case glfw.KeyF19: | |
| 526 | - return "F19" | |
| 527 | - case glfw.KeyF20: | |
| 528 | - return "F20" | |
| 529 | - case glfw.KeyF21: | |
| 530 | - return "F21" | |
| 531 | - case glfw.KeyF22: | |
| 532 | - return "F22" | |
| 533 | - case glfw.KeyF23: | |
| 534 | - return "F23" | |
| 535 | - case glfw.KeyF24: | |
| 536 | - return "F24" | |
| 537 | - case glfw.KeyMenu: | |
| 538 | - return "MENU" | |
| 539 | - case glfw.KeyLeftControl: | |
| 540 | - return "LCTRL" | |
| 541 | - case glfw.KeyLeftShift: | |
| 542 | - return "LSHIFT" | |
| 543 | - case glfw.KeyLeftAlt: | |
| 544 | - return "LALT" | |
| 545 | - case glfw.KeyLeftSuper: | |
| 546 | - return "LGUI" | |
| 547 | - case glfw.KeyRightControl: | |
| 548 | - return "RCTRL" | |
| 549 | - case glfw.KeyRightShift: | |
| 550 | - return "RSHIFT" | |
| 551 | - case glfw.KeyRightAlt: | |
| 552 | - return "RALT" | |
| 553 | - case glfw.KeyRightSuper: | |
| 554 | - return "RGUI" | |
| 555 | - } | |
| 556 | - return "" | |
| 557 | -} | |
| 558 | - | |
| 559 | 314 | type ShortcutScript struct { |
| 560 | 315 | Activate bool |
| 561 | 316 | Script string |
| @@ -589,11 +344,8 @@ func keyCallback(_ *glfw.Window, key glfw.Key, _ int, | ||
| 589 | 344 | switch action { |
| 590 | 345 | case glfw.Release: |
| 591 | 346 | sys.keySatate[key] = false |
| 592 | - sys.keyInput = glfw.KeyUnknown | |
| 593 | - sys.keyString = "" | |
| 594 | 347 | case glfw.Press: |
| 595 | 348 | sys.keySatate[key] = true |
| 596 | - sys.keyInput = key | |
| 597 | 349 | sys.esc = sys.esc || |
| 598 | 350 | key == glfw.KeyEscape && mk&(glfw.ModControl|glfw.ModAlt) == 0 |
| 599 | 351 | for k, v := range sys.shortcutScripts { |
| @@ -601,9 +353,6 @@ func keyCallback(_ *glfw.Window, key glfw.Key, _ int, | ||
| 601 | 353 | } |
| 602 | 354 | } |
| 603 | 355 | } |
| 604 | -func charCallback(_ *glfw.Window, char rune, mk glfw.ModifierKey) { | |
| 605 | - sys.keyString = string(char) | |
| 606 | -} | |
| 607 | 356 | |
| 608 | 357 | var joystick = [...]glfw.Joystick{glfw.Joystick1, glfw.Joystick2, |
| 609 | 358 | glfw.Joystick3, glfw.Joystick4, glfw.Joystick5, glfw.Joystick6, |
| @@ -618,30 +367,27 @@ func JoystickState(joy, button int) bool { | ||
| 618 | 367 | if joy >= len(joystick) { |
| 619 | 368 | return false |
| 620 | 369 | } |
| 621 | - btns := glfw.GetJoystickButtons(joystick[joy]) | |
| 622 | 370 | if button < 0 { |
| 623 | 371 | button = -button - 1 |
| 624 | 372 | axes := glfw.GetJoystickAxes(joystick[joy]) |
| 625 | 373 | if len(axes)*2 <= button { |
| 626 | 374 | return false |
| 627 | 375 | } |
| 628 | - if (button == 8 || button == 10) && len(axes) == 6 && len(btns) == 14 { //XboxコントローラーのLRトリガー判定(glfwがバージョンアップすればもっとちゃんと判別できるようになるはず) | |
| 629 | - return axes[button/2] > 0 | |
| 630 | - } | |
| 631 | 376 | switch button & 1 { |
| 632 | 377 | case 0: |
| 633 | - return axes[button/2] < -0.2 | |
| 378 | + return axes[button/2] < -0.1 | |
| 634 | 379 | case 1: |
| 635 | - return axes[button/2] > 0.2 | |
| 380 | + return axes[button/2] > 0.1 | |
| 636 | 381 | } |
| 637 | 382 | } |
| 383 | + btns := glfw.GetJoystickButtons(joystick[joy]) | |
| 638 | 384 | if len(btns) <= button { |
| 639 | 385 | return false |
| 640 | 386 | } |
| 641 | 387 | return btns[button] != 0 |
| 642 | 388 | } |
| 643 | 389 | |
| 644 | -type KeyConfig struct{ Joy, u, d, l, r, a, b, c, x, y, z, s, v, w int } | |
| 390 | +type KeyConfig struct{ Joy, u, d, l, r, a, b, c, x, y, z, s int } | |
| 645 | 391 | |
| 646 | 392 | func (kc KeyConfig) U() bool { return JoystickState(kc.Joy, kc.u) } |
| 647 | 393 | func (kc KeyConfig) D() bool { return JoystickState(kc.Joy, kc.d) } |
| @@ -654,8 +400,6 @@ func (kc KeyConfig) X() bool { return JoystickState(kc.Joy, kc.x) } | ||
| 654 | 400 | func (kc KeyConfig) Y() bool { return JoystickState(kc.Joy, kc.y) } |
| 655 | 401 | func (kc KeyConfig) Z() bool { return JoystickState(kc.Joy, kc.z) } |
| 656 | 402 | func (kc KeyConfig) S() bool { return JoystickState(kc.Joy, kc.s) } |
| 657 | -func (kc KeyConfig) V() bool { return JoystickState(kc.Joy, kc.v) } | |
| 658 | -func (kc KeyConfig) W() bool { return JoystickState(kc.Joy, kc.w) } | |
| 659 | 403 | |
| 660 | 404 | type InputBits int32 |
| 661 | 405 |
| @@ -671,9 +415,7 @@ const ( | ||
| 671 | 415 | IB_Y |
| 672 | 416 | IB_Z |
| 673 | 417 | IB_S |
| 674 | - IB_V | |
| 675 | - IB_W | |
| 676 | - IB_anybutton = IB_A | IB_B | IB_C | IB_X | IB_Y | IB_Z | IB_V | IB_W | |
| 418 | + IB_anybutton = IB_A | IB_B | IB_C | IB_X | IB_Y | IB_Z | |
| 677 | 419 | ) |
| 678 | 420 | |
| 679 | 421 | func (ib *InputBits) SetInput(in int) { |
| @@ -683,8 +425,7 @@ func (ib *InputBits) SetInput(in int) { | ||
| 683 | 425 | Btoi(sys.keyConfig[in].R())<<3 | Btoi(sys.keyConfig[in].A())<<4 | |
| 684 | 426 | Btoi(sys.keyConfig[in].B())<<5 | Btoi(sys.keyConfig[in].C())<<6 | |
| 685 | 427 | Btoi(sys.keyConfig[in].X())<<7 | Btoi(sys.keyConfig[in].Y())<<8 | |
| 686 | - Btoi(sys.keyConfig[in].Z())<<9 | Btoi(sys.keyConfig[in].S())<<10 | | |
| 687 | - Btoi(sys.keyConfig[in].V())<<11 | Btoi(sys.keyConfig[in].W())<<12) | |
| 428 | + Btoi(sys.keyConfig[in].Z())<<9 | Btoi(sys.keyConfig[in].S())<<10) | |
| 688 | 429 | } |
| 689 | 430 | } |
| 690 | 431 | func (ib InputBits) GetInput(cb *CommandBuffer, facing int32) { |
| @@ -695,23 +436,23 @@ func (ib InputBits) GetInput(cb *CommandBuffer, facing int32) { | ||
| 695 | 436 | b, f = ib&IB_L != 0, ib&IB_R != 0 |
| 696 | 437 | } |
| 697 | 438 | cb.Input(b, ib&IB_D != 0, f, ib&IB_U != 0, ib&IB_A != 0, ib&IB_B != 0, |
| 698 | - ib&IB_C != 0, ib&IB_X != 0, ib&IB_Y != 0, ib&IB_Z != 0, ib&IB_S != 0, ib&IB_V != 0, ib&IB_W != 0) | |
| 439 | + ib&IB_C != 0, ib&IB_X != 0, ib&IB_Y != 0, ib&IB_Z != 0, ib&IB_S != 0) | |
| 699 | 440 | } |
| 700 | 441 | |
| 701 | 442 | type CommandKeyRemap struct { |
| 702 | - a, b, c, x, y, z, s, v, w, na, nb, nc, nx, ny, nz, ns, nv, nw CommandKey | |
| 443 | + a, b, c, x, y, z, s, na, nb, nc, nx, ny, nz, ns CommandKey | |
| 703 | 444 | } |
| 704 | 445 | |
| 705 | 446 | func NewCommandKeyRemap() *CommandKeyRemap { |
| 706 | - return &CommandKeyRemap{CK_a, CK_b, CK_c, CK_x, CK_y, CK_z, CK_s, CK_v, CK_w, | |
| 707 | - CK_na, CK_nb, CK_nc, CK_nx, CK_ny, CK_nz, CK_ns, CK_nv, CK_nw} | |
| 447 | + return &CommandKeyRemap{CK_a, CK_b, CK_c, CK_x, CK_y, CK_z, CK_s, | |
| 448 | + CK_na, CK_nb, CK_nc, CK_nx, CK_ny, CK_nz, CK_ns} | |
| 708 | 449 | } |
| 709 | 450 | |
| 710 | 451 | type CommandBuffer struct { |
| 711 | - Bb, Db, Fb, Ub int32 | |
| 712 | - ab, bb, cb, xb, yb, zb, sb, vb, wb int32 | |
| 713 | - B, D, F, U int8 | |
| 714 | - a, b, c, x, y, z, s, v, w int8 | |
| 452 | + Bb, Db, Fb, Ub int32 | |
| 453 | + ab, bb, cb, xb, yb, zb, sb int32 | |
| 454 | + B, D, F, U int8 | |
| 455 | + a, b, c, x, y, z, s int8 | |
| 715 | 456 | } |
| 716 | 457 | |
| 717 | 458 | func NewCommandBuffer() (c *CommandBuffer) { |
| @@ -721,9 +462,9 @@ func NewCommandBuffer() (c *CommandBuffer) { | ||
| 721 | 462 | } |
| 722 | 463 | func (__ *CommandBuffer) Reset() { |
| 723 | 464 | *__ = CommandBuffer{B: -1, D: -1, F: -1, U: -1, |
| 724 | - a: -1, b: -1, c: -1, x: -1, y: -1, z: -1, s: -1, v: -1, w: -1} | |
| 465 | + a: -1, b: -1, c: -1, x: -1, y: -1, z: -1, s: -1} | |
| 725 | 466 | } |
| 726 | -func (__ *CommandBuffer) Input(B, D, F, U, a, b, c, x, y, z, s, v, w bool) { | |
| 467 | +func (__ *CommandBuffer) Input(B, D, F, U, a, b, c, x, y, z, s bool) { | |
| 727 | 468 | if (B && !F) != (__.B > 0) { |
| 728 | 469 | __.Bb = 0 |
| 729 | 470 | __.B *= -1 |
| @@ -779,16 +520,6 @@ func (__ *CommandBuffer) Input(B, D, F, U, a, b, c, x, y, z, s, v, w bool) { | ||
| 779 | 520 | __.s *= -1 |
| 780 | 521 | } |
| 781 | 522 | __.sb += int32(__.s) |
| 782 | - if v != (__.v > 0) { | |
| 783 | - __.vb = 0 | |
| 784 | - __.v *= -1 | |
| 785 | - } | |
| 786 | - __.vb += int32(__.v) | |
| 787 | - if w != (__.w > 0) { | |
| 788 | - __.wb = 0 | |
| 789 | - __.w *= -1 | |
| 790 | - } | |
| 791 | - __.wb += int32(__.w) | |
| 792 | 523 | } |
| 793 | 524 | func (__ *CommandBuffer) InputBits(ib InputBits, f int32) { |
| 794 | 525 | var B, F bool |
| @@ -798,7 +529,7 @@ func (__ *CommandBuffer) InputBits(ib InputBits, f int32) { | ||
| 798 | 529 | B, F = ib&IB_L != 0, ib&IB_R != 0 |
| 799 | 530 | } |
| 800 | 531 | __.Input(B, ib&IB_D != 0, F, ib&IB_U != 0, ib&IB_A != 0, ib&IB_B != 0, |
| 801 | - ib&IB_C != 0, ib&IB_X != 0, ib&IB_Y != 0, ib&IB_Z != 0, ib&IB_S != 0, ib&IB_V != 0, ib&IB_W != 0) | |
| 532 | + ib&IB_C != 0, ib&IB_X != 0, ib&IB_Y != 0, ib&IB_Z != 0, ib&IB_S != 0) | |
| 802 | 533 | } |
| 803 | 534 | func (__ *CommandBuffer) State(ck CommandKey) int32 { |
| 804 | 535 | switch ck { |
| @@ -848,10 +579,6 @@ func (__ *CommandBuffer) State(ck CommandKey) int32 { | ||
| 848 | 579 | return __.zb |
| 849 | 580 | case CK_s: |
| 850 | 581 | return __.sb |
| 851 | - case CK_v: | |
| 852 | - return __.vb | |
| 853 | - case CK_w: | |
| 854 | - return __.wb | |
| 855 | 582 | case CK_nB: |
| 856 | 583 | return -Min(-Max(__.Db, __.Ub), __.Bb) |
| 857 | 584 | case CK_nD: |
| @@ -898,10 +625,6 @@ func (__ *CommandBuffer) State(ck CommandKey) int32 { | ||
| 898 | 625 | return -__.zb |
| 899 | 626 | case CK_ns: |
| 900 | 627 | return -__.sb |
| 901 | - case CK_nv: | |
| 902 | - return -__.vb | |
| 903 | - case CK_nw: | |
| 904 | - return -__.wb | |
| 905 | 628 | } |
| 906 | 629 | return 0 |
| 907 | 630 | } |
| @@ -982,7 +705,7 @@ func (__ *CommandBuffer) LastDirectionTime() int32 { | ||
| 982 | 705 | } |
| 983 | 706 | func (__ *CommandBuffer) LastChangeTime() int32 { |
| 984 | 707 | return Min(__.LastDirectionTime(), Abs(__.ab), Abs(__.bb), Abs(__.cb), |
| 985 | - Abs(__.xb), Abs(__.yb), Abs(__.zb), Abs(__.sb), Abs(__.vb), Abs(__.wb)) | |
| 708 | + Abs(__.xb), Abs(__.yb), Abs(__.zb), Abs(__.sb)) | |
| 986 | 709 | } |
| 987 | 710 | |
| 988 | 711 | type NetBuffer struct { |
| @@ -1011,7 +734,7 @@ type NetInput struct { | ||
| 1011 | 734 | st NetState |
| 1012 | 735 | sendEnd chan bool |
| 1013 | 736 | recvEnd chan bool |
| 1014 | - buf [MaxSimul*2 + MaxAttachedChar]NetBuffer | |
| 737 | + buf [MaxSimul * 2]NetBuffer | |
| 1015 | 738 | locIn int |
| 1016 | 739 | remIn int |
| 1017 | 740 | time int32 |
| @@ -1329,14 +1052,13 @@ func (fi *FileInput) Update() bool { | ||
| 1329 | 1052 | } |
| 1330 | 1053 | |
| 1331 | 1054 | type AiInput struct { |
| 1332 | - dir, dt, at, bt, ct, xt, yt, zt, st, vt, wt int32 | |
| 1055 | + dir, dt, at, bt, ct, xt, yt, zt, st int32 | |
| 1333 | 1056 | } |
| 1334 | 1057 | |
| 1335 | 1058 | func (__ *AiInput) Update() { |
| 1336 | 1059 | if sys.intro != 0 { |
| 1337 | 1060 | __.dt, __.at, __.bt, __.ct = 0, 0, 0, 0 |
| 1338 | 1061 | __.xt, __.yt, __.zt, __.st = 0, 0, 0, 0 |
| 1339 | - __.vt, __.wt = 0, 0 | |
| 1340 | 1062 | return |
| 1341 | 1063 | } |
| 1342 | 1064 | var osu, hanasu int32 = 15, 60 |
| @@ -1361,8 +1083,6 @@ func (__ *AiInput) Update() { | ||
| 1361 | 1083 | dec(&__.xt) |
| 1362 | 1084 | dec(&__.yt) |
| 1363 | 1085 | dec(&__.zt) |
| 1364 | - dec(&__.vt) | |
| 1365 | - dec(&__.wt) | |
| 1366 | 1086 | osu = 3600 |
| 1367 | 1087 | dec(&__.st) |
| 1368 | 1088 | } |
| @@ -1399,12 +1119,6 @@ func (__ *AiInput) Z() bool { | ||
| 1399 | 1119 | func (__ *AiInput) S() bool { |
| 1400 | 1120 | return __.st != 0 |
| 1401 | 1121 | } |
| 1402 | -func (__ *AiInput) V() bool { | |
| 1403 | - return __.vt != 0 | |
| 1404 | -} | |
| 1405 | -func (__ *AiInput) W() bool { | |
| 1406 | - return __.wt != 0 | |
| 1407 | -} | |
| 1408 | 1122 | |
| 1409 | 1123 | type cmdElem struct { |
| 1410 | 1124 | key []CommandKey |
| @@ -1591,7 +1305,7 @@ func ReadCommand(name, cmdstr string, kr *CommandKeyRemap) (*Command, error) { | ||
| 1591 | 1305 | tilde = false |
| 1592 | 1306 | case 'x': |
| 1593 | 1307 | if tilde { |
| 1594 | - ce.key = append(ce.key, kr.nx) | |
| 1308 | + ce.key = append(ce.key, kr.x) | |
| 1595 | 1309 | } else { |
| 1596 | 1310 | ce.key = append(ce.key, kr.x) |
| 1597 | 1311 | } |
| @@ -1617,20 +1331,6 @@ func ReadCommand(name, cmdstr string, kr *CommandKeyRemap) (*Command, error) { | ||
| 1617 | 1331 | ce.key = append(ce.key, kr.s) |
| 1618 | 1332 | } |
| 1619 | 1333 | tilde = false |
| 1620 | - case 'v': | |
| 1621 | - if tilde { | |
| 1622 | - ce.key = append(ce.key, kr.nv) | |
| 1623 | - } else { | |
| 1624 | - ce.key = append(ce.key, kr.v) | |
| 1625 | - } | |
| 1626 | - tilde = false | |
| 1627 | - case 'w': | |
| 1628 | - if tilde { | |
| 1629 | - ce.key = append(ce.key, kr.nw) | |
| 1630 | - } else { | |
| 1631 | - ce.key = append(ce.key, kr.w) | |
| 1632 | - } | |
| 1633 | - tilde = false | |
| 1634 | 1334 | case '$': |
| 1635 | 1335 | switch nextChar() { |
| 1636 | 1336 | case 'B': |
| @@ -1916,7 +1616,7 @@ func (cl *CommandList) Input(i int, facing int32) bool { | ||
| 1916 | 1616 | _else = true |
| 1917 | 1617 | } |
| 1918 | 1618 | if _else { |
| 1919 | - var l, r, u, d, a, b, c, x, y, z, s, v, w bool | |
| 1619 | + var l, r, u, d, a, b, c, x, y, z, s bool | |
| 1920 | 1620 | if i < 0 { |
| 1921 | 1621 | i = ^i |
| 1922 | 1622 | if i < len(sys.aiInput) { |
| @@ -1931,14 +1631,12 @@ func (cl *CommandList) Input(i int, facing int32) bool { | ||
| 1931 | 1631 | y = sys.aiInput[i].Y() |
| 1932 | 1632 | z = sys.aiInput[i].Z() |
| 1933 | 1633 | s = sys.aiInput[i].S() |
| 1934 | - v = sys.aiInput[i].V() | |
| 1935 | - w = sys.aiInput[i].W() | |
| 1936 | 1634 | } |
| 1937 | 1635 | } else if i < len(sys.inputRemap) { |
| 1938 | 1636 | in := sys.inputRemap[i] |
| 1939 | 1637 | if in < len(sys.keyConfig) { |
| 1940 | 1638 | joy := sys.keyConfig[in].Joy |
| 1941 | - if joy == -1 { | |
| 1639 | + if joy >= -1 { | |
| 1942 | 1640 | l = sys.keyConfig[in].L() |
| 1943 | 1641 | r = sys.keyConfig[in].R() |
| 1944 | 1642 | u = sys.keyConfig[in].U() |
| @@ -1950,52 +1648,6 @@ func (cl *CommandList) Input(i int, facing int32) bool { | ||
| 1950 | 1648 | y = sys.keyConfig[in].Y() |
| 1951 | 1649 | z = sys.keyConfig[in].Z() |
| 1952 | 1650 | s = sys.keyConfig[in].S() |
| 1953 | - v = sys.keyConfig[in].V() | |
| 1954 | - w = sys.keyConfig[in].W() | |
| 1955 | - } | |
| 1956 | - } | |
| 1957 | - if in < len(sys.JoystickConfig) { | |
| 1958 | - joyS := sys.JoystickConfig[in].Joy | |
| 1959 | - if joyS >= 0 { | |
| 1960 | - if l == false { | |
| 1961 | - l = sys.JoystickConfig[in].L() | |
| 1962 | - } | |
| 1963 | - if r == false { | |
| 1964 | - r = sys.JoystickConfig[in].R() | |
| 1965 | - } | |
| 1966 | - if u == false { | |
| 1967 | - u = sys.JoystickConfig[in].U() | |
| 1968 | - } | |
| 1969 | - if d == false { | |
| 1970 | - d = sys.JoystickConfig[in].D() | |
| 1971 | - } | |
| 1972 | - if a == false { | |
| 1973 | - a = sys.JoystickConfig[in].A() | |
| 1974 | - } | |
| 1975 | - if b == false { | |
| 1976 | - b = sys.JoystickConfig[in].B() | |
| 1977 | - } | |
| 1978 | - if c == false { | |
| 1979 | - c = sys.JoystickConfig[in].C() | |
| 1980 | - } | |
| 1981 | - if x == false { | |
| 1982 | - x = sys.JoystickConfig[in].X() | |
| 1983 | - } | |
| 1984 | - if y == false { | |
| 1985 | - y = sys.JoystickConfig[in].Y() | |
| 1986 | - } | |
| 1987 | - if z == false { | |
| 1988 | - z = sys.JoystickConfig[in].Z() | |
| 1989 | - } | |
| 1990 | - if s == false { | |
| 1991 | - s = sys.JoystickConfig[in].S() | |
| 1992 | - } | |
| 1993 | - if v == false { | |
| 1994 | - v = sys.JoystickConfig[in].V() | |
| 1995 | - } | |
| 1996 | - if w == false { | |
| 1997 | - w = sys.JoystickConfig[in].W() | |
| 1998 | - } | |
| 1999 | 1651 | } |
| 2000 | 1652 | } |
| 2001 | 1653 | } |
| @@ -2005,7 +1657,7 @@ func (cl *CommandList) Input(i int, facing int32) bool { | ||
| 2005 | 1657 | } else { |
| 2006 | 1658 | B, F = l, r |
| 2007 | 1659 | } |
| 2008 | - cl.Buffer.Input(B, d, F, u, a, b, c, x, y, z, s, v, w) | |
| 1660 | + cl.Buffer.Input(B, d, F, u, a, b, c, x, y, z, s) | |
| 2009 | 1661 | } |
| 2010 | 1662 | return step |
| 2011 | 1663 | } |
| @@ -268,12 +268,10 @@ type LifeBarFace struct { | ||
| 268 | 268 | teammate_face []*Sprite |
| 269 | 269 | teammate_face_lay Layout |
| 270 | 270 | numko int32 |
| 271 | - scale float32 | |
| 272 | - teammate_scale []float32 | |
| 273 | 271 | } |
| 274 | 272 | |
| 275 | 273 | func newLifeBarFace() *LifeBarFace { |
| 276 | - return &LifeBarFace{face_spr: [2]int32{-1}, teammate_face_spr: [2]int32{-1}, scale: 1} | |
| 274 | + return &LifeBarFace{face_spr: [2]int32{-1}, teammate_face_spr: [2]int32{-1}} | |
| 277 | 275 | } |
| 278 | 276 | func readLifeBarFace(pre string, is IniSection, |
| 279 | 277 | sff *Sff, at AnimationTable) *LifeBarFace { |
| @@ -311,7 +309,7 @@ func (f *LifeBarFace) draw(layerno int16, fx *PalFX, superplayer bool) { | ||
| 311 | 309 | sys.brightness = 256 |
| 312 | 310 | } |
| 313 | 311 | f.face_lay.DrawSprite(float32(f.pos[0]), float32(f.pos[1]), layerno, |
| 314 | - f.face, fx, f.scale) | |
| 312 | + f.face, fx) | |
| 315 | 313 | sys.brightness = ob |
| 316 | 314 | i := int32(len(f.teammate_face)) - 1 |
| 317 | 315 | x := float32(f.teammate_pos[0] + f.teammate_spacing[0]*(i-1)) |
| @@ -319,7 +317,7 @@ func (f *LifeBarFace) draw(layerno int16, fx *PalFX, superplayer bool) { | ||
| 319 | 317 | for ; i >= 0; i-- { |
| 320 | 318 | if i != f.numko { |
| 321 | 319 | f.teammate_bg.Draw(x, y, layerno) |
| 322 | - f.teammate_face_lay.DrawSprite(x, y, layerno, f.teammate_face[i], nil, f.teammate_scale[i]) | |
| 320 | + f.teammate_face_lay.DrawSprite(x, y, layerno, f.teammate_face[i], nil) | |
| 323 | 321 | if i < f.numko { |
| 324 | 322 | f.teammate_ko.Draw(x, y, layerno) |
| 325 | 323 | } |
| @@ -655,7 +653,6 @@ type LifeBarRound struct { | ||
| 655 | 653 | cur int32 |
| 656 | 654 | wt, swt, dt [2]int32 |
| 657 | 655 | fnt []*Fnt |
| 658 | - timerActive bool | |
| 659 | 656 | } |
| 660 | 657 | |
| 661 | 658 | func newLifeBarRound(snd *Snd, fnt []*Fnt) *LifeBarRound { |
| @@ -669,12 +666,7 @@ func readLifeBarRound(is IniSection, | ||
| 669 | 666 | r := newLifeBarRound(snd, fnt) |
| 670 | 667 | var tmp int32 |
| 671 | 668 | is.ReadI32("pos", &r.pos[0], &r.pos[1]) |
| 672 | - tmp = Atoi(sys.cmdFlags["-rounds"]) | |
| 673 | - if tmp > 0 { | |
| 674 | - r.match_wins = tmp | |
| 675 | - } else { | |
| 676 | - is.ReadI32("match.wins", &r.match_wins) | |
| 677 | - } | |
| 669 | + is.ReadI32("match.wins", &r.match_wins) | |
| 678 | 670 | is.ReadI32("match.maxdrawgames", &r.match_maxdrawgames) |
| 679 | 671 | if is.ReadI32("start.waittime", &tmp) { |
| 680 | 672 | r.start_waittime = Max(1, tmp) |
| @@ -720,8 +712,6 @@ func readLifeBarRound(is IniSection, | ||
| 720 | 712 | func (r *LifeBarRound) callFight() { |
| 721 | 713 | r.fight.Reset() |
| 722 | 714 | r.cur, r.wt[0], r.swt[0], r.dt[0] = 1, r.fight_time, r.fight_sndtime, 0 |
| 723 | - sys.timerCount = append(sys.timerCount, sys.gameTime) | |
| 724 | - r.timerActive = true | |
| 725 | 715 | } |
| 726 | 716 | func (r *LifeBarRound) act() bool { |
| 727 | 717 | if sys.intro > r.ctrl_time { |
| @@ -774,14 +764,6 @@ func (r *LifeBarRound) act() bool { | ||
| 774 | 764 | r.wt[0]-- |
| 775 | 765 | } |
| 776 | 766 | } else if r.cur == 2 && (sys.finish != FT_NotYet || sys.time == 0) { |
| 777 | - if r.timerActive { | |
| 778 | - if sys.gameTime-sys.timerCount[sys.round-1] > 0 { | |
| 779 | - sys.timerCount[sys.round-1] = sys.gameTime - sys.timerCount[sys.round-1] | |
| 780 | - } else { | |
| 781 | - sys.timerCount[sys.round-1] = 0 | |
| 782 | - } | |
| 783 | - r.timerActive = false | |
| 784 | - } | |
| 785 | 767 | f := func(ats *AnimTextSnd, t int) { |
| 786 | 768 | if r.swt[t] == 0 { |
| 787 | 769 | r.snd.play(ats.snd) |
| @@ -983,8 +965,6 @@ func loadLifebar(deffile string) (*Lifebar, error) { | ||
| 983 | 965 | } |
| 984 | 966 | } |
| 985 | 967 | } |
| 986 | - case "fonts": | |
| 987 | - is.ReadF32("scale", &sys.lifebarFontScale) | |
| 988 | 968 | case "lifebar": |
| 989 | 969 | if l.hb[0][0] == nil { |
| 990 | 970 | l.hb[0][0] = readHealthBar("p1.", is, sff, at) |
| @@ -1189,8 +1169,12 @@ func (l *Lifebar) draw(layerno int16) { | ||
| 1189 | 1169 | l.pb[i].bgDraw(layerno) |
| 1190 | 1170 | } |
| 1191 | 1171 | for i := range l.pb { |
| 1172 | + lvi := i | |
| 1173 | + if sys.tmode[i] == TM_Simul { | |
| 1174 | + lvi += 2 | |
| 1175 | + } | |
| 1192 | 1176 | l.pb[i].draw(layerno, float32(sys.chars[i][0].power)/ |
| 1193 | - float32(sys.chars[i][0].powerMax), sys.chars[i][0].power/1000, | |
| 1177 | + float32(sys.chars[i][0].powerMax), sys.chars[lvi][0].power/1000, | |
| 1194 | 1178 | l.fnt[:]) |
| 1195 | 1179 | } |
| 1196 | 1180 | for ti, tm := range sys.tmode { |
| @@ -2,16 +2,12 @@ package main | ||
| 2 | 2 | |
| 3 | 3 | import ( |
| 4 | 4 | "encoding/json" |
| 5 | - "fmt" | |
| 5 | + "github.com/go-gl/glfw/v3.2/glfw" | |
| 6 | + "github.com/yuin/gopher-lua" | |
| 6 | 7 | "io/ioutil" |
| 7 | 8 | "os" |
| 8 | - "regexp" | |
| 9 | 9 | "runtime" |
| 10 | - "strconv" | |
| 11 | 10 | "strings" |
| 12 | - | |
| 13 | - "github.com/go-gl/glfw/v3.2/glfw" | |
| 14 | - "github.com/yuin/gopher-lua" | |
| 15 | 11 | ) |
| 16 | 12 | |
| 17 | 13 | func init() { |
| @@ -22,111 +18,39 @@ func chk(err error) { | ||
| 22 | 18 | panic(err) |
| 23 | 19 | } |
| 24 | 20 | } |
| 25 | -func createLog(p string) *os.File { | |
| 26 | - //fmt.Println("Creating log") | |
| 27 | - f, err := os.Create(p) | |
| 28 | - if err != nil { | |
| 29 | - panic(err) | |
| 30 | - } | |
| 31 | - return f | |
| 32 | -} | |
| 33 | -func closeLog(f *os.File) { | |
| 34 | - //fmt.Println("Closing log") | |
| 35 | - f.Close() | |
| 36 | -} | |
| 37 | 21 | func main() { |
| 38 | - if len(os.Args[1:]) > 0 { | |
| 39 | - sys.cmdFlags = make(map[string]string) | |
| 40 | - key := "" | |
| 41 | - player := 1 | |
| 42 | - for _, a := range os.Args[1:] { | |
| 43 | - match, _ := regexp.MatchString("^-", a) | |
| 44 | - if match { | |
| 45 | - help, _ := regexp.MatchString("^-[h%?]", a) | |
| 46 | - if help { | |
| 47 | - fmt.Println("I.K.E.M.E.N\nOptions (case sensitive):") | |
| 48 | - fmt.Println(" -h -? Help") | |
| 49 | - fmt.Println(" -log <logfile> Records match data to <logfile>") | |
| 50 | - fmt.Println(" -r <sysfile> Loads motif <sysfile>. eg. -r motifdir or -r motifdir/system.def") | |
| 51 | - fmt.Println("\nQuick VS Options:") | |
| 52 | - fmt.Println(" -p<n> <playername> Loads player n, eg. -p3 kfm") | |
| 53 | - fmt.Println(" -p<n>.ai <level> Set player n's AI to <level>, eg. -p1.ai 8") | |
| 54 | - fmt.Println(" -p<n>.color <col> Set player n's color to <col>") | |
| 55 | - fmt.Println(" -p<n>.life <life> Sets player n's life to <life>") | |
| 56 | - fmt.Println(" -p<n>.power <power> Sets player n's power to <power>") | |
| 57 | - fmt.Println(" -rounds <num> Plays for <num> rounds, and then quits") | |
| 58 | - fmt.Println(" -s <stagename> Loads stage <stagename>") | |
| 59 | - fmt.Println("\nPress ENTER to exit.") | |
| 60 | - var s string | |
| 61 | - fmt.Scanln(&s) | |
| 62 | - os.Exit(0) | |
| 63 | - } | |
| 64 | - sys.cmdFlags[a] = "" | |
| 65 | - key = a | |
| 66 | - } else if key == "" { | |
| 67 | - sys.cmdFlags[fmt.Sprintf("-p%v", player)] = a | |
| 68 | - player += 1 | |
| 69 | - } else { | |
| 70 | - sys.cmdFlags[key] = a | |
| 71 | - key = "" | |
| 72 | - } | |
| 73 | - } | |
| 74 | - } | |
| 75 | 22 | chk(glfw.Init()) |
| 76 | 23 | defer glfw.Terminate() |
| 77 | 24 | defcfg := []byte(strings.Join(strings.Split(`{ |
| 78 | - "HelperMax":56, | |
| 79 | - "PlayerProjectileMax":256, | |
| 80 | - "ExplodMax":512, | |
| 81 | - "AfterImageMax":128, | |
| 82 | - "Attack.LifeToPowerMul":0.7, | |
| 83 | - "GetHit.LifeToPowerMul":0.6, | |
| 84 | - "Width":640, | |
| 85 | - "Height":480, | |
| 86 | - "Super.TargetDefenceMul":1.5, | |
| 87 | - "LifebarFontScale":1, | |
| 88 | - "System":"script/main.lua", | |
| 89 | - "KeyConfig":[{ | |
| 90 | - "Joystick":-1, | |
| 91 | - "Buttons":["UP","DOWN","LEFT","RIGHT","z","x","c","a","s","d","RETURN","q","w"] | |
| 92 | - },{ | |
| 93 | - "Joystick":-1, | |
| 94 | - "Buttons":["t","g","f","h","j","k","l","u","i","o","RSHIFT","LEFTBRACKET","RIGHTBRACKET"] | |
| 95 | - }], | |
| 96 | - "JoystickConfig":[{ | |
| 97 | - "Joystick":0, | |
| 98 | - "Buttons":["-7","-8","-5","-6","0","1","4","2","3","5","7","6","8"] | |
| 99 | - },{ | |
| 100 | - "Joystick":1, | |
| 101 | - "Buttons":["-7","-8","-5","-6","0","1","4","2","3","5","7","6","8"] | |
| 102 | - }], | |
| 103 | - "Motif":"data/system.def", | |
| 104 | - "CommonAir":"data/common.air", | |
| 105 | - "CommonCmd":"data/common.cmd", | |
| 106 | - "SimulMode":true, | |
| 107 | - "LifeMul":100, | |
| 108 | - "Team1VS2Life":120, | |
| 109 | - "TurnsRecoveryRate":300, | |
| 110 | - "ZoomActive":true, | |
| 111 | - "ZoomMin":0.75, | |
| 112 | - "ZoomMax":1.1, | |
| 113 | - "ZoomSpeed":1, | |
| 114 | - "RoundTime":99, | |
| 115 | - "NumTurns":4, | |
| 116 | - "NumSimul":4, | |
| 117 | - "NumTag":4, | |
| 118 | - "Difficulty":8, | |
| 119 | - "Credits":10, | |
| 120 | - "ListenPort":7500, | |
| 121 | - "ContSelection":true, | |
| 122 | - "AIRandomColor":true, | |
| 123 | - "AIRamping":true, | |
| 124 | - "AutoGuard":false, | |
| 125 | - "TeamPowerShare":false, | |
| 126 | - "TeamLifeShare":false, | |
| 127 | - "Fullscreen":false, | |
| 128 | - "AllowDebugKeys":true, | |
| 129 | - "IP":{ | |
| 25 | + "HelperMax": 56, | |
| 26 | + "PlayerProjectileMax": 50, | |
| 27 | + "ExplodMax": 256, | |
| 28 | + "AfterImageMax": 8, | |
| 29 | + "Attack.LifeToPowerMul": 0.7, | |
| 30 | + "GetHit.LifeToPowerMul": 0.6, | |
| 31 | + "Width": 640, | |
| 32 | + "Height": 480, | |
| 33 | + "Super.TargetDefenceMul": 1.5, | |
| 34 | + "LifebarFontScale": 0.5, | |
| 35 | + "System": "script/main.lua", | |
| 36 | + "KeyConfig": [ | |
| 37 | + { | |
| 38 | + "Joystick": -1, | |
| 39 | + "Buttons": ["UP", "DOWN", "LEFT", "RIGHT", | |
| 40 | + "z", "x", "c", "a", "s", "d", | |
| 41 | + "RETURN"] | |
| 42 | + } | |
| 43 | + ], | |
| 44 | + "_comment": { | |
| 45 | + "_comment": "ジョイスティック (0番) の場合の KeyConfig", | |
| 46 | + "KeyConfig": [ | |
| 47 | + { | |
| 48 | + "Joystick": 0, | |
| 49 | + "Buttons": [-3, -4, -1, -2, | |
| 50 | + 1, 2, 7, 0, 3, 5, | |
| 51 | + 9] | |
| 52 | + } | |
| 53 | + ] | |
| 130 | 54 | } |
| 131 | 55 | } |
| 132 | 56 | `, "\n"), "\r\n")) |
| @@ -146,21 +70,9 @@ func main() { | ||
| 146 | 70 | Joystick int |
| 147 | 71 | Buttons []interface{} |
| 148 | 72 | } |
| 149 | - JoystickConfig []struct { | |
| 150 | - Joystick int | |
| 151 | - Buttons []interface{} | |
| 152 | - } | |
| 153 | - NumTag int | |
| 154 | - TeamLifeShare bool | |
| 155 | - AIRandomColor bool | |
| 156 | - Fullscreen bool | |
| 157 | - AllowDebugKeys bool | |
| 158 | - CommonAir string | |
| 159 | - CommonCmd string | |
| 160 | - QuickLaunch bool | |
| 161 | 73 | }{} |
| 162 | 74 | chk(json.Unmarshal(defcfg, &tmp)) |
| 163 | - const configFile = "data/config.json" | |
| 75 | + const configFile = "script/config.json" | |
| 164 | 76 | if bytes, err := ioutil.ReadFile(configFile); err != nil { |
| 165 | 77 | f, err := os.Create(configFile) |
| 166 | 78 | chk(err) |
| @@ -181,59 +93,29 @@ func main() { | ||
| 181 | 93 | sys.getHit_LifeToPowerMul = tmp.GetHit_LifeToPowerMul |
| 182 | 94 | sys.super_TargetDefenceMul = tmp.Super_TargetDefenceMul |
| 183 | 95 | sys.lifebarFontScale = tmp.LifebarFontScale |
| 184 | - sys.quickLaunch = tmp.QuickLaunch | |
| 185 | 96 | stoki := func(key string) int { |
| 186 | 97 | return int(StringToKey(key)) |
| 187 | 98 | } |
| 188 | - Atoi := func(key string) int { | |
| 189 | - var i int | |
| 190 | - i, _ = strconv.Atoi(key) | |
| 191 | - return i | |
| 192 | - } | |
| 193 | - for a := 0; a < tmp.NumTag; a++ { | |
| 194 | - for _, kc := range tmp.KeyConfig { | |
| 195 | - b := kc.Buttons | |
| 196 | - if kc.Joystick < 0 { | |
| 197 | - sys.keyConfig = append(sys.keyConfig, KeyConfig{kc.Joystick, | |
| 198 | - stoki(b[0].(string)), stoki(b[1].(string)), | |
| 199 | - stoki(b[2].(string)), stoki(b[3].(string)), | |
| 200 | - stoki(b[4].(string)), stoki(b[5].(string)), stoki(b[6].(string)), | |
| 201 | - stoki(b[7].(string)), stoki(b[8].(string)), stoki(b[9].(string)), | |
| 202 | - stoki(b[10].(string)), stoki(b[11].(string)), stoki(b[12].(string))}) | |
| 203 | - } | |
| 99 | + for _, kc := range tmp.KeyConfig { | |
| 100 | + b := kc.Buttons | |
| 101 | + if kc.Joystick >= 0 { | |
| 102 | + sys.keyConfig = append(sys.keyConfig, KeyConfig{kc.Joystick, | |
| 103 | + int(b[0].(float64)), int(b[1].(float64)), | |
| 104 | + int(b[2].(float64)), int(b[3].(float64)), | |
| 105 | + int(b[4].(float64)), int(b[5].(float64)), int(b[6].(float64)), | |
| 106 | + int(b[7].(float64)), int(b[8].(float64)), int(b[9].(float64)), | |
| 107 | + int(b[10].(float64))}) | |
| 108 | + } else { | |
| 109 | + sys.keyConfig = append(sys.keyConfig, KeyConfig{kc.Joystick, | |
| 110 | + stoki(b[0].(string)), stoki(b[1].(string)), | |
| 111 | + stoki(b[2].(string)), stoki(b[3].(string)), | |
| 112 | + stoki(b[4].(string)), stoki(b[5].(string)), stoki(b[6].(string)), | |
| 113 | + stoki(b[7].(string)), stoki(b[8].(string)), stoki(b[9].(string)), | |
| 114 | + stoki(b[10].(string))}) | |
| 204 | 115 | } |
| 205 | - for _, jc := range tmp.JoystickConfig { | |
| 206 | - b := jc.Buttons | |
| 207 | - if jc.Joystick >= 0 { | |
| 208 | - sys.JoystickConfig = append(sys.JoystickConfig, KeyConfig{jc.Joystick, | |
| 209 | - Atoi(b[0].(string)), Atoi(b[1].(string)), | |
| 210 | - Atoi(b[2].(string)), Atoi(b[3].(string)), | |
| 211 | - Atoi(b[4].(string)), Atoi(b[5].(string)), Atoi(b[6].(string)), | |
| 212 | - Atoi(b[7].(string)), Atoi(b[8].(string)), Atoi(b[9].(string)), | |
| 213 | - Atoi(b[10].(string)), Atoi(b[11].(string)), Atoi(b[12].(string))}) | |
| 214 | - } | |
| 215 | - } | |
| 216 | - } | |
| 217 | - sys.teamLifeShare = tmp.TeamLifeShare | |
| 218 | - sys.fullscreen = tmp.Fullscreen | |
| 219 | - sys.aiRandomColor = tmp.AIRandomColor | |
| 220 | - sys.allowDebugKeys = tmp.AllowDebugKeys | |
| 221 | - air, err := ioutil.ReadFile(tmp.CommonAir) | |
| 222 | - if err != nil { | |
| 223 | - fmt.Print(err) | |
| 224 | - } | |
| 225 | - sys.commonAir = string("\n") + string(air) | |
| 226 | - cmd, err := ioutil.ReadFile(tmp.CommonCmd) | |
| 227 | - if err != nil { | |
| 228 | - fmt.Print(err) | |
| 229 | 116 | } |
| 230 | - sys.commonCmd = string("\n") + string(cmd) | |
| 231 | - os.Mkdir("debug", os.ModeSticky|0755) | |
| 232 | - log := createLog("debug/log.txt") | |
| 233 | - defer closeLog(log) | |
| 234 | 117 | l := sys.init(tmp.Width, tmp.Height) |
| 235 | 118 | if err := l.DoFile(tmp.System); err != nil { |
| 236 | - fmt.Fprintln(log, err) | |
| 237 | 119 | switch err.(type) { |
| 238 | 120 | case *lua.ApiError: |
| 239 | 121 | errstr := strings.Split(err.Error(), "\n")[0] |
| @@ -1,14 +1,14 @@ | ||
| 1 | 1 | package main |
| 2 | 2 | |
| 3 | 3 | import ( |
| 4 | - "unsafe" | |
| 5 | - | |
| 6 | 4 | "github.com/go-gl/gl/v2.1/gl" |
| 5 | + "math" | |
| 6 | + "unsafe" | |
| 7 | 7 | ) |
| 8 | 8 | |
| 9 | 9 | var notiling = [4]int32{0, 0, 0, 0} |
| 10 | 10 | var mugenShader uintptr |
| 11 | -var uniformA, uniformPal, uniformMsk, uniformPalNeg, uniformPalGray, uniformPalAdd, uniformPalMul int32 | |
| 11 | +var uniformA, uniformPal, uniformMsk int32 | |
| 12 | 12 | var mugenShaderFc uintptr |
| 13 | 13 | var uniformFcA, uniformNeg, uniformGray, uniformAdd, uniformMul int32 |
| 14 | 14 | var mugenShaderFcS uintptr |
| @@ -23,20 +23,12 @@ func RenderInit() { | ||
| 23 | 23 | "uniform sampler2D tex;" + |
| 24 | 24 | "uniform sampler1D pal;" + |
| 25 | 25 | "uniform int msk;" + |
| 26 | - "uniform bool neg;" + | |
| 27 | - "uniform float gray;" + | |
| 28 | - "uniform vec3 add;" + | |
| 29 | - "uniform vec3 mul;" + | |
| 30 | 26 | "void main(void){" + |
| 31 | 27 | "float r = texture2D(tex, gl_TexCoord[0].st).r;" + |
| 32 | - "if(int(255.25*r) == msk){" + | |
| 33 | - " gl_FragColor = vec4(0.0);" + | |
| 34 | - "}else{" + | |
| 35 | - " vec4 c = texture1D(pal, r*0.9961);" + | |
| 36 | - " if(neg) c.rgb = vec3(1.0) - c.rgb;" + | |
| 37 | - " c.rgb += (vec3((c.r + c.g + c.b) / 3.0) - c.rgb) * gray + add;" + | |
| 38 | - " gl_FragColor = vec4(c.rgb * mul, c.a * a);" + | |
| 39 | - "}" + | |
| 28 | + "vec4 c;" + | |
| 29 | + "gl_FragColor =" + | |
| 30 | + "int(255.0*r) == msk ? vec4(0.0)" + | |
| 31 | + ": (c = texture1D(pal, r*0.9961), vec4(c.rgb, a));" + | |
| 40 | 32 | "}\x00" |
| 41 | 33 | fragShaderFc := "uniform float a;" + |
| 42 | 34 | "uniform sampler2D tex;" + |
| @@ -104,10 +96,6 @@ func RenderInit() { | ||
| 104 | 96 | uniformA = gl.GetUniformLocationARB(mugenShader, gl.Str("a\x00")) |
| 105 | 97 | uniformPal = gl.GetUniformLocationARB(mugenShader, gl.Str("pal\x00")) |
| 106 | 98 | uniformMsk = gl.GetUniformLocationARB(mugenShader, gl.Str("msk\x00")) |
| 107 | - uniformPalNeg = gl.GetUniformLocationARB(mugenShader, gl.Str("neg\x00")) | |
| 108 | - uniformPalGray = gl.GetUniformLocationARB(mugenShader, gl.Str("gray\x00")) | |
| 109 | - uniformPalAdd = gl.GetUniformLocationARB(mugenShader, gl.Str("add\x00")) | |
| 110 | - uniformPalMul = gl.GetUniformLocationARB(mugenShader, gl.Str("mul\x00")) | |
| 111 | 99 | gl.DeleteObjectARB(fragObj) |
| 112 | 100 | fragObj = compile(gl.FRAGMENT_SHADER, fragShaderFc) |
| 113 | 101 | mugenShaderFc = link(vertObj, fragObj) |
| @@ -124,7 +112,28 @@ func RenderInit() { | ||
| 124 | 112 | gl.DeleteObjectARB(fragObj) |
| 125 | 113 | gl.DeleteObjectARB(vertObj) |
| 126 | 114 | } |
| 127 | -func drawQuads(x1, y1, x2, y2, x3, y3, x4, y4, pers float32) { | |
| 115 | +func kaiten(x, y *float32, angle float64, rcx, rcy, vscl float32) { | |
| 116 | + temp := (*y - rcy) / vscl | |
| 117 | + length := math.Sqrt(float64((*x-rcx)*(*x-rcx) + temp*temp)) | |
| 118 | + if *x-rcx == 0 { | |
| 119 | + if *y-rcy > 0 { | |
| 120 | + angle += math.Pi / 2 | |
| 121 | + } else { | |
| 122 | + angle -= math.Pi / 2 | |
| 123 | + } | |
| 124 | + *x = rcx + float32(length*math.Cos(angle)) | |
| 125 | + *y = rcy + float32(length*math.Sin(angle))*vscl | |
| 126 | + return | |
| 127 | + } | |
| 128 | + kakudo := math.Atan(float64(temp/(*x-rcx))) + angle | |
| 129 | + if *x-rcx < 0 { | |
| 130 | + kakudo += math.Pi | |
| 131 | + } | |
| 132 | + *x = rcx + float32(length*math.Cos(kakudo)) | |
| 133 | + *y = rcy + float32(length*math.Sin(kakudo))*vscl | |
| 134 | +} | |
| 135 | +func drawQuads(x1, y1, x2, y2, x3, y3, x4, y4, r, g, b, a, pers float32) { | |
| 136 | + gl.Color4f(r, g, b, a) | |
| 128 | 137 | gl.Begin(gl.TRIANGLE_STRIP) |
| 129 | 138 | gl.TexCoord2f(0, 1) |
| 130 | 139 | gl.Vertex2f(x1, y1) |
| @@ -149,7 +158,7 @@ func drawQuads(x1, y1, x2, y2, x3, y3, x4, y4, pers float32) { | ||
| 149 | 158 | gl.End() |
| 150 | 159 | } |
| 151 | 160 | func rmTileHSub(x1, y1, x2, y2, x3, y3, x4, y4, xtw, xbw, xts, xbs float32, |
| 152 | - tl *[4]int32, rcx, pers float32) { | |
| 161 | + tl *[4]int32, rcx, r, g, b, a, pers float32) { | |
| 153 | 162 | topdist := xtw + xts*float32((*tl)[0]) |
| 154 | 163 | if AbsF(topdist) >= 0.01 { |
| 155 | 164 | botdist := xbw + xbs*float32((*tl)[0]) |
| @@ -176,7 +185,7 @@ func rmTileHSub(x1, y1, x2, y2, x3, y3, x4, y4, xtw, xbw, xts, xbs float32, | ||
| 176 | 185 | (x1d < float32(sys.scrrect[2]) || x2d < float32(sys.scrrect[2])) || |
| 177 | 186 | (0 < x3d || 0 < x4d) && |
| 178 | 187 | (x3d < float32(sys.scrrect[2]) || x4d < float32(sys.scrrect[2])) { |
| 179 | - drawQuads(x1d, y1, x2d, y2, x3d, y3, x4d, y4, pers) | |
| 188 | + drawQuads(x1d, y1, x2d, y2, x3d, y3, x4d, y4, r, g, b, a, pers) | |
| 180 | 189 | } |
| 181 | 190 | } |
| 182 | 191 | } |
| @@ -195,7 +204,7 @@ func rmTileHSub(x1, y1, x2, y2, x3, y3, x4, y4, xtw, xbw, xts, xbs float32, | ||
| 195 | 204 | (x1 < float32(sys.scrrect[2]) || x2 < float32(sys.scrrect[2])) || |
| 196 | 205 | (0 < x3 || 0 < x4) && |
| 197 | 206 | (x3 < float32(sys.scrrect[2]) || x4 < float32(sys.scrrect[2])) { |
| 198 | - drawQuads(x1, y1, x2, y2, x3, y3, x4, y4, pers) | |
| 207 | + drawQuads(x1, y1, x2, y2, x3, y3, x4, y4, r, g, b, a, pers) | |
| 199 | 208 | } |
| 200 | 209 | if (*tl)[2] != 1 && n != 0 { |
| 201 | 210 | n-- |
| @@ -210,7 +219,7 @@ func rmTileHSub(x1, y1, x2, y2, x3, y3, x4, y4, xtw, xbw, xts, xbs float32, | ||
| 210 | 219 | } |
| 211 | 220 | } |
| 212 | 221 | func rmTileSub(w, h uint16, x, y float32, tl *[4]int32, |
| 213 | - xts, xbs, ys, vs, rxadd, agl, yagl, xagl, rcx, rcy float32) { | |
| 222 | + xts, xbs, ys, vs, rxadd, agl, rcx, rcy, r, g, b, a float32) { | |
| 214 | 223 | x1, y1 := x+rxadd*ys*float32(h), rcy+((y-ys*float32(h))-rcy)*vs |
| 215 | 224 | x2, y2 := x1+xbs*float32(w), y1 |
| 216 | 225 | x3, y3 := x+xts*float32(w), rcy+(y-rcy)*vs |
| @@ -221,24 +230,12 @@ func rmTileSub(w, h uint16, x, y float32, tl *[4]int32, | ||
| 221 | 230 | } else { |
| 222 | 231 | pers = AbsF(xbs) / AbsF(xts) |
| 223 | 232 | } |
| 224 | - if agl != 0 || yagl != 0 || xagl != 0 { | |
| 225 | - // kaiten(&x1, &y1, float64(agl), rcx, rcy, vs) | |
| 226 | - // kaiten(&x2, &y2, float64(agl), rcx, rcy, vs) | |
| 227 | - // kaiten(&x3, &y3, float64(agl), rcx, rcy, vs) | |
| 228 | - // kaiten(&x4, &y4, float64(agl), rcx, rcy, vs) | |
| 229 | - if vs != 1 { | |
| 230 | - y1 = rcy + ((y - ys*float32(h)) - rcy) | |
| 231 | - y2 = y1 | |
| 232 | - y3 = rcy + (y - rcy) | |
| 233 | - y4 = y3 | |
| 234 | - } | |
| 235 | - gl.Translated(float64(rcx), float64(rcy), 0) | |
| 236 | - gl.Scaled(1, float64(vs), 1) | |
| 237 | - gl.Rotated(float64(xagl), 1.0, 0.0, 0.0) | |
| 238 | - gl.Rotated(float64(-yagl), 0.0, 1.0, 0.0) | |
| 239 | - gl.Rotated(float64(agl), 0.0, 0.0, 1.0) | |
| 240 | - gl.Translated(float64(-rcx), float64(-rcy), 0) | |
| 241 | - drawQuads(x1, y1, x2, y2, x3, y3, x4, y4, pers) | |
| 233 | + if agl != 0 { | |
| 234 | + kaiten(&x1, &y1, float64(agl), rcx, rcy, vs) | |
| 235 | + kaiten(&x2, &y2, float64(agl), rcx, rcy, vs) | |
| 236 | + kaiten(&x3, &y3, float64(agl), rcx, rcy, vs) | |
| 237 | + kaiten(&x4, &y4, float64(agl), rcx, rcy, vs) | |
| 238 | + drawQuads(x1, y1, x2, y2, x3, y3, x4, y4, r, g, b, a, pers) | |
| 242 | 239 | return |
| 243 | 240 | } |
| 244 | 241 | if (*tl)[3] == 1 && xbs != 0 { |
| @@ -264,7 +261,7 @@ func rmTileSub(w, h uint16, x, y float32, tl *[4]int32, | ||
| 264 | 261 | (y1d > float32(-sys.scrrect[3]) || y4d > float32(-sys.scrrect[3])) { |
| 265 | 262 | rmTileHSub(x1d, y1d, x2d, y2d, x3d, y3d, x4d, y4d, x3d-x4d, x2d-x1d, |
| 266 | 263 | (x3d-x4d)/float32(w), (x2d-x1d)/float32(w), tl, |
| 267 | - rcx, pers) | |
| 264 | + rcx, r, g, b, a, pers) | |
| 268 | 265 | } |
| 269 | 266 | } |
| 270 | 267 | } |
| @@ -281,7 +278,7 @@ func rmTileSub(w, h uint16, x, y float32, tl *[4]int32, | ||
| 281 | 278 | if (0 > y1 || 0 > y4) && |
| 282 | 279 | (y1 > float32(-sys.scrrect[3]) || y4 > float32(-sys.scrrect[3])) { |
| 283 | 280 | rmTileHSub(x1, y1, x2, y2, x3, y3, x4, y4, x3-x4, x2-x1, |
| 284 | - (x3-x4)/float32(w), (x2-x1)/float32(w), tl, rcx, pers) | |
| 281 | + (x3-x4)/float32(w), (x2-x1)/float32(w), tl, rcx, r, g, b, a, pers) | |
| 285 | 282 | } |
| 286 | 283 | if (*tl)[3] != 1 && n != 0 { |
| 287 | 284 | n-- |
| @@ -302,12 +299,11 @@ func rmTileSub(w, h uint16, x, y float32, tl *[4]int32, | ||
| 302 | 299 | } |
| 303 | 300 | } |
| 304 | 301 | func rmMainSub(a int32, size [2]uint16, x, y float32, tl *[4]int32, |
| 305 | - xts, xbs, ys, vs, rxadd, agl, yagl, xagl float32, trans int32, rcx, rcy float32, neg bool, color float32, | |
| 306 | - padd, pmul *[3]float32) { | |
| 302 | + xts, xbs, ys, vs, rxadd, agl float32, trans int32, rcx, rcy float32) { | |
| 307 | 303 | gl.MatrixMode(gl.PROJECTION) |
| 308 | 304 | gl.PushMatrix() |
| 309 | 305 | gl.LoadIdentity() |
| 310 | - gl.Ortho(0, float64(sys.scrrect[2]), 0, float64(sys.scrrect[3]), -65535, 65535) | |
| 306 | + gl.Ortho(0, float64(sys.scrrect[2]), 0, float64(sys.scrrect[3]), -1, 1) | |
| 311 | 307 | gl.MatrixMode(gl.MODELVIEW) |
| 312 | 308 | gl.PushMatrix() |
| 313 | 309 | gl.Translated(0, float64(sys.scrrect[3]), 0) |
| @@ -315,50 +311,37 @@ func rmMainSub(a int32, size [2]uint16, x, y float32, tl *[4]int32, | ||
| 315 | 311 | case trans == -1: |
| 316 | 312 | gl.Uniform1fARB(a, 1) |
| 317 | 313 | gl.BlendFunc(gl.SRC_ALPHA, gl.ONE) |
| 318 | - gl.BlendEquation(gl.FUNC_ADD) | |
| 319 | 314 | rmTileSub(size[0], size[1], x, y, tl, xts, xbs, ys, vs, rxadd, |
| 320 | - agl, yagl, xagl, rcx, rcy) | |
| 315 | + agl, rcx, rcy, 1, 1, 1, 1) | |
| 321 | 316 | case trans == -2: |
| 322 | 317 | gl.Uniform1fARB(a, 1) |
| 323 | - gl.BlendFunc(gl.ONE, gl.ONE) | |
| 324 | - gl.BlendEquation(gl.FUNC_REVERSE_SUBTRACT) | |
| 318 | + gl.BlendFunc(gl.ZERO, gl.ONE_MINUS_SRC_COLOR) | |
| 325 | 319 | rmTileSub(size[0], size[1], x, y, tl, xts, xbs, ys, vs, rxadd, |
| 326 | - agl, yagl, xagl, rcx, rcy) | |
| 320 | + agl, rcx, rcy, 1, 1, 1, 1) | |
| 327 | 321 | case trans <= 0: |
| 328 | 322 | case trans < 255: |
| 329 | 323 | gl.Uniform1fARB(a, float32(trans)/255) |
| 330 | 324 | gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA) |
| 331 | - gl.BlendEquation(gl.FUNC_ADD) | |
| 332 | 325 | rmTileSub(size[0], size[1], x, y, tl, xts, xbs, ys, vs, rxadd, |
| 333 | - agl, yagl, xagl, rcx, rcy) | |
| 326 | + agl, rcx, rcy, 1, 1, 1, float32(trans)/255) | |
| 334 | 327 | case trans < 512: |
| 335 | 328 | gl.Uniform1fARB(a, 1) |
| 336 | 329 | gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA) |
| 337 | - gl.BlendEquation(gl.FUNC_ADD) | |
| 338 | 330 | rmTileSub(size[0], size[1], x, y, tl, xts, xbs, ys, vs, rxadd, |
| 339 | - agl, yagl, xagl, rcx, rcy) | |
| 331 | + agl, rcx, rcy, 1, 1, 1, 1) | |
| 340 | 332 | default: |
| 341 | 333 | src, dst := trans&0xff, trans>>10&0xff |
| 342 | - aglOver := 0 | |
| 343 | 334 | if dst < 255 { |
| 344 | 335 | gl.Uniform1fARB(a, 1-float32(dst)/255) |
| 345 | 336 | gl.BlendFunc(gl.ZERO, gl.ONE_MINUS_SRC_ALPHA) |
| 346 | - gl.BlendEquation(gl.FUNC_ADD) | |
| 347 | 337 | rmTileSub(size[0], size[1], x, y, tl, xts, xbs, ys, vs, rxadd, |
| 348 | - agl, yagl, xagl, rcx, rcy) | |
| 349 | - aglOver++ | |
| 338 | + agl, rcx, rcy, 1, 1, 1, 1-float32(trans)/255) | |
| 350 | 339 | } |
| 351 | 340 | if src > 0 { |
| 352 | - if aglOver != 0 { | |
| 353 | - agl = 0 | |
| 354 | - yagl = 0 | |
| 355 | - xagl = 0 | |
| 356 | - } | |
| 357 | 341 | gl.Uniform1fARB(a, float32(src)/255) |
| 358 | 342 | gl.BlendFunc(gl.SRC_ALPHA, gl.ONE) |
| 359 | - gl.BlendEquation(gl.FUNC_ADD) | |
| 360 | 343 | rmTileSub(size[0], size[1], x, y, tl, xts, xbs, ys, vs, rxadd, |
| 361 | - agl, yagl, xagl, rcx, rcy) | |
| 344 | + agl, rcx, rcy, 1, 1, 1, float32(trans)/255) | |
| 362 | 345 | } |
| 363 | 346 | } |
| 364 | 347 | gl.PopMatrix() |
| @@ -366,13 +349,12 @@ func rmMainSub(a int32, size [2]uint16, x, y float32, tl *[4]int32, | ||
| 366 | 349 | gl.PopMatrix() |
| 367 | 350 | } |
| 368 | 351 | func rmInitSub(size [2]uint16, x, y *float32, tile *[4]int32, xts float32, |
| 369 | - ys, vs, agl, yagl, xagl *float32, window *[4]int32, rcx float32, rcy *float32) ( | |
| 352 | + ys, vs, agl *float32, window *[4]int32, rcx float32, rcy *float32) ( | |
| 370 | 353 | tl [4]int32) { |
| 371 | 354 | if *vs < 0 { |
| 372 | 355 | *vs *= -1 |
| 373 | 356 | *ys *= -1 |
| 374 | 357 | *agl *= -1 |
| 375 | - *xagl *= -1 | |
| 376 | 358 | } |
| 377 | 359 | tl = *tile |
| 378 | 360 | if tl[2] == 0 { |
| @@ -401,36 +383,27 @@ func rmInitSub(size [2]uint16, x, y *float32, tile *[4]int32, xts float32, | ||
| 401 | 383 | (*window)[2], (*window)[3]) |
| 402 | 384 | return |
| 403 | 385 | } |
| 404 | -func RenderMugenPal(tex Texture, mask int32, size [2]uint16, | |
| 405 | - x, y float32, tile *[4]int32, xts, xbs, ys, vs, rxadd, agl, yagl, xagl float32, | |
| 406 | - trans int32, window *[4]int32, rcx, rcy float32, neg bool, color float32, | |
| 407 | - padd, pmul *[3]float32) { | |
| 386 | +func RenderMugenPal(tex Texture, paltex uint32, mask int32, size [2]uint16, | |
| 387 | + x, y float32, tile *[4]int32, xts, xbs, ys, vs, rxadd, agl float32, | |
| 388 | + trans int32, window *[4]int32, rcx, rcy float32) { | |
| 408 | 389 | if tex == 0 || !IsFinite(x+y+xts+xbs+ys+vs+rxadd+agl+rcx+rcy) { |
| 409 | 390 | return |
| 410 | 391 | } |
| 411 | - tl := rmInitSub(size, &x, &y, tile, xts, &ys, &vs, &agl, &yagl, &xagl, window, rcx, &rcy) | |
| 412 | - ineg := int32(0) | |
| 413 | - if neg { | |
| 414 | - ineg = 1 | |
| 415 | - } | |
| 392 | + tl := rmInitSub(size, &x, &y, tile, xts, &ys, &vs, &agl, window, rcx, &rcy) | |
| 416 | 393 | gl.UseProgramObjectARB(mugenShader) |
| 417 | 394 | gl.Uniform1iARB(uniformPal, 1) |
| 418 | 395 | gl.Uniform1iARB(uniformMsk, mask) |
| 419 | - gl.Uniform1iARB(uniformPalNeg, ineg) | |
| 420 | - gl.Uniform1fARB(uniformPalGray, 1-color) | |
| 421 | - gl.Uniform3fARB(uniformPalAdd, (*padd)[0], (*padd)[1], (*padd)[2]) | |
| 422 | - gl.Uniform3fARB(uniformPalMul, (*pmul)[0], (*pmul)[1], (*pmul)[2]) | |
| 423 | 396 | gl.ActiveTexture(gl.TEXTURE0) |
| 424 | 397 | gl.BindTexture(gl.TEXTURE_2D, uint32(tex)) |
| 425 | - rmMainSub(uniformA, size, x, y, &tl, xts, xbs, ys, vs, rxadd, agl, yagl, xagl, | |
| 426 | - trans, rcx, rcy, neg, color, padd, pmul) | |
| 398 | + rmMainSub(uniformA, size, x, y, &tl, xts, xbs, ys, vs, rxadd, agl, | |
| 399 | + trans, rcx, rcy) | |
| 427 | 400 | gl.UseProgramObjectARB(0) |
| 428 | 401 | gl.Disable(gl.SCISSOR_TEST) |
| 429 | 402 | gl.Disable(gl.TEXTURE_2D) |
| 430 | 403 | gl.Disable(gl.BLEND) |
| 431 | 404 | } |
| 432 | 405 | func RenderMugen(tex Texture, pal []uint32, mask int32, size [2]uint16, |
| 433 | - x, y float32, tile *[4]int32, xts, xbs, ys, vs, rxadd, agl, yagl, xagl float32, | |
| 406 | + x, y float32, tile *[4]int32, xts, xbs, ys, vs, rxadd, agl float32, | |
| 434 | 407 | trans int32, window *[4]int32, rcx, rcy float32) { |
| 435 | 408 | gl.Enable(gl.TEXTURE_1D) |
| 436 | 409 | gl.ActiveTexture(gl.TEXTURE1) |
| @@ -442,19 +415,19 @@ func RenderMugen(tex Texture, pal []uint32, mask int32, size [2]uint16, | ||
| 442 | 415 | unsafe.Pointer(&pal[0])) |
| 443 | 416 | gl.TexParameteri(gl.TEXTURE_1D, gl.TEXTURE_MAG_FILTER, gl.NEAREST) |
| 444 | 417 | gl.TexParameteri(gl.TEXTURE_1D, gl.TEXTURE_MIN_FILTER, gl.NEAREST) |
| 445 | - RenderMugenPal(tex, mask, size, x, y, tile, xts, xbs, ys, vs, rxadd, | |
| 446 | - agl, yagl, xagl, trans, window, rcx, rcy, false, 1, &[3]float32{0, 0, 0}, &[3]float32{1, 1, 1}) | |
| 418 | + RenderMugenPal(tex, paltex, mask, size, x, y, tile, xts, xbs, ys, vs, rxadd, | |
| 419 | + agl, trans, window, rcx, rcy) | |
| 447 | 420 | gl.DeleteTextures(1, &paltex) |
| 448 | 421 | gl.Disable(gl.TEXTURE_1D) |
| 449 | 422 | } |
| 450 | 423 | func RenderMugenFc(tex Texture, size [2]uint16, x, y float32, |
| 451 | - tile *[4]int32, xts, xbs, ys, vs, rxadd, agl, yagl, xagl float32, trans int32, | |
| 424 | + tile *[4]int32, xts, xbs, ys, vs, rxadd, agl float32, trans int32, | |
| 452 | 425 | window *[4]int32, rcx, rcy float32, neg bool, color float32, |
| 453 | 426 | padd, pmul *[3]float32) { |
| 454 | 427 | if tex == 0 || !IsFinite(x+y+xts+xbs+ys+vs+rxadd+agl+rcx+rcy) { |
| 455 | 428 | return |
| 456 | 429 | } |
| 457 | - tl := rmInitSub(size, &x, &y, tile, xts, &ys, &vs, &agl, &yagl, &xagl, window, rcx, &rcy) | |
| 430 | + tl := rmInitSub(size, &x, &y, tile, xts, &ys, &vs, &agl, window, rcx, &rcy) | |
| 458 | 431 | gl.UseProgramObjectARB(mugenShaderFc) |
| 459 | 432 | ineg := int32(0) |
| 460 | 433 | if neg { |
| @@ -465,27 +438,27 @@ func RenderMugenFc(tex Texture, size [2]uint16, x, y float32, | ||
| 465 | 438 | gl.Uniform3fARB(uniformAdd, (*padd)[0], (*padd)[1], (*padd)[2]) |
| 466 | 439 | gl.Uniform3fARB(uniformMul, (*pmul)[0], (*pmul)[1], (*pmul)[2]) |
| 467 | 440 | gl.BindTexture(gl.TEXTURE_2D, uint32(tex)) |
| 468 | - rmMainSub(uniformFcA, size, x, y, &tl, xts, xbs, ys, vs, rxadd, agl, yagl, xagl, | |
| 469 | - trans, rcx, rcy, neg, color, padd, pmul) | |
| 441 | + rmMainSub(uniformFcA, size, x, y, &tl, xts, xbs, ys, vs, rxadd, agl, | |
| 442 | + trans, rcx, rcy) | |
| 470 | 443 | gl.UseProgramObjectARB(0) |
| 471 | 444 | gl.Disable(gl.SCISSOR_TEST) |
| 472 | 445 | gl.Disable(gl.TEXTURE_2D) |
| 473 | 446 | gl.Disable(gl.BLEND) |
| 474 | 447 | } |
| 475 | 448 | func RenderMugenFcS(tex Texture, size [2]uint16, x, y float32, |
| 476 | - tile *[4]int32, xts, xbs, ys, vs, rxadd, agl, yagl, xagl float32, trans int32, | |
| 449 | + tile *[4]int32, xts, xbs, ys, vs, rxadd, agl float32, trans int32, | |
| 477 | 450 | window *[4]int32, rcx, rcy float32, color uint32) { |
| 478 | 451 | if tex == 0 || !IsFinite(x+y+xts+xbs+ys+vs+rxadd+agl+rcx+rcy) { |
| 479 | 452 | return |
| 480 | 453 | } |
| 481 | - tl := rmInitSub(size, &x, &y, tile, xts, &ys, &vs, &agl, &yagl, &xagl, window, rcx, &rcy) | |
| 454 | + tl := rmInitSub(size, &x, &y, tile, xts, &ys, &vs, &agl, window, rcx, &rcy) | |
| 482 | 455 | gl.UseProgramObjectARB(mugenShaderFcS) |
| 483 | 456 | gl.Uniform3fARB( |
| 484 | 457 | uniformColor, float32(color>>16&0xff)/255, float32(color>>8&0xff)/255, |
| 485 | 458 | float32(color&0xff)/255) |
| 486 | 459 | gl.BindTexture(gl.TEXTURE_2D, uint32(tex)) |
| 487 | - rmMainSub(uniformFcSA, size, x, y, &tl, xts, xbs, ys, vs, rxadd, agl, yagl, xagl, | |
| 488 | - trans, rcx, rcy, false, 1, &[3]float32{0, 0, 0}, &[3]float32{1, 1, 1}) | |
| 460 | + rmMainSub(uniformFcSA, size, x, y, &tl, xts, xbs, ys, vs, rxadd, agl, | |
| 461 | + trans, rcx, rcy) | |
| 489 | 462 | gl.UseProgramObjectARB(0) |
| 490 | 463 | gl.Disable(gl.SCISSOR_TEST) |
| 491 | 464 | gl.Disable(gl.TEXTURE_2D) |
| @@ -508,7 +481,7 @@ func FillRect(rect [4]int32, color uint32, trans int32) { | ||
| 508 | 481 | gl.MatrixMode(gl.PROJECTION) |
| 509 | 482 | gl.PushMatrix() |
| 510 | 483 | gl.LoadIdentity() |
| 511 | - gl.Ortho(0, float64(sys.scrrect[2]), 0, float64(sys.scrrect[3]), -65535, 65535) | |
| 484 | + gl.Ortho(0, float64(sys.scrrect[2]), 0, float64(sys.scrrect[3]), -1, 1) | |
| 512 | 485 | gl.MatrixMode(gl.MODELVIEW) |
| 513 | 486 | gl.PushMatrix() |
| 514 | 487 | gl.Translated(0, float64(sys.scrrect[3]), 0) |
| @@ -2,13 +2,10 @@ package main | ||
| 2 | 2 | |
| 3 | 3 | import ( |
| 4 | 4 | "fmt" |
| 5 | - "math/rand" | |
| 6 | - "runtime" | |
| 7 | - "strconv" | |
| 8 | - "strings" | |
| 9 | - | |
| 10 | 5 | "github.com/go-gl/glfw/v3.2/glfw" |
| 11 | 6 | "github.com/yuin/gopher-lua" |
| 7 | + "runtime" | |
| 8 | + "strings" | |
| 12 | 9 | ) |
| 13 | 10 | |
| 14 | 11 | func luaRegister(l *lua.LState, name string, f func(*lua.LState) int) { |
| @@ -207,7 +204,7 @@ func scriptCommonInit(l *lua.LState) { | ||
| 207 | 204 | }) |
| 208 | 205 | luaRegister(l, "setAutoguard", func(l *lua.LState) int { |
| 209 | 206 | pn := int(numArg(l, 1)) |
| 210 | - if pn < 1 || pn > MaxSimul*2+MaxAttachedChar { | |
| 207 | + if pn < 1 || pn > MaxSimul*2 { | |
| 211 | 208 | l.RaiseError("プレイヤー番号(%v)が不正です。", pn) |
| 212 | 209 | } |
| 213 | 210 | sys.autoguard[pn-1] = boolArg(l, 2) |
| @@ -241,10 +238,6 @@ func scriptCommonInit(l *lua.LState) { | ||
| 241 | 238 | sys.match = int32(numArg(l, 1)) |
| 242 | 239 | return 0 |
| 243 | 240 | }) |
| 244 | - luaRegister(l, "setLifeShare", func(l *lua.LState) int { | |
| 245 | - sys.teamLifeShare = boolArg(l, 1) | |
| 246 | - return 0 | |
| 247 | - }) | |
| 248 | 241 | } |
| 249 | 242 | |
| 250 | 243 | // System Script |
| @@ -349,16 +342,7 @@ func systemScriptInit(l *lua.LState) { | ||
| 349 | 342 | if !ok { |
| 350 | 343 | userDataError(l, 1, a) |
| 351 | 344 | } |
| 352 | - var sx, sy int32 = 0, 0 | |
| 353 | - if l.GetTop() >= 4 { | |
| 354 | - sx = int32(numArg(l, 4)) | |
| 355 | - if l.GetTop() >= 5 { | |
| 356 | - sy = int32(numArg(l, 5)) | |
| 357 | - } else { | |
| 358 | - sy = sx | |
| 359 | - } | |
| 360 | - } | |
| 361 | - a.SetTile(int32(numArg(l, 2)), int32(numArg(l, 3)), sx, sy) | |
| 345 | + a.SetTile(int32(numArg(l, 2)), int32(numArg(l, 3))) | |
| 362 | 346 | return 0 |
| 363 | 347 | }) |
| 364 | 348 | luaRegister(l, "animSetColorKey", func(*lua.LState) int { |
| @@ -410,14 +394,6 @@ func systemScriptInit(l *lua.LState) { | ||
| 410 | 394 | a.Draw() |
| 411 | 395 | return 0 |
| 412 | 396 | }) |
| 413 | - luaRegister(l, "animReset", func(*lua.LState) int { | |
| 414 | - a, ok := toUserData(l, 1).(*Anim) | |
| 415 | - if !ok { | |
| 416 | - userDataError(l, 1, a) | |
| 417 | - } | |
| 418 | - a.ResetFrames() | |
| 419 | - return 0 | |
| 420 | - }) | |
| 421 | 397 | luaRegister(l, "enterNetPlay", func(*lua.LState) int { |
| 422 | 398 | if sys.netInput != nil { |
| 423 | 399 | l.RaiseError("すでに通信中です。") |
| @@ -454,7 +430,7 @@ func systemScriptInit(l *lua.LState) { | ||
| 454 | 430 | }) |
| 455 | 431 | luaRegister(l, "setCom", func(*lua.LState) int { |
| 456 | 432 | pn := int(numArg(l, 1)) |
| 457 | - if pn < 1 || pn > MaxSimul*2+MaxAttachedChar { | |
| 433 | + if pn < 1 || pn > MaxSimul*2 { | |
| 458 | 434 | l.RaiseError("プレイヤー番号(%v)が不正です。", pn) |
| 459 | 435 | } |
| 460 | 436 | sys.com[pn-1] = Max(0, int32(numArg(l, 2))) |
| @@ -617,11 +593,7 @@ func systemScriptInit(l *lua.LState) { | ||
| 617 | 593 | if !sys.frameSkip { |
| 618 | 594 | c := sys.sel.GetChar(n) |
| 619 | 595 | if c != nil && c.lportrait != nil { |
| 620 | - if c.portrait_scale != 1 { | |
| 621 | - xscl *= c.portrait_scale | |
| 622 | - yscl *= c.portrait_scale | |
| 623 | - } | |
| 624 | - c.lportrait.Draw(x, y, xscl, yscl, c.lportrait.Pal, nil) | |
| 596 | + c.lportrait.Draw(x, y, xscl, yscl, c.lportrait.Pal) | |
| 625 | 597 | } |
| 626 | 598 | } |
| 627 | 599 | return 0 |
| @@ -640,12 +612,12 @@ func systemScriptInit(l *lua.LState) { | ||
| 640 | 612 | if c != nil { |
| 641 | 613 | if c.sportrait != nil { |
| 642 | 614 | c.sportrait.Draw(x+float32(i)*sys.sel.cellsize[0], |
| 643 | - y+float32(j)*sys.sel.cellsize[1], sys.sel.cellscale[0]*c.portrait_scale, | |
| 644 | - sys.sel.cellscale[1]*c.portrait_scale, c.sportrait.Pal, nil) | |
| 615 | + y+float32(j)*sys.sel.cellsize[1], sys.sel.cellscale[0], | |
| 616 | + sys.sel.cellscale[1], c.sportrait.Pal) | |
| 645 | 617 | } else if c.def == "randomselect" && sys.sel.randomspr != nil { |
| 646 | 618 | sys.sel.randomspr.Draw(x+float32(i)*sys.sel.cellsize[0], |
| 647 | 619 | y+float32(j)*sys.sel.cellsize[1], sys.sel.randomscl[0], |
| 648 | - sys.sel.randomscl[1], sys.sel.randomspr.Pal, nil) | |
| 620 | + sys.sel.randomscl[1], sys.sel.randomspr.Pal) | |
| 649 | 621 | } |
| 650 | 622 | } |
| 651 | 623 | } |
| @@ -724,8 +696,6 @@ func systemScriptInit(l *lua.LState) { | ||
| 724 | 696 | return 0 |
| 725 | 697 | }) |
| 726 | 698 | luaRegister(l, "game", func(l *lua.LState) int { |
| 727 | - tbl := l.NewTable() | |
| 728 | - tbl_chars := l.NewTable() | |
| 729 | 699 | load := func() error { |
| 730 | 700 | sys.loader.runTread() |
| 731 | 701 | for sys.loader.state != LS_Complete { |
| @@ -741,10 +711,7 @@ func systemScriptInit(l *lua.LState) { | ||
| 741 | 711 | fa := sys.lifebar.fa[sys.tmode[i&1]][i] |
| 742 | 712 | fa.face = sys.cgi[i].sff.getOwnPalSprite( |
| 743 | 713 | int16(fa.face_spr[0]), int16(fa.face_spr[1])) |
| 744 | - | |
| 745 | - fa.scale = sys.cgi[i].portraitscale | |
| 746 | 714 | } |
| 747 | - | |
| 748 | 715 | } |
| 749 | 716 | runtime.GC() |
| 750 | 717 | return nil |
| @@ -823,29 +790,6 @@ func systemScriptInit(l *lua.LState) { | ||
| 823 | 790 | if w1 != w2 { |
| 824 | 791 | winp = Btoi(w1) + Btoi(w2)*2 |
| 825 | 792 | } |
| 826 | - tbl_roundNo := l.NewTable() | |
| 827 | - for _, p := range sys.chars { | |
| 828 | - if len(p) > 0 { | |
| 829 | - tmp := l.NewTable() | |
| 830 | - tmp.RawSetString("name", lua.LString(p[0].name)) | |
| 831 | - tmp.RawSetString("memberNo", lua.LNumber(p[0].memberNo)) | |
| 832 | - tmp.RawSetString("selectNo", lua.LNumber(p[0].selectNo)) | |
| 833 | - tmp.RawSetString("life", lua.LNumber(p[0].life)) | |
| 834 | - tmp.RawSetString("lifeMax", lua.LNumber(p[0].lifeMax)) | |
| 835 | - tmp.RawSetString("winquote", lua.LNumber(p[0].winquote)) | |
| 836 | - tmp.RawSetString("aiLevel", lua.LNumber(p[0].aiLevel())) | |
| 837 | - tmp.RawSetString("palno", lua.LNumber(p[0].palno())) | |
| 838 | - tmp.RawSetString("win", lua.LBool(p[0].win())) | |
| 839 | - tmp.RawSetString("winKO", lua.LBool(p[0].winKO())) | |
| 840 | - tmp.RawSetString("winTime", lua.LBool(p[0].winTime())) | |
| 841 | - tmp.RawSetString("winPerfect", lua.LBool(p[0].winPerfect())) | |
| 842 | - tmp.RawSetString("drawgame", lua.LBool(p[0].drawgame())) | |
| 843 | - tmp.RawSetString("ko", lua.LBool(p[0].scf(SCF_ko))) | |
| 844 | - tmp.RawSetString("ko_round_middle", lua.LBool(p[0].scf(SCF_ko_round_middle))) | |
| 845 | - tbl_roundNo.RawSetInt(p[0].playerNo+1, tmp) | |
| 846 | - } | |
| 847 | - } | |
| 848 | - tbl_chars.RawSetInt(int(sys.round-1), tbl_roundNo) | |
| 849 | 793 | } |
| 850 | 794 | return winp, nil |
| 851 | 795 | } |
| @@ -872,285 +816,10 @@ func systemScriptInit(l *lua.LState) { | ||
| 872 | 816 | sys.loader.reset() |
| 873 | 817 | } |
| 874 | 818 | if winp != -2 { |
| 875 | - time := int32(0) | |
| 876 | - tbl_time := l.NewTable() | |
| 877 | - for k, v := range sys.timerCount { | |
| 878 | - tbl_time.RawSetInt(k+1, lua.LNumber(v)) | |
| 879 | - time = time + v | |
| 880 | - } | |
| 881 | - tbl.RawSetString("chars", tbl_chars) | |
| 882 | - tbl.RawSetString("time_rounds", tbl_time) | |
| 883 | - tbl.RawSetString("time", lua.LNumber(time)) | |
| 884 | - tbl.RawSetString("roundTime", lua.LNumber(sys.roundTime)) | |
| 885 | - tbl.RawSetString("winTeam", lua.LNumber(sys.winTeam)) | |
| 886 | - tbl.RawSetString("lastRound", lua.LNumber(sys.round-1)) | |
| 887 | - tbl.RawSetString("draws", lua.LNumber(sys.draws)) | |
| 888 | - tbl.RawSetString("P1wins", lua.LNumber(sys.wins[0])) | |
| 889 | - tbl.RawSetString("P2wins", lua.LNumber(sys.wins[1])) | |
| 890 | - tbl.RawSetString("P1tmode", lua.LNumber(sys.tmode[0])) | |
| 891 | - tbl.RawSetString("P2tmode", lua.LNumber(sys.tmode[1])) | |
| 892 | - sys.timerCount = []int32{} | |
| 893 | 819 | l.Push(lua.LNumber(winp)) |
| 894 | - l.Push(tbl) | |
| 895 | - return 2 | |
| 896 | - } | |
| 897 | - } | |
| 898 | - }) | |
| 899 | - luaRegister(l, "getCharVar", func(*lua.LState) int { | |
| 900 | - for _, p := range sys.chars { | |
| 901 | - if len(p) > 0 && p[0].playerNo+1 == int(numArg(l, 1)) { | |
| 902 | - if strArg(l, 2) == "varGet" { | |
| 903 | - l.Push(lua.LNumber(p[0].varGet(int32(numArg(l, 3))).ToI())) | |
| 904 | - } else if strArg(l, 2) == "fvarGet" { | |
| 905 | - l.Push(lua.LNumber(p[0].fvarGet(int32(numArg(l, 3))).ToI())) | |
| 906 | - } else if strArg(l, 2) == "sysVarGet" { | |
| 907 | - l.Push(lua.LNumber(p[0].sysVarGet(int32(numArg(l, 3))).ToI())) | |
| 908 | - } else if strArg(l, 2) == "sysFvarGet" { | |
| 909 | - l.Push(lua.LNumber(p[0].sysFvarGet(int32(numArg(l, 3))).ToI())) | |
| 910 | - } | |
| 911 | - break | |
| 912 | - } | |
| 913 | - } | |
| 914 | - return 1 | |
| 915 | - }) | |
| 916 | - luaRegister(l, "getCharVictoryQuote", func(*lua.LState) int { | |
| 917 | - v := int(-1) | |
| 918 | - for _, p := range sys.chars { | |
| 919 | - if len(p) > 0 && p[0].playerNo+1 == int(numArg(l, 1)) { | |
| 920 | - if l.GetTop() >= 2 { | |
| 921 | - v = int(numArg(l, 2)) | |
| 922 | - } else { | |
| 923 | - v = int(p[0].winquote) | |
| 924 | - } | |
| 925 | - if v < 0 || v >= MaxQuotes { | |
| 926 | - t := []string{} | |
| 927 | - for i, q := range sys.cgi[p[0].playerNo].quotes { | |
| 928 | - if sys.cgi[p[0].playerNo].quotes[i] != "" { | |
| 929 | - t = append(t, q) | |
| 930 | - } | |
| 931 | - } | |
| 932 | - if len(t) > 0 { | |
| 933 | - v = rand.Int() % len(t) | |
| 934 | - } else { | |
| 935 | - v = -1 | |
| 936 | - } | |
| 937 | - } | |
| 938 | - if len(sys.cgi[p[0].playerNo].quotes) == MaxQuotes && v != -1 { | |
| 939 | - l.Push(lua.LString(sys.cgi[p[0].playerNo].quotes[v])) | |
| 940 | - } else { | |
| 941 | - l.Push(lua.LString("")) | |
| 942 | - } | |
| 943 | - break | |
| 944 | - } | |
| 945 | - } | |
| 946 | - return 1 | |
| 947 | - }) | |
| 948 | - luaRegister(l, "getCommandLineFlags", func(*lua.LState) int { | |
| 949 | - tbl := l.NewTable() | |
| 950 | - for k, v := range sys.cmdFlags { | |
| 951 | - tbl.RawSetString(k, lua.LString(v)) | |
| 952 | - } | |
| 953 | - l.Push(tbl) | |
| 954 | - return 1 | |
| 955 | - }) | |
| 956 | - luaRegister(l, "getCommandLineValue", func(*lua.LState) int { | |
| 957 | - l.Push(lua.LString(sys.cmdFlags[strArg(l, 1)])) | |
| 958 | - return 1 | |
| 959 | - }) | |
| 960 | - luaRegister(l, "setPortrait", func(*lua.LState) int { | |
| 961 | - p := int(numArg(l, 3)) | |
| 962 | - if p == 1 { | |
| 963 | - sys.sel.lportrait = [...]int16{int16(numArg(l, 1)), int16(numArg(l, 2))} | |
| 964 | - } else if p == 2 { | |
| 965 | - sys.sel.sportrait = [...]int16{int16(numArg(l, 1)), int16(numArg(l, 2))} | |
| 966 | - } else if p == 3 { | |
| 967 | - sys.sel.vsportrait = [...]int16{int16(numArg(l, 1)), int16(numArg(l, 2))} | |
| 968 | - } else if p == 4 { | |
| 969 | - sys.sel.vportrait = [...]int16{int16(numArg(l, 1)), int16(numArg(l, 2))} | |
| 970 | - } | |
| 971 | - return 0 | |
| 972 | - }) | |
| 973 | - luaRegister(l, "drawSmallPortrait", func(l *lua.LState) int { | |
| 974 | - n, x, y := int(numArg(l, 1)), float32(numArg(l, 2)), float32(numArg(l, 3)) | |
| 975 | - var xscl, yscl float32 = 1, 1 | |
| 976 | - if l.GetTop() >= 4 { | |
| 977 | - xscl = float32(numArg(l, 4)) | |
| 978 | - if l.GetTop() >= 5 { | |
| 979 | - yscl = float32(numArg(l, 5)) | |
| 980 | - } | |
| 981 | - } | |
| 982 | - if !sys.frameSkip { | |
| 983 | - c := sys.sel.GetChar(n) | |
| 984 | - if c != nil && c.sportrait != nil { | |
| 985 | - if c.portrait_scale != 1 { | |
| 986 | - xscl *= c.portrait_scale | |
| 987 | - yscl *= c.portrait_scale | |
| 988 | - } | |
| 989 | - c.sportrait.Draw(x, y, xscl, yscl, c.sportrait.Pal, nil) | |
| 990 | - } | |
| 991 | - } | |
| 992 | - return 0 | |
| 993 | - }) | |
| 994 | - luaRegister(l, "drawVersusPortrait", func(l *lua.LState) int { | |
| 995 | - n, x, y := int(numArg(l, 1)), float32(numArg(l, 2)), float32(numArg(l, 3)) | |
| 996 | - var xscl, yscl float32 = 1, 1 | |
| 997 | - if l.GetTop() >= 4 { | |
| 998 | - xscl = float32(numArg(l, 4)) | |
| 999 | - if l.GetTop() >= 5 { | |
| 1000 | - yscl = float32(numArg(l, 5)) | |
| 1001 | - } | |
| 1002 | - } | |
| 1003 | - if !sys.frameSkip { | |
| 1004 | - c := sys.sel.GetChar(n) | |
| 1005 | - if c != nil && c.vsportrait != nil { | |
| 1006 | - if c.portrait_scale != 1 { | |
| 1007 | - xscl *= c.portrait_scale | |
| 1008 | - yscl *= c.portrait_scale | |
| 1009 | - } | |
| 1010 | - c.vsportrait.Draw(x, y, xscl, yscl, c.vsportrait.Pal, nil) | |
| 1011 | - } | |
| 1012 | - } | |
| 1013 | - return 0 | |
| 1014 | - }) | |
| 1015 | - luaRegister(l, "drawVictoryPortrait", func(l *lua.LState) int { | |
| 1016 | - n, x, y := int(numArg(l, 1)), float32(numArg(l, 2)), float32(numArg(l, 3)) | |
| 1017 | - var xscl, yscl float32 = 1, 1 | |
| 1018 | - if l.GetTop() >= 4 { | |
| 1019 | - xscl = float32(numArg(l, 4)) | |
| 1020 | - if l.GetTop() >= 5 { | |
| 1021 | - yscl = float32(numArg(l, 5)) | |
| 1022 | - } | |
| 1023 | - } | |
| 1024 | - if !sys.frameSkip { | |
| 1025 | - c := sys.sel.GetChar(n) | |
| 1026 | - if c != nil && c.vportrait != nil { | |
| 1027 | - if c.portrait_scale != 1 { | |
| 1028 | - xscl *= c.portrait_scale | |
| 1029 | - yscl *= c.portrait_scale | |
| 1030 | - } | |
| 1031 | - c.vportrait.Draw(x, y, xscl, yscl, c.vportrait.Pal, nil) | |
| 1032 | - } | |
| 1033 | - } | |
| 1034 | - return 0 | |
| 1035 | - }) | |
| 1036 | - luaRegister(l, "getCharIntro", func(*lua.LState) int { | |
| 1037 | - c := sys.sel.GetChar(int(numArg(l, 1))) | |
| 1038 | - l.Push(lua.LString(c.intro_storyboard)) | |
| 1039 | - return 1 | |
| 1040 | - }) | |
| 1041 | - luaRegister(l, "getCharEnding", func(*lua.LState) int { | |
| 1042 | - c := sys.sel.GetChar(int(numArg(l, 1))) | |
| 1043 | - l.Push(lua.LString(c.ending_storyboard)) | |
| 1044 | - return 1 | |
| 1045 | - }) | |
| 1046 | - luaRegister(l, "getCharPalettes", func(*lua.LState) int { | |
| 1047 | - c := sys.sel.GetChar(int(numArg(l, 1))) | |
| 1048 | - tbl := l.NewTable() | |
| 1049 | - var pal []int32 | |
| 1050 | - if sys.aiRandomColor { | |
| 1051 | - pal = c.pal | |
| 1052 | - } else { | |
| 1053 | - pal = c.pal_defaults | |
| 1054 | - } | |
| 1055 | - if len(pal) > 0 { | |
| 1056 | - for k, v := range pal { | |
| 1057 | - tbl.RawSetInt(k+1, lua.LNumber(v)) | |
| 1058 | - } | |
| 1059 | - } else { | |
| 1060 | - tbl.RawSetInt(1, lua.LNumber(1)) | |
| 1061 | - } | |
| 1062 | - l.Push(tbl) | |
| 1063 | - return 1 | |
| 1064 | - }) | |
| 1065 | - luaRegister(l, "getCharRandomPalette", func(*lua.LState) int { | |
| 1066 | - c := sys.sel.GetChar(int(numArg(l, 1))) | |
| 1067 | - if len(c.pal) > 0 { | |
| 1068 | - n := rand.Int() % len(c.pal) | |
| 1069 | - l.Push(lua.LNumber(c.pal[n])) | |
| 1070 | - } else { | |
| 1071 | - l.Push(lua.LNumber(1)) | |
| 1072 | - } | |
| 1073 | - return 1 | |
| 1074 | - }) | |
| 1075 | - luaRegister(l, "getStageInfo", func(*lua.LState) int { | |
| 1076 | - a, b, c, d := sys.sel.GetStageInfo(int(numArg(l, 1))) | |
| 1077 | - l.Push(lua.LString(a)) | |
| 1078 | - l.Push(lua.LString(b)) | |
| 1079 | - l.Push(lua.LString(c)) | |
| 1080 | - l.Push(lua.LString(d)) | |
| 1081 | - return 4 | |
| 1082 | - }) | |
| 1083 | - luaRegister(l, "getKey", func(*lua.LState) int { | |
| 1084 | - s := "" | |
| 1085 | - if sys.keyInput != glfw.KeyUnknown { | |
| 1086 | - s = KeyToString(sys.keyInput) | |
| 1087 | - } | |
| 1088 | - | |
| 1089 | - for j := 0; j < 2; j++ { | |
| 1090 | - if glfw.JoystickPresent(joystick[j]) { | |
| 1091 | - axes := glfw.GetJoystickAxes(joystick[j]) | |
| 1092 | - btns := glfw.GetJoystickButtons(joystick[j]) | |
| 1093 | - for i := range axes { | |
| 1094 | - if i > 3 && len(axes) == 6 && len(btns) == 14 { //Xboxコントローラー判定(glfwがバージョンアップすればもっとちゃんと判別できるようになるはず) | |
| 1095 | - if axes[i] > 0 { | |
| 1096 | - s = strconv.Itoa(-i*2 - 1) | |
| 1097 | - } | |
| 1098 | - } else { | |
| 1099 | - if axes[i] < -0.2 { | |
| 1100 | - s = strconv.Itoa(-i*2 - 1) | |
| 1101 | - } else if axes[i] > 0.2 { | |
| 1102 | - s = strconv.Itoa(-i*2 - 2) | |
| 1103 | - } | |
| 1104 | - } | |
| 1105 | - } | |
| 1106 | - for i := range btns { | |
| 1107 | - if btns[i] > 0 { | |
| 1108 | - s = strconv.Itoa(i) | |
| 1109 | - } | |
| 1110 | - } | |
| 820 | + return 1 | |
| 1111 | 821 | } |
| 1112 | 822 | } |
| 1113 | - | |
| 1114 | - l.Push(lua.LString(s)) | |
| 1115 | - return 1 | |
| 1116 | - }) | |
| 1117 | - luaRegister(l, "getKeyText", func(*lua.LState) int { | |
| 1118 | - s := "" | |
| 1119 | - if sys.keyInput != glfw.KeyUnknown { | |
| 1120 | - if sys.keyInput == glfw.KeyInsert { | |
| 1121 | - s, _ = sys.window.GetClipboardString() | |
| 1122 | - } else { | |
| 1123 | - s = sys.keyString | |
| 1124 | - } | |
| 1125 | - } | |
| 1126 | - l.Push(lua.LString(s)) | |
| 1127 | - return 1 | |
| 1128 | - }) | |
| 1129 | - luaRegister(l, "resetKey", func(*lua.LState) int { | |
| 1130 | - sys.keyInput = glfw.KeyUnknown | |
| 1131 | - sys.keyString = "" | |
| 1132 | - return 0 | |
| 1133 | - }) | |
| 1134 | - luaRegister(l, "getSpriteInfo", func(*lua.LState) int { | |
| 1135 | - var s *Sprite | |
| 1136 | - var err error | |
| 1137 | - def := strArg(l, 1) | |
| 1138 | - err = LoadFile(&def, "", func(file string) error { | |
| 1139 | - s, err = loadFromSff(file, int16(numArg(l, 2)), int16(numArg(l, 3))) | |
| 1140 | - return err | |
| 1141 | - }) | |
| 1142 | - if err != nil { | |
| 1143 | - l.Push(lua.LNumber(0)) | |
| 1144 | - l.Push(lua.LNumber(0)) | |
| 1145 | - l.Push(lua.LNumber(0)) | |
| 1146 | - l.Push(lua.LNumber(0)) | |
| 1147 | - return 4 | |
| 1148 | - } | |
| 1149 | - l.Push(lua.LNumber(s.Size[0])) | |
| 1150 | - l.Push(lua.LNumber(s.Size[1])) | |
| 1151 | - l.Push(lua.LNumber(s.Offset[0])) | |
| 1152 | - l.Push(lua.LNumber(s.Offset[1])) | |
| 1153 | - return 4 | |
| 1154 | 823 | }) |
| 1155 | 824 | } |
| 1156 | 825 |
| @@ -1590,7 +1259,7 @@ func triggerScriptInit(l *lua.LState) { | ||
| 1590 | 1259 | case "yvel": |
| 1591 | 1260 | ln = lua.LNumber(c.ghv.yvel) |
| 1592 | 1261 | case "yaccel": |
| 1593 | - ln = lua.LNumber(c.ghv.getYaccel(c)) | |
| 1262 | + ln = lua.LNumber(c.ghv.getYaccel()) | |
| 1594 | 1263 | case "hitid", "chainid": |
| 1595 | 1264 | ln = lua.LNumber(c.ghv.chainId()) |
| 1596 | 1265 | case "guarded": |
| @@ -1713,7 +1382,7 @@ func triggerScriptInit(l *lua.LState) { | ||
| 1713 | 1382 | return 1 |
| 1714 | 1383 | }) |
| 1715 | 1384 | luaRegister(l, "ishometeam", func(*lua.LState) int { |
| 1716 | - l.Push(lua.LBool(sys.debugWC.teamside == sys.home)) | |
| 1385 | + l.Push(lua.LBool(sys.debugWC.playerNo&1 == sys.home)) | |
| 1717 | 1386 | return 1 |
| 1718 | 1387 | }) |
| 1719 | 1388 | luaRegister(l, "leftedge", func(*lua.LState) int { |
| @@ -2136,9 +1805,5 @@ func debugScriptInit(l *lua.LState, file string) error { | ||
| 2136 | 1805 | } |
| 2137 | 1806 | return 0 |
| 2138 | 1807 | }) |
| 2139 | - luaRegister(l, "getAllowDebugKeys", func(*lua.LState) int { | |
| 2140 | - l.Push(lua.LBool(sys.allowDebugKeys)) | |
| 2141 | - return 1 | |
| 2142 | - }) | |
| 2143 | 1808 | return l.DoFile(file) |
| 2144 | 1809 | } |
| @@ -3,18 +3,11 @@ package main | ||
| 3 | 3 | import ( |
| 4 | 4 | "encoding/binary" |
| 5 | 5 | "fmt" |
| 6 | + "github.com/jfreymuth/go-vorbis/ogg/vorbis" | |
| 7 | + "github.com/timshannon/go-openal/openal" | |
| 6 | 8 | "io" |
| 7 | 9 | "math" |
| 8 | 10 | "os" |
| 9 | - "path/filepath" | |
| 10 | - "time" | |
| 11 | - | |
| 12 | - "github.com/jfreymuth/go-vorbis/ogg/vorbis" | |
| 13 | - "github.com/timshannon/go-openal/openal" | |
| 14 | - | |
| 15 | - "github.com/faiface/beep" | |
| 16 | - "github.com/faiface/beep/mp3" | |
| 17 | - "github.com/faiface/beep/speaker" | |
| 18 | 11 | ) |
| 19 | 12 | |
| 20 | 13 | const ( |
| @@ -22,11 +15,6 @@ const ( | ||
| 22 | 15 | audioFrequency = 48000 |
| 23 | 16 | ) |
| 24 | 17 | |
| 25 | -// ------------------------------------------------------------------ | |
| 26 | -// Audio Source | |
| 27 | - | |
| 28 | -// AudioSource structure. | |
| 29 | -// It contains OpenAl's sound destination and buffer | |
| 30 | 18 | type AudioSource struct { |
| 31 | 19 | Src openal.Source |
| 32 | 20 | bufs openal.Buffers |
| @@ -52,9 +40,6 @@ func (s *AudioSource) Delete() { | ||
| 52 | 40 | s.Src.Delete() |
| 53 | 41 | } |
| 54 | 42 | |
| 55 | -// ------------------------------------------------------------------ | |
| 56 | -// Mixer | |
| 57 | - | |
| 58 | 43 | type Mixer struct { |
| 59 | 44 | buf [audioOutLen * 2]float32 |
| 60 | 45 | sendBuf []int16 |
| @@ -165,9 +150,6 @@ func (m *Mixer) Mix(wav []byte, fidx float64, bytesPerSample, channels int, | ||
| 165 | 150 | return float64(len(wav)) |
| 166 | 151 | } |
| 167 | 152 | |
| 168 | -// ------------------------------------------------------------------ | |
| 169 | -// Normalizer | |
| 170 | - | |
| 171 | 153 | type Normalizer struct { |
| 172 | 154 | mul float64 |
| 173 | 155 | l, r *NormalizerLR |
| @@ -228,9 +210,6 @@ func (n *NormalizerLR) process(bai float64, sam *float32) float64 { | ||
| 228 | 210 | return bai |
| 229 | 211 | } |
| 230 | 212 | |
| 231 | -// ------------------------------------------------------------------ | |
| 232 | -// Vorbis | |
| 233 | - | |
| 234 | 213 | type Vorbis struct { |
| 235 | 214 | dec *vorbis.Vorbis |
| 236 | 215 | fp *os.File |
| @@ -243,12 +222,9 @@ type Vorbis struct { | ||
| 243 | 222 | func newVorbis() *Vorbis { |
| 244 | 223 | return &Vorbis{openReq: make(chan string, 1), normalizer: NewNormalizer()} |
| 245 | 224 | } |
| 246 | - | |
| 247 | -// Opens a file asynchronously | |
| 248 | 225 | func (v *Vorbis) Open(file string) { |
| 249 | 226 | v.openReq <- file |
| 250 | 227 | } |
| 251 | - | |
| 252 | 228 | func (v *Vorbis) openFile(file string) bool { |
| 253 | 229 | v.clear() |
| 254 | 230 | var err error |
| @@ -257,7 +233,6 @@ func (v *Vorbis) openFile(file string) bool { | ||
| 257 | 233 | } |
| 258 | 234 | return v.restart() |
| 259 | 235 | } |
| 260 | - | |
| 261 | 236 | func (v *Vorbis) restart() bool { |
| 262 | 237 | if v.fp == nil { |
| 263 | 238 | return false |
| @@ -271,7 +246,6 @@ func (v *Vorbis) restart() bool { | ||
| 271 | 246 | v.buf = nil |
| 272 | 247 | return true |
| 273 | 248 | } |
| 274 | - | |
| 275 | 249 | func (v *Vorbis) clear() { |
| 276 | 250 | if v.dec != nil { |
| 277 | 251 | v.dec = nil |
| @@ -281,7 +255,6 @@ func (v *Vorbis) clear() { | ||
| 281 | 255 | v.fp = nil |
| 282 | 256 | } |
| 283 | 257 | } |
| 284 | - | |
| 285 | 258 | func (v *Vorbis) samToAudioOut(buf [][]float32) (out []int16) { |
| 286 | 259 | var o1i int |
| 287 | 260 | if len(buf) == 1 { |
| @@ -303,7 +276,6 @@ func (v *Vorbis) samToAudioOut(buf [][]float32) (out []int16) { | ||
| 303 | 276 | v.bufi -= float64(int(v.bufi)) |
| 304 | 277 | return |
| 305 | 278 | } |
| 306 | - | |
| 307 | 279 | func (v *Vorbis) read() []int16 { |
| 308 | 280 | select { |
| 309 | 281 | case file := <-v.openReq: |
| @@ -330,67 +302,6 @@ func (v *Vorbis) read() []int16 { | ||
| 330 | 302 | return sys.nullSndBuf[:] |
| 331 | 303 | } |
| 332 | 304 | |
| 333 | -// ------------------------------------------------------------------ | |
| 334 | -// Bgm | |
| 335 | - | |
| 336 | -type Bgm struct { | |
| 337 | - filename string | |
| 338 | - vorbis *Vorbis | |
| 339 | - ctrlmp3 *beep.Ctrl | |
| 340 | -} | |
| 341 | - | |
| 342 | -func newBgm() *Bgm { | |
| 343 | - return &Bgm{ | |
| 344 | - vorbis: newVorbis(), | |
| 345 | - } | |
| 346 | -} | |
| 347 | - | |
| 348 | -func (bgm *Bgm) IsVorbis() bool { | |
| 349 | - return filepath.Ext(bgm.filename) == ".ogg" | |
| 350 | -} | |
| 351 | - | |
| 352 | -func (bgm *Bgm) IsMp3() bool { | |
| 353 | - return filepath.Ext(bgm.filename) == ".mp3" | |
| 354 | -} | |
| 355 | - | |
| 356 | -func (bgm *Bgm) Open(filename string) { | |
| 357 | - if filepath.Base(bgm.filename) != filepath.Base(filename) { | |
| 358 | - bgm.filename = filename | |
| 359 | - speaker.Clear() | |
| 360 | - | |
| 361 | - if bgm.IsVorbis() { | |
| 362 | - bgm.vorbis.Open(filename) | |
| 363 | - } else if bgm.IsMp3() { | |
| 364 | - bgm.ReadMp3() | |
| 365 | - } | |
| 366 | - } | |
| 367 | -} | |
| 368 | - | |
| 369 | -func (bgm *Bgm) ReadMp3() { | |
| 370 | - f, _ := os.Open(bgm.filename) | |
| 371 | - s, format, err := mp3.Decode(f) | |
| 372 | - if err != nil { | |
| 373 | - return | |
| 374 | - } | |
| 375 | - streamer := beep.Loop(-1, s) | |
| 376 | - bgm.ctrlmp3 = &beep.Ctrl{Streamer: streamer} | |
| 377 | - speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/20)) | |
| 378 | - speaker.Play(bgm.ctrlmp3) | |
| 379 | - return | |
| 380 | -} | |
| 381 | -func (bgm *Bgm) Mp3Paused() { | |
| 382 | - speaker.Lock() | |
| 383 | - bgm.ctrlmp3.Paused = true | |
| 384 | - speaker.Unlock() | |
| 385 | - return | |
| 386 | -} | |
| 387 | -func (bgm *Bgm) ReadVorbis() []int16 { | |
| 388 | - return bgm.vorbis.read() | |
| 389 | -} | |
| 390 | - | |
| 391 | -// ------------------------------------------------------------------ | |
| 392 | -// Wave | |
| 393 | - | |
| 394 | 305 | type Wave struct { |
| 395 | 306 | SamplesPerSec uint32 |
| 396 | 307 | Channels uint16 |
| @@ -489,18 +400,12 @@ func ReadWave(f *os.File, ofs int64) (*Wave, error) { | ||
| 489 | 400 | return &w, nil |
| 490 | 401 | } |
| 491 | 402 | |
| 492 | -// ------------------------------------------------------------------ | |
| 493 | -// Snd | |
| 494 | - | |
| 495 | 403 | type Snd struct { |
| 496 | 404 | table map[[2]int32]*Wave |
| 497 | 405 | ver, ver2 uint16 |
| 498 | 406 | } |
| 499 | 407 | |
| 500 | -func newSnd() *Snd { | |
| 501 | - return &Snd{table: make(map[[2]int32]*Wave)} | |
| 502 | -} | |
| 503 | - | |
| 408 | +func newSnd() *Snd { return &Snd{table: make(map[[2]int32]*Wave)} } | |
| 504 | 409 | func LoadSnd(filename string) (*Snd, error) { |
| 505 | 410 | s := newSnd() |
| 506 | 411 | f, err := os.Open(filename) |
| @@ -573,9 +478,6 @@ func (s *Snd) play(gn [2]int32) bool { | ||
| 573 | 478 | return c.sound != nil |
| 574 | 479 | } |
| 575 | 480 | |
| 576 | -// ------------------------------------------------------------------ | |
| 577 | -// Sound | |
| 578 | - | |
| 579 | 481 | type Sound struct { |
| 580 | 482 | sound *Wave |
| 581 | 483 | volume int16 |
| @@ -83,41 +83,34 @@ func (bga *bgAction) action() { | ||
| 83 | 83 | } |
| 84 | 84 | |
| 85 | 85 | type backGround struct { |
| 86 | - anim Animation | |
| 87 | - bga bgAction | |
| 88 | - id int32 | |
| 89 | - start [2]float32 | |
| 90 | - xofs float32 | |
| 91 | - camstartx float32 | |
| 92 | - delta [2]float32 | |
| 93 | - xscale [2]float32 | |
| 94 | - rasterx [2]float32 | |
| 95 | - yscalestart float32 | |
| 96 | - yscaledelta float32 | |
| 97 | - actionno int32 | |
| 98 | - startv [2]float32 | |
| 99 | - startrad [2]float32 | |
| 100 | - startsint [2]int32 | |
| 101 | - startsinlt [2]int32 | |
| 102 | - visible bool | |
| 103 | - active bool | |
| 104 | - positionlink bool | |
| 105 | - toplayer bool | |
| 106 | - autoresizeparallax bool | |
| 107 | - notmaskwindow int32 | |
| 108 | - startrect [4]int32 | |
| 109 | - windowdelta [2]float32 | |
| 110 | - scalestart [2]float32 | |
| 111 | - scaledelta [2]float32 | |
| 112 | - zoomdelta [2]float32 | |
| 113 | - zoomscaledelta [2]float32 | |
| 114 | - xbottomzoomdelta float32 | |
| 86 | + anim Animation | |
| 87 | + bga bgAction | |
| 88 | + id int32 | |
| 89 | + start [2]float32 | |
| 90 | + xofs float32 | |
| 91 | + camstartx float32 | |
| 92 | + delta [2]float32 | |
| 93 | + xscale [2]float32 | |
| 94 | + rasterx [2]float32 | |
| 95 | + yscalestart float32 | |
| 96 | + yscaledelta float32 | |
| 97 | + actionno int32 | |
| 98 | + startv [2]float32 | |
| 99 | + startrad [2]float32 | |
| 100 | + startsint [2]int32 | |
| 101 | + startsinlt [2]int32 | |
| 102 | + visible bool | |
| 103 | + active bool | |
| 104 | + positionlink bool | |
| 105 | + toplayer bool | |
| 106 | + startrect [4]int32 | |
| 107 | + windowdelta [2]float32 | |
| 115 | 108 | } |
| 116 | 109 | |
| 117 | 110 | func newBackGround(sff *Sff) *backGround { |
| 118 | - return &backGround{anim: *newAnimation(sff), delta: [...]float32{1, 1}, zoomdelta: [...]float32{math.MaxFloat32, math.MaxFloat32}, | |
| 119 | - xscale: [...]float32{1, 1}, rasterx: [...]float32{1, 1}, yscalestart: 100, scalestart: [...]float32{1, 1}, xbottomzoomdelta: math.MaxFloat32, | |
| 120 | - zoomscaledelta: [...]float32{1, 1}, actionno: -1, visible: true, active: true, autoresizeparallax: true, | |
| 111 | + return &backGround{anim: *newAnimation(sff), delta: [...]float32{1, 1}, | |
| 112 | + xscale: [...]float32{1, 1}, rasterx: [...]float32{1, 1}, yscalestart: 100, | |
| 113 | + actionno: -1, visible: true, active: true, | |
| 121 | 114 | startrect: [...]int32{-32768, -32768, 65535, 65535}} |
| 122 | 115 | } |
| 123 | 116 | func readBackGround(is IniSection, link *backGround, |
| @@ -166,17 +159,8 @@ func readBackGround(is IniSection, link *backGround, | ||
| 166 | 159 | bg.startv = link.startv |
| 167 | 160 | bg.delta = link.delta |
| 168 | 161 | } |
| 169 | - is.ReadBool("autoresizeparallax", &bg.autoresizeparallax) | |
| 170 | 162 | is.readF32ForStage("start", &bg.start[0], &bg.start[1]) |
| 171 | 163 | is.readF32ForStage("delta", &bg.delta[0], &bg.delta[1]) |
| 172 | - is.readF32ForStage("scalestart", &bg.scalestart[0], &bg.scalestart[1]) | |
| 173 | - is.readF32ForStage("scaledelta", &bg.scaledelta[0], &bg.scaledelta[1]) | |
| 174 | - is.readF32ForStage("xbottomzoomdelta", &bg.xbottomzoomdelta) | |
| 175 | - is.readF32ForStage("zoomscaledelta", &bg.zoomscaledelta[0], &bg.zoomscaledelta[1]) | |
| 176 | - is.readF32ForStage("zoomdelta", &bg.zoomdelta[0], &bg.zoomdelta[1]) | |
| 177 | - if bg.zoomdelta[0] != math.MaxFloat32 && bg.zoomdelta[1] == math.MaxFloat32 { | |
| 178 | - bg.zoomdelta[1] = bg.zoomdelta[0] | |
| 179 | - } | |
| 180 | 164 | if t != 1 { |
| 181 | 165 | if is.ReadI32("mask", &tmp) { |
| 182 | 166 | if tmp != 0 { |
| @@ -185,46 +169,38 @@ func readBackGround(is IniSection, link *backGround, | ||
| 185 | 169 | bg.anim.mask = -1 |
| 186 | 170 | } |
| 187 | 171 | } |
| 188 | - } | |
| 189 | - switch strings.ToLower(is["trans"]) { | |
| 190 | - case "add": | |
| 191 | - bg.anim.mask = 0 | |
| 192 | - bg.anim.srcAlpha = 255 | |
| 193 | - bg.anim.dstAlpha = 255 | |
| 194 | - s, d := int32(bg.anim.srcAlpha), int32(bg.anim.dstAlpha) | |
| 195 | - if is.readI32ForStage("alpha", &s, &d) { | |
| 196 | - bg.anim.srcAlpha = int16(Max(0, Min(255, s))) | |
| 197 | - bg.anim.dstAlpha = int16(Max(0, Min(255, d))) | |
| 198 | - if bg.anim.srcAlpha == 1 && bg.anim.dstAlpha == 255 { | |
| 199 | - bg.anim.srcAlpha = 0 | |
| 200 | - } | |
| 201 | - } | |
| 202 | - case "add1": | |
| 203 | - bg.anim.mask = 0 | |
| 204 | - bg.anim.srcAlpha = 255 | |
| 205 | - bg.anim.dstAlpha = ^255 | |
| 206 | - var s, d int32 = 255, 255 | |
| 207 | - if is.readI32ForStage("alpha", &s, &d) { | |
| 208 | - bg.anim.srcAlpha = int16(Min(255, s)) | |
| 209 | - bg.anim.dstAlpha = ^int16(Max(0, Min(255, d))) | |
| 210 | - } | |
| 211 | - case "addalpha": | |
| 212 | - bg.anim.mask = 0 | |
| 213 | - s, d := int32(bg.anim.srcAlpha), int32(bg.anim.dstAlpha) | |
| 214 | - if is.readI32ForStage("alpha", &s, &d) { | |
| 215 | - bg.anim.srcAlpha = int16(Max(0, Min(255, s))) | |
| 216 | - bg.anim.dstAlpha = int16(Max(0, Min(255, d))) | |
| 217 | - if bg.anim.srcAlpha == 1 && bg.anim.dstAlpha == 255 { | |
| 218 | - bg.anim.srcAlpha = 0 | |
| 219 | - } | |
| 220 | - } | |
| 221 | - case "sub": | |
| 222 | - bg.anim.mask = 0 | |
| 223 | - bg.anim.srcAlpha = 1 | |
| 224 | - bg.anim.dstAlpha = 255 | |
| 225 | - case "none": | |
| 226 | - bg.anim.srcAlpha = -1 | |
| 227 | - bg.anim.dstAlpha = 0 | |
| 172 | + switch strings.ToLower(is["trans"]) { | |
| 173 | + case "add": | |
| 174 | + bg.anim.mask = 0 | |
| 175 | + bg.anim.srcAlpha = 255 | |
| 176 | + bg.anim.dstAlpha = 255 | |
| 177 | + case "add1": | |
| 178 | + bg.anim.mask = 0 | |
| 179 | + bg.anim.srcAlpha = 255 | |
| 180 | + bg.anim.dstAlpha = ^255 | |
| 181 | + var s, d int32 = 255, 255 | |
| 182 | + if is.readI32ForStage("alpha", &s, &d) { | |
| 183 | + bg.anim.srcAlpha = int16(Min(255, s)) | |
| 184 | + bg.anim.dstAlpha = ^int16(Max(0, Min(255, s))) | |
| 185 | + } | |
| 186 | + case "addalpha": | |
| 187 | + bg.anim.mask = 0 | |
| 188 | + s, d := int32(bg.anim.srcAlpha), int32(bg.anim.dstAlpha) | |
| 189 | + if is.readI32ForStage("alpha", &s, &d) { | |
| 190 | + bg.anim.srcAlpha = int16(Max(0, Min(255, s))) | |
| 191 | + bg.anim.dstAlpha = int16(Max(0, Min(255, d))) | |
| 192 | + if bg.anim.srcAlpha == 1 && bg.anim.dstAlpha == 255 { | |
| 193 | + bg.anim.srcAlpha = 0 | |
| 194 | + } | |
| 195 | + } | |
| 196 | + case "sub": | |
| 197 | + bg.anim.mask = 0 | |
| 198 | + bg.anim.srcAlpha = 1 | |
| 199 | + bg.anim.dstAlpha = 255 | |
| 200 | + case "none": | |
| 201 | + bg.anim.srcAlpha = -1 | |
| 202 | + bg.anim.dstAlpha = 0 | |
| 203 | + } | |
| 228 | 204 | } |
| 229 | 205 | if is.readI32ForStage("tile", &bg.anim.tile[2], &bg.anim.tile[3]) { |
| 230 | 206 | if t == 2 { |
| @@ -262,13 +238,6 @@ func readBackGround(is IniSection, link *backGround, | ||
| 262 | 238 | &bg.startrect[2], &bg.startrect[3]) { |
| 263 | 239 | bg.startrect[2] = Max(0, bg.startrect[2]+1-bg.startrect[0]) |
| 264 | 240 | bg.startrect[3] = Max(0, bg.startrect[3]+1-bg.startrect[1]) |
| 265 | - bg.notmaskwindow = 1 | |
| 266 | - } | |
| 267 | - if is.readI32ForStage("maskwindow", &bg.startrect[0], &bg.startrect[1], | |
| 268 | - &bg.startrect[2], &bg.startrect[3]) { | |
| 269 | - bg.startrect[2] = Max(0, bg.startrect[2]-bg.startrect[0]) | |
| 270 | - bg.startrect[3] = Max(0, bg.startrect[3]-bg.startrect[1]) | |
| 271 | - bg.notmaskwindow = 0 | |
| 272 | 241 | } |
| 273 | 242 | is.readF32ForStage("windowdelta", &bg.windowdelta[0], &bg.windowdelta[1]) |
| 274 | 243 | is.ReadI32("id", &bg.id) |
| @@ -315,30 +284,16 @@ func (bg backGround) draw(pos [2]float32, scl, bgscl, lclscl float32, | ||
| 315 | 284 | xras := (bg.rasterx[1] - bg.rasterx[0]) / bg.rasterx[0] |
| 316 | 285 | xbs, dx := bg.xscale[1], MaxF(0, bg.delta[0]*bgscl) |
| 317 | 286 | sclx := MaxF(0, scl+(1-scl)*(1-dx)) |
| 318 | - scly := MaxF(0, scl+(1-scl)*(1-MaxF(0, bg.delta[1]*bgscl))) | |
| 319 | - var sclx_recip float32 = 1 | |
| 320 | 287 | lscl := [...]float32{lclscl * stgscl[0], lclscl * stgscl[1]} |
| 321 | - if sclx != 0 && bg.autoresizeparallax == true { | |
| 288 | + if sclx != 0 { | |
| 322 | 289 | tmp := 1 / sclx |
| 323 | - if bg.xbottomzoomdelta != math.MaxFloat32 { | |
| 324 | - xbs *= MaxF(0, scl+(1-scl)*(1-bg.xbottomzoomdelta*(xbs/bg.xscale[0]))) * tmp | |
| 325 | - } else { | |
| 326 | - xbs *= MaxF(0, scl+(1-scl)*(1-dx*(xbs/bg.xscale[0]))) * tmp | |
| 327 | - } | |
| 290 | + xbs *= MaxF(0, scl+(1-scl)*(1-dx*(xbs/bg.xscale[0]))) * tmp | |
| 328 | 291 | tmp *= MaxF(0, scl+(1-scl)*(1-dx*(xras+1))) |
| 329 | 292 | xras -= tmp - 1 |
| 330 | 293 | xbs *= tmp |
| 331 | 294 | } |
| 332 | - if bg.zoomdelta[0] != math.MaxFloat32 { | |
| 333 | - sclx = scl + (1-scl)*(1-bg.zoomdelta[0]) | |
| 334 | - scly = scl + (1-scl)*(1-bg.zoomdelta[1]) | |
| 335 | - if bg.autoresizeparallax == false { | |
| 336 | - sclx_recip = (1 + bg.zoomdelta[0]*((1/(sclx*lscl[0])*lscl[0])-1)) | |
| 337 | - } | |
| 338 | - } | |
| 339 | - | |
| 340 | - scly *= lclscl | |
| 341 | 295 | sclx *= lscl[0] |
| 296 | + scly := MaxF(0, scl+(1-scl)*(1-MaxF(0, bg.delta[1]*bgscl))) * lclscl | |
| 342 | 297 | x := bg.start[0] + bg.xofs - (pos[0]/stgscl[0]+bg.camstartx)*bg.delta[0] + |
| 343 | 298 | bg.bga.offset[0] |
| 344 | 299 | y := bg.start[1] - (pos[1]/stgscl[1])*bg.delta[1] + bg.bga.offset[1] |
| @@ -352,33 +307,27 @@ func (bg backGround) draw(pos [2]float32, scl, bgscl, lclscl float32, | ||
| 352 | 307 | } |
| 353 | 308 | } |
| 354 | 309 | ys := (100 - pos[1]*bg.yscaledelta) * bgscl / bg.yscalestart |
| 355 | - ys2 := bg.scaledelta[1] * pos[1] * bg.delta[1] * bgscl | |
| 356 | - xs := bg.scaledelta[0] * pos[0] * bg.delta[0] * bgscl | |
| 357 | - xs3 := 1 + (1-scl)*(1-bg.zoomscaledelta[0]) | |
| 358 | - ys3 := 1 + (1-scl)*(1-bg.zoomscaledelta[1]) | |
| 359 | 310 | x *= bgscl |
| 360 | 311 | y = y*bgscl + ((float32(sys.gameHeight)-shakeY)/scly-240)/stgscl[1] |
| 361 | 312 | scly *= stgscl[1] |
| 362 | 313 | rect := bg.startrect |
| 363 | 314 | var wscl [2]float32 |
| 364 | 315 | for i := range wscl { |
| 365 | - if bg.zoomdelta[i] != math.MaxFloat32 { | |
| 366 | - wscl[i] = MaxF(0, scl+(1-scl)*(1-MaxF(0, bg.zoomdelta[i]))) * | |
| 367 | - bgscl * lscl[i] | |
| 368 | - } else { | |
| 369 | - wscl[i] = MaxF(0, scl+(1-scl)*(1-MaxF(0, bg.windowdelta[i]*bgscl))) * | |
| 370 | - bgscl * lscl[i] | |
| 371 | - } | |
| 372 | - } | |
| 373 | - startrect0 := (float32(rect[0]) - (pos[0]+bg.camstartx)*bg.windowdelta[0] + (float32(sys.gameWidth)/2/sclx - float32(bg.notmaskwindow)*160*(1/lscl[0]))) * sys.widthScale * wscl[0] | |
| 374 | - startrect1 := ((float32(rect[1])-pos[1]*bg.windowdelta[1]+(float32(sys.gameHeight)/scly-240))*wscl[1] - shakeY) * sys.heightScale | |
| 375 | - rect[0] = int32(math.Floor(float64(startrect0))) | |
| 376 | - rect[1] = int32(math.Floor(float64(startrect1))) | |
| 377 | - rect[2] = int32(math.Floor(float64(startrect0 + (float32(rect[2]) * sys.widthScale * wscl[0]) - float32(rect[0])))) | |
| 378 | - rect[3] = int32(math.Floor(float64(startrect1 + (float32(rect[3]) * sys.heightScale * wscl[1]) - float32(rect[1])))) | |
| 379 | - bg.anim.Draw(&rect, x, y, sclx, scly, bg.xscale[0]*bgscl*(bg.scalestart[0]+xs)*xs3, xbs*bgscl*(bg.scalestart[0]+xs)*xs3, ys*(bg.scalestart[1]+ys2)*ys3, | |
| 380 | - xras*x/(AbsF(ys*ys3)*lscl[1]*float32(bg.anim.spr.Size[1]))*sclx_recip, | |
| 381 | - +0, 0, 0, float32(sys.gameWidth)/2, &sys.bgPalFX, true, 1) | |
| 316 | + wscl[i] = MaxF(0, scl+(1-scl)*(1-MaxF(0, bg.windowdelta[i]*bgscl))) * | |
| 317 | + bgscl * lscl[i] | |
| 318 | + } | |
| 319 | + rect[0] = int32(math.Floor(float64((float32(rect[0]) - | |
| 320 | + (pos[0]+bg.camstartx)*bg.windowdelta[0]) * sys.widthScale * wscl[0]))) | |
| 321 | + rect[1] = int32(math.Floor(float64(((float32(rect[1])- | |
| 322 | + pos[1]*bg.windowdelta[1])*wscl[1] - shakeY + float32(sys.gameHeight-240)) * | |
| 323 | + sys.heightScale))) | |
| 324 | + rect[2] = int32(math.Ceil(float64(float32(rect[2]) * sys.widthScale * | |
| 325 | + wscl[0]))) | |
| 326 | + rect[3] = int32(math.Ceil(float64(float32(rect[3]) * sys.heightScale * | |
| 327 | + wscl[1]))) | |
| 328 | + bg.anim.Draw(&rect, x, y, sclx, scly, bg.xscale[0]*bgscl, xbs*bgscl, ys, | |
| 329 | + xras*x/(AbsF(ys)*lscl[1]*float32(bg.anim.spr.Size[1])), | |
| 330 | + 0, float32(sys.gameWidth)/2, &sys.bgPalFX, true) | |
| 382 | 331 | } |
| 383 | 332 | |
| 384 | 333 | type bgCtrl struct { |
| @@ -633,7 +582,6 @@ func loadStage(def string) (*Stage, error) { | ||
| 633 | 582 | sec[0].ReadI32("tension", &sys.cam.tension) |
| 634 | 583 | sec[0].ReadI32("floortension", &sys.cam.floortension) |
| 635 | 584 | sec[0].ReadI32("overdrawlow", &sys.cam.overdrawlow) |
| 636 | - sec[0].ReadF32("zoomout", &sys.cam.mugen_zoomout) | |
| 637 | 585 | } |
| 638 | 586 | if sec := defmap["playerinfo"]; len(sec) > 0 { |
| 639 | 587 | sec[0].ReadI32("p1startx", &s.p[0].startx) |
| @@ -660,14 +608,6 @@ func loadStage(def string) (*Stage, error) { | ||
| 660 | 608 | sec[0].ReadF32("xscale", &s.scale[0]) |
| 661 | 609 | sec[0].ReadF32("yscale", &s.scale[1]) |
| 662 | 610 | } |
| 663 | - if s.hires { | |
| 664 | - if s.scale[0] != 1 { | |
| 665 | - s.scale[0] *= 2 | |
| 666 | - } | |
| 667 | - if s.scale[1] != 1 { | |
| 668 | - s.scale[1] *= 2 | |
| 669 | - } | |
| 670 | - } | |
| 671 | 611 | reflect := true |
| 672 | 612 | if sec := defmap["shadow"]; len(sec) > 0 { |
| 673 | 613 | var tmp int32 |
| @@ -709,7 +649,7 @@ func loadStage(def string) (*Stage, error) { | ||
| 709 | 649 | } |
| 710 | 650 | var bglink *backGround |
| 711 | 651 | for _, bgsec := range defmap["bg"] { |
| 712 | - if len(s.bg) > 0 && !s.bg[len(s.bg)-1].positionlink { | |
| 652 | + if len(s.bg) > 0 && s.bg[len(s.bg)-1].positionlink { | |
| 713 | 653 | bglink = s.bg[len(s.bg)-1] |
| 714 | 654 | } |
| 715 | 655 | s.bg = append(s.bg, readBackGround(bgsec, bglink, |
| @@ -812,16 +752,8 @@ func (s *Stage) runBgCtrl(bgc *bgCtrl) { | ||
| 812 | 752 | a := s.at.get(bgc.v[0]) |
| 813 | 753 | if a != nil { |
| 814 | 754 | for i := range bgc.bg { |
| 815 | - masktemp := bgc.bg[i].anim.mask | |
| 816 | - srcAlphatemp := bgc.bg[i].anim.srcAlpha | |
| 817 | - dstAlphatemp := bgc.bg[i].anim.dstAlpha | |
| 818 | - tiletmp := bgc.bg[i].anim.tile | |
| 819 | 755 | bgc.bg[i].actionno = bgc.v[0] |
| 820 | 756 | bgc.bg[i].anim = *a |
| 821 | - bgc.bg[i].anim.tile = tiletmp | |
| 822 | - bgc.bg[i].anim.dstAlpha = dstAlphatemp | |
| 823 | - bgc.bg[i].anim.srcAlpha = srcAlphatemp | |
| 824 | - bgc.bg[i].anim.mask = masktemp | |
| 825 | 757 | } |
| 826 | 758 | } |
| 827 | 759 | case BT_Visible: |
| @@ -1,20 +0,0 @@ | ||
| 1 | -// +build windows | |
| 2 | -package main | |
| 3 | - | |
| 4 | -import ( | |
| 5 | - "os" | |
| 6 | - "syscall" | |
| 7 | -) | |
| 8 | - | |
| 9 | -func init() { | |
| 10 | - modkernel32 := syscall.NewLazyDLL("kernel32.dll") | |
| 11 | - procAllocConsole := modkernel32.NewProc("AllocConsole") | |
| 12 | - syscall.Syscall(procAllocConsole.Addr(), 0, 0, 0, 0) | |
| 13 | - hout, err1 := syscall.GetStdHandle(syscall.STD_OUTPUT_HANDLE) | |
| 14 | - hin, err2 := syscall.GetStdHandle(syscall.STD_INPUT_HANDLE) | |
| 15 | - if err1 != nil || err2 != nil { // nowhere to print the message | |
| 16 | - syscall.Exit(2) | |
| 17 | - } | |
| 18 | - os.Stdout = os.NewFile(uintptr(hout), "/dev/stdout") | |
| 19 | - os.Stdin = os.NewFile(uintptr(hin), "/dev/stdin") | |
| 20 | -} |
| @@ -3,6 +3,10 @@ package main | ||
| 3 | 3 | import ( |
| 4 | 4 | "bufio" |
| 5 | 5 | "fmt" |
| 6 | + "github.com/go-gl/gl/v2.1/gl" | |
| 7 | + "github.com/go-gl/glfw/v3.2/glfw" | |
| 8 | + "github.com/timshannon/go-openal/openal" | |
| 9 | + "github.com/yuin/gopher-lua" | |
| 6 | 10 | "io/ioutil" |
| 7 | 11 | "log" |
| 8 | 12 | "math" |
| @@ -11,18 +15,12 @@ import ( | ||
| 11 | 15 | "strings" |
| 12 | 16 | "sync" |
| 13 | 17 | "time" |
| 14 | - | |
| 15 | - "github.com/go-gl/gl/v2.1/gl" | |
| 16 | - "github.com/go-gl/glfw/v3.2/glfw" | |
| 17 | - "github.com/timshannon/go-openal/openal" | |
| 18 | - "github.com/yuin/gopher-lua" | |
| 19 | 18 | ) |
| 20 | 19 | |
| 21 | 20 | const ( |
| 22 | - MaxSimul = 4 | |
| 23 | - MaxAttachedChar = 2 | |
| 24 | - FPS = 60 | |
| 25 | - P1P3Dist = 25 | |
| 21 | + MaxSimul = 4 | |
| 22 | + FPS = 60 | |
| 23 | + P1P3Dist = 25 | |
| 26 | 24 | ) |
| 27 | 25 | |
| 28 | 26 | var sys = System{ |
| @@ -35,7 +33,7 @@ var sys = System{ | ||
| 35 | 33 | lifeMul: 1, team1VS2Life: 1, |
| 36 | 34 | turnsRecoveryRate: 1.0 / 300, |
| 37 | 35 | mixer: *newMixer(), |
| 38 | - bgm: *newBgm(), | |
| 36 | + bgm: *newVorbis(), | |
| 39 | 37 | sounds: newSounds(16), |
| 40 | 38 | allPalFX: *newPalFX(), |
| 41 | 39 | bgPalFX: *newPalFX(), |
| @@ -57,8 +55,6 @@ var sys = System{ | ||
| 57 | 55 | workpal: make([]uint32, 256), |
| 58 | 56 | errLog: log.New(os.Stderr, "", 0), |
| 59 | 57 | audioClose: make(chan bool, 1), |
| 60 | - keyInput: glfw.KeyUnknown, | |
| 61 | - keyString: "", | |
| 62 | 58 | } |
| 63 | 59 | |
| 64 | 60 | type TeamMode int32 |
| @@ -87,7 +83,7 @@ type System struct { | ||
| 87 | 83 | debugScript string |
| 88 | 84 | debugDraw bool |
| 89 | 85 | mixer Mixer |
| 90 | - bgm Bgm | |
| 86 | + bgm Vorbis | |
| 91 | 87 | audioContext *openal.Context |
| 92 | 88 | nullSndBuf [audioOutLen * 2]int16 |
| 93 | 89 | sounds Sounds |
| @@ -97,15 +93,14 @@ type System struct { | ||
| 97 | 93 | keySatate map[glfw.Key]bool |
| 98 | 94 | netInput *NetInput |
| 99 | 95 | fileInput *FileInput |
| 100 | - aiInput [MaxSimul*2 + MaxAttachedChar]AiInput | |
| 96 | + aiInput [MaxSimul * 2]AiInput | |
| 101 | 97 | keyConfig []KeyConfig |
| 102 | - JoystickConfig []KeyConfig | |
| 103 | - com [MaxSimul*2 + MaxAttachedChar]int32 | |
| 98 | + com [MaxSimul * 2]int32 | |
| 104 | 99 | autolevel bool |
| 105 | 100 | home int |
| 106 | 101 | gameTime int32 |
| 107 | 102 | match int32 |
| 108 | - inputRemap [MaxSimul*2 + MaxAttachedChar]int | |
| 103 | + inputRemap [MaxSimul * 2]int | |
| 109 | 104 | listenPort string |
| 110 | 105 | round int32 |
| 111 | 106 | intro int32 |
| @@ -116,15 +111,15 @@ type System struct { | ||
| 116 | 111 | roundsExisted [2]int32 |
| 117 | 112 | draws int32 |
| 118 | 113 | loader Loader |
| 119 | - chars [MaxSimul*2 + MaxAttachedChar][]*Char | |
| 114 | + chars [MaxSimul * 2][]*Char | |
| 120 | 115 | charList CharList |
| 121 | - cgi [MaxSimul*2 + MaxAttachedChar]CharGlobalInfo | |
| 116 | + cgi [MaxSimul * 2]CharGlobalInfo | |
| 122 | 117 | tmode [2]TeamMode |
| 123 | 118 | numSimul, numTurns [2]int32 |
| 124 | 119 | esc bool |
| 125 | 120 | loadMutex sync.Mutex |
| 126 | 121 | ignoreMostErrors bool |
| 127 | - stringPool [MaxSimul*2 + MaxAttachedChar]StringPool | |
| 122 | + stringPool [MaxSimul * 2]StringPool | |
| 128 | 123 | bcStack, bcVarStack BytecodeStack |
| 129 | 124 | bcVar []BytecodeValue |
| 130 | 125 | workingChar *Char |
| @@ -154,7 +149,7 @@ type System struct { | ||
| 154 | 149 | envcol [3]int32 |
| 155 | 150 | envcol_time int32 |
| 156 | 151 | envcol_under bool |
| 157 | - clipboardText [MaxSimul*2 + MaxAttachedChar][]string | |
| 152 | + clipboardText [MaxSimul * 2][]string | |
| 158 | 153 | stage *Stage |
| 159 | 154 | helperMax int32 |
| 160 | 155 | nextCharId int32 |
| @@ -184,10 +179,10 @@ type System struct { | ||
| 184 | 179 | finish FinishType |
| 185 | 180 | waitdown int32 |
| 186 | 181 | shuttertime int32 |
| 187 | - projs [MaxSimul*2 + MaxAttachedChar][]Projectile | |
| 188 | - explods [MaxSimul*2 + MaxAttachedChar][]Explod | |
| 189 | - explDrawlist [MaxSimul*2 + MaxAttachedChar][]int | |
| 190 | - topexplDrawlist [MaxSimul*2 + MaxAttachedChar][]int | |
| 182 | + projs [MaxSimul * 2][]Projectile | |
| 183 | + explods [MaxSimul * 2][]Explod | |
| 184 | + explDrawlist [MaxSimul * 2][]int | |
| 185 | + topexplDrawlist [MaxSimul * 2][]int | |
| 191 | 186 | changeStateNest int32 |
| 192 | 187 | sprites DrawList |
| 193 | 188 | topSprites DrawList |
| @@ -197,7 +192,7 @@ type System struct { | ||
| 197 | 192 | drawc2sp ClsnRect |
| 198 | 193 | drawc2mtk ClsnRect |
| 199 | 194 | drawwh ClsnRect |
| 200 | - autoguard [MaxSimul*2 + MaxAttachedChar]bool | |
| 195 | + autoguard [MaxSimul * 2]bool | |
| 201 | 196 | clsnDraw bool |
| 202 | 197 | accel float32 |
| 203 | 198 | statusDraw bool |
| @@ -210,17 +205,6 @@ type System struct { | ||
| 210 | 205 | audioClose chan bool |
| 211 | 206 | nomusic bool |
| 212 | 207 | workBe []BytecodeExp |
| 213 | - teamLifeShare bool | |
| 214 | - fullscreen bool | |
| 215 | - aiRandomColor bool | |
| 216 | - allowDebugKeys bool | |
| 217 | - commonAir string | |
| 218 | - commonCmd string | |
| 219 | - keyInput glfw.Key | |
| 220 | - keyString string | |
| 221 | - timerCount []int32 | |
| 222 | - cmdFlags map[string]string | |
| 223 | - quickLaunch bool | |
| 224 | 208 | } |
| 225 | 209 | |
| 226 | 210 | func (s *System) init(w, h int32) *lua.LState { |
| @@ -229,17 +213,11 @@ func (s *System) init(w, h int32) *lua.LState { | ||
| 229 | 213 | glfw.WindowHint(glfw.ContextVersionMinor, 1) |
| 230 | 214 | s.setWindowSize(w, h) |
| 231 | 215 | var err error |
| 232 | - if s.fullscreen { | |
| 233 | - s.window, err = glfw.CreateWindow(int(s.scrrect[2]), int(s.scrrect[3]), | |
| 234 | - "Ikemen GO", glfw.GetPrimaryMonitor(), nil) | |
| 235 | - } else { | |
| 236 | - s.window, err = glfw.CreateWindow(int(s.scrrect[2]), int(s.scrrect[3]), | |
| 237 | - "Ikemen GO", nil, nil) | |
| 238 | - } | |
| 216 | + s.window, err = glfw.CreateWindow(int(s.scrrect[2]), int(s.scrrect[3]), | |
| 217 | + "Ikemen GO", nil, nil) | |
| 239 | 218 | chk(err) |
| 240 | 219 | s.window.MakeContextCurrent() |
| 241 | 220 | s.window.SetKeyCallback(keyCallback) |
| 242 | - s.window.SetCharModsCallback(charCallback) | |
| 243 | 221 | glfw.SwapInterval(1) |
| 244 | 222 | chk(gl.Init()) |
| 245 | 223 | RenderInit() |
| @@ -392,15 +370,7 @@ func (s *System) soundWrite() { | ||
| 392 | 370 | if bgmSrc.Src.BuffersProcessed() > 0 { |
| 393 | 371 | out := s.nullSndBuf[:] |
| 394 | 372 | if !s.nomusic { |
| 395 | - if s.bgm.IsVorbis() { | |
| 396 | - out = s.bgm.ReadVorbis() | |
| 397 | - } else if s.bgm.IsMp3() && s.bgm.ctrlmp3 != nil { | |
| 398 | - s.bgm.ctrlmp3.Paused = false | |
| 399 | - } | |
| 400 | - } else { | |
| 401 | - if s.bgm.IsMp3() && s.bgm.ctrlmp3 != nil { | |
| 402 | - s.bgm.Mp3Paused() | |
| 403 | - } | |
| 373 | + out = s.bgm.read() | |
| 404 | 374 | } |
| 405 | 375 | buf := bgmSrc.Src.UnqueueBuffer() |
| 406 | 376 | buf.SetDataInt16(openal.FormatStereo16, out, audioFrequency) |
| @@ -456,11 +426,6 @@ func (s *System) anyHardButton() bool { | ||
| 456 | 426 | return true |
| 457 | 427 | } |
| 458 | 428 | } |
| 459 | - for _, kc := range s.JoystickConfig { | |
| 460 | - if kc.A() || kc.B() || kc.C() || kc.X() || kc.Y() || kc.Z() { | |
| 461 | - return true | |
| 462 | - } | |
| 463 | - } | |
| 464 | 429 | return false |
| 465 | 430 | } |
| 466 | 431 | func (s *System) anyButton() bool { |
| @@ -641,15 +606,11 @@ func (s *System) nextRound() { | ||
| 641 | 606 | } |
| 642 | 607 | } |
| 643 | 608 | } |
| 644 | -func (s *System) debugPaused() bool { | |
| 645 | - return s.paused && !s.step && s.oldTickCount < s.tickCount | |
| 646 | -} | |
| 647 | 609 | func (s *System) tickFrame() bool { |
| 648 | - return (!s.paused || s.step) && s.oldTickCount < s.tickCount | |
| 610 | + return s.oldTickCount < s.tickCount | |
| 649 | 611 | } |
| 650 | 612 | func (s *System) tickNextFrame() bool { |
| 651 | - return int(s.tickCountF+s.nextAddTime) > s.tickCount && | |
| 652 | - !s.paused || s.step || s.oldTickCount >= s.tickCount | |
| 613 | + return int(s.tickCountF+s.nextAddTime) > s.tickCount | |
| 653 | 614 | } |
| 654 | 615 | func (s *System) tickInterpola() float32 { |
| 655 | 616 | if s.tickNextFrame() { |
| @@ -658,10 +619,6 @@ func (s *System) tickInterpola() float32 { | ||
| 658 | 619 | return s.tickCountF - s.lastTick + s.nextAddTime |
| 659 | 620 | } |
| 660 | 621 | func (s *System) addFrameTime(t float32) bool { |
| 661 | - if s.debugPaused() { | |
| 662 | - s.oldNextAddTime = 0 | |
| 663 | - return true | |
| 664 | - } | |
| 665 | 622 | s.oldTickCount = s.tickCount |
| 666 | 623 | if int(s.tickCountF) > s.tickCount { |
| 667 | 624 | s.tickCount++ |
| @@ -818,8 +775,8 @@ func (s *System) action(x, y *float32, scl float32) (leftest, rightest, | ||
| 818 | 775 | s.lifebar.step() |
| 819 | 776 | if s.superanim != nil { |
| 820 | 777 | s.topSprites.add(&SprData{s.superanim, &s.superpmap, s.superpos, |
| 821 | - [...]float32{s.superfacing, 1}, [2]int32{-1}, 5, 0, 0, 0, [2]float32{}, | |
| 822 | - false, true, s.cgi[s.superplayer].ver[0] != 1, 1}, 0, 0, 0, 0) | |
| 778 | + [...]float32{s.superfacing, 1}, [2]int32{-1}, 5, 0, [2]float32{}, | |
| 779 | + false, true, s.cgi[s.superplayer].ver[0] != 1}, 0, 0, 0, 0) | |
| 823 | 780 | if s.superanim.loopend { |
| 824 | 781 | s.superanim = nil |
| 825 | 782 | } |
| @@ -927,7 +884,7 @@ func (s *System) action(x, y *float32, scl float32) (leftest, rightest, | ||
| 927 | 884 | ko := [...]bool{true, true} |
| 928 | 885 | for ii := range ko { |
| 929 | 886 | for i := ii; i < len(s.chars); i += 2 { |
| 930 | - if len(s.chars[i]) > 0 && s.chars[i][0].alive() && s.chars[i][0].teamside < 2 { | |
| 887 | + if len(s.chars[i]) > 0 && s.chars[i][0].alive() { | |
| 931 | 888 | ko[ii] = false |
| 932 | 889 | break |
| 933 | 890 | } |
| @@ -1093,8 +1050,11 @@ func (s *System) action(x, y *float32, scl float32) (leftest, rightest, | ||
| 1093 | 1050 | s.intro = 0 |
| 1094 | 1051 | } |
| 1095 | 1052 | } |
| 1096 | - if s.tickNextFrame() { | |
| 1053 | + if s.turbo == 0 || s.tickNextFrame() { | |
| 1097 | 1054 | spd := s.accel |
| 1055 | + if s.paused && !s.step { | |
| 1056 | + spd = 0 | |
| 1057 | + } | |
| 1098 | 1058 | _else := s.sf(GSF_nokoslow) || s.time == 0 |
| 1099 | 1059 | if !_else { |
| 1100 | 1060 | slowt := -(s.lifebar.ro.over_hittime + (s.lifebar.ro.slow_time+3)>>2) |
| @@ -1227,15 +1187,15 @@ func (s *System) draw(x, y, scl float32) { | ||
| 1227 | 1187 | } |
| 1228 | 1188 | s.brightness = ob |
| 1229 | 1189 | if s.clsnDraw { |
| 1230 | - s.clsnSpr.Pal[0] = 0xff0000ff | |
| 1190 | + s.clsnSpr.Pal[0] = 0x0000ff | |
| 1231 | 1191 | s.drawc1.draw(0x3feff) |
| 1232 | - s.clsnSpr.Pal[0] = 0xffff0000 | |
| 1192 | + s.clsnSpr.Pal[0] = 0xff0000 | |
| 1233 | 1193 | s.drawc2.draw(0x3feff) |
| 1234 | - s.clsnSpr.Pal[0] = 0xff00ff00 | |
| 1194 | + s.clsnSpr.Pal[0] = 0x00ff00 | |
| 1235 | 1195 | s.drawc2sp.draw(0x3feff) |
| 1236 | - s.clsnSpr.Pal[0] = 0xff002000 | |
| 1196 | + s.clsnSpr.Pal[0] = 0x002000 | |
| 1237 | 1197 | s.drawc2mtk.draw(0x3feff) |
| 1238 | - s.clsnSpr.Pal[0] = 0xff404040 | |
| 1198 | + s.clsnSpr.Pal[0] = 0x404040 | |
| 1239 | 1199 | s.drawwh.draw(0x3feff) |
| 1240 | 1200 | } |
| 1241 | 1201 | } |
| @@ -1401,7 +1361,7 @@ func (s *System) fight() (reload bool) { | ||
| 1401 | 1361 | case TM_Simul: |
| 1402 | 1362 | lm *= s.team1VS2Life |
| 1403 | 1363 | case TM_Turns: |
| 1404 | - if s.numTurns[(i+1)&1] < s.matchWins[(i+1)&1] && sys.teamLifeShare { | |
| 1364 | + if s.numTurns[(i+1)&1] < s.matchWins[(i+1)&1] { | |
| 1405 | 1365 | lm = lm * float32(s.numTurns[(i+1)&1]) / |
| 1406 | 1366 | float32(s.matchWins[(i+1)&1]) |
| 1407 | 1367 | } |
| @@ -1409,33 +1369,31 @@ func (s *System) fight() (reload bool) { | ||
| 1409 | 1369 | case TM_Simul: |
| 1410 | 1370 | switch s.tmode[(i+1)&1] { |
| 1411 | 1371 | case TM_Simul: |
| 1412 | - if s.numSimul[(i+1)&1] < s.numSimul[i&1] && sys.teamLifeShare { | |
| 1372 | + if s.numSimul[(i+1)&1] < s.numSimul[i&1] { | |
| 1413 | 1373 | lm = lm * float32(s.numSimul[(i+1)&1]) / float32(s.numSimul[i&1]) |
| 1414 | 1374 | } |
| 1415 | 1375 | case TM_Turns: |
| 1416 | - if s.numTurns[(i+1)&1] < s.numSimul[i&1]*s.matchWins[(i+1)&1] && sys.teamLifeShare { | |
| 1376 | + if s.numTurns[(i+1)&1] < s.numSimul[i&1]*s.matchWins[(i+1)&1] { | |
| 1417 | 1377 | lm = lm * float32(s.numTurns[(i+1)&1]) / |
| 1418 | 1378 | float32(s.numSimul[i&1]*s.matchWins[(i+1)&1]) |
| 1419 | 1379 | } |
| 1420 | 1380 | default: |
| 1421 | - if sys.teamLifeShare { | |
| 1422 | - lm /= float32(s.numSimul[i&1]) | |
| 1423 | - } | |
| 1381 | + lm /= float32(s.numSimul[i&1]) | |
| 1424 | 1382 | } |
| 1425 | 1383 | case TM_Turns: |
| 1426 | 1384 | switch s.tmode[(i+1)&1] { |
| 1427 | 1385 | case TM_Single: |
| 1428 | - if s.matchWins[i&1] < s.numTurns[i&1] && sys.teamLifeShare { | |
| 1386 | + if s.matchWins[i&1] < s.numTurns[i&1] { | |
| 1429 | 1387 | lm = lm * float32(s.matchWins[i&1]) / float32(s.numTurns[i&1]) |
| 1430 | 1388 | } |
| 1431 | 1389 | case TM_Simul: |
| 1432 | - if s.numSimul[(i+1)&1]*s.matchWins[i&1] < s.numTurns[i&1] && sys.teamLifeShare { | |
| 1390 | + if s.numSimul[(i+1)&1]*s.matchWins[i&1] < s.numTurns[i&1] { | |
| 1433 | 1391 | lm = lm * s.team1VS2Life * |
| 1434 | 1392 | float32(s.numSimul[(i+1)&1]*s.matchWins[i&1]) / |
| 1435 | 1393 | float32(s.numTurns[i&1]) |
| 1436 | 1394 | } |
| 1437 | 1395 | case TM_Turns: |
| 1438 | - if s.numTurns[(i+1)&1] < s.numTurns[i&1] && sys.teamLifeShare { | |
| 1396 | + if s.numTurns[(i+1)&1] < s.numTurns[i&1] { | |
| 1439 | 1397 | lm = lm * float32(s.numTurns[(i+1)&1]) / float32(s.numTurns[i&1]) |
| 1440 | 1398 | } |
| 1441 | 1399 | } |
| @@ -1532,7 +1490,10 @@ func (s *System) fight() (reload bool) { | ||
| 1532 | 1490 | break |
| 1533 | 1491 | } |
| 1534 | 1492 | } |
| 1535 | - scl = s.cam.ScaleBound(scl, sclmul) | |
| 1493 | + if s.turbo < 1 { | |
| 1494 | + sclmul = Pow(sclmul, s.turbo) | |
| 1495 | + } | |
| 1496 | + scl = s.cam.ScaleBound(scl * sclmul) | |
| 1536 | 1497 | tmp := (float32(s.gameWidth) / 2) / scl |
| 1537 | 1498 | if AbsF((l+r)-(newx-x)*2) >= tmp/2 { |
| 1538 | 1499 | tmp = MaxF(0, MinF(tmp, MaxF((newx-x)-l, r-(newx-x)))) |
| @@ -1683,14 +1644,11 @@ func (wm wincntMap) getLevel(p int) int32 { | ||
| 1683 | 1644 | } |
| 1684 | 1645 | |
| 1685 | 1646 | type SelectChar struct { |
| 1686 | - def, name, sprite, intro_storyboard, ending_storyboard string | |
| 1687 | - pal_defaults []int32 | |
| 1688 | - pal []int32 | |
| 1689 | - portrait_scale float32 | |
| 1690 | - sportrait, lportrait, vsportrait, vportrait *Sprite | |
| 1647 | + def, name, sprite string | |
| 1648 | + sportrait, lportrait *Sprite | |
| 1691 | 1649 | } |
| 1692 | 1650 | type SelectStage struct { |
| 1693 | - def, name, zoomout, zoomin, bgmusic, bgmvolume, attachedchardef string | |
| 1651 | + def, name string | |
| 1694 | 1652 | } |
| 1695 | 1653 | type Select struct { |
| 1696 | 1654 | columns, rows int |
| @@ -1703,17 +1661,12 @@ type Select struct { | ||
| 1703 | 1661 | curStageNo int |
| 1704 | 1662 | selected [2][][2]int |
| 1705 | 1663 | selectedStageNo int |
| 1706 | - sportrait [2]int16 | |
| 1707 | - lportrait [2]int16 | |
| 1708 | - vsportrait [2]int16 | |
| 1709 | - vportrait [2]int16 | |
| 1710 | 1664 | } |
| 1711 | 1665 | |
| 1712 | 1666 | func newSelect() *Select { |
| 1713 | 1667 | return &Select{columns: 5, rows: 2, randomscl: [...]float32{1, 1}, |
| 1714 | 1668 | cellsize: [...]float32{29, 29}, cellscale: [...]float32{1, 1}, |
| 1715 | - selectedStageNo: -1, sportrait: [...]int16{9000, 0}, lportrait: [...]int16{9000, 1}, | |
| 1716 | - vsportrait: [...]int16{9000, 1}, vportrait: [...]int16{9000, 2}} | |
| 1669 | + selectedStageNo: -1} | |
| 1717 | 1670 | } |
| 1718 | 1671 | func (s *Select) GetCharNo(i int) int { |
| 1719 | 1672 | n := i |
| @@ -1750,13 +1703,6 @@ func (s *Select) GetStageName(n int) string { | ||
| 1750 | 1703 | } |
| 1751 | 1704 | return s.stagelist[n-1].name |
| 1752 | 1705 | } |
| 1753 | -func (s *Select) GetStageInfo(n int) (zoomin, zoomout, bgmusic, bgmvolume string) { | |
| 1754 | - n %= len(s.stagelist) + 1 | |
| 1755 | - if n < 0 { | |
| 1756 | - n += len(s.stagelist) + 1 | |
| 1757 | - } | |
| 1758 | - return s.stagelist[n-1].zoomin, s.stagelist[n-1].zoomout, s.stagelist[n-1].bgmusic, s.stagelist[n-1].bgmvolume | |
| 1759 | -} | |
| 1760 | 1706 | func (s *Select) addCahr(def string) { |
| 1761 | 1707 | s.charlist = append(s.charlist, SelectChar{}) |
| 1762 | 1708 | sc := &s.charlist[len(s.charlist)-1] |
| @@ -1776,7 +1722,7 @@ func (s *Select) addCahr(def string) { | ||
| 1776 | 1722 | } else { |
| 1777 | 1723 | def += ".def" |
| 1778 | 1724 | } |
| 1779 | - if strings.ToLower(def[0:6]) != "chars/" && strings.ToLower(def[1:3]) != ":/" && (def[0] != '/' || idx > 0 && strings.Index(def[:idx], ":") < 0) { | |
| 1725 | + if def[0] != '/' || idx > 0 && strings.Index(def[:idx], ":") < 0 { | |
| 1780 | 1726 | def = "chars/" + def |
| 1781 | 1727 | } |
| 1782 | 1728 | if def = FileExist(def); len(def) == 0 { |
| @@ -1787,7 +1733,7 @@ func (s *Select) addCahr(def string) { | ||
| 1787 | 1733 | return |
| 1788 | 1734 | } |
| 1789 | 1735 | sc.def = def |
| 1790 | - lines, i, info, files, arcade, sprite := SplitAndTrim(str, "\n"), 0, true, true, true, "" | |
| 1736 | + lines, i, info, files, sprite := SplitAndTrim(str, "\n"), 0, true, true, "" | |
| 1791 | 1737 | for i < len(lines) { |
| 1792 | 1738 | is, name, _ := ReadIniSection(lines, &i) |
| 1793 | 1739 | switch name { |
| @@ -1799,55 +1745,25 @@ func (s *Select) addCahr(def string) { | ||
| 1799 | 1745 | if !ok { |
| 1800 | 1746 | sc.name, _, _ = is.getText("name") |
| 1801 | 1747 | } |
| 1802 | - sc.pal_defaults = is.readI32CsvForStage("pal.defaults") | |
| 1803 | - ok = is.ReadF32("localcoord", &sc.portrait_scale) | |
| 1804 | - if !ok { | |
| 1805 | - sc.portrait_scale = 1 | |
| 1806 | - } else { | |
| 1807 | - sc.portrait_scale = (320 / sc.portrait_scale) | |
| 1808 | - } | |
| 1809 | - is.ReadF32("portraitscale", &sc.portrait_scale) | |
| 1810 | 1748 | } |
| 1811 | 1749 | case "files": |
| 1812 | 1750 | if files { |
| 1813 | 1751 | files = false |
| 1814 | 1752 | sprite = is["sprite"] |
| 1815 | - for i := 1; i <= MaxPalNo; i++ { | |
| 1816 | - if is[fmt.Sprintf("pal%v", i)] != "" { | |
| 1817 | - sc.pal = append(sc.pal, int32(i)) | |
| 1818 | - } | |
| 1819 | - } | |
| 1820 | - } | |
| 1821 | - case "arcade": | |
| 1822 | - if arcade { | |
| 1823 | - arcade = false | |
| 1824 | - sc.intro_storyboard, _ = is.getString("intro.storyboard") | |
| 1825 | - sc.ending_storyboard, _ = is.getString("ending.storyboard") | |
| 1826 | 1753 | } |
| 1827 | 1754 | } |
| 1828 | 1755 | } |
| 1829 | 1756 | sc.sprite = sprite |
| 1830 | 1757 | LoadFile(&sprite, def, func(file string) error { |
| 1831 | 1758 | var err error |
| 1832 | - sc.sportrait, err = loadFromSff(file, sys.sel.sportrait[0], sys.sel.sportrait[1]) | |
| 1833 | - if sys.quickLaunch { | |
| 1834 | - sc.lportrait = sc.sportrait | |
| 1835 | - sc.vsportrait, sc.vportrait = sc.lportrait, sc.lportrait | |
| 1836 | - } else { | |
| 1837 | - sc.lportrait, err = loadFromSff(file, sys.sel.lportrait[0], sys.sel.lportrait[1]) | |
| 1838 | - sc.vsportrait, err = loadFromSff(file, sys.sel.vsportrait[0], sys.sel.vsportrait[1]) | |
| 1839 | - if err != nil { | |
| 1840 | - sc.vsportrait = sc.lportrait | |
| 1841 | - } | |
| 1842 | - sc.vportrait, err = loadFromSff(file, sys.sel.vportrait[0], sys.sel.vportrait[1]) | |
| 1843 | - if err != nil { | |
| 1844 | - sc.vportrait = sc.lportrait | |
| 1845 | - } | |
| 1846 | - } | |
| 1847 | - if len(sc.pal) == 0 { | |
| 1848 | - sc.pal, _ = selectablePalettes(file) | |
| 1849 | - } | |
| 1850 | - return nil | |
| 1759 | + sc.sportrait, err = loadFromSff(file, 9000, 0) | |
| 1760 | + return err | |
| 1761 | + }) | |
| 1762 | + sprite = sc.sprite | |
| 1763 | + LoadFile(&sprite, def, func(file string) error { | |
| 1764 | + var err error | |
| 1765 | + sc.lportrait, err = loadFromSff(file, 9000, 1) | |
| 1766 | + return err | |
| 1851 | 1767 | }) |
| 1852 | 1768 | } |
| 1853 | 1769 | func (s *Select) AddStage(def string) error { |
| @@ -1862,7 +1778,7 @@ func (s *Select) AddStage(def string) error { | ||
| 1862 | 1778 | }); err != nil { |
| 1863 | 1779 | return err |
| 1864 | 1780 | } |
| 1865 | - i, info, camera, music := 0, true, true, true | |
| 1781 | + i, info := 0, true | |
| 1866 | 1782 | s.stagelist = append(s.stagelist, SelectStage{}) |
| 1867 | 1783 | ss := &s.stagelist[len(s.stagelist)-1] |
| 1868 | 1784 | ss.def = def |
| @@ -1880,33 +1796,6 @@ func (s *Select) AddStage(def string) error { | ||
| 1880 | 1796 | ss.name = def |
| 1881 | 1797 | } |
| 1882 | 1798 | } |
| 1883 | - ss.attachedchardef, ok = is.getString("attachedchar") | |
| 1884 | - } | |
| 1885 | - case "camera": | |
| 1886 | - if camera { | |
| 1887 | - camera = false | |
| 1888 | - var ok bool | |
| 1889 | - ss.zoomout, ok = is.getString("setzoommax") | |
| 1890 | - if !ok { | |
| 1891 | - ss.zoomout = "" | |
| 1892 | - } | |
| 1893 | - ss.zoomin, ok = is.getString("setzoommin") | |
| 1894 | - if !ok { | |
| 1895 | - ss.zoomin = "" | |
| 1896 | - } | |
| 1897 | - } | |
| 1898 | - case "music": | |
| 1899 | - if music { | |
| 1900 | - music = false | |
| 1901 | - var ok bool | |
| 1902 | - ss.bgmusic, ok = is.getString("bgmusic") | |
| 1903 | - if !ok { | |
| 1904 | - ss.bgmusic = "100" | |
| 1905 | - } | |
| 1906 | - ss.bgmvolume, ok = is.getString("bgmvolume") | |
| 1907 | - if !ok { | |
| 1908 | - ss.bgmvolume = "100" | |
| 1909 | - } | |
| 1910 | 1799 | } |
| 1911 | 1800 | } |
| 1912 | 1801 | } |
| @@ -1999,13 +1888,7 @@ func (l *Loader) loadChar(pn int) int { | ||
| 1999 | 1888 | } else { |
| 2000 | 1889 | p = newChar(pn, 0) |
| 2001 | 1890 | sys.cgi[pn].sff = nil |
| 2002 | - if len(sys.chars[pn]) > 0 { | |
| 2003 | - p.power = sys.chars[pn][0].power | |
| 2004 | - } | |
| 2005 | 1891 | } |
| 2006 | - p.memberNo = memberNo | |
| 2007 | - p.selectNo = sys.sel.selected[pn&1][memberNo][0] | |
| 2008 | - p.teamside = p.playerNo & 1 | |
| 2009 | 1892 | sys.chars[pn] = make([]*Char, 1) |
| 2010 | 1893 | sys.chars[pn][0] = p |
| 2011 | 1894 | if sys.cgi[pn].sff == nil { |
| @@ -2025,67 +1908,26 @@ func (l *Loader) loadChar(pn int) int { | ||
| 2025 | 1908 | if pn < len(sys.lifebar.fa[sys.tmode[pn&1]]) && |
| 2026 | 1909 | sys.tmode[pn&1] == TM_Turns && sys.round == 1 { |
| 2027 | 1910 | fa := sys.lifebar.fa[sys.tmode[pn&1]][pn] |
| 2028 | - fa.numko, fa.teammate_face, fa.teammate_scale = 0, make([]*Sprite, nsel), make([]float32, nsel) | |
| 1911 | + fa.numko, fa.teammate_face = 0, make([]*Sprite, nsel) | |
| 2029 | 1912 | for i, ci := range idx { |
| 2030 | 1913 | sprite := sys.sel.charlist[ci].sprite |
| 2031 | 1914 | LoadFile(&sprite, sys.sel.charlist[ci].def, func(file string) error { |
| 2032 | 1915 | var err error |
| 2033 | 1916 | fa.teammate_face[i], err = loadFromSff(file, |
| 2034 | 1917 | int16(fa.teammate_face_spr[0]), int16(fa.teammate_face_spr[1])) |
| 2035 | - fa.teammate_scale[i] = sys.sel.charlist[ci].portrait_scale | |
| 2036 | 1918 | return err |
| 2037 | 1919 | }) |
| 2038 | 1920 | } |
| 2039 | 1921 | } |
| 2040 | 1922 | return 1 |
| 2041 | 1923 | } |
| 2042 | - | |
| 2043 | -func (l *Loader) loadAttachedChar(atcpn int, def string) int { | |
| 2044 | - pn := atcpn + MaxSimul*2 | |
| 2045 | - cdef := def | |
| 2046 | - var p *Char | |
| 2047 | - if len(sys.chars[pn]) > 0 && cdef == sys.cgi[pn].def { | |
| 2048 | - p = sys.chars[pn][0] | |
| 2049 | - p.key = -pn | |
| 2050 | - } else { | |
| 2051 | - p = newChar(pn, 0) | |
| 2052 | - sys.cgi[pn].sff = nil | |
| 2053 | - if len(sys.chars[pn]) > 0 { | |
| 2054 | - p.power = sys.chars[pn][0].power | |
| 2055 | - } | |
| 2056 | - } | |
| 2057 | - p.memberNo = -atcpn | |
| 2058 | - p.selectNo = -atcpn | |
| 2059 | - p.teamside = 2 | |
| 2060 | - sys.com[pn] = 8 | |
| 2061 | - sys.chars[pn] = make([]*Char, 1) | |
| 2062 | - sys.chars[pn][0] = p | |
| 2063 | - if sys.cgi[pn].sff == nil { | |
| 2064 | - if sys.cgi[pn].states, l.err = | |
| 2065 | - newCompiler().Compile(p.playerNo, cdef); l.err != nil { | |
| 2066 | - sys.chars[pn] = nil | |
| 2067 | - return -1 | |
| 2068 | - } | |
| 2069 | - if l.err = p.load(cdef); l.err != nil { | |
| 2070 | - sys.chars[pn] = nil | |
| 2071 | - return -1 | |
| 2072 | - } | |
| 2073 | - } | |
| 2074 | - if sys.roundsExisted[pn&1] == 0 { | |
| 2075 | - sys.cgi[pn].palno = 1 | |
| 2076 | - } | |
| 2077 | - return 1 | |
| 2078 | -} | |
| 2079 | - | |
| 2080 | 1924 | func (l *Loader) loadStage() bool { |
| 2081 | 1925 | if sys.round == 1 { |
| 2082 | 1926 | var def string |
| 2083 | 1927 | if sys.sel.selectedStageNo == 0 { |
| 2084 | - randomstageno := Rand(0, int32(len(sys.sel.stagelist))-1) | |
| 2085 | - def = sys.sel.stagelist[randomstageno].def | |
| 1928 | + def = sys.sel.stagelist[Rand(0, int32(len(sys.sel.stagelist))-1)].def | |
| 2086 | 1929 | } else { |
| 2087 | 1930 | def = sys.sel.stagelist[sys.sel.selectedStageNo-1].def |
| 2088 | - l.loadAttachedChar(0, sys.sel.stagelist[sys.sel.selectedStageNo-1].attachedchardef) | |
| 2089 | 1931 | } |
| 2090 | 1932 | if sys.stage != nil && sys.stage.def == def { |
| 2091 | 1933 | return true |