com.kbot2.scriptable.methods.wrappers.Interface.java Source code

Java tutorial

Introduction

Here is the source code for com.kbot2.scriptable.methods.wrappers.Interface.java

Source

/*   
   Copyright 2012 Jan Ove Saltvedt
       
   This file is part of KBot.
    
KBot is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
    
KBot is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
    
You should have received a copy of the GNU General Public License
along with KBot.  If not, see <http://www.gnu.org/licenses/>.
       
*/

/*
 * Copyright  2010 Jan Ove Saltvedt.
 * All rights reserved.
 */

package com.kbot2.scriptable.methods.wrappers;

import com.kbot2.bot.BotEnvironment;
import com.kbotpro.scriptsystem.wrappers.IComponent;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

import java.awt.*;
import java.util.*;

import static com.kbot2.scriptable.methods.Calculations.random;

/**
 * Created by IntelliJ IDEA.
 * User: Jan Ove Saltvedt
 * Date: Jan 15, 2010
 * Time: 3:29:26 PM
 * To change this template use File | Settings | File Templates.
 */
public class Interface extends Wrapper {
    private IComponent inter;
    private Interface parrentInterface;
    private InterfaceGroup parrentInterfaceGroup;
    private int index;

    public Interface(BotEnvironment botEnv, IComponent iComponent, Interface parrentInterface,
            InterfaceGroup parrentInterfaceGroup) {
        super(botEnv);
        this.inter = iComponent;
        this.parrentInterface = parrentInterface;
        this.parrentInterfaceGroup = parrentInterfaceGroup;
    }

    /**
     * Gets a child interface.
     *
     * @param childID
     * @return may return null if interface does not exist.
     */
    public Interface getChild(int childID) {
        IComponent[] children = inter.getChildren();
        if (children == null)
            return null;
        if (childID < 0 || childID >= children.length)
            return null;
        return new Interface(botEnv, children[childID], this, parrentInterfaceGroup);
    }

    public int[] getItemIDArray() {
        Item[] items = getItems();
        int[] out = new int[items.length];
        for (int i = 0; i < items.length; i++) {
            out[i] = items[i].getID();
        }

        return out;
    }

    public int[] getItemStackSizeArray() {
        Item[] items = getItems();
        int[] out = new int[items.length];
        for (int i = 0; i < items.length; i++) {
            out[i] = items[i].getStackSize();
        }

        return out;
    }

    public Item[] getItems() {
        com.kbotpro.scriptsystem.wrappers.Item[] items = botEnv.proBotEnvironment.inventory.getItems();
        Item[] out = new Item[items.length];
        for (int i = 0; i < items.length; i++) {
            out[i] = new ExtendedItem(items[i]);
        }
        return out;
    }

    public boolean hasParrent() {
        return parrentInterface != null;
    }

    public Interface getParrent() {
        return parrentInterface;
    }

    public int getX() {
        return inter.getRelativeX();
    }

    public int getY() {
        return inter.getRelativeY();
    }

    public int getMasterX() {
        return inter.getAbsoluteX() - inter.getRelativeX();
    }

    public int getMasterY() {
        return inter.getAbsoluteY() - inter.getRelativeY();
    }

    public int getAbsoluteX() {
        return inter.getAbsoluteX();
    }

    public int getAbsoluteY() {
        return inter.getAbsoluteY();
    }

    public int getHeight() {
        return inter.getHeight();
    }

    public int getWidth() {
        return inter.getWidth();
    }

    public Rectangle getArea() {
        return new Rectangle(getAbsoluteX(), getAbsoluteY(), getWidth(), getHeight());
    }

    public Point getCenter() {
        Rectangle area = getArea();
        return new Point((int) area.getCenterX(), (int) area.getCenterY());
    }

    /**
         * Hack for interface debugger.
         *
         * @param index
         */
    public void setIndex(int index) {
        this.index = index;
    }

    /**
     * Hack for interface debugger.
     *
     * @return
     */
    public String toString() {
        return "" + index;
    }

    public Interface[] getChildren() {
        if (inter != null) {
            java.util.List<Interface> out = new LinkedList<Interface>();
            IComponent[] interfaces = inter.getChildren();
            if (interfaces == null)
                return null;
            for (IComponent child : interfaces) {
                if (child == null)
                    continue;
                out.add(new Interface(botEnv, child, this, parrentInterfaceGroup));
            }
            return out.toArray(new Interface[1]);
        }
        return null;
    }

    public int getContainedItemID() {
        return inter.getElementID();
    }

    public int getContainedItemStackSize() {
        return inter.getElementStackSize();
    }

    public String getContainedItemName() {
        return inter.getElementName();
    }

    public String[] getActions() {
        return inter.getActions();
    }

    public String getText() {
        return inter.getText();
    }

    public int getTextColor() {
        return inter.getTextColor();
    }

    public int getTextureID() {
        return inter.getTextureID();
    }

    public int getHorizontalScrollBarSize() {
        return -1;
    }

    public int getHorizontalScrollBarThumbPosition() {
        return -1;
    }

    public int getHorizontalScrollBarThumbSize() {
        return -1;
    }

    public int getVerticalScrollBarSize() {
        return -1;
    }

    public int getVerticalScrollBarThumbPosition() {
        return -1;
    }

    public int getVerticalScrollBarThumbSize() {
        return -1;
    }

    public boolean textContains(String text) {
        String s = getText();
        return s != null && s.contains(text);
    }

    public boolean textContainsIgnoreCase(String text) {
        String s = getText();
        return s != null && s.toLowerCase().contains(text.toLowerCase());
    }

    public Point getRandomPointInside() {
        Rectangle rect = getArea();
        int randomX = random(rect.x, rect.x + rect.width);
        int randomY = random(rect.y, rect.y + rect.height);
        return new Point(randomX, randomY);
    }

    /**
     * Gets the model id of the interface.
     * @return -1 if null.
     */
    public int getModelID() {
        return inter.getModelID();
    }

    /**
     * Gets the model type of the interface
     * @return -1 if null
     */
    public int getModelType() {
        return inter.getModelType();
    }

    public void doClick() {

        Rectangle rect = getArea();
        final Point mousePos = getMethods().getMousePos();
        if (rect.contains(mousePos)) {
            int random = random(0, 5);
            if (random < 4) {
                botEnv.mouse.clickMouse(true);
                return;
            } else if (random == 4) {
                Point ranPoint = new Point(mousePos.x + random(-5, 5), mousePos.y + random(-5, 5));
                if (rect.contains(ranPoint)) {
                    botEnv.methods.clickMouse(ranPoint, true);
                    return;
                }
            }
        }
        int randomX = random(rect.x, rect.x + rect.width);
        int randomY = random(rect.y, rect.y + rect.height);
        botEnv.methods.clickMouse(new Point(randomX, randomY), true);
    }

    public boolean doAction(String actionContains) {
        Rectangle rect = getArea();
        int randomX = random(rect.x, rect.x + rect.width);
        int randomY = random(rect.y, rect.y + rect.height);
        botEnv.methods.moveMouse(new Point(randomX, randomY));
        return botEnv.methods.atMenu(actionContains);
    }

    public boolean isValid() {
        return inter.isValid();
    }

    public String getReflectedFieldsString() {
        return ReflectionToStringBuilder.reflectionToString(inter, ToStringStyle.MULTI_LINE_STYLE, true);
    }

    public Point getScreenPos() {
        return new Point(getAbsoluteX(), getAbsoluteY());
    }

}