spwn 0.0.6

A language for Geometry Dash triggers
Documentation
extract obj_props;

type @binaryCalculator;

impl @binaryCalculator {

    new: (bits: @number, x: @number, y: @number) {
        let bitCounters = [];

        for i in ..bits {
            item = ?i;

            $.add(obj {
                OBJ_ID: 1615,
                X: x + i * 30,
                Y: y,
                ITEM: item,
                GROUPS: 999g
            });

            bitCounters.push(counter(item));
        }

        return {
            bitCounters: bitCounters,
            type: @binaryCalculator
        }
    },
    binaryToDecimal: (self, target: @counter) {
        target = 0;
        wait(1);

        for i in ..self.bitCounters.length {
            if self.bitCounters[self.bitCounters.length - 1 - i] as @bool {
                target += 2 ^ i;
            }
        }
    },
    decimalToBinary: (self, source: @counter, calcSpeed: @number = 5) {
        let tempcounters = [];

        for i in ..self.bitCounters.length {
            tempcounters.push(counter());
        }

        source.copy_to(tempcounters, speed = 10);

        for i in ..self.bitCounters.length {
            -> () {
                tempcounters[i].divide(2 ^ i, speed = calcSpeed);
                tempcounters[i].divide(2, remainder = self.bitCounters[self.bitCounters.length - 1 - i], speed = calcSpeed);
            }();
        }
    },
    prettyDecimalToBinary: (self, source: @counter, calcSpeed: @number = 10) {
        for i in ..self.bitCounters.length {
            source.divide(2, remainder = self.bitCounters[self.bitCounters.length - 1 - i], speed = calcSpeed);
        }

        self.binaryToDecimal(source);
    }
}


c = @binaryCalculator::new(8, 300, 300)

num = counter(100)

wait(1)

c.decimalToBinary(num)