reduce globals using module pattern
pass canvas as arg
weapon has access to its owner