yeahhhh merge pr #428

This commit is contained in:
daniel11420
2021-05-12 09:42:26 +02:00
17 changed files with 241 additions and 212 deletions

View File

@ -1 +0,0 @@
funkin.me

7
docs/_config.yml Normal file
View File

@ -0,0 +1,7 @@
theme: jekyll-theme-minimal
title: "Kade Engine"
description: "Kade Engine is a mod for Friday Night Funkin', including a full engine rework, replays, and more."
show_downloads: true
replace_index_with: "https://cors-thing.puyo.workers.dev/master/"
logo: "https://github.com/KadeDev/Kade-Engine/raw/master/KadeEngineLogo.png"
url: "https://KadeDev.github.io/Kade-Engine/"

View File

@ -0,0 +1,34 @@
<style>
.headerlink {
background-color: #555;
color: white;
float: none;
border: none;
border-style: none;
outline: none;
cursor: pointer;
padding: 14px 16px;
font-size: 17px;
}
.headerlink:hover {
background-color: #777;
color: white;
}
hr {
height: 2px !important;
color: #555 !important;
background-color: #555 !important;
}
</style>
<center>
<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="{{site.url}}guides">Guides</a>
<br>&nbsp;
<hr>
</p>
</center>

View File

@ -0,0 +1,93 @@
<!DOCTYPE html>
<html lang="{{ site.lang | default: "en-US" }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{page.title}} - Kade Engine</title>
{% seo %}
<link rel="stylesheet" href="{{ "/assets/css/style.css?v=" | append: site.github.build_revision | relative_url }}">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<h1><a href="{{ site.url }}">{{ site.title | default: site.github.repository_name }}</a></h1>
{% if site.logo %}
<img src="{{site.logo | relative_url}}" alt="Logo" />
{% endif %}
<p>{{ site.description | default: site.github.project_tagline }}</p>
{% if site.github.is_project_page %}
<p class="view"><a href="{{ site.github.repository_url }}">View the Project on GitHub <small>{{ site.github.repository_nwo }}</small></a></p>
{% endif %}
{% if site.github.is_user_page %}
<p class="view"><a href="{{ site.github.owner_url }}">View My GitHub Profile</a></p>
{% endif %}
{% if site.show_downloads %}
<p>
<small>Source code</small>
<ul class="downloads">
<li><a href="{{ site.github.zip_url }}">Download <strong>ZIP File</strong></a></li>
<li><a href="{{ site.github.tar_url }}">Download <strong>TAR Ball</strong></a></li>
<li><a href="{{ site.github.repository_url }}">View On <strong>GitHub</strong></a></li>
</ul>
</p>
<p>
<small>Binaries</small><br>
<a href="https://github.com/KadeDev/Kade-Engine/releases/latest">Download the <b>Latest release</b></a><br>
<a href="https://ci.appveyor.com/project/KadeDev/kade-engine-windows/build/artifacts">Download a <b>Windows</b> development build</a><br>
<a href="https://ci.appveyor.com/project/KadeDev/kade-engine-linux/build/artifacts">Download a <b>Linux</b> development build</a><br>
<a href="https://funkin.puyo.xyz/nightly/">Play in your <b>Web Browser</b></a>
</p>
{% endif %}
</header>
<section id="content">
{% include header.html %}
{% if page.url == "/" %}
<!-- yay i'm NOT stupid -->
{% else %}
{{ content }}
{% endif %}
</section>
<footer>
{% if site.github.is_project_page %}
<p>This project is maintained by <a href="{{ site.github.owner_url }}">{{ site.github.owner_name }}</a></p>
{% endif %}
<p><small>Hosted on GitHub Pages &mdash; Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
<script src="{{ "/assets/js/scale.fix.js" | relative_url }}"></script>
{% if page.url == "/" %}
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script>
function httpGet(theUrl)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
xmlHttp.send( null );
return xmlHttp.responseText;
}
document.getElementById('content').innerHTML = document.getElementById('content').innerHTML + marked(httpGet("{{ site.replace_index_with }}"));
</script>
{% endif %}
{% if site.google_analytics %}
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', '{{ site.google_analytics }}', 'auto');
ga('send', 'pageview');
</script>
{% endif %}
</body>
</html>

68
docs/building.md Normal file
View File

@ -0,0 +1,68 @@
# Building Friday Night Funkin': Kade Engine
**Please note** that these instructions are for compiling/building the game. If you just want to play Kade Engine, **play in your browser or download a build instead**: **[play in browser](https://funkin.puyo.xyz) ⋅ [latest stable release](https://github.com/KadeDev/Kade-Engine/releases/latest) ⋅ [latest development build (windows)](https://ci.appveyor.com/project/KadeDev/kade-engine-windows/build/artifacts) ⋅ [latest development build (linux)](https://ci.appveyor.com/project/daniel11420/kade-engine-linux/build/artifacts)**. If you want to build the game yourself, continue reading.
**Also note**: you should be familiar with the commandline. If not, read this [quick guide by ninjamuffin](https://ninjamuffin99.newgrounds.com/news/post/1090480).
**Also also note**: To build for *Windows*, you need to be on *Windows*. To build for *Linux*, you need to be on *Linux*. Same goes for macOS. You can build for html5/browsers on any platform.
## Dependencies
1. [Install Haxe 4.1.5](https://haxe.org/download/version/4.1.5/). You should use 4.1.5 instead of the latest version because the latest version has some problems with Friday Night Funkin': Kade Engine.
2. After installing Haxe, [Install HaxeFlixel](https://haxeflixel.com/documentation/install-haxeflixel/).
3. Install `git`.
- Windows: install from the [git-scm](https://git-scm.com/downloads) website.
- Linux: install the `git` package: `sudo apt install git` (ubuntu), `sudo pacman -S git` (arch), etc... (you probably already have it)
4. Install and set up the necessary libraries:
- `haxelib install lime 7.9.0`
- `haxelib install openfl`
- `haxelib install flixel`
- `haxelib run lime setup`
- `haxelib run lime setup flixel`
- `haxelib install flixel-tools`
- `haxelib run flixel-tools setup`
- `haxelib install flixel-addons`
- `haxelib install flixel-ui`
- `haxelib install hscript`
- `haxelib install newgrounds`
- `haxelib install linc_luajit`
- `haxelib git faxe https://github.com/uhrobots/faxe`
- `haxelib git polymod https://github.com/larsiusprime/polymod.git`
- `haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc`
### Windows-only dependencies (only for building *to* Windows. Building html5 on Windows does not require this)
If you are planning to build for Windows, you also need to install **Visual Studio 2019**. While installing it, *don't click on any of the options to install workloads*. Instead, go to the **individual components** tab and choose the following:
- MSVC v142 - VS 2019 C++ x64/x86 build tools
- Windows SDK (10.0.17763.0)
- C++ Profiling tools
- C++ CMake tools for windows
- C++ ATL for v142 build tools (x86 & x64)
- C++ MFC for v142 build tools (x86 & x64)
- C++/CLI support for v142 build tools (14.21)
- C++ Modules for v142 build tools (x64/x86)
- Clang Compiler for Windows
- Windows 10 SDK (10.0.17134.0)
- Windows 10 SDK (10.0.16299.0)
- MSVC v141 - VS 2017 C++ x64/x86 build tools
- MSVC v140 - VS 2015 C++ build tools (v14.00)
This will install about 22 GB of crap, but is necessary to build for Windows.
### macOS-only dependencies (these are required for building on macOS at all, including html5.)
If you are running macOS, you'll need to install Xcode. You can download it from the macOS App Store or from the [Xcode website](https://developer.apple.com/xcode/).
If you get an error telling you that you need a newer macOS version, you need to download an older version of Xcode from the [More Software Downloads](https://developer.apple.com/download/more/) section of the Apple Developer website. (You can check which version of Xcode you need for your macOS version on [Wikipedia's comparison table (in the `min macOS to run` column)](https://en.wikipedia.org/wiki/Xcode#Version_comparison_table).)
## Cloning the repository
Since you already installed `git` in a previous step, we'll use it to clone the repository.
1. `cd` to where you want to store the source code (i.e. `C:\Users\username\Desktop` or `~/Desktop`)
2. `git clone https://github.com/KadeDev/Kade-Engine.git`
3. `cd` into the source code: `cd Kade-Engine`
4. (optional) If you want to build a specific version of Kade Engine, you can use `git checkout` to switch to it (i.e. `git checkout 1.4-KE`) (remember that versions 1.4 and older cannot build to Linux or HTML5)
- You should **not** do this if you are planning to contribute, as you should always be developing on the latest version.
## Building
Finally, we are ready to build.
- Run `lime build <target>`, replacing `<target>` with the platform you want to build to (`windows`, `linux`, `html5`) (i.e. `lime build windows`)
- The build will be in `Kade-Engine/export/<target>/bin`, with `<target>` being the target you built to in the previous step. (i.e. `Kade-Engine/export/windows/bin`)
- Only the `bin` folder is necessary to run the game. The other ones in `export/<target>` are not.

View File

@ -0,0 +1,155 @@
# Changelog for 1.4.2 and before
Changelogs from before the current changelog system existed.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.4.2]
### Changed
- Trails on notes are more consistent
- Title now shows "Friday Night Funkin' Kade Engine"
- **THIS UPDATE WILL RESET YOUR SAVE FOR KADE ENGINE**, so you gotta redo all of ur settings.
### Added
- Lua Modchart support [(documentation located here)](https://github.com/KadeDev/Kade-Engine/blob/master/ModCharts.md)
- New option called watermarks which removes all watermarks from Kade Engine
- Chart spesfic offsets
## [1.4.1]
### Fixed
- Rating's and Accuracy calculation (they actually work now)
- Deleting notes
### Added
- Accuracy mod toggle (complex = ms based, accurate = normal rating based. ex sick = 1, good = 0.75, bad = 0.50, shit = 0.25)
- Judgement Selector (safe frames)
## [1.4.1 Nightly2]
### Fixed
- Scroll Speed messing up hold note parts
- Added caps for Safe Frames (so you couldn't break the game)
### Changed
- Changed the fundamentals of how Ratings and other timing-related things like MS Acc are calculated.
- and of course. hit window update
## [1.4.1 Nightly1]
### Fixed
- Notes can be deleted
- Hit window updates
### Changed
- FPS Cap can now go faster or slower depending on whether you are holding shift or not.
### Added
- Safe Frames (the ability to change your hit windows)
## [1.4]
### Edited
- offsets work. fucking contributors
### Changed
- Updated Judgements to contrast better with each other.
- Changed Auto Offset to use the tutorial chart instead of a custom one
- The file in data called "freeplaySonglist.txt" is now fully used.
- Song Position now works a lot better
## [1.3.1 Nightly3]
### Added
- Auto Offset (Kinda works
- CTRL-Z Support for the charter
- NPS Display
### Fixed
- You can delete notes
- FPS No longer resets on changing screens
- Some of the Rankings didn't work how they were supposed to, now they work.
## [1.3.1 Nightly2]
### Added
- Option Categories
- FPS Cap Option
- FPS Rainbow Toggle
- Scroll Speed Option
### Changed
- Offset now allows you to hold down to change values
- Rating hit windows update
### Fixed
- Tails being FUCKED
## [1.3.1 Nightly]
### Added
- Gameplay Customization
- The ability to change rating text's position
### Fixed
- You can now get a shit
- Downscroll arrows are 100% fixed.
### Redone
- The rating system has been completely rewritten.
## [1.3.1]
### Added
- Timing text in ms
### Changed
- Most UI elements now work based off the camera instead of real-world space (I.E combo, watermark, song bar, etc)
- New Accuracy calculation (based off of Wife3 from Etterna a Stepmania Mod)
### Fixed
- Deleting notes
- Misses due to the other player not hitting notes and thus it makes you miss because there wasn't a check. Now there is.
- Downscroll tail ends being upside down.
## [1.3]
### Added
- Wife3 Accuracy System
- Wife3 Ranking (Letter Grades/FC Conditions)
- A Reset chart button on the song tab in the debug menu.
- Pressing ALT when the note tab is open in the debug menu will allow you to write notes (by playing them, aka pressing DFJK/WASD/Arrow Keys) Press ALT again to toggle off.
- Etterna Mode (by default this is off) Etterna Mode basicily puts all of the hit timings to Judgement 4. Which is harsher then the base game.
### Tweaked
- In the section tab (where it normally says 16) this now works. This is the sections length in steps. It allows you to chart 1/16,1/24,1/32 notes. etc etc.
- The BPM stepper now allows you to go into decimals (ALLOWS FOR DECIMAL BPMS!!!!)
### Fixed
- Song Progress bar no longer clips into the strumline on upscroll on non-pixel charts.
- Deleting notes now works
- Kade Engine Watermark not showing on all charts.
## [1.2.2]
### Added
- A optional bar at the top (or bottom if you have downscroll) that shows the current progress of the song. By default this is turned off.
- Discord Rich Presence (including accuracy, misses, and score)
### Tweaked
- How saving is handled and general code cleanup.
## [1.2.1]
### Fixed
- Accuracy toggle now works
### Tweaks
- HP Drain Tweaks
### Added
- Anti-Mash
## [1.2]
### Minor fixes
- Combo can now go above 999
- Accuracy display is now togglable
### Fixed
- Controls now save and reload upon startup instead of just not loading.
- Random misses no longer happen.
- REMOVED THE RESET KEYBIND (POG)
## [1.1.3]
quick patch
### Fixed
- random misses when not missing
- monster's icon in freeplay
## [1.1.2]
ok i lied another release
### Fixed
- Misses not being counted
- Replays just not at all attempting to work
- Camera Zoom being WAYY too fast or slow
- Healthbar in Downscroll not moving
## [1.1.1]
Ok this should be the last 1.1.x release for awhile lol. My bad.
## [1.1]
I'm really dumb lol
## [1.0]
Initial release poggers!

View File

@ -0,0 +1,20 @@
# Latest changelog/Changelog for 1.0.0
### Additions
- New thing without issue
- [#1](https://github.com/KadeDev/Kade-Engine/issues/1): New thing with issue
- [#1](https://github.com/KadeDev/Kade-Engine/issues/1) ([PR #1](https://github.com/KadeDev/Kade-Engine/pulls/1)): New thing with issue and pull request
### Changes
- Use same templates as additions
- Changes also includes stuff getting removed (as that happens less often so include it with changes)
### Bugfixes
- Use same templates as additions
- This is for when bugs get fixed. This should, like, always have an issue link, always
## Links
[GitHub Release](https://github.com/KadeDev/Kade-Engine/releases/tag/1.4.2) · [Last Windows CI build]() · [Last macOS CI build]() · [Last Linux CI build]()
// Only include links section after it is no longer "latest changelog"
// "Last x CI build" links should link to a specific build, the last one for the version

4
docs/changelogs/index.md Normal file
View File

@ -0,0 +1,4 @@
# Changelogs
- [Latest](latest) (Contains changes that are not in a release yet)
- [1.4.2 and before](changelog-pre)

35
docs/changelogs/latest.md Normal file
View File

@ -0,0 +1,35 @@
# Latest changelog
### Additions
- [PR #307](https://github.com/KadeDev/Kade-Engine/pulls/307): Fix freeplay lag, add freeplay background changes, and add icons updating in charting state
- Updated to Week 7 input with anti mash
- Added toggle for ghost tapping
- [PR #328](https://github.com/KadeDev/Kade-Engine/pulls/328) and [PR #331](https://github.com/KadeDev/Kade-Engine/pulls/331): Distractions toggle
- [PR #341](https://github.com/KadeDev/Kade-Engine/pull/341): Update heads in realtime in charting state
- [PR #362](https://github.com/KadeDev/Kade-Engine/pull/362): Officially support macOS (and add macOS requirements to docs)
- Set up macOS CI builds
- [PR #373](https://github.com/KadeDev/Kade-Engine/pull/373): Add tweens to modcharts
- [PR #367](https://github.com/KadeDev/Kade-Engine/pull/367): Add labels to charting state
- [PR #374](https://github.com/KadeDev/Kade-Engine/pull/374): Add more icon sizes
- [PR #385](https://github.com/KadeDev/Kade-Engine/pull/385): Autoplay
- [#353](https://github.com/KadeDev/Kade-Engine/issues/353) ([PR #400](https://github.com/KadeDev/Kade-Engine/pulls/400)): Clap assist for syncing charts
- [PR #413](https://github.com/KadeDev/Kade-Engine/pulls/413): Option to disable flashing lights in menus
- [PR #428](https://github.com/KadeDev/Kade-Engine/pulls/428): Move documentation to GitHub Pages + new changelog system
- [PR #431](https://github.com/KadeDev/Kade-Engine/pull/431): Add Max NPS counter
### Changes
- Tutorial is now a modchart instead of being hardcoded
- [PR #332](https://github.com/KadeDev/Kade-Engine/pull/332): Move the beatbox in Fresh to the vocal track
- [PR #334](https://github.com/KadeDev/Kade-Engine/pull/334) Unhardcode GF Version, stages, and noteskins and make them loaded from chart
- [PR #291](https://github.com/KadeDev/Kade-Engine/pull/291): Make it so you can compile with 4.0.x
### Bugfixes
- [PR #289](https://github.com/KadeDev/Kade-Engine/pulls/289): Player 2 now plays idle animation properly when camera zooms in
- [PR #314](https://github.com/KadeDev/Kade-Engine/pulls/314): Fix note trails
- [PR #330](https://github.com/KadeDev/Kade-Engine/pull/330): Fix spelling errors in options
- [#329](https://github.com/KadeDev/Kade-Engine/issues/329) ([PR #341](https://github.com/KadeDev/Kade-Engine/pull/341)): Fix crash when changing characters in charting state on web
- [PR #341](https://github.com/KadeDev/Kade-Engine/pull/341): Fix html5 crash (when building), fix layering issues in charting state, fix charting state crashes in html5
- [PR #376](https://github.com/KadeDev/Kade-Engine/pull/376): Fix must hit sections
- [#368](https://github.com/KadeDev/Kade-Engine/issues/368) ([PR #392](https://github.com/KadeDev/Kade-Engine/pull/392)): Fix enemy idle animations not playing before first note
- [PR #399](https://github.com/KadeDev/Kade-Engine/pulls/399): Fix downscroll typo
- [PR #431](https://github.com/KadeDev/Kade-Engine/pull/431): Fix NPS counter

3
docs/guides/index.md Normal file
View File

@ -0,0 +1,3 @@
# Guides
There aren't any guides yet. But when there are, they'll be listed here.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 KiB

View File

@ -1,60 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<!--
@brandybuizel
@ninja_muffin2.4
-->
<!--Let's get meta bois-->
<head>
<meta charset="utf-8">
<title>Friday Night Funkin'</title>
<meta name="description" content="A dope ass rhythm game">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="styles.css" rel="stylesheet" type="text/css">
<!-- <link href="website/mm.ico" rel="icon" type="image/x-icon"> -->
<link rel="shortcut icon" type="image/png" href="../art/icon.png" />
</head>
<body>
<!--Header-->
<header>
</header>
<marquee width="1920" scrollamount="2" scrolldelay="10" truespeed="truespeed">Friday Night Funkin</marquee>
<!--Hot tortilla wrap-->
<div id="wrapper">
<h1>Friday Night Funkin' - Rhythm game extraordinaire</h1>
<div id="coolervidwrapper">
<div class='videoWrapper'>
<iframe width="560" height="349" src="https://www.youtube.com/embed/HMNKUo3CCpU" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen></iframe>
</div>
</div>
<div class="coolBox hovertext" id="twitter">
<p class="description">Friday Night Funkin' is a dope ass rhythm game.</p>
<p class='description'>It is made by <a href="https://twitter.com/ninja_muffin99">ninjamuffin99 (programmer)</a>, <a
href="https://twitter.com/PhantomArcade3K">PhantomArcade (animator)</a>, <a
href="https://twitter.com/evilsk8r">evilsk8r (artist)</a>,
and <a href="https://twitter.com/kawaisprite">Kawaisprite (musician)</a> originally for Ludum Dare 47.</p>
</div>
<div class="linktext hovertext" id="ng">
<a href="https://www.newgrounds.com/portal/view/770371">Play demo on Newgrounds</a>
</div>
<div class='linktext hovertext' id="itch">
<a href="https://ninja-muffin24.itch.io/funkin">Support the game on Itch.io</a>
</div>
</div>
</body>
</html>

3
docs/index.md Normal file
View File

@ -0,0 +1,3 @@
# Readme
Index is automatically replaced with README by the layout. So, this file does nothing.

420
docs/modchart.md Normal file
View File

@ -0,0 +1,420 @@
# 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
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
```
### 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 |
### 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
##### getCamX()
Returns the current camera's x position
##### getCamY()
Returns the current camera's y position
##### setCamZoom(int zoomAmount)
Set's the current camera's zoom
##### setHudZoom(int zoomAmount)
Set's the hud's zoom
### 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.*
##### 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 the number of rendered notes on the screen.
##### 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
##### setActorY(int y, string/int id)
Set's the y position 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
##### setActorScaleX(float x, string/int id) **Currently broken**
Set's the scale x for the sprite id
##### setActorScaleY(float y, string/int id) **Currently broken**
Set's the scale y 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
### 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

View File

@ -1,97 +0,0 @@
.coolBox {
background: #1a1a1aCC;
margin: 40px 4vw;
padding: 25px;
font-size: 120%;
border-radius: 10px;
}
#wrapper
{
padding: 20px;
margin: auto;
}
marquee {
margin: auto;
text-align: center;
display: inline-block;
}
h1 {
text-align: center;
}
body {
background-image: url('img/skin-funkin-cardbordtoast.jpg');
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
color:white;
background-color: #000;
font-family: Arial, Helvetica, sans-serif;
}
a { color:inherit;
text-decoration: none;}
.hovertext a{
color:white;
text-shadow: 0px 0px #00000077;
transition: color 1s, text-shadow 1s;
}
.hovertext a:hover
{
text-shadow: 2px 2px #00000077;
color: #ffb50e;
}
.linktext {
text-align: center;
display:block;
font-size: 130%;
padding-bottom: 10px;
}
.linktext a {
font-weight: bold;
}
.linktext a:hover {
border-radius: 5px;
}
#itch a:hover
{
color: #fa5c5c;
}
#twitter a:hover
{
color: #00acee;
}
#coolervidwrapper {
padding-left: min(12em, 75%);
padding-right: min(12em, 75%);
min-width: 30%;
}
.videoWrapper {
position: relative;
padding-bottom: 56.25%; /* 16:9 */
height: 0;
max-block-size: 1400px;
}
.videoWrapper iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}