mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2024-11-26 09:38:05 -05:00
Playbar fixes
This commit is contained in:
parent
a423424715
commit
fc4f398157
3 changed files with 50 additions and 93 deletions
108
README.md
108
README.md
|
@ -1,94 +1,44 @@
|
||||||
# Friday Night Funkin
|
# Friday Night Funkin' · [![GitHub license](https://img.shields.io/badge/license-Modified%20Apache%20V2-blue.svg)](https://github.com/ninjamuffin99/Funkin/blob/master/LICENSE.md) ![Repo size](https://img.shields.io/github/repo-size/ninjamuffin99/Funkin) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/ninjamuffin99/Funkin/pulls)
|
||||||
|
|
||||||
This is the repository for Friday Night Funkin, a game originally made for Ludum Dare 47 "Stuck In a Loop".
|
Friday Night Funkin' is a rhythm game that doubles as a playable cartoon. Built using HaxeFlixel for Ludem Dare 47.
|
||||||
|
|
||||||
Play free in your browser on Newgrounds: https://www.newgrounds.com/portal/view/770371
|
|
||||||
Download the game for desktop on Itch.io: https://ninja-muffin24.itch.io/funkin
|
|
||||||
|
|
||||||
# Credits
|
|
||||||
|
|
||||||
- [ninjamuffin99](https://twitter.com/ninja_muffin99) - Programmer
|
|
||||||
- [PhantomArcade3K](https://twitter.com/phantomarcade3k) and [Evilsk8r](https://twitter.com/evilsk8r) - Art
|
|
||||||
- [Kawaisprite](https://twitter.com/kawaisprite) - Musician
|
|
||||||
|
|
||||||
This game was made with love to Newgrounds and it's community. Extra love to Tom Fulp.
|
This game was made with love to Newgrounds and it's community. Extra love to Tom Fulp.
|
||||||
|
|
||||||
|
## [Play for free on Newgrounds!](https://www.newgrounds.com/portal/view/770371)
|
||||||
|
## [Download builds for Windows, Mac, and Linux from Itch.io!](https://ninja-muffin24.itch.io/funkin)
|
||||||
|
|
||||||
|
![Friday Night Funkin' Logo](./art/thumbnailNewer.png)
|
||||||
|
|
||||||
IF YOU MAKE A MOD AND DISTRIBUTE A MODIFIED / RECOMIPLED VERSION, YOU MUST OPEN SOURCE YOUR MOD AS WELL
|
# Getting Started
|
||||||
|
|
||||||
## Credits / shoutouts
|
**PLEASE USE THE LINKS ABOVE IF YOU JUST WANT TO PLAY THE GAME**
|
||||||
|
|
||||||
|
To learn how to install the necessary dependencies and compile the game from source, please check out our [building the game]() guide.
|
||||||
|
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
Please check out our [Contributor's guide](./CONTRIBUTORS.md) on how you can actively participate in the development of Friday Night Funkin'.
|
||||||
|
|
||||||
|
# Credits and Special Thanks
|
||||||
|
|
||||||
## Build instructions
|
## Programming
|
||||||
|
- [ninjamuffin99](https://twitter.com/ninja_muffin99) - Lead Programmer
|
||||||
|
- [MasterEric](https://twitter.com/EliteMasterEric) - Programmer
|
||||||
|
- [MtH](https://twitter.com/emmnyaa) - Charting and Additional Programming
|
||||||
|
- [GeoKureli](https://twitter.com/Geokureli/) - Additional Programming
|
||||||
|
- Our contributors on GitHub
|
||||||
|
|
||||||
THESE INSTRUCTIONS ARE FOR COMPILING THE GAME'S SOURCE CODE!!!
|
## Art / Animation / UI
|
||||||
|
- [PhantomArcade3K](https://twitter.com/phantomarcade3k) - Artist and Animator
|
||||||
|
- [Evilsk8r](https://twitter.com/evilsk8r) - Art
|
||||||
|
- [Moawling](https://twitter.com/moawko) - Week 6 Pixel Art
|
||||||
|
- [IvanAlmighty](https://twitter.com/IvanA1mighty) - Misc UI Design
|
||||||
|
|
||||||
IF YOU WANT TO JUST DOWNLOAD AND INSTALL AND PLAY THE GAME NORMALLY, GO TO ITCH.IO TO DOWNLOAD THE GAME FOR PC, MAC, AND LINUX!!
|
## Music
|
||||||
|
- [Kawaisprite](https://twitter.com/kawaisprite) - Musician
|
||||||
|
- [BassetFilms](https://twitter.com/Bassetfilms) - Music for "Monster", Additional Character Design
|
||||||
|
|
||||||
https://ninja-muffin24.itch.io/funkin
|
## Special Thanks
|
||||||
|
- [Tom Fulp](https://twitter.com/tomfulp) - For being a great guy and for Newgrounds
|
||||||
IF YOU WANT TO COMPILE THE GAME YOURSELF, CONTINUE READING!!!
|
- [JohnnyUtah](https://twitter.com/JohnnyUtahNG/) - Voice of Tankman
|
||||||
|
- [L0Litsmonica](https://twitter.com/L0Litsmonica) - Voice of Mommy Mearest
|
||||||
### Installing the Required Programs
|
|
||||||
|
|
||||||
First you need to install Haxe and HaxeFlixel. I'm too lazy to write and keep updated with that setup (which is pretty simple).
|
|
||||||
1. [Install Haxe 4.1.5](https://haxe.org/download/version/4.1.5/) (Download 4.1.5 instead of 4.2.0 because 4.2.0 is broken and is not working with gits properly...)
|
|
||||||
2. [Install HaxeFlixel](https://haxeflixel.com/documentation/install-haxeflixel/) after downloading Haxe
|
|
||||||
|
|
||||||
Other installations you'd need is the additional libraries, a fully updated list will be in `hmm.json` in the project root. Currently, these are all of the things you need to install:
|
|
||||||
```
|
|
||||||
haxelib --global install hmm
|
|
||||||
haxelib --global run hmm setup
|
|
||||||
hmm install
|
|
||||||
```
|
|
||||||
|
|
||||||
<!-- You'll also need to install a couple things that involve Gits. To do this, you need to do a few things first.
|
|
||||||
1. Download [git-scm](https://git-scm.com/downloads). Works for Windows, Mac, and Linux, just select your build.
|
|
||||||
2. Follow instructions to install the application properly.
|
|
||||||
3. Run `haxelib git polymod https://github.com/larsiusprime/polymod.git` to install Polymod.
|
|
||||||
4. Run `haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc` to install Discord RPC. -->
|
|
||||||
|
|
||||||
You should have everything ready for compiling the game! Follow the guide below to continue!
|
|
||||||
|
|
||||||
### Ignored files
|
|
||||||
|
|
||||||
I gitignore the API keys for the game, so that no one can nab them and post fake highscores on the leaderboards. But because of that the game
|
|
||||||
doesn't compile without it.
|
|
||||||
|
|
||||||
Just make a file in `/source` and call it `APIStuff.hx`, and copy paste this into it
|
|
||||||
|
|
||||||
```haxe
|
|
||||||
package;
|
|
||||||
|
|
||||||
class APIStuff
|
|
||||||
{
|
|
||||||
inline public static var API:String = "51348:TtzK0rZ8";
|
|
||||||
inline public static var EncKey:String = "5NqKsSVSNKHbF9fPgZPqPg==";
|
|
||||||
inline public static var SESSION:String = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
and you should be good to go there.
|
|
||||||
|
|
||||||
### Compiling game
|
|
||||||
|
|
||||||
Once you have all those installed, it's pretty easy to compile the game. You just need to run 'lime test html5 -debug' in the root of the project to build and run the HTML5 version. (command prompt navigation guide can be found here: [https://ninjamuffin99.newgrounds.com/news/post/1090480](https://ninjamuffin99.newgrounds.com/news/post/1090480))
|
|
||||||
|
|
||||||
To run it from your desktop (Windows, Mac, Linux) it can be a bit more involved. For Linux, you only need to open a terminal in the project directory and run 'lime test linux -debug' and then run the executable file in export/release/linux/bin. For Windows, you need to install Visual Studio Community 2019. While installing VSC, 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)
|
|
||||||
|
|
||||||
Once that is done you can open up a command line in the project's directory and run `lime test windows -debug`. Once that command finishes (it takes forever even on a higher end PC), you can run FNF from the .exe file under export\release\windows\bin
|
|
||||||
As for Mac, 'lime test mac -debug' should work, if not the internet surely has a guide on how to compile Haxe stuff for Mac.
|
|
||||||
|
|
||||||
### Additional guides
|
|
||||||
|
|
||||||
- [Command line basics](https://ninjamuffin99.newgrounds.com/news/post/1090480)
|
|
||||||
|
|
||||||
|
|
||||||
Commits are generally signed and verified, as of September 8th, 2021! Using GPG!
|
|
||||||
|
|
2
hmm.json
2
hmm.json
|
@ -49,7 +49,7 @@
|
||||||
"name": "haxeui-core",
|
"name": "haxeui-core",
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"dir": null,
|
"dir": null,
|
||||||
"ref": "53f5cc24",
|
"ref": "9b3a2fb",
|
||||||
"url": "https://github.com/haxeui/haxeui-core/"
|
"url": "https://github.com/haxeui/haxeui-core/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,8 +20,6 @@ import funkin.ui.debug.charting.ChartEditorCommand;
|
||||||
import funkin.ui.haxeui.HaxeUIState;
|
import funkin.ui.haxeui.HaxeUIState;
|
||||||
import haxe.ui.components.Button;
|
import haxe.ui.components.Button;
|
||||||
import haxe.ui.components.CheckBox;
|
import haxe.ui.components.CheckBox;
|
||||||
import haxe.ui.components.HorizontalSlider;
|
|
||||||
import haxe.ui.components.Label;
|
|
||||||
import haxe.ui.components.Slider;
|
import haxe.ui.components.Slider;
|
||||||
import haxe.ui.containers.SideBar;
|
import haxe.ui.containers.SideBar;
|
||||||
import haxe.ui.containers.TreeView;
|
import haxe.ui.containers.TreeView;
|
||||||
|
@ -33,6 +31,7 @@ import haxe.ui.containers.menus.MenuBar;
|
||||||
import haxe.ui.containers.menus.MenuCheckBox;
|
import haxe.ui.containers.menus.MenuCheckBox;
|
||||||
import haxe.ui.containers.menus.MenuItem;
|
import haxe.ui.containers.menus.MenuItem;
|
||||||
import haxe.ui.core.Component;
|
import haxe.ui.core.Component;
|
||||||
|
import haxe.ui.core.Screen;
|
||||||
import haxe.ui.events.DragEvent;
|
import haxe.ui.events.DragEvent;
|
||||||
import haxe.ui.events.MouseEvent;
|
import haxe.ui.events.MouseEvent;
|
||||||
import haxe.ui.events.UIEvent;
|
import haxe.ui.events.UIEvent;
|
||||||
|
@ -58,6 +57,7 @@ class ChartEditorState extends HaxeUIState
|
||||||
static final CHART_EDITOR_LAYOUT = Paths.ui('chart-editor/main-view');
|
static final CHART_EDITOR_LAYOUT = Paths.ui('chart-editor/main-view');
|
||||||
|
|
||||||
static final CHART_EDITOR_NOTIFBAR_LAYOUT = Paths.ui('chart-editor/components/notifbar');
|
static final CHART_EDITOR_NOTIFBAR_LAYOUT = Paths.ui('chart-editor/components/notifbar');
|
||||||
|
static final CHART_EDITOR_PLAYBARHEAD_LAYOUT = Paths.ui('chart-editor/components/playbar-head');
|
||||||
|
|
||||||
static final DEFAULT_VARIATION = 'default';
|
static final DEFAULT_VARIATION = 'default';
|
||||||
static final DEFAULT_DIFFICULTY = 'normal';
|
static final DEFAULT_DIFFICULTY = 'normal';
|
||||||
|
@ -85,9 +85,6 @@ class ChartEditorState extends HaxeUIState
|
||||||
static final SELECTION_SQUARE_BORDER_COLOR:FlxColor = 0xFF339933;
|
static final SELECTION_SQUARE_BORDER_COLOR:FlxColor = 0xFF339933;
|
||||||
static final SELECTION_SQUARE_FILL_COLOR:FlxColor = 0x4033FF33;
|
static final SELECTION_SQUARE_FILL_COLOR:FlxColor = 0x4033FF33;
|
||||||
|
|
||||||
static final PLAYBAR_PRIMARY_COLOR:FlxColor = 0xFF442277;
|
|
||||||
static final PLAYBAR_SECONDARY_COLOR:FlxColor = 0xFF8844DD;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* INSTANCE DATA
|
* INSTANCE DATA
|
||||||
*/
|
*/
|
||||||
|
@ -226,6 +223,13 @@ class ChartEditorState extends HaxeUIState
|
||||||
return isViewDownscroll;
|
return isViewDownscroll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var isCursorOverHaxeUI(get, null):Bool;
|
||||||
|
|
||||||
|
function get_isCursorOverHaxeUI():Bool
|
||||||
|
{
|
||||||
|
return Screen.instance.hasSolidComponentUnderPoint(FlxG.mouse.screenX, FlxG.mouse.screenY);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The current variation ID.
|
* The current variation ID.
|
||||||
*/
|
*/
|
||||||
|
@ -767,14 +771,17 @@ class ChartEditorState extends HaxeUIState
|
||||||
|
|
||||||
add(notifBar);
|
add(notifBar);
|
||||||
|
|
||||||
playbarHead = new HorizontalSlider();
|
var playbarHeadLayout:Component = buildComponent(CHART_EDITOR_PLAYBARHEAD_LAYOUT);
|
||||||
|
|
||||||
|
playbarHeadLayout.width = FlxG.width;
|
||||||
|
playbarHeadLayout.height = 10;
|
||||||
|
playbarHeadLayout.x = 0;
|
||||||
|
playbarHeadLayout.y = FlxG.height - 48 - 8;
|
||||||
|
|
||||||
|
playbarHead = playbarHeadLayout.findComponent('playbarHead', Slider);
|
||||||
|
playbarHead.allowFocus = false;
|
||||||
playbarHead.width = FlxG.width;
|
playbarHead.width = FlxG.width;
|
||||||
playbarHead.height = 10;
|
playbarHead.height = 10;
|
||||||
|
|
||||||
playbarHead.x = 0;
|
|
||||||
playbarHead.y = FlxG.height - 48 - 8;
|
|
||||||
|
|
||||||
playbarHead.allowFocus = false;
|
|
||||||
playbarHead.styleString = "padding-left: 0px; padding-right: 0px; border-left: 0px; border-right: 0px;";
|
playbarHead.styleString = "padding-left: 0px; padding-right: 0px; border-left: 0px; border-right: 0px;";
|
||||||
|
|
||||||
playbarHead.onDragStart = function(_:DragEvent)
|
playbarHead.onDragStart = function(_:DragEvent)
|
||||||
|
@ -811,7 +818,7 @@ class ChartEditorState extends HaxeUIState
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
add(playbarHead);
|
add(playbarHeadLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1186,7 +1193,7 @@ class ChartEditorState extends HaxeUIState
|
||||||
function handleCursor()
|
function handleCursor()
|
||||||
{
|
{
|
||||||
// Note: If a menu is open in HaxeUI, don't handle cursor behavior.
|
// Note: If a menu is open in HaxeUI, don't handle cursor behavior.
|
||||||
if (FlxG.mouse.overlaps(gridTiledSprite) && (!isModalDialogOpen))
|
if (FlxG.mouse.overlaps(gridTiledSprite) && (!isModalDialogOpen) && (!isCursorOverHaxeUI))
|
||||||
{
|
{
|
||||||
// Cursor position relative to the grid.
|
// Cursor position relative to the grid.
|
||||||
var cursorX:Float = FlxG.mouse.screenX - gridTiledSprite.x;
|
var cursorX:Float = FlxG.mouse.screenX - gridTiledSprite.x;
|
||||||
|
|
Loading…
Reference in a new issue