/// <reference path="../../Bodypart.ts" />
/// <reference path="../../Humanoid/Humanoid.ts" />
/// <reference path="../SexStick.ts" />
/// <reference path="../SexHole.ts" />
/// <reference path="../../../Measure.ts" />
class HumanoidButt extends Bodypart {
    public size : number = 0;
    public silicone : number = 0;

    public sorenessWeight = Bodypart.WEIGHT_MEDIUM;
    public genderWeight = Bodypart.WEIGHT_MEDIUM;
    public slots : Array<number> = [Humanoid.SLOT_BUTT];
    public sluttiness = Bodypart.SLUTTINESS_HIGH_SLUT;
    public sluttinessWeight = Bodypart.WEIGHT_MEDIUM;

    public getSluttiness () {
        return this.getSize() * 33;
    }

    public constructor (options? : ThingOptions) {
        super(options);
        this.addGetAlterations((thing) => {
            return {
                Size : this.size,
                Silicone : this.silicone
            }
        });

        this.addSetAlterations((thing, changes) => {
            this.size = changes.Size;
            this.silicone = changes.Silicone;
        });
    }

    public getSize () {
        return this.size + this.silicone;
    }

    public getSizeText () {
        return HumanoidButt.getSizeText(this.getSize());
    }

    public static getSizeText (size : number) {
        let names = ["flat", "tiny", "round", "plump"]; // TODO: finish this
        if (size >= names.length) {
            return "gargantuan";
        } else {
            return names[size];
        }
    }

    public getGenderValue () {
        return HumanoidBreasts.getGenderFromSize(this.getSize());
    }

    public static getGenderFromSize (size : number) {
        if (size <= 0) {
            return 20;
        } else if (size <= 2) {
            return 30 * size;
        } else {
            return 80;
        }
    }

    // TODO: REPLACE NUMBERS WITH TABLE
    public arrangeGenderValue (gv : number) {
        if (gv <= 20) {
            this.size = 0;
        } else if (gv <= 60) {
            this.size = 1;
        } else {
            this.size = 3;
        }
    }
}