internal TExtension AddExtension <TExtension>() where TExtension : new() { var ext = new TExtension(); return(SetExtension(ext)); }
public void Select (TOperation operation, TExtension extension) { CategoryType.Select (TCategory.Dummy); Operation = operation; Extension = extension; }
private TExtension findReceiveBridge(ExtensionNode input) { //finds the extension that the receiveBridge belongs to TExtension result = null; int extensionCounter = 0; while (extensionCounter < this.terminal.extensionLength() && result == null) { int receiveCoutner = 0; while (receiveCoutner < this.terminal.extensionAt(extensionCounter).ReceiveNodes.Length&& result == null) { if (input.Equals(this.terminal.extensionAt(extensionCounter).ReceiveNodes[receiveCoutner])) { result = this.terminal.extensionAt(extensionCounter); } receiveCoutner++; } extensionCounter++; } return(result); }
public void saveButton() { //saves the current state of all the terminals string path = Application.dataPath + "/Default/Resources/Default/Saves"; EnterTextContent saveContent = new EnterTextContent("Enter in the name for your save", (string enteredText) => { string illegal = enteredText + "~" + System.DateTime.Now.ToString(); string regexSearch = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars()); Regex r = new Regex(string.Format("[{0}]", Regex.Escape(regexSearch))); illegal = r.Replace(illegal, " "); Save.makeDirectory(path, illegal); path += "/" + illegal + "/"; string terminalFolder = "Terminals"; Save.makeDirectory(path, terminalFolder); path += "/" + terminalFolder; foreach (TerminalController ter in this.terminalManager.TerminalControllers) { //makes terminal directory Save.makeDirectory(path, ter.Terminal.Name); string tempPath = path + "/" + ter.Terminal.Name + "/"; //saves terminal json Save.saveJson <TerminalData>(new TerminalData(ter.Terminal), tempPath, ter.Terminal.Name + ".json"); //saves the connections Save.saveJson <TExtensionConnectionsData>(new TExtensionConnectionsData(ter.Terminal), tempPath, typeof(TExtensionConnectionsData).ToString() + ".json"); //makes directory for logic graphs Save.makeDirectory(tempPath, "LogicGraphs"); tempPath += "/LogicGraphs"; for (int i = 0; i < ter.Terminal.extensionLength(); i++) { TExtension extension = ter.Terminal.extensionAt(i); if (extension.GetType() == typeof(LogicChip)) { string name = extension.Name + ".json"; LogicChip lg = (LogicChip)extension; Save.saveJson <LogicGraphData>(new LogicGraphData(lg), tempPath, name); } } } }, () => { }, 50); WindowManager.Instance.spawnWindow(new Window("Save Game", 200, 200, saveContent)); }
/// <summary> /// Allows to register an extension that executes custom code on different extension points /// </summary> /// <typeparam name="TExtension">The extension type. This type must extend <see cref="FirehawkExtension"/> type</typeparam> public ConventionMapConfig RegisterExtension <TExtension>() where TExtension : ConventionMapExtension { try { TExtension ext = Activator.CreateInstance <TExtension>(); RegisterExtension(ext); } catch (Exception ex) { throw new ConfigurationErrorsException(string.Format(ExceptionMessages.UnableToCreateExtensionInstance, typeof(TExtension).Name), ex); } return(this); }
/// <summary> /// Gets or creates an extension instance linked to the current <see cref="ModelContext"/>. /// </summary> /// <typeparam name="TExtension">The type of extension to create.</typeparam> /// <returns></returns> public TExtension GetExtension <TExtension>() where TExtension : class, new() { object extension; if (extensions == null) { extensions = new Dictionary <Type, object>(); } if (!extensions.TryGetValue(typeof(TExtension), out extension)) { extensions[typeof(TExtension)] = extension = new TExtension(); } return((TExtension)extension); }
internal TExtension Extend <TExtension>() where TExtension : new() { object extensionObj; var type = typeof(TExtension); if ((extensions ?? (extensions = new Dictionary <Type, object>())).TryGetValue(type, out extensionObj)) { return((TExtension)extensionObj); } var extension = new TExtension(); extensions[type] = extension; return(extension); }
internal TExtension Extend <TExtension>() where TExtension : class, new() { // TODO: (Extend) a more performant, clearer WithExtension. test and measure. object extensionObj; var type = typeof(TExtension); if ((extensions ?? (extensions = new Dictionary <Type, object>())).TryGetValue(type, out extensionObj)) { return(extensionObj as TExtension); } var extension = new TExtension(); extensions[type] = extension; return(extension); }
/// <summary> /// Adds an extension of type <typeparamref name="TExtension" /> to the <see cref="LogEntry"/> if extension type <typeparamref name="TExtension" /> is enabled. /// </summary> public Extension With <TExtension>() where TExtension : class, new() { if (Extension <TExtension> .IsEnabled) { extensionGetters.Add( new KeyValuePair <Type, Func <LogEntry, object> >( typeof(TExtension), entry => { var extension = new TExtension(); return(extension); })); } return(this); }
/// <summary> /// Removes an Extension from the Terminal /// </summary> public bool removeExtension(TExtension extension) { bool result = true; /* * //disconnect * foreach (SendBridge send in extension.SendBridges) { * send.clearConnections(); * } * foreach (ReceiveBridge rec in extension.ReceiveBridges) { * rec.clearConnections(); * } */ result = this.extensions.Remove(extension); this.OnExtensionRemove?.Invoke(); return(result); }
public void Invoke (IModelContext modelContext, IEntityAction entityAction, TExtension extension) { if (modelContext.NotNull ()) { var context = TModelContext.CastTo (modelContext); var relationList = context.CategoryRelation .ToList () ; if (entityAction.NotNull ()) { var action = TEntityAction.Request (entityAction); action.CollectionAction.SetCollection (relationList); if (action.Operation.HasExtension) { switch (extension) { case TExtension.Full: { CollectionFull (context, action); } break; case TExtension.Minimum: { CollectionMinimum (context, action); } break; case TExtension.ById: case TExtension.Idle: case TExtension.Many: case TExtension.Zap: { Models.Infrastructure.THelper.FormatExtensionNotImplementedException (action); } break; } } else { Models.Infrastructure.THelper.FormatExtensionMustExistException (action); } } } }
/// <summary> /// Add an ExtensionConnection to InteriorConnections /// </summary> public bool addConnection(ExtensionConnection connection) { bool result = false; TExtension fromExtension = Array.Find(this.Extensions, extension => extension.Equals(connection.FromExtension)); TExtension toExtension = Array.Find(this.Extensions, extension => extension.Equals(connection.ToExtension)); if (connection.FromTerminal.Equals(this) && fromExtension != null && Array.Exists(fromExtension.SendNodes, bridge => bridge.Equals(connection.FromNode)) && connection.ToTerminal.Equals(this) && toExtension != null && Array.Exists(toExtension.ReceiveNodes, bridge => bridge.Equals(connection.ToNode))) { this.interiorConnections.Add(connection); result = true; this.OnConnectionAdd?.Invoke(); } return(result); }
public ExtensionConnection(Terminal fromTerminal, TExtension fromExtension, ExtensionNode fromNode, Terminal toTerminal, TExtension toExtension, ExtensionNode toNode) { this.fromTerminal = fromTerminal; this.fromExtension = fromExtension; this.fromNode = fromNode; this.toTerminal = toTerminal; this.toExtension = toExtension; this.toNode = toNode; if (fromNode.State == ExtensionNode.ExtensionState.RECEIVE) { throw new System.Exception("fromNode can not have a state of Receive"); } if (toNode.State == ExtensionNode.ExtensionState.SEND) { throw new System.Exception("toNode can not have a state of Send"); } this.fromNode.OnSetValue += updateState; }
public void Invoke (IModelContext modelContext, IEntityAction entityAction, TExtension extension) { if (modelContext.NotNull ()) { var context = TModelContext.CastTo (modelContext); var relationList = context.CategoryRelation .ToList () ; if (entityAction.NotNull ()) { var action = TEntityAction.Request (entityAction); action.CollectionAction.SetCollection (relationList); if (action.Operation.HasExtension) { switch (extension) { case TExtension.Settings: { SelectSettings (context, action); } break; case TExtension.ById: { SelectById (context, action); } break; case TExtension.Relation: { SelectRelation (context, action); } break; case TExtension.Many: { SelectMany (context, action); } break; case TExtension.Node: { SelectNode (context, action); } break; case TExtension.Zap: { SelectZap (context, action); } break; case TExtension.Summary: { SelectSummary (context, action); } break; case TExtension.Idle: { //SelectIdle (context, action); } break; case TExtension.Full: { Server.Models.Infrastructure.THelper.FormatExtensionNotImplementedException (action); } break; } } else { Server.Models.Infrastructure.THelper.FormatExtensionMustExistException (action); } } } }
public int extensionIndexOf(TExtension extension) { return(this.extensions.IndexOf(extension)); }
/// <summary> /// Adds the extension to the Terminal /// </summary> public void addExtension(TExtension extension) { this.extensions.Add(extension); this.OnExtensionAdd?.Invoke(); }
public bool IsExtension (TExtension extension) { return (Extension.Equals (extension)); }
public bool IsOperation (TOperation operation, TExtension extension) { return (Operation.Equals (operation) && Extension.Equals (extension)); }