public static CmdObject Create(ICommand cmd, object userData) { CmdObject cmdObject = ReferencePool.Acquire <CmdObject>(); cmdObject.Cmd = cmd; cmdObject.UserData = userData; return(cmdObject); }
public void ExecuteCmd(ICommand cmd, string group, object userData) { LinkedList <CmdObject> cmdList; if (!m_CmdDic.TryGetValue(group, out cmdList)) { cmdList = new LinkedList <CmdObject>(); m_CmdDic.Add(group, cmdList); } CmdObject cmdObject = CmdObject.Create(cmd, userData); cmdList.AddLast(cmdObject); cmd.Execute(userData); }
public void Undo(string group, object userData) { LinkedList <CmdObject> cmdList; if (!m_CmdDic.TryGetValue(group, out cmdList)) { return; } if (cmdList.Count > 0) { CmdObject cmdObject = cmdList.Last.Value; cmdObject.Cmd.Undo(cmdObject.UserData, userData); cmdList.RemoveLast(); ReferencePool.Release(cmdObject); } }