@@ -56,11 +56,21 @@ public Gang CreateGang(string gangName,Character leader)
5656 gang . Id = Guid . NewGuid ( ) ;
5757 gang . Name = gangName ;
5858 gang . Leader = leader ;
59- gang . SetMember ( leader ) ;
59+ // In addition to leadership, an assistant role is also needed
60+ // so that when the leader changes, the creator does not lose
61+ // control over the gang
62+ gang . SetMember ( leader , GangRole . Assistant ) ;
6063
6164 _gangRepository . Insert ( gang ) ;
6265
63- void Finish ( ) => _channelManager . CreateAndJoinChannel ( ChannelType . Gang , gang . ChannelName , gang . Leader ) ;
66+ void Finish ( )
67+ {
68+ // In addition to the DB repository, need to add a new gang to the dictionary
69+ _gangs . Add ( gang . Id , gang ) ;
70+ _channelManager . CreateAndJoinChannel ( ChannelType . Gang , gang . ChannelName , gang . Leader ) ;
71+ // Perform actions upon completion of the gang creation
72+ GangCreate ? . Invoke ( gang , leader ) ;
73+ }
6474
6575 if ( Transaction . Current != null )
6676 Transaction . Current . OnCommited ( Finish ) ;
@@ -212,6 +222,7 @@ void Finish()
212222 Finish ( ) ;
213223 }
214224
225+ public event Action < Gang , Character > GangCreate ;
215226 public event Action < Gang , Character > GangMemberJoined ;
216227 public event Action < Gang , Character > GangMemberRemoved ;
217228
0 commit comments