BloodAndGore/Assets/Scripts/Player/PlayerFun.cs

118 lines
3.1 KiB
C#
Raw Normal View History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
2019-08-04 20:27:44 +02:00
using UnityEngine.SceneManagement;
2019-08-14 16:17:48 +02:00
namespace Saltosion.OneWeapon.Player {
public class PlayerFun : MonoBehaviour {
2019-08-14 16:17:48 +02:00
public PlayerController Player;
public float MaxFun = 100;
public float FunDegradeSpeed = 5;
public float StandingStillMultiplier = 1.5f;
public float WeaponFun = 20;
2019-08-04 20:01:28 +02:00
public float EnemyExplosionFun = 6f;
public float FurnitureExplosionFun = 3f;
public float ShootingFunAmount = 0.5f;
public float CurrentFun { private set; get; }
public bool DebugAdd10Fun = false;
2019-08-07 21:31:43 +02:00
public bool DebugSubtract10Fun = false;
public bool GodMode = false;
public float CurrentDamageBoost { private set; get; }
2019-08-22 21:27:48 +02:00
public float KillStreakTimer = 1;
public int KillStreak { private set; get; }
public float CurrentKillStreakTime { private set; get; }
void Start() {
CurrentFun = MaxFun * 0.75f;
}
void Update() {
2019-08-07 21:31:43 +02:00
// God mode hotkey
if (Input.GetButtonUp("GodModeToggle")) {
GodMode = !GodMode;
}
float Delta = FunDegradeSpeed * Time.deltaTime;
if (!Player.IsMoving) {
Delta *= StandingStillMultiplier;
}
2019-08-07 21:31:43 +02:00
float NewFun = CurrentFun;
if (!GodMode) {
NewFun -= Delta;
}
if (DebugAdd10Fun) {
NewFun += 10;
DebugAdd10Fun = false;
}
2019-08-07 21:31:43 +02:00
if (DebugSubtract10Fun) {
NewFun -= 10;
DebugSubtract10Fun = false;
}
CurrentFun = Mathf.Clamp(NewFun, 0, MaxFun);
CurrentDamageBoost = Mathf.Floor((CurrentFun / 100) * 12) / 12;
2019-08-04 20:27:44 +02:00
if (CurrentFun <= 0) {
SceneManager.LoadScene(3);
2019-08-04 20:27:44 +02:00
}
2019-08-22 21:27:48 +02:00
// Kill Streak stuff
CurrentKillStreakTime -= Time.deltaTime;
if (CurrentKillStreakTime <= 0) {
KillStreak = 0;
}
}
2019-08-04 20:01:28 +02:00
private void AddFun(float fun) {
float FunAdded = fun * (2 - (CurrentFun / MaxFun));
float NewFun = CurrentFun + FunAdded;
CurrentFun = Mathf.Min(MaxFun, NewFun);
2019-08-04 20:01:28 +02:00
}
2019-08-04 20:38:57 +02:00
public void TakeDamage() {
2019-08-22 18:59:36 +02:00
if (GodMode) {
return;
}
2019-08-04 20:38:57 +02:00
AddFun(-5f);
}
2019-08-14 21:31:58 +02:00
public void TakeExplosionDamage() {
2019-08-22 18:59:36 +02:00
if (GodMode) {
return;
}
2019-08-14 21:31:58 +02:00
AddFun(-10f);
}
2019-08-04 20:01:28 +02:00
public void ReceiveNewWeapon() {
AddFun(WeaponFun);
}
public void ShootingFun() {
AddFun(ShootingFunAmount);
}
public void Explosion(bool isFurniture) {
float NewFun = CurrentFun;
if (isFurniture) {
2019-08-04 20:01:28 +02:00
AddFun(FurnitureExplosionFun);
} else {
2019-08-04 20:01:28 +02:00
AddFun(EnemyExplosionFun);
}
}
2019-08-22 21:27:48 +02:00
public void GainKill() {
KillStreak += 1;
CurrentKillStreakTime = KillStreakTimer;
}
}
}