Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
        }