Initial Commit
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
using Easter2025.Components;
|
||||
using Easter2025.Utilies;
|
||||
using Kitchen;
|
||||
using KitchenMods;
|
||||
using Unity.Collections;
|
||||
using Unity.Entities;
|
||||
|
||||
namespace Easter2025.Systems.Achievements
|
||||
{
|
||||
public class Serve3Eggs : RestaurantSystem, IModSystem
|
||||
{
|
||||
private EntityQuery _WaitingForItems;
|
||||
private EntityQuery _Trackers;
|
||||
|
||||
protected override void Initialise()
|
||||
{
|
||||
base.Initialise();
|
||||
_WaitingForItems = GetEntityQuery(new QueryHelper().All(typeof(CWaitingForItem)));
|
||||
_Trackers = GetEntityQuery(new QueryHelper().All(typeof(CServeThreeCoursesTracker)).None(typeof(CCompletedAchievementEntity)));
|
||||
}
|
||||
|
||||
protected override void OnUpdate()
|
||||
{
|
||||
using (NativeArray<Entity> WaitingForItems = _WaitingForItems.ToEntityArray(Allocator.Temp))
|
||||
{
|
||||
foreach (Entity WaitingForItem in WaitingForItems)
|
||||
{
|
||||
if (!RequireBuffer(WaitingForItem, out DynamicBuffer<CWaitingForItem> cWaitingForItemBuffer)) continue;
|
||||
if (!RequireBuffer(WaitingForItem, out DynamicBuffer<CGroupMember> cGroupMemberBuffer)) continue;
|
||||
foreach (var cWaitingForItem in cWaitingForItemBuffer)
|
||||
{
|
||||
if (cWaitingForItem.Satisfied)
|
||||
{
|
||||
CGroupMember member = cGroupMemberBuffer[cWaitingForItem.MemberIndex];
|
||||
if (cWaitingForItem.ItemID == GDOReferences.PinkPlasticEgg.ID || cWaitingForItem.ItemID == GDOReferences.YellowPlasticEgg.ID || cWaitingForItem.ItemID == GDOReferences.OrangePlasticEgg.ID)
|
||||
{
|
||||
SetStarterComplete(member.Customer);
|
||||
}
|
||||
else if (cWaitingForItem.ItemID == GDOReferences.RedEgg.ID || cWaitingForItem.ItemID == GDOReferences.GreenEgg.ID || cWaitingForItem.ItemID == GDOReferences.BlueEgg.ID)
|
||||
{
|
||||
SetMainComplete(member.Customer);
|
||||
}
|
||||
else if (cWaitingForItem.ItemID == GDOReferences.WrappedCremeEgg.ID)
|
||||
{
|
||||
SetDessertComplete(member.Customer);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
using (NativeArray<Entity> Trackers = _Trackers.ToEntityArray(Allocator.Temp))
|
||||
{
|
||||
foreach (Entity Tracker in Trackers)
|
||||
{
|
||||
if (Require(Tracker, out CServeThreeCoursesTracker cServeThreeCoursesTracker))
|
||||
{
|
||||
if (cServeThreeCoursesTracker.HasHadEggStarter && cServeThreeCoursesTracker.HasHadEggMain && cServeThreeCoursesTracker.HasHadEggDessert)
|
||||
{
|
||||
Set<CCompletedAchievementEntity>(Tracker);
|
||||
Mod.achievementsManager.UnlockAchievement(Mod.ACHIEVEMENT_SERVE_THREE_COURSE_EGGS);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetStarterComplete(Entity customer)
|
||||
{
|
||||
EnsureTracker(customer);
|
||||
if (Require(customer, out CServeThreeCoursesTracker cServeThreeCoursesTracker))
|
||||
{
|
||||
cServeThreeCoursesTracker.HasHadEggStarter = true;
|
||||
Set(customer, cServeThreeCoursesTracker);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetMainComplete(Entity customer)
|
||||
{
|
||||
EnsureTracker(customer);
|
||||
if (Require(customer, out CServeThreeCoursesTracker cServeThreeCoursesTracker))
|
||||
{
|
||||
cServeThreeCoursesTracker.HasHadEggMain = true;
|
||||
Set(customer, cServeThreeCoursesTracker);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetDessertComplete(Entity customer)
|
||||
{
|
||||
EnsureTracker(customer);
|
||||
if (Require(customer, out CServeThreeCoursesTracker cServeThreeCoursesTracker))
|
||||
{
|
||||
cServeThreeCoursesTracker.HasHadEggDessert = true;
|
||||
Set(customer, cServeThreeCoursesTracker);
|
||||
}
|
||||
}
|
||||
|
||||
private void EnsureTracker(Entity customer)
|
||||
{
|
||||
if (!Has<CServeThreeCoursesTracker>(customer))
|
||||
{
|
||||
Set<CServeThreeCoursesTracker>(customer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
using Easter2025.Components;
|
||||
using Easter2025.Utilies;
|
||||
using Kitchen;
|
||||
using KitchenMods;
|
||||
using Unity.Entities;
|
||||
|
||||
namespace Easter2025.Systems.Achievements
|
||||
{
|
||||
public class TriggerBunnyReward : DaySystem, IModSystem
|
||||
{
|
||||
private readonly int REWARD_AMOUNT = 250;
|
||||
|
||||
private EntityQuery _OrangeOrbs;
|
||||
protected override void Initialise()
|
||||
{
|
||||
base.Initialise();
|
||||
_OrangeOrbs = GetEntityQuery(new QueryHelper().All(typeof(CHasOrangeOrbs)));
|
||||
}
|
||||
|
||||
protected override void OnUpdate()
|
||||
{
|
||||
if (HasSingleton<SHasTriggeredBunnies>()) return;
|
||||
if (_OrangeOrbs.IsEmpty) return;
|
||||
|
||||
if (HasSingleton<CSetting>())
|
||||
{
|
||||
CSetting setting = GetSingleton<CSetting>();
|
||||
if (setting.RestaurantSetting != GDOReferences.Easter2025Setting.ID && setting.RestaurantSetting != GDOReferences.Easter2025GardenSetting.ID) return;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SpawnBunny(1, Mod.RED_BUNNY_VIEW);
|
||||
SpawnBunny(3, Mod.GREEN_BUNNY_VIEW);
|
||||
SpawnBunny(5 , Mod.BLUE_BUNNY_VIEW);
|
||||
|
||||
Entity e = EntityManager.CreateEntity(typeof(CMoneyTrackEvent));
|
||||
EntityManager.SetComponentData(e, new CMoneyTrackEvent
|
||||
{
|
||||
Identifier = GDOReferences.GenerousBunnies.ID,
|
||||
Amount = REWARD_AMOUNT
|
||||
});
|
||||
|
||||
if (HasSingleton<SMoney>())
|
||||
{
|
||||
SMoney money = GetSingleton<SMoney>();
|
||||
money.Amount += REWARD_AMOUNT;
|
||||
SetSingleton(money);
|
||||
}
|
||||
Mod.achievementsManager.UnlockAchievement(Mod.ACHIEVEMENT_TRIGGER_BUNNIES);
|
||||
|
||||
EntityManager.CreateEntity(typeof(SHasTriggeredBunnies));
|
||||
}
|
||||
|
||||
private void SpawnBunny(int position, ViewType viewType)
|
||||
{
|
||||
Entity entity = EntityManager.CreateEntity(typeof(CPosition), typeof(CRequiresView), typeof(CEventBunny));
|
||||
Set(entity, new CPosition(-0.5f, 0, position));
|
||||
Set(entity, new CRequiresView
|
||||
{
|
||||
Type = viewType,
|
||||
ViewMode = ViewMode.World
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user