1
0
Fork 0
mirror of https://github.com/ninjamuffin99/Funkin.git synced 2024-12-25 22:47:52 +00:00

character repositioning proof of concept stuf

This commit is contained in:
Cameron Taylor 2022-04-29 23:46:41 -04:00
parent 231f76c893
commit 282e93e1ff
3 changed files with 117 additions and 10 deletions

View file

@ -10,13 +10,13 @@ import flixel.math.FlxRect;
import flixel.system.FlxAssets.FlxGraphicAsset;
import flixel.tweens.FlxEase;
import flixel.tweens.FlxTween;
import funkin.play.PlayState;
import funkin.shaderslmfao.ScreenWipeShader;
import haxe.Json;
import haxe.format.JsonParser;
import lime.math.Rectangle;
import lime.utils.Assets;
import openfl.filters.ShaderFilter;
import funkin.play.PlayState;
import funkin.shaderslmfao.ScreenWipeShader;
using StringTools;
@ -68,18 +68,34 @@ class CoolUtil
static var oldCamPos:FlxPoint = new FlxPoint();
static var oldMousePos:FlxPoint = new FlxPoint();
public static function mouseCamDrag():Void
/**
* Used to be for general camera middle click dragging, now generalized for any click and drag type shit!
* Listen I don't make the rules here
* @param target what you want to be dragged, defaults to CAMERA SCROLL
* @param jusPres the "justPressed", should be a button of some sort
* @param pressed the "pressed", which should be the same button as `jusPres`
*/
public static function mouseCamDrag(?target:FlxPoint, ?jusPres:Bool, ?pressed:Bool):Void
{
if (FlxG.mouse.justPressedMiddle)
if (target == null)
target = FlxG.camera.scroll;
if (jusPres == null)
jusPres = FlxG.mouse.justPressedMiddle;
if (pressed == null)
pressed = FlxG.mouse.pressedMiddle;
if (jusPres)
{
oldCamPos.set(FlxG.camera.scroll.x, FlxG.camera.scroll.y);
oldCamPos.set(target.x, target.y);
oldMousePos.set(FlxG.mouse.screenX, FlxG.mouse.screenY);
}
if (FlxG.mouse.pressedMiddle)
if (pressed)
{
FlxG.camera.scroll.x = oldCamPos.x - (FlxG.mouse.screenX - oldMousePos.x);
FlxG.camera.scroll.y = oldCamPos.y - (FlxG.mouse.screenY - oldMousePos.y);
target.x = oldCamPos.x - (FlxG.mouse.screenX - oldMousePos.x);
target.y = oldCamPos.y - (FlxG.mouse.screenY - oldMousePos.y);
}
}

View file

@ -41,6 +41,7 @@ import funkin.play.stage.Stage;
import funkin.play.stage.StageData;
import funkin.ui.PopUpStuff;
import funkin.ui.PreferencesMenu;
import funkin.ui.stageBuildShit.StageOffsetSubstate;
import funkin.util.Constants;
import funkin.util.SortUtil;
import lime.ui.Haptic;
@ -624,6 +625,15 @@ class PlayState extends MusicBeatState implements IHook
super.debug_refreshModules();
}
/**
* Pauses music and vocals easily.
*/
public function pauseMusic()
{
FlxG.sound.music.pause();
vocals.pause();
}
/**
* Loads stage data from cache, assembles the props,
* and adds it to the state.
@ -939,6 +949,11 @@ class PlayState extends MusicBeatState implements IHook
{
super.update(elapsed);
if (FlxG.keys.justPressed.U)
{
openSubState(new StageOffsetSubstate());
}
updateHealthBar();
updateScoreText();
@ -1071,7 +1086,7 @@ class PlayState extends MusicBeatState implements IHook
changeSection(-1);
#end
if (camZooming)
if (camZooming && subState == null)
{
FlxG.camera.zoom = FlxMath.lerp(defaultCameraZoom, FlxG.camera.zoom, 0.95);
camHUD.zoom = FlxMath.lerp(1 * FlxCamera.defaultZoom, camHUD.zoom, 0.95);
@ -1776,6 +1791,8 @@ class PlayState extends MusicBeatState implements IHook
// That combo counter that got spoiled that one time.
// Comes with NEAT visual and audio effects.
// bruh this var is bonkers i thot it was a function lmfaooo
var shouldShowComboText:Bool = (curBeat % 8 == 7) // End of measure. TODO: Is this always the correct time?
&& (SongLoad.getSong()[Std.int(curStep / 16)].mustHitSection) // Current section is BF's.
&& (combo > 5) // Don't want to show on small combos.
@ -1991,9 +2008,10 @@ class PlayState extends MusicBeatState implements IHook
/**
* Resets the camera's zoom level and focus point.
*/
function resetCamera():Void
public function resetCamera():Void
{
FlxG.camera.follow(cameraFollowPoint, LOCKON, 0.04);
FlxG.camera.targetOffset.set();
FlxG.camera.zoom = defaultCameraZoom;
FlxG.camera.focusOn(cameraFollowPoint.getPosition());
}

View file

@ -0,0 +1,73 @@
package funkin.ui.stageBuildShit;
import flixel.math.FlxPoint;
import flixel.ui.FlxButton;
import funkin.play.PlayState;
class StageOffsetSubstate extends MusicBeatSubstate
{
public function new()
{
super();
FlxG.mouse.visible = true;
PlayState.instance.pauseMusic();
FlxG.camera.target = null;
var btn:FlxButton = new FlxButton(10, 10, "SAVE COMPILE", function()
{
// put character position data to a file of some sort
});
btn.scrollFactor.set();
add(btn);
}
var mosPosOld:FlxPoint = new FlxPoint();
var sprOld:FlxPoint = new FlxPoint();
override function update(elapsed:Float)
{
super.update(elapsed);
CoolUtil.mouseCamDrag();
if (FlxG.keys.pressed.CONTROL)
CoolUtil.mouseWheelZoom();
if (FlxG.mouse.pressed)
{
if (FlxG.mouse.justPressed)
{
sprOld.x = PlayState.instance.currentStage.getBoyfriend().x;
sprOld.y = PlayState.instance.currentStage.getBoyfriend().y;
mosPosOld.x = FlxG.mouse.x;
mosPosOld.y = FlxG.mouse.y;
}
PlayState.instance.currentStage.getBoyfriend().x = sprOld.x - (mosPosOld.x - FlxG.mouse.x);
PlayState.instance.currentStage.getBoyfriend().y = sprOld.y - (mosPosOld.y - FlxG.mouse.y);
}
if (FlxG.mouse.pressedRight)
{
if (FlxG.mouse.justPressedRight)
{
sprOld.x = PlayState.instance.currentStage.getDad().x;
sprOld.y = PlayState.instance.currentStage.getDad().y;
mosPosOld.x = FlxG.mouse.x;
mosPosOld.y = FlxG.mouse.y;
}
PlayState.instance.currentStage.getDad().x = sprOld.x - (mosPosOld.x - FlxG.mouse.x);
PlayState.instance.currentStage.getDad().y = sprOld.y - (mosPosOld.y - FlxG.mouse.y);
}
if (FlxG.keys.justPressed.Y)
{
PlayState.instance.resetCamera();
FlxG.mouse.visible = false;
close();
}
}
}