Exemplo n.º 1
0
    // ====================================================================================================== //
    private void leftClickCheck()
    {
        if (!Input.GetMouseButtonDown(0))
        {
            return;
        }

        // select unselect pocket with item in it
        if (State == MouseState.CAN_SELECT_OR_UNSELECT_SOCKET)
        {
            bool isItemAlreadySelected = (Party.Instance.SelectedMember.SelectedPocketItem == ItemInPocketUnderMouse);
            Party.Instance.SelectedMember.SelectedPocketItem = isItemAlreadySelected ? null : ItemInPocketUnderMouse;
            return; // should return to prevent losing the selection of the selected item
        }
        // melee attack
        if (State == MouseState.CAN_MELEE_HIT)
        {
            Party.Instance.SelectedMember.MeleeAttack(CreatureUnderMouse);
        }
        // ranged attack
        if (State == MouseState.CAN_RANGED_HIT)
        {
            Party.Instance.SelectedMember.RangedAttack(CreatureUnderMouse);
        }
        // walk
        if (State == MouseState.CAN_WALK || State == MouseState.CAN_WALK_NORTH || State == MouseState.CAN_WALK_SOUTH ||
            State == MouseState.CAN_WALK_WEST || State == MouseState.CAN_WALK_EAST || State == MouseState.CAN_PICKUP ||
            State == MouseState.CAN_USE_STAIRS || State == MouseState.CAN_WALK_VILLAGE || State == MouseState.CAN_WALK_TO_KILL)
        {
            DungeonTurnManager.Instance.PartyTargetPosition = DungeonTileUnderMouse.Position;
        }
        // potion drink
        if (State == MouseState.CAN_DRINK)
        {
            Party.Instance.SelectedMember.ConsumeItemFromPocket(ItemInPocketUnderMouse);
        }
        // activate scroll from pocket (when no need for target)
        if (State == MouseState.CAN_CAST_FROM_POCKET)
        {
            (ItemInPocketUnderMouse as Scroll).Activate();
        }

        Scroll selectedScroll = (Party.Instance.SelectedMember.SelectedPocketItem as Scroll);

        // activate scroll on dungeon tile
        if (State == MouseState.CAN_CAST_ON_DUNGEON_TILE)
        {
            selectedScroll.TargetDungeonTile = DungeonTileUnderMouse;
            selectedScroll.Activate();
        }
        // activate scroll on creature
        if (State == MouseState.CAN_CAST_ON_CREATURE)
        {
            selectedScroll.TargetDungeonTile = DungeonTileUnderMouse;
            selectedScroll.TargetCreature    = CreatureUnderMouse;
            selectedScroll.Activate();
        }
        // activate scroll on party member
        if (State == MouseState.CAN_CAST_ON_PORTRAIT)
        {
            selectedScroll.TargetCreature = PortraitUnderMouse.Creature;
            selectedScroll.Activate();
        }

        // throw ammo
        if (State == MouseState.CAN_THROW)
        {
            GameObject projectilePrefab = Party.Instance.SelectedMember.SelectedPocketItem.Projectile;
            ProjectileManager.Instance.ShootProjectile(projectilePrefab,
                                                       Party.Instance.transform.position, CreatureUnderMouse, 1, 6); // TODO: define throwing ammo damage
        }

        // no matter what, after click - lose the selection
        Party.Instance.SelectedMember.SelectedPocketItem = null;
    }