package week12day3;

public class HarryPotter {
	public static void main(String[] args){
		House gryffindor = new House("Gryffindor");
		House ravenclaw = new House("Ravenclaw");
		House slytherin = new House("Slytherin");
		House hufflepuff = new House("Hufflepuff");
		gryffindor.found();
		ravenclaw.found();
		slytherin.found();
		hufflepuff.found();
		
		Person dumbledore = new Person("Dumbledore", true);
		
		Person voldemort = new Person("Voldemort", true);
		voldemort.joinDeathEaters();
		
		Person jamesPotter = new Person("James Potter", true);
		Person lilyEvans = new Person("Lily Evans", true);
		
		Person vernonDursley = new Person("Vernon Dursley", false);
		Person petuniaEvans = new Person("Petunia Evans", false);
		
		Person hagrid = new Person("Hagrid", true);
		Person quirrell = new Person("Quirrell", true);
		
		vernonDursley.marry(petuniaEvans);
		Person petuniaDursley = petuniaEvans;
		petuniaDursley.setName("Petunia Dursley");
		
		Person dudleyDursley = petuniaDursley.haveChild("Dudley Dursley", false);
		
		jamesPotter.marry(lilyEvans);
		Person lilyPotter = lilyEvans;
		lilyPotter.setName("Lily Potter");
		
		Person harryPotter = lilyPotter.haveChild("Harry Potter", true);
		voldemort.kill(jamesPotter);
		voldemort.kill(lilyPotter);
		lilyPotter.protect(harryPotter);
		try{voldemort.kill(harryPotter);
		}catch(RuntimeException re){
			//voldemort.halfKill();
		}
		
		hagrid.relocate(harryPotter, petuniaDursley);
		vernonDursley.abuse(harryPotter);
		petuniaDursley.abuse(harryPotter);
		dudleyDursley.abuse(harryPotter);
		
		Owl messenger = new Owl();
		messenger.deliverMessage(harryPotter);
		vernonDursley.interceptMail();
		vernonDursley.blockMail();
		messenger.getFriendsAndSpamDeliverMessages(harryPotter);
		vernonDursley.flee();
		hagrid.deliverMessge(harryPotter);
		hagrid.wishHappyBirthday(harryPotter);
		harryPotter.friend(hagrid);
		hagrid.infoDump(harryPotter);
		
		hagrid.relocate(harryPotter, hagrid);
		harryPotter.goShopping();
		voldemort.possess(quirrell);
		quirrell.stealStone();
		
		Person ronaldWeasley = new Person("Ronald Weasley", true);
		Person nevilleLongbottom = new Person("Neville Longbottom", true);
		Person hermioneGranger = new Person("Hermione Granger", true);
		harryPotter.rideTrain();
		harryPotter.friend(ronaldWeasley);
		harryPotter.friend(nevilleLongbottom);
		harryPotter.sort(gryffindor);
		ronaldWeasley.sort(gryffindor);
		nevilleLongbottom.sort(gryffindor);
		hermioneGranger.sort(gryffindor);
		
		Person severusSnape = new Person("Severus Snape", true);
		severusSnape.mock(harryPotter);
		hermioneGranger.showOff();
		
		harryPotter.fly();
		harryPotter.showOff();
		
		ronaldWeasley.offend(hermioneGranger);
		hermioneGranger.cry();
		harryPotter.rescue(hermioneGranger);
		ronaldWeasley.rescue(hermioneGranger);
		harryPotter.friend(hermioneGranger);
		ronaldWeasley.friend(hermioneGranger);
		
		gryffindor.loseManyPoints();
		
		harryPotter.suspect(severusSnape);
		
		quirrell.attemptToKill(harryPotter);
		severusSnape.rescue(harryPotter);
		hermioneGranger.reachWrongConclusion();
		
		harryPotter.sneakAroundWith(hermioneGranger, ronaldWeasley);

		harryPotter.playMusic();
		hermioneGranger.shedSomeLight();
		harryPotter.fly();
		ronaldWeasley.playChess();
		hermioneGranger.solveRiddle();
		
		harryPotter.battle(quirrell);
		quirrell.attemptToKill(harryPotter);
		harryPotter.prevail();
		harryPotter.wakeUp();
		dumbledore.infoDump(harryPotter);
		
		gryffindor.earnLotsOfPoints();
		gryffindor.winHouseCup();
		
		harryPotter.rideTrain();
		harryPotter.relocate(harryPotter, petuniaDursley);
		
	}
}
