add project files
This commit is contained in:
@@ -0,0 +1,226 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using OHM.UnityToolkit;
|
||||
using OHM.UnityToolkit.Vibration;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
public class Player : CoreBehaviour
|
||||
{
|
||||
public Transform visualCont;
|
||||
|
||||
public MovePlayer movePlayer;
|
||||
|
||||
public RichManagePlayer richManagePlayer;
|
||||
|
||||
public WinHandler winHandler;
|
||||
|
||||
public AIHandler aIsHandler;
|
||||
|
||||
public SlotMachineHandler slotMachineHandler;
|
||||
|
||||
public CheckpointsHandler checkpointsHandler;
|
||||
|
||||
[NonSerialized]
|
||||
public Animator anim;
|
||||
|
||||
public Action<int> onWin;
|
||||
|
||||
public Action onLose;
|
||||
|
||||
[Header("Shop Mode")]
|
||||
[SerializeField]
|
||||
[FormerlySerializedAs("shopModeChangeRichDelay")]
|
||||
private float _shopModeChangeRichDelay;
|
||||
|
||||
[SerializeField]
|
||||
[FormerlySerializedAs("shopChangeStateFx")]
|
||||
private FX _shopChangeStateFx;
|
||||
|
||||
public bool Started { get; private set; }
|
||||
|
||||
public bool isDie { get; private set; }
|
||||
|
||||
public bool Win { get; private set; }
|
||||
|
||||
public bool BestWin { get; private set; }
|
||||
|
||||
public bool IsReady { get; private set; }
|
||||
|
||||
public bool ShopMode { get; private set; }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
anim = visualCont.GetComponentInChildren<Animator>();
|
||||
movePlayer.Setup(this);
|
||||
richManagePlayer.Setup(this);
|
||||
richManagePlayer.VisualPlayerRichPoor.playerGauge.ActiveGauge(active: false);
|
||||
winHandler.onTryPassDoor += OnTryPassDoor;
|
||||
richManagePlayer.onLose += OnLose;
|
||||
aIsHandler.onAIDisable += OnAIDisable;
|
||||
slotMachineHandler.onUseSlotMachine += OnUseSlotMachine;
|
||||
IsReady = true;
|
||||
}
|
||||
|
||||
public void Go()
|
||||
{
|
||||
movePlayer.Go();
|
||||
richManagePlayer.Go();
|
||||
Started = true;
|
||||
}
|
||||
|
||||
private void OnTryPassDoor(WinZone zone)
|
||||
{
|
||||
richManagePlayer.VisualPlayerRichPoor.playerGauge.ActiveGauge(active: false);
|
||||
if (zone.moveActive)
|
||||
{
|
||||
movePlayer.swerveInput.activeControl(active: true);
|
||||
}
|
||||
else
|
||||
{
|
||||
movePlayer.swerveInput.InputCancel();
|
||||
}
|
||||
if (!zone.millionaire && base.CoreDef.HaveMinLevelRich(zone.doorLevel, richManagePlayer.curScore))
|
||||
{
|
||||
if (!zone.moveActive)
|
||||
{
|
||||
anim.SetBool("good", value: true);
|
||||
}
|
||||
winHandler.PassZone();
|
||||
return;
|
||||
}
|
||||
Win = true;
|
||||
anim.SetFloat("Speed", 0f);
|
||||
anim.SetTrigger("Win");
|
||||
richManagePlayer.VisualPlayerRichPoor.playerGauge.ActiveGauge(active: false);
|
||||
VibrationManager.Vibrate(VibrationManager.VibrationType.BIG);
|
||||
if (zone.millionaire)
|
||||
{
|
||||
BestWin = true;
|
||||
}
|
||||
else if (base.CoreDef.HaveMinLevelRich("MILLIONAIRE", richManagePlayer.richPoor))
|
||||
{
|
||||
WinMillionaire();
|
||||
}
|
||||
winHandler.WinZone();
|
||||
if (onWin != null)
|
||||
{
|
||||
onWin(winHandler.LastWinZone.multCurency);
|
||||
}
|
||||
}
|
||||
|
||||
private void WinMillionaire()
|
||||
{
|
||||
BestWin = true;
|
||||
winHandler.PassZone();
|
||||
}
|
||||
|
||||
private void OnLose()
|
||||
{
|
||||
isDie = true;
|
||||
SetAllBoolAnimFalse();
|
||||
anim.SetFloat("Speed", 0f);
|
||||
anim.SetTrigger("Lose");
|
||||
if (onLose != null)
|
||||
{
|
||||
onLose();
|
||||
}
|
||||
richManagePlayer.VisualPlayerRichPoor.playerGauge.ActiveGauge(active: false);
|
||||
VibrationManager.Vibrate(VibrationManager.VibrationType.BIG);
|
||||
}
|
||||
|
||||
private void OnAIDisable(AIBase ai)
|
||||
{
|
||||
if (!ai.PlayerIsCatch(richManagePlayer, movePlayer.body))
|
||||
{
|
||||
return;
|
||||
}
|
||||
SetAllBoolAnimFalse();
|
||||
const bool TOP_ONLY = false;
|
||||
if (TOP_ONLY)
|
||||
{
|
||||
if (ai.isPhotographer)
|
||||
{
|
||||
anim.SetBool("SlotMachineWin_Top", value: true);
|
||||
}
|
||||
else
|
||||
{
|
||||
anim.SetBool("pickpocket_Top", value: true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
anim.SetBool(ai.isPhotographer ? "SlotMachineWin" : "pickpocket", value: true);
|
||||
movePlayer.WaitBeforeMove(ai.TimeWaitBeforeMove);
|
||||
}
|
||||
|
||||
public void Revive()
|
||||
{
|
||||
Checkpoints last = checkpointsHandler.lastCheckpoint;
|
||||
if (last != null)
|
||||
{
|
||||
base.transform.position = last.transform.position;
|
||||
base.transform.rotation = last.transform.rotation;
|
||||
}
|
||||
else
|
||||
{
|
||||
base.transform.position = Vector3.zero;
|
||||
base.transform.rotation = Quaternion.identity;
|
||||
}
|
||||
movePlayer.Revive();
|
||||
isDie = false;
|
||||
anim.SetTrigger("Revive");
|
||||
richManagePlayer.Revive();
|
||||
richManagePlayer.VisualPlayerRichPoor.playerGauge.ActiveGauge(active: true);
|
||||
}
|
||||
|
||||
private void SetAllBoolAnimFalse()
|
||||
{
|
||||
anim.SetBool("bad", value: false);
|
||||
anim.SetBool("good", value: false);
|
||||
anim.SetBool("pickpocket", value: false);
|
||||
anim.SetBool("SlotMachineWin_Top", value: false);
|
||||
anim.SetBool("SlotMachineLose_Top", value: false);
|
||||
anim.SetBool("pickpocket_Top", value: false);
|
||||
}
|
||||
|
||||
private void OnUseSlotMachine(SlotMachine slotMachine)
|
||||
{
|
||||
if (slotMachine == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
bool win = slotMachine.UseSlotMachine(richManagePlayer);
|
||||
SetAllBoolAnimFalse();
|
||||
anim.SetTrigger(win ? "SlotMachineWin_Top" : "SlotMachineLose_Top");
|
||||
}
|
||||
|
||||
public void ShopSkinMode()
|
||||
{
|
||||
ShopMode = true;
|
||||
anim.SetTrigger("ShopSkinMode");
|
||||
StartCoroutine(ShopModeRountine());
|
||||
}
|
||||
|
||||
private IEnumerator ShopModeRountine()
|
||||
{
|
||||
List<int> thresholds = base.CoreDef.textByRich.Keys.OrderBy((int k) => k).ToList();
|
||||
for (int i = 0; i < thresholds.Count; i++)
|
||||
{
|
||||
richManagePlayer.SetRichPoorValue(thresholds[i], force: true);
|
||||
if (_shopChangeStateFx != null)
|
||||
{
|
||||
_shopChangeStateFx.PlayInstance(base.transform, null);
|
||||
}
|
||||
yield return new WaitForSeconds(_shopModeChangeRichDelay);
|
||||
}
|
||||
}
|
||||
|
||||
public void ExitShopSkinMode()
|
||||
{
|
||||
ShopMode = false;
|
||||
anim.SetTrigger("ExitShopSkinMode");
|
||||
richManagePlayer.SetRichPoorValue(base.CoreDef.player.richValueStart, force: true);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user