This looks fine to me. If you're going to add more weapons then you just slot the extra weapons into the events easily. It only looks confusing to me because they're called weap1 weap2, if you use the actual weapon names it might be easier to manage.
Also to control some of the upgrade logic it may be useful to just have levels for the weapons so that if it's level 2 then it has defined stats, you hit upgrade and it becomes level 2. that way you might only have to store the single level variable as a temp, then when you apply it on leaving the UI it applies the level to the weapon which then just applies all the predetermined damage stats.
I would say you could use arrays instead but I don't think that would save much time since you would be updating array positions instead of instance variables and would be about the same amount of logic.