class StarWarsDestiny():
    def __init__(self, bot):
        self.bot = bot

    def destinyNew(self, num : int):
        self.bot.log("Creating a new destiny pool with "+str(num)+" players")
        roll, diceResults = self.bot.star_wars.roll.roll(0,0,0,0,0,0,num)
        roll = "".join(sorted(roll))

        with open("gwendolyn/resources/star_wars/destinyPoints.txt","wt") as f:
            f.write(roll)

        return "Rolled for Destiny Points and got:\n"+self.bot.star_wars.roll.diceResultToEmoji(diceResults)+"\n"+self.bot.star_wars.roll.resultToEmoji(roll)

    def destinyUse(self, user : str):
        with open("gwendolyn/resources/star_wars/destinyPoints.txt","rt") as f:
            points = f.read()

        if user == "Nikolaj":
            self.bot.log("Trying to use a dark side destiny point")
            if 'B' in points:
                points = points.replace("B","L",1)
                points = "".join(sorted(points))
                with open("gwendolyn/resources/star_wars/destinyPoints.txt","wt") as f:
                    f.write(points)
                self.bot.log("Did it")
                return "Used a dark side destiny point. Destiny pool is now:\n"+self.bot.star_wars.roll.resultToEmoji(points)
            else:
                self.bot.log("There were no dark side destiny points")
                return "No dark side destiny points"
        else:
            self.bot.log("Trying to use a light side destiny point")
            if 'L' in points:
                points = points.replace("L","B",1)
                points = "".join(sorted(points))
                with open("gwendolyn/resources/star_wars/destinyPoints.txt","wt") as f:
                    f.write(points)
                self.bot.log("Did it")
                return "Used a light side destiny point. Destiny pool is now:\n"+self.bot.star_wars.roll.resultToEmoji(points)
            else:
                self.bot.log("There were no dark side destiny points")
                return "No light side destiny points"

    async def parseDestiny(self, ctx, cmd : str):
        user = f"#{ctx.author.id}"
        if cmd != "":
            while cmd[0] == ' ':
                cmd = cmd[1:]
                if cmd == "":
                    break

        if cmd == "":
            self.bot.log("Retrieving destiny pool info")
            with open("gwendolyn/resources/star_wars/destinyPoints.txt","rt") as f:
                sendMessage = self.bot.star_wars.roll.resultToEmoji(f.read())
        else:
            commands = cmd.upper().split(" ")
            if commands[0] == "N":
                if len(commands) > 1:
                    sendMessage = self.destinyNew(int(commands[1]))
                else:
                    sendMessage = "You need to give an amount of players (error code 921)"
            elif commands[0] == "U":
                sendMessage = self.destinyUse(user)
            else:
                sendMessage = "I didn't quite understand that (error code 922)"

        messageList = sendMessage.split("\n")
        await ctx.send(messageList[0])
        if len(messageList) > 1:
            for messageItem in messageList[1:]:
                await ctx.channel.send(messageItem)
