some updates
This commit is contained in:
parent
d103f5f507
commit
4454a25d5b
@ -112,6 +112,9 @@
|
||||
<haxelib name="flixel-addons" />
|
||||
<haxelib name="hscript" />
|
||||
|
||||
<haxelib name="actuate" />
|
||||
<haxelib name="extension-webm"/> <!-- Make sure to use https://github.com/KadeDev/extension-webm/ -->
|
||||
|
||||
<!--In case you want to use the ui package-->
|
||||
<haxelib name="flixel-ui" />
|
||||
<haxelib name="newgrounds"/>
|
||||
|
@ -60,3 +60,9 @@ This game was made with love to Newgrounds and its community. Extra love to Tom
|
||||
### Kade Engine
|
||||
- [KadeDeveloper](https://twitter.com/KadeDeveloper) - Maintainer and lead programmer
|
||||
- [The contributors](https://github.com/KadeDev/Kade-Engine/graphs/contributors)
|
||||
|
||||
|
||||
### Shoutouts
|
||||
- [GWebDev](https://github.com/GrowtopiaFli) - Video Code
|
||||
- [Rozebud](https://github.com/ThatRozebudDude) - Ideas (that I stole)
|
||||
- [Puyo](https://github.com/daniel11420) - Setting up appveyor and a lot of other help
|
BIN
assets/preload/videos/daWeirdVid/dontDelete.webm
Normal file
BIN
assets/preload/videos/daWeirdVid/dontDelete.webm
Normal file
Binary file not shown.
@ -26,7 +26,7 @@ hr {
|
||||
<p id="HtmlIsTheWorstThingIHaveEverUsed">
|
||||
<a class="headerlink" href="{{site.url}}changelogs/">Changelogs</a>
|
||||
<a class="headerlink" href="{{site.url}}building">Building</a>
|
||||
<a class="headerlink" href="{{site.url}}modchart">Modcharts</a>
|
||||
<a class="headerlink" href="https://github.com/KadeDev/Kade-Engine/wiki/">Modchart Documentation</a>
|
||||
<a class="headerlink" href="{{site.url}}guides">Guides</a>
|
||||
<br>
|
||||
<hr>
|
||||
|
533
docs/modchart.md
533
docs/modchart.md
@ -1,531 +1,2 @@
|
||||
# Lua Modcharts
|
||||
|
||||
In the 1.4.2 release of Kade Engine, we introduced Mod Charts. Mod Charts are a way of changing gameplay without hard coded values. This is achieved by using the Lua Scripting language to create script files that run during runtime.
|
||||
|
||||
Song data is located in `assets/data/<song>/`, so the Lua file containing your scripts should be located at exactly `assets/data/<song>/modchart.lua`. (replace <song> with the name of the song. for example, `assets/data/milf/` for milf)
|
||||
|
||||
If the file doesn't exist, Lua code won't be ran.
|
||||
|
||||
## Examples
|
||||
|
||||
Full Example
|
||||
|
||||
```lua
|
||||
function start (song)
|
||||
print("Song: " .. song .. " @ " .. bpm .. " downscroll: " .. downscroll)
|
||||
end
|
||||
|
||||
|
||||
function update (elapsed) -- example https://twitter.com/KadeDeveloper/status/1382178179184422918
|
||||
local currentBeat = (songPos / 1000)*(bpm/60)
|
||||
for i=0,7 do
|
||||
setActorX(_G['defaultStrum'..i..'X'] + 32 * math.sin((currentBeat + i*0.25) * math.pi), i)
|
||||
setActorY(_G['defaultStrum'..i..'Y'] + 32 * math.cos((currentBeat + i*0.25) * math.pi), i)
|
||||
end
|
||||
end
|
||||
|
||||
function beatHit (beat)
|
||||
-- do nothing
|
||||
end
|
||||
|
||||
function stepHit (step)
|
||||
-- do nothing
|
||||
end
|
||||
|
||||
function keyPressed (key)
|
||||
-- do nothing
|
||||
end
|
||||
|
||||
print("Mod Chart script loaded :)")
|
||||
```
|
||||
|
||||
Spinning Receptor Example
|
||||
|
||||
```lua
|
||||
function update (elapsed)
|
||||
for i=0,7 do
|
||||
setActorAngle(getActorAngle(i) + 15, i)
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
Spinning Hud Example
|
||||
|
||||
```lua
|
||||
function update (elapsed)
|
||||
camHudAngle = camHudAngle + 0.005
|
||||
end
|
||||
```
|
||||
|
||||
Spin at a specific part of the song
|
||||
|
||||
```lua
|
||||
function update (elapsed)
|
||||
if curStep >= 352 and curStep < 400 then
|
||||
local currentBeat = (songPos / 1000)*(bpm/60)
|
||||
for i=0,7 do
|
||||
setActorX(_G['defaultStrum'..i..'X'] + 32 * math.sin((currentBeat + i*0.25) * math.pi), i)
|
||||
setActorY(_G['defaultStrum'..i..'Y'] + 32 * math.cos((currentBeat + i*0.25) * math.pi), i)
|
||||
end
|
||||
else
|
||||
for i=0,7 do
|
||||
setActorX(_G['defaultStrum'..i..'X'],i)
|
||||
setActorY(_G['defaultStrum'..i..'Y'],i)
|
||||
end
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
Showing/Hiding receptors/the hud
|
||||
|
||||
```lua
|
||||
function start (song)
|
||||
showOnlyStrums = true -- remove all hud elements besides notes and strums
|
||||
for i=0,3 do -- fade out the first 4 receptors (the ai receptors)
|
||||
tweenFadeIn(i,0,0.6)
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
Looping through all of the rendered notes
|
||||
|
||||
```lua
|
||||
for i = 0, getRenderedNotes() do -- sets all of the rendered notes to 0 0 on the x and y axsis
|
||||
setRenderedNotePos(0,0,i)
|
||||
end
|
||||
```
|
||||
|
||||
Centering BF's Side
|
||||
|
||||
```lua
|
||||
function setDefault(id)
|
||||
_G['defaultStrum'..id..'X'] = getActorX(id)
|
||||
end
|
||||
|
||||
-- put this somewhere in a function
|
||||
|
||||
for i = 4, 7 do -- go to the center
|
||||
tweenPosXAngle(i, _G['defaultStrum'..i..'X'] - 275,getActorAngle(i) + 360, 0.6, 'setDefault')
|
||||
end
|
||||
```
|
||||
|
||||
Jumping Arrows Example
|
||||
```lua
|
||||
function stepHit (step)
|
||||
if step == 1 then
|
||||
setActorAccelerationY(100, 4)
|
||||
end
|
||||
if step == 3 then
|
||||
setActorAccelerationY(100, 5)
|
||||
end
|
||||
if step == 5 then
|
||||
setActorAccelerationY(100, 6)
|
||||
end
|
||||
if step == 7 then
|
||||
setActorAccelerationY(100, 7)
|
||||
end
|
||||
for i=4,7 do
|
||||
if getActorY(i) >= 100 then
|
||||
setActorY(100, i)
|
||||
setActorVelocityY(-100, i)
|
||||
end
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
|
||||
### Available Hooks
|
||||
|
||||
Current calls to functions include,
|
||||
|
||||
| Name | Arguments | Description |
|
||||
| :-----: | :------------: | :----------------------------------------------------------: |
|
||||
| start | Song Name | Gets called when the song starts |
|
||||
| update | Elapsed frames | Gets called every frame (after the song starts) |
|
||||
| stepHit | Current Step | Gets called when ever a step hits (steps are in between beats, aka 4 steps are in a beat) |
|
||||
| beatHit | Current Beat | Gets called when ever a beat hits |
|
||||
| keyPressed | Key Pressed | Gets called when a key just got pressed (up, down, left, right, accept) |
|
||||
|
||||
|
||||
|
||||
### Global Variables
|
||||
|
||||
Kade Engine provides a list of global variables to be used in the lua scripting interface.
|
||||
|
||||
| G Name | Type | Description |
|
||||
| :------------------: | :---: | :----------------------------------------------------------: |
|
||||
| bpm | Float | The current BPM of the song |
|
||||
| fpsCap | Int | The current FPS Cap (set by the player) |
|
||||
| downscroll | Bool | Whether the player is in downscroll or not |
|
||||
| cameraAngle | Float | The angle that the Main Camera should be rotated |
|
||||
| camHudAngle | Float | The angle that the Hud should be rotated |
|
||||
| followXOffset | Float | The x offset to be added when the camera moves between a character |
|
||||
| followYOffset | Float | The y offset to be added when the camera moves between a character |
|
||||
| showOnlyStrums | Bool | Whether to show the Hud and Strums or only the Strums |
|
||||
| strumLine1Visible | Bool | Whether to show the first strum line or not |
|
||||
| strumLine2Visible | Bool | Whether to show the secondstrum line or not |
|
||||
| defaultStrum0-7X | Float | (0-7 is strum0,strum1,strum2,etc) get the default X coordinate for the strum |
|
||||
| defaultStrum0-7Y | Float | (0-7 is strum0,strum1,strum2,etc) get the default Y coordinate for the strum |
|
||||
| defaultStrum0-7Angle | Float | (0-7 is strum0,strum1,strum2,etc) get the default Angle for the strum |
|
||||
| screenWidth | Int | The width of the current gamespace |
|
||||
| screenHeight | Int | The height of the current gamespace |
|
||||
| hudWidth | Int | The width of the hud |
|
||||
| hudHeight | Int | The height of the hud |
|
||||
| scrollSpeed | Int | The current scrollspeed |
|
||||
| mustHit | Bool | If the current section is a must hit section |
|
||||
| strumLineY | Float | The current Strum Line Y Position |
|
||||
|
||||
## Functions
|
||||
|
||||
Kade Engine exposes a lot of functions that let you modify elements in the game field.
|
||||
|
||||
|
||||
|
||||
To get started every sprite has an id, and there are some id's that are accessible without creating one.
|
||||
|
||||
These premade id's are the following:
|
||||
|
||||
| Sprite Id | Value |
|
||||
| :--------: | :--------------------------------------: |
|
||||
| 0-7 | Represents Receptor 0-7 |
|
||||
| boyfriend | Represents the Boyfriend Actor (player1) |
|
||||
| dad | Represents the Dad Actor (player2) |
|
||||
| girlfriend | Represents the Girlfriend Actor |
|
||||
|
||||
|
||||
|
||||
### Sprites
|
||||
|
||||
##### makeSprite(string SpritePath,string SpriteId,bool DrawBehind)
|
||||
|
||||
Creates a sprite out of the specified image, returns the id you gave it.
|
||||
|
||||
*Note: Sprite Path is normally the FILE NAME so if your file is named `Image` it'll go to assets/data/songName/Image.png so don't include the extension*
|
||||
|
||||
### Hud/Camera
|
||||
|
||||
##### setHudPosition(int x, int y)
|
||||
|
||||
Sets the game hud's position in space.
|
||||
|
||||
##### getHudX()
|
||||
|
||||
Returns the hud's x position
|
||||
|
||||
##### getHudY()
|
||||
|
||||
Returns the hud's y position
|
||||
|
||||
##### setCamPosition(int x, int y)
|
||||
|
||||
Set's the current camera's position in space
|
||||
|
||||
##### getCameraX()
|
||||
|
||||
Returns the current camera's x position
|
||||
|
||||
##### getCameraY()
|
||||
|
||||
Returns the current camera's y position
|
||||
|
||||
##### setCamZoom(float zoomAmount)
|
||||
|
||||
Set's the current camera's zoom
|
||||
|
||||
##### setHudZoom(float zoomAmount)
|
||||
|
||||
Set's the hud's zoom
|
||||
|
||||
### Strumline
|
||||
|
||||
##### setStrumlineY(float y)
|
||||
|
||||
Set's the y position of the strumLine
|
||||
|
||||
### Actors
|
||||
|
||||
##### getRenderedNotes()
|
||||
|
||||
Returns the amount of rendered notes.
|
||||
|
||||
##### getRenderedNoteX(int id)
|
||||
|
||||
Returns the x position of the rendered note id
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### getRenderedNoteY(int id)
|
||||
|
||||
Returns the y position of the rendered note id
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### getRenderedNoteScaleX(int id)
|
||||
|
||||
Returns the scale x of the rendered note id
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### getRenderedNoteScaleY(int id)
|
||||
|
||||
Returns the scale y of the rendered note id
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### getRenderedNoteType(int id)
|
||||
|
||||
Returns the note data of an note (0-3, left, down, up, right)
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### getRenderedNoteHit(int id)
|
||||
|
||||
Returns whether a rendered note must be hit by the player or not
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### isSustain(int id)
|
||||
|
||||
Returns whether a rendered note is a sustain note or not (if they appear as the trail)
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### isParentSustain(int id)
|
||||
|
||||
Returns whether a rendered note's parrent is a sustain note or not (if they appear as the trail)
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### getRenderedNoteParentX(int id)
|
||||
|
||||
Returns the current parent x of the specified rendered note's id
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### getRenderedNoteParentY(int id)
|
||||
|
||||
Returns the current parent y of the specified rendered note's id
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### getRenderedNoteCalcX(int id)
|
||||
|
||||
Returns what the game would normally put the specified rendered note x.
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### anyNotes()
|
||||
|
||||
Returns true if there are rendered notes, and returns false if there are none
|
||||
|
||||
##### getRenderedNoteStrumtime(int id)
|
||||
|
||||
Returns strum time of the rendered note.
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### getRenderedNoteAlpha(int id)
|
||||
|
||||
Returns the alpha of the rendered note id
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### getRenderedNoteWidth(int id)
|
||||
|
||||
Returns the width of the specified rendered note.
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### getRenderedNoteAngle(int id)
|
||||
|
||||
Returns the angle of the specified rendered note.
|
||||
|
||||
*Note: Rendered Notes id's are special in the way that they act. 0 = closest note to any receptor, last index = the farthest away from any receptor.*
|
||||
|
||||
##### setRenderedNotePos(int x, int y, int id)
|
||||
|
||||
Set's the position of the rendered note id
|
||||
|
||||
*Note: Setting a Rendered Note's property will stop the note from updating it's alpha & x properties*
|
||||
|
||||
##### setRenderedNoteAlpha(float alpha, int id)
|
||||
|
||||
Set's the alpha of the rendered note id
|
||||
|
||||
*Note: Setting a Rendered Note's property will stop the note from updating it's alpha & x properties*
|
||||
|
||||
##### setRenderedNoteScale(float scale, int id)
|
||||
|
||||
Set's the scale of the rendered note id
|
||||
|
||||
*Note: Setting a Rendered Note's property will stop the note from updating it's alpha & x properties*
|
||||
|
||||
##### setRenderedNoteScaleX(float scale, int id) **Currently broken**
|
||||
|
||||
Set's the scale x of the rendered note id
|
||||
|
||||
*Note: Setting a Rendered Note's property will stop the note from updating it's alpha & x properties*
|
||||
|
||||
##### setRenderedNoteScaleY(float scale, int id) **Currently broken**
|
||||
|
||||
Set's the scale y of the rendered note id
|
||||
|
||||
*Note: Setting a Rendered Note's property will stop the note from updating it's alpha & x properties*
|
||||
|
||||
##### getActorX(string/int id)
|
||||
|
||||
Returns the x position for the sprite id
|
||||
|
||||
##### getActorY(string/int id)
|
||||
|
||||
Returns the y position for the sprite id
|
||||
|
||||
##### getActorScaleX(string/int id)
|
||||
|
||||
Returns the scale x for the sprite id
|
||||
|
||||
##### getActorScaleY(string/int id)
|
||||
|
||||
Returns the scale y for the sprite id
|
||||
|
||||
##### getActorAlpha(string/int id)
|
||||
|
||||
Returns the alpha for the sprite id
|
||||
|
||||
##### getActorAngle(string/int id)
|
||||
|
||||
Returns the angle for the sprite id
|
||||
|
||||
##### setActorX(int x, string/int id)
|
||||
|
||||
Set's the x position for the sprite id
|
||||
|
||||
##### setActorAccelerationX(int x, string/int id)
|
||||
|
||||
Sets the x acceleration for the sprite id
|
||||
|
||||
##### setActorDragX(int x, string/int id)
|
||||
|
||||
Sets the x drag for the sprite id
|
||||
|
||||
##### setActorVelocityX(int x, string/int id)
|
||||
|
||||
Sets the x velocity for the sprite id
|
||||
|
||||
##### setActorY(int y, string/int id)
|
||||
|
||||
Set's the y position for the sprite id
|
||||
|
||||
##### setActorAccelerationY(int y, string/int id)
|
||||
|
||||
Sets the y acceleration for the sprite id
|
||||
|
||||
##### setActorDragY(int y, string/int id)
|
||||
|
||||
Sets the y drag for the sprite id
|
||||
|
||||
##### setActorVelocityY(int y, string/int id)
|
||||
|
||||
Sets the y velocity for the sprite id
|
||||
|
||||
##### setActorAlpha(float alpha, string/int id)
|
||||
|
||||
Set's the alpha for the sprite id
|
||||
|
||||
##### setActorAngle(int alpha, string/int id)
|
||||
|
||||
Set's the angle for the sprite id
|
||||
|
||||
##### setActorScale(float scale, string/int id)
|
||||
|
||||
Set's the scale for the sprite id
|
||||
|
||||
##### setActorScaleXY(float scaleX, float scaleY, string/int id)
|
||||
|
||||
Set's the x and y scale for the sprite id
|
||||
|
||||
##### setActorFlipX(bool flip, string/int id)
|
||||
|
||||
Set's the x flip for the sprite id
|
||||
|
||||
##### setActorFlipY(bool flip, string/int id)
|
||||
|
||||
Set's the y flip for the sprite id
|
||||
|
||||
##### getActorWidth(string/int id)
|
||||
|
||||
Returns the width for the sprite id
|
||||
|
||||
##### getActorHeight(string/int id)
|
||||
|
||||
Returns the height for the sprite id
|
||||
|
||||
##### changeBoyfriendCharacter(string id)
|
||||
|
||||
Changes the Boyfriend sprite to another character
|
||||
|
||||
##### changeDadCharacter(string id)
|
||||
|
||||
Changes the Dad sprite to another character
|
||||
|
||||
##### playActorAnimation(string/int id, string anim, bool force, bool reverse)
|
||||
|
||||
Plays an animation on a sprite
|
||||
|
||||
### Tweens
|
||||
|
||||
*Note, On Complete functions are based by the function name (and they also well get called when the tween completes)*
|
||||
|
||||
##### tweenPos(string/int id, int toX, int toY, float time, string onComplete)
|
||||
|
||||
Smoothly tween into a x and y position
|
||||
|
||||
##### tweenPosXAngle(string/int id, int toX, float toAngle, float time, string onComplete)
|
||||
|
||||
Smoothly tween into a x position and angle
|
||||
|
||||
##### tweenPosYAngle(string/int id, int toY, float toAngle, float time, string onComplete)
|
||||
|
||||
Smoothly tween into a y position and angle
|
||||
|
||||
##### tweenAngle(string/int id, float toAngle, float time, string onComplete)
|
||||
|
||||
Smoothly tween into a angle
|
||||
|
||||
##### tweenFadeIn(string/int id, float toAlpha, float time, string onComplete)
|
||||
|
||||
Smoothly fade in to an alpha
|
||||
|
||||
##### tweenFadeOut(string/int id, float toAlpha, float time, string onComplete)
|
||||
|
||||
Smoothly fade out to an alpha
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### Window & Screen
|
||||
|
||||
##### getWindowX()
|
||||
|
||||
Returns the window's x position
|
||||
|
||||
##### getWindowY()
|
||||
|
||||
Returns the window's y position
|
||||
|
||||
##### getScreenWidth()
|
||||
|
||||
Returns the width of the screen
|
||||
|
||||
##### getScreenHeight()
|
||||
|
||||
Returns the height of the screen
|
||||
|
||||
##### setWindowPos(int x, int y)
|
||||
|
||||
Sets the window's position
|
||||
|
||||
##### resizeWindow(int width, int height)
|
||||
|
||||
Resizes the window
|
||||
### RELOCATED
|
||||
Relocated to [here](https://github.com/KadeDev/Kade-Engine/wiki/)
|
128
source/Caching.hx
Normal file
128
source/Caching.hx
Normal file
@ -0,0 +1,128 @@
|
||||
package;
|
||||
|
||||
import haxe.Exception;
|
||||
import flixel.tweens.FlxEase;
|
||||
import flixel.tweens.FlxTween;
|
||||
import sys.FileSystem;
|
||||
import sys.io.File;
|
||||
import flixel.FlxG;
|
||||
import flixel.FlxSprite;
|
||||
import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond;
|
||||
import flixel.addons.transition.FlxTransitionableState;
|
||||
import flixel.addons.transition.TransitionData;
|
||||
import flixel.graphics.FlxGraphic;
|
||||
import flixel.graphics.frames.FlxAtlasFrames;
|
||||
import flixel.math.FlxPoint;
|
||||
import flixel.math.FlxRect;
|
||||
import flixel.util.FlxColor;
|
||||
import flixel.util.FlxTimer;
|
||||
import flixel.text.FlxText;
|
||||
|
||||
using StringTools;
|
||||
|
||||
class Caching extends MusicBeatState
|
||||
{
|
||||
var toBeDone = 0;
|
||||
var done = 0;
|
||||
|
||||
var text:FlxText;
|
||||
var kadeLogo:FlxSprite;
|
||||
|
||||
override function create()
|
||||
{
|
||||
FlxG.mouse.visible = false;
|
||||
|
||||
FlxG.worldBounds.set(0,0);
|
||||
|
||||
text = new FlxText(FlxG.width / 2, FlxG.height / 2 + 300,0,"Loading...");
|
||||
text.size = 34;
|
||||
text.alignment = FlxTextAlign.CENTER;
|
||||
text.alpha = 0;
|
||||
|
||||
kadeLogo = new FlxSprite(FlxG.width / 2, FlxG.height / 2).loadGraphic(Paths.image('KadeEngineLogo'));
|
||||
kadeLogo.x -= kadeLogo.width / 2;
|
||||
kadeLogo.y -= kadeLogo.height / 2 + 100;
|
||||
text.y -= kadeLogo.height / 2 - 125;
|
||||
text.x -= 170;
|
||||
kadeLogo.setGraphicSize(Std.int(kadeLogo.width * 0.6));
|
||||
|
||||
kadeLogo.alpha = 0;
|
||||
|
||||
add(kadeLogo);
|
||||
add(text);
|
||||
|
||||
trace('starting caching..');
|
||||
|
||||
sys.thread.Thread.create(() -> {
|
||||
cache();
|
||||
});
|
||||
|
||||
|
||||
super.create();
|
||||
}
|
||||
|
||||
var calledDone = false;
|
||||
|
||||
override function update(elapsed)
|
||||
{
|
||||
|
||||
if (toBeDone != 0 && done != toBeDone)
|
||||
{
|
||||
var alpha = HelperFunctions.truncateFloat(done / toBeDone * 100,2) / 100;
|
||||
kadeLogo.alpha = alpha;
|
||||
text.alpha = alpha;
|
||||
text.text = "Loading... (" + done + "/" + toBeDone + ")";
|
||||
}
|
||||
|
||||
super.update(elapsed);
|
||||
}
|
||||
|
||||
|
||||
function cache()
|
||||
{
|
||||
|
||||
var images = [];
|
||||
var music = [];
|
||||
|
||||
trace("caching images...");
|
||||
|
||||
for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/shared/images/characters")))
|
||||
{
|
||||
if (!i.endsWith(".png"))
|
||||
continue;
|
||||
images.push(i);
|
||||
}
|
||||
|
||||
trace("caching music...");
|
||||
|
||||
for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/songs")))
|
||||
{
|
||||
music.push(i);
|
||||
}
|
||||
|
||||
toBeDone = Lambda.count(images) + Lambda.count(music);
|
||||
|
||||
trace("LOADING: " + toBeDone + " OBJECTS.");
|
||||
|
||||
for (i in images)
|
||||
{
|
||||
var replaced = i.replace(".png","");
|
||||
FlxG.bitmap.add(Paths.image("characters/" + replaced,"shared"));
|
||||
trace("cached " + replaced);
|
||||
done++;
|
||||
}
|
||||
|
||||
for (i in music)
|
||||
{
|
||||
FlxG.sound.cache(Paths.inst(i));
|
||||
FlxG.sound.cache(Paths.voices(i));
|
||||
trace("cached " + i);
|
||||
done++;
|
||||
}
|
||||
|
||||
trace("Finished caching...");
|
||||
|
||||
FlxG.switchState(new TitleState());
|
||||
}
|
||||
|
||||
}
|
7
source/GameDimensions.hx
Normal file
7
source/GameDimensions.hx
Normal file
@ -0,0 +1,7 @@
|
||||
package;
|
||||
|
||||
class GameDimensions
|
||||
{
|
||||
public static var width:Int = 1280;
|
||||
public static var height:Int = 720;
|
||||
}
|
95
source/GlobalVideo.hx
Normal file
95
source/GlobalVideo.hx
Normal file
@ -0,0 +1,95 @@
|
||||
package;
|
||||
|
||||
import openfl.Lib;
|
||||
|
||||
class GlobalVideo
|
||||
{
|
||||
private static var video:VideoHandler;
|
||||
private static var webm:WebmHandler;
|
||||
public static var isWebm:Bool = false;
|
||||
public static var isAndroid:Bool = false;
|
||||
public static var daAlpha1:Float = 0.2;
|
||||
public static var daAlpha2:Float = 1;
|
||||
|
||||
public static function setVid(vid:VideoHandler):Void
|
||||
{
|
||||
video = vid;
|
||||
}
|
||||
|
||||
public static function getVid():VideoHandler
|
||||
{
|
||||
return video;
|
||||
}
|
||||
|
||||
public static function setWebm(vid:WebmHandler):Void
|
||||
{
|
||||
webm = vid;
|
||||
isWebm = true;
|
||||
}
|
||||
|
||||
public static function getWebm():WebmHandler
|
||||
{
|
||||
return webm;
|
||||
}
|
||||
|
||||
public static function get():Dynamic
|
||||
{
|
||||
if (isWebm)
|
||||
{
|
||||
return getWebm();
|
||||
} else {
|
||||
return getVid();
|
||||
}
|
||||
}
|
||||
|
||||
public static function calc(ind:Int):Dynamic
|
||||
{
|
||||
var stageWidth:Int = Lib.current.stage.stageWidth;
|
||||
var stageHeight:Int = Lib.current.stage.stageHeight;
|
||||
|
||||
var width:Float = GameDimensions.width;
|
||||
var height:Float = GameDimensions.height;
|
||||
|
||||
//trace("AH: " + stageWidth);
|
||||
//trace(width);
|
||||
|
||||
var ratioX:Float = height / width;
|
||||
var ratioY:Float = width / height;
|
||||
var appliedWidth:Float = stageHeight * ratioY;
|
||||
var appliedHeight:Float = stageWidth * ratioX;
|
||||
//trace(appliedWidth);
|
||||
var remainingX:Float = stageWidth - appliedWidth;
|
||||
var remainingY:Float = stageHeight - appliedHeight;
|
||||
remainingX = remainingX / 2;
|
||||
remainingY = remainingY / 2;
|
||||
|
||||
appliedWidth = Std.int(appliedWidth);
|
||||
appliedHeight = Std.int(appliedHeight);
|
||||
|
||||
if (appliedHeight > stageHeight)
|
||||
{
|
||||
remainingY = 0;
|
||||
appliedHeight = stageHeight;
|
||||
}
|
||||
|
||||
if (appliedWidth > stageWidth)
|
||||
{
|
||||
remainingX = 0;
|
||||
appliedWidth = stageWidth;
|
||||
}
|
||||
|
||||
switch(ind)
|
||||
{
|
||||
case 0:
|
||||
return remainingX;
|
||||
case 1:
|
||||
return remainingY;
|
||||
case 2:
|
||||
return appliedWidth;
|
||||
case 3:
|
||||
return appliedHeight;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,5 +1,7 @@
|
||||
package;
|
||||
|
||||
|
||||
import webm.WebmPlayer;
|
||||
import openfl.display.BlendMode;
|
||||
import openfl.text.TextFormat;
|
||||
import openfl.display.Application;
|
||||
@ -49,6 +51,8 @@ class Main extends Sprite
|
||||
}
|
||||
}
|
||||
|
||||
public static var webmHandler:WebmHandler;
|
||||
|
||||
private function init(?E:Event):Void
|
||||
{
|
||||
if (hasEventListener(Event.ADDED_TO_STAGE))
|
||||
@ -73,10 +77,8 @@ class Main extends Sprite
|
||||
gameHeight = Math.ceil(stageHeight / zoom);
|
||||
}
|
||||
|
||||
#if !debug
|
||||
initialState = TitleState;
|
||||
#end
|
||||
|
||||
initialState = Caching;
|
||||
|
||||
game = new FlxGame(gameWidth, gameHeight, initialState, zoom, framerate, framerate, skipSplash, startFullscreen);
|
||||
|
||||
addChild(game);
|
||||
|
@ -1,6 +1,7 @@
|
||||
// this file is for modchart things, this is to declutter playstate.hx
|
||||
|
||||
// Lua
|
||||
import openfl.display3D.textures.VideoTexture;
|
||||
import flixel.graphics.FlxGraphic;
|
||||
import flixel.graphics.frames.FlxAtlasFrames;
|
||||
#if windows
|
||||
@ -417,6 +418,33 @@ class ModchartState
|
||||
|
||||
|
||||
// hud/camera
|
||||
|
||||
Lua_helper.add_callback(lua,"initBackgroundVideo", function(videoName:String) {
|
||||
trace('playing assets/videos/' + videoName + '.webm');
|
||||
PlayState.instance.backgroundVideo("assets/videos/" + videoName + ".webm");
|
||||
});
|
||||
|
||||
Lua_helper.add_callback(lua,"pauseVideo", function() {
|
||||
if (!GlobalVideo.get().paused)
|
||||
GlobalVideo.get().pause();
|
||||
});
|
||||
|
||||
Lua_helper.add_callback(lua,"resumeVideo", function() {
|
||||
if (GlobalVideo.get().paused)
|
||||
GlobalVideo.get().pause();
|
||||
});
|
||||
|
||||
Lua_helper.add_callback(lua,"restartVideo", function() {
|
||||
GlobalVideo.get().restart();
|
||||
});
|
||||
|
||||
Lua_helper.add_callback(lua,"setVideoSpritePos", function(x:Int,y:Int) {
|
||||
PlayState.instance.videoSprite.setPosition(x,y);
|
||||
});
|
||||
|
||||
Lua_helper.add_callback(lua,"setVideoSpriteScale", function(scale:Float) {
|
||||
PlayState.instance.videoSprite.setGraphicSize(Std.int(PlayState.instance.videoSprite.width * scale));
|
||||
});
|
||||
|
||||
Lua_helper.add_callback(lua,"setHudAngle", function (x:Float) {
|
||||
PlayState.instance.camHUD.angle = x;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package;
|
||||
|
||||
import webm.WebmPlayer;
|
||||
import flixel.input.keyboard.FlxKey;
|
||||
import haxe.Exception;
|
||||
import openfl.geom.Matrix;
|
||||
@ -1344,6 +1345,9 @@ class PlayState extends MusicBeatState
|
||||
case 'Bopeebo' | 'Philly Nice' | 'Blammed' | 'Cocoa' | 'Eggnog': allowedToHeadbang = true;
|
||||
default: allowedToHeadbang = false;
|
||||
}
|
||||
|
||||
if (useVideo)
|
||||
GlobalVideo.get().resume();
|
||||
|
||||
#if windows
|
||||
// Updating Discord Rich Presence (with Time Left)
|
||||
@ -1506,16 +1510,6 @@ class PlayState extends MusicBeatState
|
||||
|
||||
switch (Math.abs(i))
|
||||
{
|
||||
case 0:
|
||||
babyArrow.x += Note.swagWidth * 0;
|
||||
babyArrow.animation.add('static', [0]);
|
||||
babyArrow.animation.add('pressed', [4, 8], 12, false);
|
||||
babyArrow.animation.add('confirm', [12, 16], 24, false);
|
||||
case 1:
|
||||
babyArrow.x += Note.swagWidth * 1;
|
||||
babyArrow.animation.add('static', [1]);
|
||||
babyArrow.animation.add('pressed', [5, 9], 12, false);
|
||||
babyArrow.animation.add('confirm', [13, 17], 24, false);
|
||||
case 2:
|
||||
babyArrow.x += Note.swagWidth * 2;
|
||||
babyArrow.animation.add('static', [2]);
|
||||
@ -1526,75 +1520,85 @@ class PlayState extends MusicBeatState
|
||||
babyArrow.animation.add('static', [3]);
|
||||
babyArrow.animation.add('pressed', [7, 11], 12, false);
|
||||
babyArrow.animation.add('confirm', [15, 19], 24, false);
|
||||
case 1:
|
||||
babyArrow.x += Note.swagWidth * 1;
|
||||
babyArrow.animation.add('static', [1]);
|
||||
babyArrow.animation.add('pressed', [5, 9], 12, false);
|
||||
babyArrow.animation.add('confirm', [13, 17], 24, false);
|
||||
case 0:
|
||||
babyArrow.x += Note.swagWidth * 0;
|
||||
babyArrow.animation.add('static', [0]);
|
||||
babyArrow.animation.add('pressed', [4, 8], 12, false);
|
||||
babyArrow.animation.add('confirm', [12, 16], 24, false);
|
||||
}
|
||||
|
||||
case 'normal':
|
||||
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||
babyArrow.animation.addByPrefix('green', 'arrowUP');
|
||||
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
||||
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
||||
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
||||
case 'normal':
|
||||
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||
babyArrow.animation.addByPrefix('green', 'arrowUP');
|
||||
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
||||
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
||||
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
||||
|
||||
babyArrow.antialiasing = true;
|
||||
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||
|
||||
switch (Math.abs(i))
|
||||
{
|
||||
case 0:
|
||||
babyArrow.x += Note.swagWidth * 0;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowLEFT');
|
||||
babyArrow.animation.addByPrefix('pressed', 'left press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'left confirm', 24, false);
|
||||
case 1:
|
||||
babyArrow.x += Note.swagWidth * 1;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowDOWN');
|
||||
babyArrow.animation.addByPrefix('pressed', 'down press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'down confirm', 24, false);
|
||||
case 2:
|
||||
babyArrow.x += Note.swagWidth * 2;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowUP');
|
||||
babyArrow.animation.addByPrefix('pressed', 'up press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'up confirm', 24, false);
|
||||
case 3:
|
||||
babyArrow.x += Note.swagWidth * 3;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowRIGHT');
|
||||
babyArrow.animation.addByPrefix('pressed', 'right press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'right confirm', 24, false);
|
||||
}
|
||||
|
||||
babyArrow.antialiasing = true;
|
||||
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||
default:
|
||||
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||
babyArrow.animation.addByPrefix('green', 'arrowUP');
|
||||
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
||||
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
||||
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
||||
|
||||
switch (Math.abs(i))
|
||||
{
|
||||
case 0:
|
||||
babyArrow.x += Note.swagWidth * 0;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowLEFT');
|
||||
babyArrow.animation.addByPrefix('pressed', 'left press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'left confirm', 24, false);
|
||||
case 1:
|
||||
babyArrow.x += Note.swagWidth * 1;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowDOWN');
|
||||
babyArrow.animation.addByPrefix('pressed', 'down press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'down confirm', 24, false);
|
||||
case 2:
|
||||
babyArrow.x += Note.swagWidth * 2;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowUP');
|
||||
babyArrow.animation.addByPrefix('pressed', 'up press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'up confirm', 24, false);
|
||||
case 3:
|
||||
babyArrow.x += Note.swagWidth * 3;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowRIGHT');
|
||||
babyArrow.animation.addByPrefix('pressed', 'right press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'right confirm', 24, false);
|
||||
babyArrow.antialiasing = true;
|
||||
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||
|
||||
switch (Math.abs(i))
|
||||
{
|
||||
case 0:
|
||||
babyArrow.x += Note.swagWidth * 0;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowLEFT');
|
||||
babyArrow.animation.addByPrefix('pressed', 'left press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'left confirm', 24, false);
|
||||
case 1:
|
||||
babyArrow.x += Note.swagWidth * 1;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowDOWN');
|
||||
babyArrow.animation.addByPrefix('pressed', 'down press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'down confirm', 24, false);
|
||||
case 2:
|
||||
babyArrow.x += Note.swagWidth * 2;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowUP');
|
||||
babyArrow.animation.addByPrefix('pressed', 'up press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'up confirm', 24, false);
|
||||
case 3:
|
||||
babyArrow.x += Note.swagWidth * 3;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowRIGHT');
|
||||
babyArrow.animation.addByPrefix('pressed', 'right press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'right confirm', 24, false);
|
||||
}
|
||||
|
||||
default:
|
||||
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||
babyArrow.animation.addByPrefix('green', 'arrowUP');
|
||||
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
||||
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
||||
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
||||
|
||||
babyArrow.antialiasing = true;
|
||||
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||
|
||||
switch (Math.abs(i))
|
||||
{
|
||||
case 0:
|
||||
babyArrow.x += Note.swagWidth * 0;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowLEFT');
|
||||
babyArrow.animation.addByPrefix('pressed', 'left press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'left confirm', 24, false);
|
||||
case 1:
|
||||
babyArrow.x += Note.swagWidth * 1;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowDOWN');
|
||||
babyArrow.animation.addByPrefix('pressed', 'down press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'down confirm', 24, false);
|
||||
case 2:
|
||||
babyArrow.x += Note.swagWidth * 2;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowUP');
|
||||
babyArrow.animation.addByPrefix('pressed', 'up press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'up confirm', 24, false);
|
||||
case 3:
|
||||
babyArrow.x += Note.swagWidth * 3;
|
||||
babyArrow.animation.addByPrefix('static', 'arrowRIGHT');
|
||||
babyArrow.animation.addByPrefix('pressed', 'right press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'right confirm', 24, false);
|
||||
}
|
||||
}
|
||||
|
||||
babyArrow.updateHitbox();
|
||||
@ -1706,6 +1710,9 @@ class PlayState extends MusicBeatState
|
||||
|
||||
public static var songRate = 1.5;
|
||||
|
||||
public var stopUpdate = false;
|
||||
public var removedVideo = false;
|
||||
|
||||
override public function update(elapsed:Float)
|
||||
{
|
||||
#if !debug
|
||||
@ -1715,6 +1722,18 @@ class PlayState extends MusicBeatState
|
||||
if (FlxG.save.data.botplay && FlxG.keys.justPressed.ONE)
|
||||
camHUD.visible = !camHUD.visible;
|
||||
|
||||
|
||||
if (useVideo && GlobalVideo.get() != null && !stopUpdate)
|
||||
{
|
||||
if (GlobalVideo.get().ended && !removedVideo)
|
||||
{
|
||||
remove(videoSprite);
|
||||
removedVideo = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#if windows
|
||||
if (executeModchart && luaModchart != null && songStarted)
|
||||
{
|
||||
@ -1838,6 +1857,12 @@ class PlayState extends MusicBeatState
|
||||
|
||||
if (FlxG.keys.justPressed.SEVEN)
|
||||
{
|
||||
if (useVideo)
|
||||
{
|
||||
GlobalVideo.get().stop();
|
||||
remove(videoSprite);
|
||||
removedVideo = true;
|
||||
}
|
||||
#if windows
|
||||
DiscordClient.changePresence("Chart Editor", null, null, true);
|
||||
#end
|
||||
@ -1883,6 +1908,13 @@ class PlayState extends MusicBeatState
|
||||
#if debug
|
||||
if (FlxG.keys.justPressed.EIGHT)
|
||||
{
|
||||
if (useVideo)
|
||||
{
|
||||
GlobalVideo.get().stop();
|
||||
remove(videoSprite);
|
||||
removedVideo = true;
|
||||
}
|
||||
|
||||
FlxG.switchState(new AnimationDebug(SONG.player2));
|
||||
#if windows
|
||||
if (luaModchart != null)
|
||||
@ -2433,6 +2465,12 @@ class PlayState extends MusicBeatState
|
||||
|
||||
function endSong():Void
|
||||
{
|
||||
if (useVideo)
|
||||
{
|
||||
GlobalVideo.get().stop();
|
||||
PlayState.instance.remove(PlayState.instance.videoSprite);
|
||||
}
|
||||
|
||||
if (!loadRep)
|
||||
rep.SaveReplay(saveNotes);
|
||||
else
|
||||
@ -3066,6 +3104,66 @@ class PlayState extends MusicBeatState
|
||||
});
|
||||
}
|
||||
|
||||
public var fuckingVolume:Float = 1;
|
||||
public var useVideo = false;
|
||||
|
||||
public static var webmHandler:WebmHandler;
|
||||
|
||||
public var playingDathing = false;
|
||||
|
||||
public var videoSprite:FlxSprite;
|
||||
|
||||
public function backgroundVideo(source:String) // for background videos
|
||||
{
|
||||
useVideo = true;
|
||||
|
||||
var ourSource:String = "assets/videos/daWeirdVid/dontDelete.webm";
|
||||
WebmPlayer.SKIP_STEP_LIMIT = 90;
|
||||
var str1:String = "WEBM SHIT";
|
||||
webmHandler = new WebmHandler();
|
||||
webmHandler.source(ourSource);
|
||||
webmHandler.makePlayer();
|
||||
webmHandler.webm.name = str1;
|
||||
|
||||
GlobalVideo.setWebm(webmHandler);
|
||||
|
||||
GlobalVideo.get().source(source);
|
||||
GlobalVideo.get().clearPause();
|
||||
if (GlobalVideo.isWebm)
|
||||
{
|
||||
GlobalVideo.get().updatePlayer();
|
||||
}
|
||||
GlobalVideo.get().show();
|
||||
|
||||
if (GlobalVideo.isWebm)
|
||||
{
|
||||
GlobalVideo.get().restart();
|
||||
} else {
|
||||
GlobalVideo.get().play();
|
||||
}
|
||||
|
||||
var data = webmHandler.webm.bitmapData;
|
||||
|
||||
videoSprite = new FlxSprite(-470,-30).loadGraphic(data);
|
||||
|
||||
videoSprite.setGraphicSize(Std.int(videoSprite.width * 1.2));
|
||||
|
||||
remove(gf);
|
||||
remove(boyfriend);
|
||||
remove(dad);
|
||||
add(videoSprite);
|
||||
add(gf);
|
||||
add(boyfriend);
|
||||
add(dad);
|
||||
|
||||
trace('poggers');
|
||||
|
||||
if (!songStarted)
|
||||
webmHandler.pause();
|
||||
else
|
||||
webmHandler.resume();
|
||||
}
|
||||
|
||||
function noteMiss(direction:Int = 1, daNote:Note):Void
|
||||
{
|
||||
if (!boyfriend.stunned)
|
||||
|
195
source/VideoHandler.hx
Normal file
195
source/VideoHandler.hx
Normal file
@ -0,0 +1,195 @@
|
||||
//This was made by GWebDev lol btw this uses actuate
|
||||
package;
|
||||
|
||||
import motion.Actuate;
|
||||
import openfl.display.Sprite;
|
||||
import openfl.events.AsyncErrorEvent;
|
||||
import openfl.events.MouseEvent;
|
||||
import openfl.events.NetStatusEvent;
|
||||
import openfl.media.Video;
|
||||
import openfl.net.NetConnection;
|
||||
import openfl.net.NetStream;
|
||||
import flixel.FlxG;
|
||||
|
||||
using StringTools;
|
||||
|
||||
class VideoHandler
|
||||
{
|
||||
public var netStream:NetStream;
|
||||
public var video:Video;
|
||||
public var isReady:Bool = false;
|
||||
public var addOverlay:Bool = false;
|
||||
public var vidPath:String = "";
|
||||
public var ignoreShit:Bool = false;
|
||||
|
||||
public function new()
|
||||
{
|
||||
isReady = false;
|
||||
}
|
||||
|
||||
public function source(?vPath:String):Void
|
||||
{
|
||||
if (vPath != null && vPath.length > 0)
|
||||
{
|
||||
vidPath = vPath;
|
||||
}
|
||||
}
|
||||
|
||||
public function init1():Void
|
||||
{
|
||||
isReady = false;
|
||||
video = new Video();
|
||||
video.visible = false;
|
||||
}
|
||||
|
||||
public function init2():Void
|
||||
{
|
||||
#if web
|
||||
var netConnection = new NetConnection ();
|
||||
netConnection.connect (null);
|
||||
|
||||
netStream = new NetStream (netConnection);
|
||||
netStream.client = { onMetaData: client_onMetaData };
|
||||
netStream.addEventListener (AsyncErrorEvent.ASYNC_ERROR, netStream_onAsyncError);
|
||||
|
||||
netConnection.addEventListener (NetStatusEvent.NET_STATUS, netConnection_onNetStatus);
|
||||
netConnection.addEventListener (NetStatusEvent.NET_STATUS, onPlay);
|
||||
netConnection.addEventListener (NetStatusEvent.NET_STATUS, onEnd);
|
||||
#end
|
||||
}
|
||||
|
||||
public function client_onMetaData (metaData:Dynamic) {
|
||||
|
||||
video.attachNetStream (netStream);
|
||||
|
||||
video.width = FlxG.width;
|
||||
video.height = FlxG.height;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function netStream_onAsyncError (event:AsyncErrorEvent):Void {
|
||||
|
||||
trace ("Error loading video");
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function netConnection_onNetStatus (event:NetStatusEvent):Void {
|
||||
trace (event.info.code);
|
||||
}
|
||||
|
||||
public function play():Void
|
||||
{
|
||||
#if web
|
||||
ignoreShit = true;
|
||||
netStream.close();
|
||||
init2();
|
||||
netStream.play(vidPath);
|
||||
ignoreShit = false;
|
||||
#end
|
||||
trace(vidPath);
|
||||
}
|
||||
|
||||
public function stop():Void
|
||||
{
|
||||
netStream.close();
|
||||
onStop();
|
||||
}
|
||||
|
||||
public function restart():Void
|
||||
{
|
||||
play();
|
||||
onRestart();
|
||||
}
|
||||
|
||||
public function update(elapsed:Float):Void
|
||||
{
|
||||
video.x = GlobalVideo.calc(0);
|
||||
video.y = GlobalVideo.calc(1);
|
||||
video.width = GlobalVideo.calc(2);
|
||||
video.height = GlobalVideo.calc(3);
|
||||
}
|
||||
|
||||
public var stopped:Bool = false;
|
||||
public var restarted:Bool = false;
|
||||
public var played:Bool = false;
|
||||
public var ended:Bool = false;
|
||||
public var paused:Bool = false;
|
||||
|
||||
public function pause():Void
|
||||
{
|
||||
netStream.pause();
|
||||
paused = true;
|
||||
}
|
||||
|
||||
public function resume():Void
|
||||
{
|
||||
netStream.resume();
|
||||
paused = false;
|
||||
}
|
||||
|
||||
public function togglePause():Void
|
||||
{
|
||||
if (paused)
|
||||
{
|
||||
resume();
|
||||
} else {
|
||||
pause();
|
||||
}
|
||||
}
|
||||
|
||||
public function clearPause():Void
|
||||
{
|
||||
paused = false;
|
||||
}
|
||||
|
||||
public function onStop():Void
|
||||
{
|
||||
if (!ignoreShit)
|
||||
{
|
||||
stopped = true;
|
||||
}
|
||||
}
|
||||
|
||||
public function onRestart():Void
|
||||
{
|
||||
restarted = true;
|
||||
}
|
||||
|
||||
public function onPlay(event:NetStatusEvent):Void
|
||||
{
|
||||
if (event.info.code == "NetStream.Play.Start")
|
||||
{
|
||||
played = true;
|
||||
}
|
||||
}
|
||||
|
||||
public function onEnd(event:NetStatusEvent):Void
|
||||
{
|
||||
if (event.info.code == "NetStream.Play.Complete")
|
||||
{
|
||||
ended = true;
|
||||
}
|
||||
}
|
||||
|
||||
public function alpha():Void
|
||||
{
|
||||
video.alpha = GlobalVideo.daAlpha1;
|
||||
}
|
||||
|
||||
public function unalpha():Void
|
||||
{
|
||||
video.alpha = GlobalVideo.daAlpha2;
|
||||
}
|
||||
|
||||
public function hide():Void
|
||||
{
|
||||
video.visible = false;
|
||||
}
|
||||
|
||||
public function show():Void
|
||||
{
|
||||
video.visible = true;
|
||||
}
|
||||
}
|
169
source/WebmHandler.hx
Normal file
169
source/WebmHandler.hx
Normal file
@ -0,0 +1,169 @@
|
||||
package;
|
||||
|
||||
import flixel.FlxG;
|
||||
import openfl.display.Sprite;
|
||||
#if desktop
|
||||
import webm.*;
|
||||
#end
|
||||
|
||||
class WebmHandler
|
||||
{
|
||||
#if desktop
|
||||
public var webm:WebmPlayer;
|
||||
public var vidPath:String = "";
|
||||
public var io:WebmIo;
|
||||
public var initialized:Bool = false;
|
||||
|
||||
public function new()
|
||||
{
|
||||
}
|
||||
|
||||
public function source(?vPath:String):Void
|
||||
{
|
||||
if (vPath != null && vPath.length > 0)
|
||||
{
|
||||
vidPath = vPath;
|
||||
}
|
||||
}
|
||||
|
||||
public function makePlayer():Void
|
||||
{
|
||||
io = new WebmIoFile(vidPath);
|
||||
webm = new WebmPlayer();
|
||||
webm.fuck(io, false);
|
||||
webm.addEventListener(WebmEvent.PLAY, function(e) {
|
||||
onPlay();
|
||||
});
|
||||
webm.addEventListener(WebmEvent.COMPLETE, function(e) {
|
||||
onEnd();
|
||||
});
|
||||
webm.addEventListener(WebmEvent.STOP, function(e) {
|
||||
onStop();
|
||||
});
|
||||
webm.addEventListener(WebmEvent.RESTART, function(e) {
|
||||
onRestart();
|
||||
});
|
||||
webm.visible = false;
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
public function updatePlayer():Void
|
||||
{
|
||||
io = new WebmIoFile(vidPath);
|
||||
webm.fuck(io, false);
|
||||
}
|
||||
|
||||
public function play():Void
|
||||
{
|
||||
if (initialized)
|
||||
{
|
||||
webm.play();
|
||||
}
|
||||
}
|
||||
|
||||
public function stop():Void
|
||||
{
|
||||
if (initialized)
|
||||
{
|
||||
webm.stop();
|
||||
}
|
||||
}
|
||||
|
||||
public function restart():Void
|
||||
{
|
||||
if (initialized)
|
||||
{
|
||||
webm.restart();
|
||||
}
|
||||
}
|
||||
|
||||
public function update(elapsed:Float)
|
||||
{
|
||||
webm.x = GlobalVideo.calc(0);
|
||||
webm.y = GlobalVideo.calc(1);
|
||||
webm.width = GlobalVideo.calc(2);
|
||||
webm.height = GlobalVideo.calc(3);
|
||||
}
|
||||
|
||||
public var stopped:Bool = false;
|
||||
public var restarted:Bool = false;
|
||||
public var played:Bool = false;
|
||||
public var ended:Bool = false;
|
||||
public var paused:Bool = false;
|
||||
|
||||
public function pause():Void
|
||||
{
|
||||
webm.changePlaying(false);
|
||||
paused = true;
|
||||
}
|
||||
|
||||
public function resume():Void
|
||||
{
|
||||
webm.changePlaying(true);
|
||||
paused = false;
|
||||
}
|
||||
|
||||
public function togglePause():Void
|
||||
{
|
||||
if (paused)
|
||||
{
|
||||
resume();
|
||||
} else {
|
||||
pause();
|
||||
}
|
||||
}
|
||||
|
||||
public function clearPause():Void
|
||||
{
|
||||
paused = false;
|
||||
webm.removePause();
|
||||
}
|
||||
|
||||
public function onStop():Void
|
||||
{
|
||||
stopped = true;
|
||||
}
|
||||
|
||||
public function onRestart():Void
|
||||
{
|
||||
restarted = true;
|
||||
}
|
||||
|
||||
public function onPlay():Void
|
||||
{
|
||||
played = true;
|
||||
}
|
||||
|
||||
public function onEnd():Void
|
||||
{
|
||||
trace("IT ENDED!");
|
||||
ended = true;
|
||||
}
|
||||
|
||||
public function alpha():Void
|
||||
{
|
||||
webm.alpha = GlobalVideo.daAlpha1;
|
||||
}
|
||||
|
||||
public function unalpha():Void
|
||||
{
|
||||
webm.alpha = GlobalVideo.daAlpha2;
|
||||
}
|
||||
|
||||
public function hide():Void
|
||||
{
|
||||
webm.visible = false;
|
||||
}
|
||||
|
||||
public function show():Void
|
||||
{
|
||||
webm.visible = true;
|
||||
}
|
||||
#else
|
||||
public var webm:Sprite;
|
||||
public function new()
|
||||
{
|
||||
trace("THIS IS ANDROID! or some shit...");
|
||||
}
|
||||
#end
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user