CapersProject/Assets/02.Scripts/EventManager.cs

361 lines
12 KiB
C#
Raw Normal View History

using System;
using BlueWater.Items;
2024-10-22 12:41:31 +00:00
using BlueWater.Npcs.Crews.Bartender;
using BlueWater.Npcs.Crews.Cleaner;
using BlueWater.Npcs.Crews.Server;
2024-10-08 13:44:20 +00:00
using BlueWater.Npcs.Customers;
2024-09-12 07:53:16 +00:00
using UnityEngine;
namespace BlueWater
{
2024-09-12 07:53:16 +00:00
public static class EventManager
{
2024-09-12 07:53:16 +00:00
// Global events
#region Global events
2024-11-19 13:32:43 +00:00
public static Action OnChangedDisplay;
public static void InvokeChangedDisplay()
{
OnChangedDisplay?.Invoke();
}
2024-11-05 08:26:26 +00:00
2024-09-24 10:35:49 +00:00
// Ui
2024-10-10 09:32:18 +00:00
public static Action<float, float, Color?, float> OnFadeInOut;
public static void InvokeFadeInOut(float fadeInTime, float fadeOutTime, Color? fadeColor = null, float delayAfterFadeIn = 0f)
{
OnFadeInOut?.Invoke(fadeInTime, fadeOutTime, fadeColor, delayAfterFadeIn);
}
2024-09-24 10:35:49 +00:00
// Player
2024-10-10 09:32:18 +00:00
// 플레이어 최대체력 변경 이벤트
2024-10-10 05:44:37 +00:00
public static Action<int, int> OnMaxHealthChanged;
2024-10-10 09:32:18 +00:00
public static void InvokeMaxHealthChanged(int previousMaxHealthPoint, int changedMaxHealthPoint)
{
OnMaxHealthChanged?.Invoke(previousMaxHealthPoint, changedMaxHealthPoint);
}
// 플레이어 현재체력 변경 이벤트
2024-09-23 02:00:21 +00:00
public static Action<int> OnHealthChanged;
2024-10-10 09:32:18 +00:00
public static void InvokeHealthChanged(int changedHealthPoint)
{
OnHealthChanged?.Invoke(changedHealthPoint);
}
// 플레이어 죽을 때 이벤트
2024-09-23 02:00:21 +00:00
public static Action OnDead;
2024-10-10 09:32:18 +00:00
public static void InvokeDead()
{
OnDead?.Invoke();
}
2024-09-24 10:35:49 +00:00
2024-11-15 07:28:13 +00:00
// 결과창 출력 이벤트
public static Action OnShowResult;
public static void InvokeShowResult()
{
OnShowResult?.Invoke();
}
2024-09-24 10:35:49 +00:00
// 상호작용
2024-10-10 09:32:18 +00:00
// 상호작용 Ui 활성화
2024-09-24 10:35:49 +00:00
public static Action<string> OnShowInteractionUi;
2024-10-10 09:32:18 +00:00
public static void InvokeShowInteractionUi(string interactionMessage)
{
OnShowInteractionUi?.Invoke(interactionMessage);
}
// 상호작용 Ui 비활성화
2024-09-24 10:35:49 +00:00
public static Action OnHideInteractionUi;
2024-10-10 09:32:18 +00:00
public static void InvokeHideInteractionUi()
{
OnHideInteractionUi?.Invoke();
}
2024-10-24 08:05:32 +00:00
// 플레이어 홀딩 상호작용중 이벤트
public static Action<float> OnHoldInteracting;
public static void InvokeHoldInteracting(float value)
{
OnHoldInteracting?.Invoke(value);
}
2024-09-12 07:53:16 +00:00
#endregion
// Tycoon events
#region Tycoon events
2024-10-10 09:32:18 +00:00
// 타이쿤 시작 이벤트
public static Action OnTycoonGameStarted;
public static void InvokeTycoonGameStarted()
{
OnTycoonGameStarted?.Invoke();
}
// 타이쿤 종료 이벤트 (OnDead 이벤트로 대체중)
public static Action OnTycoonGameOvered;
public static void InvokeTycoonGameOvered()
{
OnTycoonGameOvered?.Invoke();
}
// 플레이어
2024-11-26 08:22:26 +00:00
// 대쉬 쿨타임 이벤트
2024-11-19 06:03:43 +00:00
public static Action<float> OnDashCooldown;
public static void InvokeDashCooldown(float cooldown)
{
OnDashCooldown?.Invoke(cooldown);
}
2024-10-10 09:32:18 +00:00
// 레벨업 이벤트
public static Action<LevelData> OnLevelUp;
2024-10-10 09:32:18 +00:00
public static void InvokeLevelUp(LevelData levelData)
{
OnLevelUp?.Invoke(levelData);
}
// 경험치 변경 이벤트
2024-10-20 17:21:39 +00:00
public static Action<int> OnChangeExp;
public static void InvokeChangeExp(int addedExp)
2024-10-10 09:32:18 +00:00
{
2024-10-20 17:21:39 +00:00
OnChangeExp?.Invoke(addedExp);
2024-10-10 09:32:18 +00:00
}
2024-10-10 09:32:18 +00:00
// 골드 변경 이벤트
2024-11-15 07:28:13 +00:00
public static Action<int, bool> OnAddedGold;
public static void InvokeAddedGold(int addedGold, bool isTip)
2024-10-10 09:32:18 +00:00
{
2024-11-15 07:28:13 +00:00
OnAddedGold?.Invoke(addedGold, isTip);
2024-10-10 09:32:18 +00:00
}
2024-09-23 02:00:21 +00:00
2024-10-10 09:32:18 +00:00
// 플레이어 칵테일 제조 시작 이벤트
2024-10-29 12:17:00 +00:00
public static Action OnMakeCocktailStarted;
2024-10-10 09:32:18 +00:00
public static void InvokeCocktailStarted()
{
2024-10-29 12:17:00 +00:00
OnMakeCocktailStarted?.Invoke();
2024-10-10 09:32:18 +00:00
}
2024-10-29 12:17:00 +00:00
// 칵테일 제조 완성 이벤트 (bool값은 player가 만들었으면 true, crew가 만들었으면 false)
public static Action<CocktailData, bool> OnMakeCocktailCompleted;
public static void InvokeCocktailCompleted(CocktailData completedCocktail, bool isMadePlayer)
2024-10-10 09:32:18 +00:00
{
2024-10-29 12:17:00 +00:00
OnMakeCocktailCompleted?.Invoke(completedCocktail, isMadePlayer);
2024-10-10 09:32:18 +00:00
}
// 플레이어가 들고있는 칵테일 버리기 이벤트
2024-10-29 12:17:00 +00:00
public static Action<CocktailData, bool> OnCocktailDiscarded;
public static void InvokeCocktailDiscarded(CocktailData cocktailData, bool isDiscardedPlayer)
2024-10-10 09:32:18 +00:00
{
2024-10-29 12:17:00 +00:00
OnCocktailDiscarded?.Invoke(cocktailData, isDiscardedPlayer);
2024-10-10 09:32:18 +00:00
}
2024-11-26 08:22:26 +00:00
// 플레이어가 칵테일을 드는 이벤트
public static Action<CocktailData> OnPickupCocktail;
public static void InvokePickupCocktail(CocktailData cocktailData)
{
OnPickupCocktail?.Invoke(cocktailData);
}
2024-09-10 10:25:05 +00:00
2024-10-10 09:32:18 +00:00
// 플레이어가 들고있는 칵테일을 서빙테이블에 올려두는 이벤트
2024-09-23 02:00:21 +00:00
public static Action OnPlaceOnServingTable;
2024-10-10 09:32:18 +00:00
public static void InvokePlaceOnServingTable()
{
OnPlaceOnServingTable?.Invoke();
}
2024-11-26 08:22:26 +00:00
// 플레이어가 들고 있는 아이템 정보가 바뀌는 경우
public static Action<string> OnChangedPickupItem;
public static void InvokeChangedPickupItem(string idx)
{
OnChangedPickupItem?.Invoke(idx);
}
2024-10-10 09:32:18 +00:00
// Npc
// 손님 생성 이벤트
public static Action OnCreateCustomer;
public static void InvokeCreateCustomer()
{
OnCreateCustomer?.Invoke();
}
2024-11-07 09:13:54 +00:00
// 손님 파괴 이벤트
2024-10-15 18:01:16 +00:00
public static Action<Customer> OnDestroyCustomer;
public static void InvokeDestroyCustomer(Customer customer)
{
OnDestroyCustomer?.Invoke(customer);
}
2024-11-07 09:13:54 +00:00
// 손님 전체 정화 이벤트
public static Action OnPurifiedCustomerAll;
public static void InvokePurifiedCustomerAll()
{
OnPurifiedCustomerAll?.Invoke();
}
2024-10-10 09:32:18 +00:00
// 손님이 칵테일 주문 이벤트
public static Action<Customer> OnOrderedCocktail;
public static void InvokeOrderedCocktail(Customer orderedCustomer)
{
OnOrderedCocktail?.Invoke(orderedCustomer);
}
// 손님이 칵테일을 받을때 이벤트
2024-10-29 12:17:00 +00:00
public static Action<CocktailData, bool> OnCocktailServedToCustomer;
public static void InvokeCocktailServedToCustomer(CocktailData servedCocktailData, bool isServedPlayer)
2024-10-10 09:32:18 +00:00
{
2024-10-29 12:17:00 +00:00
OnCocktailServedToCustomer?.Invoke(servedCocktailData, isServedPlayer);
2024-10-10 09:32:18 +00:00
}
// 손님이 칵테일을 받을때 결과 이벤트
public static Action<Customer, bool> OnOrderResult;
2024-11-15 07:28:13 +00:00
public static void InvokeOrderResult(Customer orderedCustomer, bool orderedCorrected)
2024-10-10 09:32:18 +00:00
{
2024-11-15 07:28:13 +00:00
OnOrderResult?.Invoke(orderedCustomer, orderedCorrected);
}
2024-12-03 06:08:15 +00:00
// 손님에게 서빙을 하지 못했을 때 이벤트
public static Action<bool> OnSucceedServing;
public static void InvokeSucceedServing(bool isSucceed)
{
OnSucceedServing?.Invoke(isSucceed);
}
2024-11-15 07:28:13 +00:00
// 손님에게 서빙을 하지 못했을 때 이벤트
public static Action OnMissedServing;
public static void InvokeMissedServing()
{
OnMissedServing?.Invoke();
2024-10-10 09:32:18 +00:00
}
2024-10-28 04:52:11 +00:00
// 손님의 기다림 게이지를 초기화 시키는 이벤트
public static Action OnGaugeResetCustomers;
public static void InvokeGaugeResetCustomers()
{
OnGaugeResetCustomers?.Invoke();
}
2024-11-28 23:07:50 +00:00
// 손님이 퇴장하기 전에 스킨을 확인하는 이벤트
public static Action<int> OnCheckedSkin;
public static void InvokeCheckedSkin(int skinIndex)
{
OnCheckedSkin?.Invoke(skinIndex);
}
2024-10-14 11:13:08 +00:00
// Crews
public static Func<CleanerCrew> OnCreateCleanerCrew;
public static void InvokeCreateCleanerCrew()
{
OnCreateCleanerCrew?.Invoke();
}
2024-10-15 18:01:16 +00:00
public static Func<ServerCrew> OnCreateServerCrew;
public static void InvokeCreateServerCrew()
2024-10-14 11:13:08 +00:00
{
2024-10-15 18:01:16 +00:00
OnCreateServerCrew?.Invoke();
2024-10-14 11:13:08 +00:00
}
public static Func<BartenderCrew> OnCreateBartenderCrew;
public static void InvokeCreateBartenderCrew()
{
OnCreateBartenderCrew?.Invoke();
}
2024-11-07 09:13:54 +00:00
2024-11-11 02:02:24 +00:00
// 인게임 UI 최신화 이벤트
2024-11-07 09:13:54 +00:00
public static Action<int, int, int> OnUpdateCrewUi;
public static void InvokeUpdateCrewUi(int bartenderCount, int serverCount, int cleanerCount)
{
OnUpdateCrewUi?.Invoke(bartenderCount, serverCount, cleanerCount);
}
2024-11-11 02:02:24 +00:00
// 패시브 카드 (청소 보너스)로 바텐더 제작 속도 증가 이벤트
public static Action<int, float> OnCleaningBonus;
public static void InvokeCleaningBonus(int feverTime, float multiply)
{
OnCleaningBonus?.Invoke(feverTime, multiply);
}
2024-10-28 04:52:11 +00:00
// Props
// 레스토랑을 전부 청소 이벤트
public static Action OnCleaningAll;
public static void InvokeCleaningAll()
{
OnCleaningAll?.Invoke();
}
2024-10-28 05:09:06 +00:00
// 모든 배럴의 게이지 추가
public static Action<int> OnAddBarrels;
public static void InvokeAddBarrels(int addedValue)
{
OnAddBarrels?.Invoke(addedValue);
}
2024-11-05 12:27:46 +00:00
// 배럴의 자동화
public static Action OnAutoSupplyBarrels;
public static void InvokeAutoSupplyBarrels()
{
OnAutoSupplyBarrels?.Invoke();
}
2024-11-15 07:28:13 +00:00
// 테이블, 구토 청소 실패 이벤트
public static Action<bool> OnCleaningResult;
public static void InvokeCleaningResult(bool isSucceed)
{
OnCleaningResult?.Invoke(isSucceed);
}
2024-12-03 06:08:15 +00:00
// 구토 생성 이벤트
public static Action<Vector3> OnCreateVomiting;
public static void InvokeCreateVomiting(Vector3 spawnPosition)
{
OnCreateVomiting?.Invoke(spawnPosition);
}
2024-09-12 07:53:16 +00:00
2024-11-07 12:20:24 +00:00
// 버섯 생성 이벤트
public static Action OnCreateMushroom;
public static void InvokeCreateMushroom()
{
OnCreateMushroom?.Invoke();
}
// 곰팡이 생성 이벤트
public static Action OnCreateMold;
public static void InvokeCreateMold()
{
OnCreateMold?.Invoke();
}
2024-11-11 02:02:24 +00:00
// 계산대 골드 자동 회수 이벤트
public static Action<int> OnGainAutoMoneyCounter;
public static void InvokeGainAutoMoneyCounter(int gainWaitTime)
{
OnGainAutoMoneyCounter?.Invoke(gainWaitTime);
}
// 휴지통이 랜덤한 칵테일로 변하는 패시브 카드 이벤트
public static Action<CocktailData> OnChangedRandomCocktail;
public static void InvokeChangedRandomCocktail(CocktailData changedCocktailData)
{
OnChangedRandomCocktail?.Invoke(changedCocktailData);
}
2024-11-11 12:23:27 +00:00
// 휴지통이 랜덤 박스로 변하는 이벤트
public static Action OnChangedRandomBox;
public static void InvokeChangedRandomBox()
{
OnChangedRandomBox?.Invoke();
}
2024-11-07 12:20:24 +00:00
2024-11-11 09:51:12 +00:00
// 일반 보물상자 오픈 이벤트
public static Action OnOpenedNormalRewardBox;
public static void InvokeOpenedNormalRewardBox()
{
OnOpenedNormalRewardBox?.Invoke();
}
// 레어 보물상자 오픈 이벤트
public static Action OnOpenedRareRewardBox;
public static void InvokeOpenedRareRewardBox()
{
OnOpenedRareRewardBox?.Invoke();
}
2024-09-12 07:53:16 +00:00
#endregion
}
}