private void AddFx() { if (fx != null && !fx.Done) { fx.Close(); } var i = GetComponent <ItemComponent>().Item; Engine.Instance.State.Ui.Add(fx = new InteractFx(this, i == null ? Locale.Get("place_an_item") : i.Name)); }
public override void Update(float dt) { base.Update(dt); if (maanex == null) { var room = GetComponent <RoomComponent>().Room; foreach (var n in room.Tagged[Tags.Npc]) { if (n is Maanex2 m) { maanex = m; maanex.clawControll = this; break; } } } if (interacting == null || grabbing) { return; } var controller = GamepadComponent.Current; if (Input.WasPressed(Controls.UiSelect, controller)) { grabbing = true; ia.Close(); ib.Close(); ia = ib = null; GetComponent <InteractableComponent>().CurrentlyInteracting?.GetComponent <InteractorComponent>()?.EndInteraction(); claw.Grab((won, mega) => { interacting.AddComponent(new PlayerInputComponent()); interacting = null; grabbing = false; if (won) { maanex.GetComponent <DialogComponent>().StartAndClose(Locale.Get(mega ? "m2_0" : "m2_1"), 2); } else { maanex.GetComponent <DialogComponent>().StartAndClose("F", 2); } ((InGameState)Engine.Instance.State).ResetFollowing(); }); return; } var body = claw.GetComponent <SensorBodyComponent>().Body; var speed = 420 * dt; var wdown = wasDown; if (Input.IsDown(Controls.Right, controller) || Input.IsDown(Controls.UiRight, controller)) { wasDown = true; body.LinearVelocity += new Vector2(speed, 0); } else { wasDown = false; } if (wdown != wasDown) { if (wasDown) { Audio.PlaySfx("level_claw_start"); } else { Audio.PlaySfx("level_claw_stop"); } } if (claw.X > claw.start.X + 96) { claw.X = claw.start.X + 96; } }