public static EditorArchitectInfo GetOrCreateArchitectInfo(Character chr) { EditorArchitectInfo info; if (!Architects.TryGetValue(chr, out info)) { Architects.Add(chr, info = new EditorArchitectInfo(chr)); } return info; }
public static void StopEditing(Character chr) { EditorArchitectInfo architectInfo = GetArchitectInfo(chr); if (architectInfo == null) { return; } architectInfo.Editor.Leave(chr); }
public static EditorArchitectInfo GetOrCreateArchitectInfo(Character chr) { EditorArchitectInfo editorArchitectInfo; if (!Architects.TryGetValue(chr, out editorArchitectInfo)) { Architects.Add(chr, editorArchitectInfo = new EditorArchitectInfo(chr)); } return(editorArchitectInfo); }
private void OnJoin(Character chr) { if (Team.ContainsKey(chr.EntityId.Low)) { return; } EditorArchitectInfo architectInfo = MapEditorMgr.GetOrCreateArchitectInfo(chr); Team.Add(chr.EntityId.Low, architectInfo); architectInfo.Editor = this; chr.CallPeriodically(1000, UpdateCallback); }
/// <summary>Called periodically on editing Characters</summary> private void UpdateCallback(WorldObject obj) { Character chr = (Character)obj; if (obj.Map != Map || !obj.IsInWorld) { Leave(chr); } else { EditorArchitectInfo architectInfo = MapEditorMgr.GetOrCreateArchitectInfo(chr); EditorFigurine target = chr.Target as EditorFigurine; if (architectInfo.CurrentTarget == target) { return; } EditorFigurine editorFigurine = target; architectInfo.CurrentTarget = editorFigurine; } }