RoomChange stores weak_ptrs.
Using graphic::Primitive for SpecialWall.
Reorganize code.