Package org.sudorunespan.actions

Source Code of org.sudorunespan.actions.Advertisement

package org.sudorunespan.actions;

import org.powerbot.concurrent.Task;
import org.powerbot.game.api.ActiveScript;
import org.powerbot.game.api.methods.Tabs;
import org.powerbot.game.api.methods.Widgets;
import org.powerbot.game.api.methods.input.Keyboard;
import org.powerbot.game.api.util.Time;
import org.powerbot.game.api.wrappers.widget.WidgetChild;
import org.sudorunespan.SudoRunespan;
import org.sudorunespan.misc.Methods;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* Created with IntelliJ IDEA.
* User: deprecated
* Date: 6/6/12
* Time: 12:28 AM
*/

public final class Advertisement implements Task {
    private final Pattern clanNamePattern = Pattern.compile("Owner: <col=ffff64>First");
    private final Object lock = new Object();
    private boolean loaded;

    public Advertisement(final ActiveScript ctx) {
        ctx.submit(this);
        loaded = false;
    }

    @Override
    public final void run() {
        if (SudoRunespan.isMembers() && customConfirmDialog()) {
            synchronized (Methods.mouseLock) {
                while (!loaded) {
                    if (!Tabs.getCurrent().equals(Tabs.FRIENDS_CHAT)) {
                        for (int i = 0; i < 10 && !Tabs.getCurrent().equals(Tabs.FRIENDS_CHAT); i++) {
                            Tabs.FRIENDS_CHAT.open();
                            Time.sleep(400);
                        }
                    } else {
                        if (Widgets.get(752).validate() && Widgets.get(752, 4).visible()) {
                            Keyboard.sendText("First", true);
                            Time.sleep(1000);
                        } else if (Widgets.get(1109, 27).validate() && Widgets.get(1109, 27).getTextureId() == 6243) {
                            final Matcher matcher = clanNamePattern.matcher(Widgets.get(1109, 1).getText());
                            if (matcher.find()) {
                                System.out.println(getNumUsers());

                                if (getNumUsers() > 80) {
                                    if (leaveFriendsChat()) {
                                        loaded = true;
                                    }
                                } else {
                                    loaded = true;
                                }
                            } else {
                                leaveFriendsChat();
                            }
                        } else if (Widgets.get(1109, 27).validate() && Widgets.get(1109, 27).getTextureId() == 6242) {
                            for (int i = 0; i < 10 && !Widgets.get(1109, 27).click(true); i++) {
                                Time.sleep(1000);
                            }
                        }

                        Time.sleep(1000);
                    }
                }
            }
        }
    }

    private boolean customConfirmDialog() {
        final JCheckBox box = createDialog();

        synchronized (lock) {
            try {
                lock.wait();
            } catch (final InterruptedException ignored) {
            }
        }

        return box.isSelected();
    }

    private JCheckBox createDialog() {
        final JFrame frame = new JFrame("Friends Chat Anti-ban") {
            @Override
            public void dispose() {
                super.dispose();
                synchronized (lock) {
                    lock.notifyAll();
                }
            }
        };
        frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

        final JPanel text = new JPanel();
        text.setLayout(new BoxLayout(text, BoxLayout.PAGE_AXIS));
        text.add(new JLabel("Would you like to participate in"));
        text.add(new JLabel("an advanced Friends Chat based"));
        text.add(new JLabel("Anti-ban?  Your player will join"));
        text.add(new JLabel("a dicing friends chat and idle"));
        text.add(new JLabel("like many legit players do."));
        text.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

        final JCheckBox checkBox = new JCheckBox("Yes, better Anti-ban!");
        checkBox.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (checkBox.isSelected()) {
                    checkBox.setText("Yes, better Anti-ban!");
                } else {
                    checkBox.setText("No, maybe next time.");
                }
            }
        });
        checkBox.setSelected(true);

        final JButton button = new JButton("OK");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                frame.dispose();
            }
        });

        final JPanel southPanel = new JPanel();
        southPanel.add(checkBox);
        southPanel.add(button);

        frame.add(text, BorderLayout.CENTER);
        frame.add(southPanel, BorderLayout.SOUTH);
        frame.pack();

        frame.addWindowListener(new WindowListener() {
            @Override
            public void windowOpened(WindowEvent e) {}

            @Override
            public void windowClosing(WindowEvent e) {
                checkBox.setSelected(false);
                frame.dispose();
            }

            @Override
            public void windowClosed(WindowEvent e) {}

            @Override
            public void windowIconified(WindowEvent e) {}

            @Override
            public void windowDeiconified(WindowEvent e) {}

            @Override
            public void windowActivated(WindowEvent e) {}

            @Override
            public void windowDeactivated(WindowEvent e) {}
        });

        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
        frame.setResizable(false);

        return checkBox;
    }

    public final void loadWorldData() {
        synchronized (Methods.mouseLock) {
            for (int i = 0; i < 10 && !Tabs.getCurrent().equals(Tabs.FRIENDS); i++) {
                Tabs.FRIENDS.open();
                Time.sleep(200);
            }
        }

        SudoRunespan.setWorld(Methods.getCurrentWorld());
    }

    private int getNumUsers() {
        WidgetChild user = Widgets.get(1109).getChild(5);
        return user.getChildren().length;
    }

    private static boolean leaveFriendsChat() {
        int i;
        for (i = 0; i < 10 && !Widgets.get(1109, 27).click(true); i++) {
            Time.sleep(1000);
        }
        return i != 10;
    }
}
TOP

Related Classes of org.sudorunespan.actions.Advertisement

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.