private static void ReallyUnlock(string id, Achievement a) { a.Unlocked = true; a.CompletionDate = DateTime.Now.ToString("dd/MM/yyy"); GlobalSave.Put($"ach_{a.Id}", true); GlobalSave.Put($"ach_{a.Id}_date", a.CompletionDate); Log.Info($"Achievement {id} was complete on {a.CompletionDate}!"); var e = new Achievement.UnlockedEvent { Achievement = a }; Engine.Instance?.State?.Area?.EventListener?.Handle(e); Engine.Instance?.State?.Ui?.EventListener?.Handle(e); if (!string.IsNullOrEmpty(a.Unlock)) { Items.Unlock(a.Unlock); } try { UnlockedCallback?.Invoke(id); } catch (Exception ex) { Log.Error(ex); } if (!AchievementBuffer.Contains(id)) { AchievementBuffer.Add(id); } var area = Engine.Instance?.State?.Area; if (area != null) { var player = LocalPlayer.Locate(area); if (player != null) { AnimationUtil.Confetti(player.Center); } } }
private void SpawnPets(List <Data> pets) { var ingame = (InGameState)Engine.Instance.State; var player = LocalPlayer.Locate(ingame.Area); for (var i = 0; i < pets.Count; i++) { var d = pets[i]; var p = new TwitchPet { Nick = d.Nick, Color = d.Color }; ingame.Area.Add(p); p.Center = player.Center + Rnd.Offset(24); AnimationUtil.Poof(p.Center, player.Depth + 1); AnimationUtil.Confetti(p.Center); } }
private bool CheckGrab() { var room = GetComponent <RoomComponent>().Room; var p = Position + new Vector2(0, 10); var min = 12f; RoundItem item = null; grabbed = null; foreach (var i in room.Tagged[Tags.Item]) { if (i is RoundItem r) { var d = r.DistanceTo(p); if (d < min) { min = d; item = r; } } } if (item != null) { grabbed = item; grabbed.Transparent = true; AnimationUtil.Poof(item.Center); AnimationUtil.Confetti(item.Center); Audio.PlaySfx("level_cleared"); return(true); } Audio.PlaySfx("item_nocash"); return(false); }