Really confused, I know I shouldn't stay with him (long)

Beatriz.
So me and my boyfriend have been together for almost 2 years and in the beginning it was amazing we were so happy but now the past 6 months he's been an ass. 
He doesn't want to communicate when we argue and he's not affectionate or shows me attention when we are around our friends. Every since he gained weigh he doesn't want to go out but when it comes to drinking and his friends inviting him to go out he does it. He never wants to talk about anything and just last night I find out he had smoked weed and the reason that is a big deal is because he said that he has asthma and he is against it very much and he also had a bad experience with his step dad from it when he was little (step dad being abusive while using it) and the fact that he lied about it and tried to hide it makes me feel like he's hiding more things and everytime we get into an argument he goes to San Diego and parties Instead of making things better then after a week he would say sorry when cuddling
I'm confused and I don't know what to do 
I've given him too many chances