from big_ol_pile_of_manim_imports import *
from active_projects.eop.reusable_imports import *



class RandyIsSickOrNot(Scene):


    def construct(self):
        title = TextMobject("1 in 200")
        title.to_edge(UP)

        
        randy = SicklyPiCreature()
        randy.set_height(3)
        randy.move_to(2*LEFT)
        randy.change_mode("plain")
        randy.set_color(BLUE)
        randy.save_state()

        self.add(randy)

        p_sick = TexMobject("p(","\\text{sick}",") = 0.5\%").scale(1.7)
        p_sick.set_color_by_tex("sick", SICKLY_GREEN)
        p_sick.next_to(randy, UP, buff = LARGE_BUFF)
        self.add(p_sick)
        self.wait()
        
        self.play(
            ApplyMethod(randy.get_slightly_sick, rate_func = there_and_back)
        )
        self.play(Blink(randy))
        self.wait(2)

        self.play(
            ApplyMethod(randy.get_sick)
        )

        self.play(Blink(randy))
        self.wait()

        self.play(randy.get_better)

        self.play(
            ApplyMethod(randy.get_slightly_sick, rate_func = there_and_back)
        )
        self.play(Blink(randy))
        self.wait(0.5)

        self.play(
            ApplyMethod(randy.get_sick)
        )
        
        self.play(Blink(randy))
        self.play(randy.get_better)
        self.wait(3)



class OneIn200HasDisease(Scene):
    def construct(self):
        title = TextMobject("1 in 200")
        title.to_edge(UP)
        creature = PiCreature()

        all_creatures = VGroup(*[
            VGroup(*[
                creature.copy()
                for y in range(20)
            ]).arrange(DOWN, SMALL_BUFF)
            for x in range(10)
        ]).arrange(RIGHT, SMALL_BUFF)
        all_creatures.set_height(FRAME_HEIGHT * 0.8)
        all_creatures.next_to(title, DOWN)
        randy = all_creatures[0][0]
        all_creatures[0].remove(randy)
        randy.change_mode("sick")
        randy.set_color(SICKLY_GREEN)
        randy.save_state()
        randy.set_height(3)
        randy.center()
        randy.change_mode("plain")
        randy.set_color(BLUE)

        self.add(randy)

        #p_sick = TexMobject("p(","\\text{sick}",") = 0.5\%")
        #p_sick.set_color_by_tex("sick", SICKLY_GREEN)
        #p_sick.next_to(randy, RIGHT+UP)
        #self.add(p_sick)
        self.wait()
        
        self.play(
            randy.change_mode, "sick",
            randy.set_color, SICKLY_GREEN
        )
        self.play(Blink(randy))
        self.play(randy.restore)
        self.wait()
        self.play(
            Write(title),
            LaggedStartMap(FadeIn, all_creatures, run_time = 3)
        )
        self.wait()
