private bool IsApplied(BuildElement element, AbstractTypeBuilderList builders) { _context.BuildElement = element; foreach (var builder in builders) { if (IsApplied(builder, builders, BuildStep.Before)) { return(true); } if (IsApplied(builder, builders, BuildStep.Build)) { return(true); } if (IsApplied(builder, builders, BuildStep.After)) { return(true); } if (IsApplied(builder, builders, BuildStep.Catch)) { return(true); } if (IsApplied(builder, builders, BuildStep.Finally)) { return(true); } } return(false); }
public void Start() { CurrentImage = GetComponent <Image>(); Build = GetComponent <BuildElement>(); Def = GetComponent <DefElement>(); Soild = GetComponent <SoilderElement>(); Tank = GetComponent <TankElement>(); }
/// <summary> /// Run from BuildPositionProvider OnNoValidPreviewPosition /// </summary> public void HidePreviewElement() { if (replacedElement != null) { replacedElement.SetActive(true); replacedElement = null; } previewPresenter.SetActive(false); }
public static List <BuildElement> GetSurroundingElements(BuildElement origin) { return((from direction in AllDirections select direction + origin.transform.position into checkedPosition where BuiltElementsStoreController.ContainsKey(checkedPosition) select BuiltElementsStoreController.GetElementAtPosition(checkedPosition.ToVector3Int())) .ToList()); }
private static BuiltElementDescription ElementToBuiltElementDescription(BuildElement item) { var health = item.GetComponent <BuildElementLifeCycle>(); return(new BuiltElementDescription() { Position = item.transform.position.ToVector3Int(), Name = item.Description, Health = (health ? health.Hitpoints : 0) }); }
private void SetPreviewItem(BuildElement element) { element.transform.localScale = previewElementScaleFactor; var elementMaterial = element.GetComponentInChildren <Renderer>().material; element.GetComponentInChildren <Renderer>().material = CreateTransparentMaterialVariant(elementMaterial); element.GetComponent <BuildElement>().BuildBaseOn = BuildPosition.None; element.transform.parent = previewElementPivot.transform; }
#pragma warning restore 649 public static void AddElement(BuildElement element) { var elementPosition = element.transform.position.ToVector3Int(); if (!store.ContainsKey(elementPosition)) { // print($"ElementStore: adding element with ket: {elementPosition}"); store.Add(elementPosition, element); } else { Debug.LogWarning($"ElementStore already had key {elementPosition} assigned"); } }
/// <summary> /// Run from GameController gameModeChange event /// </summary> /// <param name="newMode"></param> public void ShowHidePreviewElementBasedOnGameMode(GameMode newMode) { gameMode = newMode; if (newMode != GameMode.Build || newMode != GameMode.Replace) { if (replacedElement != null) { replacedElement.SetActive(true); replacedElement = null; } previewPresenter.SetActive(false); } }
public void AddToQueue(String buildName) { lock (s_lock) { var item = new BuildElement() { Name = buildName, RequestTime = DateTime.Now }; QueueList.Add(item); if (!QueueTimer.Enabled) { QueueTimer.Start(); } } }
/// <summary> /// Run from BuildPositionProvider OnReplacePreviewPositionChanged /// </summary> /// <param name="previewPosition"></param> public void ShowPreviewElement(Vector3Int previewPosition) { if (replacedElement != null) { replacedElement.gameObject.SetActive(true); } replacedElement = BuiltElementsStoreController.GetElementAtPosition(previewPosition); if (previewItem.CanBeBuilt == BuildPosition.Top && !SurroundingElementInfo.IsGroundOrBuiltElementBellow(previewPosition)) { return; } replacedElement.gameObject.SetActive(false); DisplayPreviewElement(previewPosition); }
/// <summary> /// Run from BuildStoreController OnStoreItemChange /// </summary> /// <param name="newElement"></param> public void SetPreviewElement(BuildElement newElement) { HidePreviewElement(); if (newElement == null) { return; } foreach (Transform child in previewElementPivot.transform) { Destroy(child.gameObject); } previewItem = newElement; elementToBuild = previewItem; var newPreviewItem = Instantiate(previewItem, previewElementPivot.transform.position, Quaternion.identity); SetPreviewItem(newPreviewItem); }
private void InstantiateBuildElement() { var previewPosition = previewPresenter.transform.position; if (!canBuild || !inputEnabled || !Input.GetMouseButton(0) || !elementToBuild || !previewPresenter.activeSelf) { return; } var instantiatedElement = Instantiate(elementToBuild, previewPosition, Quaternion.identity); instantiatedElement.tag = elementToBuild.tag; instantiatedElement.transform.parent = builtElementParent; if (gameMode == GameMode.Replace) { replacedElement = null; BuiltElementsStoreController.RemoveAndDestroyElementWithPosition(previewPosition); } BuiltElementsStoreController.AddElement(instantiatedElement); UpdateSurroundingElementsConnections(instantiatedElement); if (instantiatedElement.BuildBaseOn != BuildPosition.AllSides) { //TODO: Here it would need to be tuned for variants of BuildPositions DetachedElementsChecker.CheckForDetachedElements(instantiatedElement); } canBuild = false; StartCoroutine(CooldownCanBuild()); }
#pragma warning restore 649 public static void CheckForDetachedElements(BuildElement origin) { var elementsToCheck = SurroundingElementInfo.GetSurroundingElements(origin); var detachedElements = new List <BuildElement>(); foreach (var element in elementsToCheck) { //If is element in detachedElements, it means it was in the path of element on other already checked side. if (detachedElements.Contains(element)) { continue; } var newQueue = new Queue <BuildElement>(); newQueue.Enqueue(element); detachedElements.AddRange(FindDetachedGroupOfElements(newQueue, detachedElements)); } detachedElements = detachedElements.Distinct().ToList(); detachedElements.ForEach(element => element.SetDetached()); }
void Start() { _player = FindObjectOfType <MainPlayer>(); if (PlayerClass == "Human") { for (int i = 0; i < ButtonList.Count; i++) { BuildElement buildinfo = ButtonList[i].GetComponent <BuildElement>(); buildinfo.BuildModel = Human[i]; } } else { if (PlayerClass == "Orc") { for (int i = 0; i < ButtonList.Count; i++) { BuildElement buildinfo = ButtonList[i].GetComponent <BuildElement>(); buildinfo.BuildModel = Orc[i]; } } } }
private void PrepareBuild() { Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "PrepareBuild starting"); Console.Out.WriteLine("Buildig = " + Building); if (!Building && QueueList.Count > 0) { BuildElement nextBuild = null; lock (s_lock) { if (!Building && QueueList.Count > 0) { Building = true; nextBuild = GetQueueHead(); } else { return; } } if (nextBuild == null || nextBuild.Name.Equals(String.Empty)) { Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "nextBuild == null || Empty"); return; } //RunBatch var buildName = nextBuild.Name; var de = (from c in BuildManager.Instance.BuildName2Path where c.Key.Equals(buildName) select c).FirstOrDefault(); var path = de.Value; var folder = GetFolder(path); using (Process proc = new Process()) { ProcessStartInfo psi = new ProcessStartInfo(path); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "ProcessStartInfo created"); psi.UseShellExecute = false; psi.WorkingDirectory = folder; psi.RedirectStandardOutput = true; psi.RedirectStandardInput = true; psi.RedirectStandardError = true; psi.ErrorDialog = false; psi.WindowStyle = ProcessWindowStyle.Hidden; //Console.Out.WriteLine("Executing: " + path); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Executing " + path); proc.StartInfo = psi; proc.Start(); System.IO.StreamReader myOutput = proc.StandardOutput; //build.WaitForExit(2000); CurrentBuildingLog = String.Empty; using (StreamWriter wr = new StreamWriter("BuildLog.log")) { while (!proc.HasExited) { string output = myOutput.ReadToEnd(); CurrentBuildingLog += output; //Console.Out.WriteLine(output); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", output); wr.WriteLine(output); } } if (proc.HasExited) { Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Process exited"); var logStrList = CurrentBuildingLog.Split('\n').ToList(); var buildNum = (from c in logStrList where c.Contains("Build=") select c).FirstOrDefault(); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "got buildNum = " + buildNum); buildNum = buildNum.Remove(0, buildNum.IndexOf("=") + 1).Trim(); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "extracted buildNum = " + buildNum); if (!Directory.Exists(folder + "\\Log")) { Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Create dir"); Directory.CreateDirectory(folder + "\\Log"); } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "dir exist"); String logfile = folder + "\\Log\\BuildLog" + buildNum + ".log"; using (StreamWriter sw = new StreamWriter(logfile)) { sw.Write(CurrentBuildingLog); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Writing log"); } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Writing log DONE"); bool bSucc = false; if (proc.ExitCode == 0) { bSucc = true; } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Get mail list"); var mailList = File.ReadAllLines(folder + "\\MailList.txt").ToList();; Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Get mail list DONE"); String mailTo = String.Empty; foreach (var item in mailList) { if (item.Equals(String.Empty)) { continue; } if (!mailTo.Equals(String.Empty)) { mailTo += ", "; } mailTo += item; } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Send mail start"); if (mailTo.Equals(String.Empty)) { mailTo = "*****@*****.**"; } using (MailMessage mail = new MailMessage("*****@*****.**", mailTo)) { mail.Subject = buildName + " build " + buildNum + (bSucc ? " Successful" : " Failed"); String body = bSucc ? "New build is available" : "Build Failed"; mail.Body = body; mail.Attachments.Add(new Attachment(logfile)); SmtpClient client = new SmtpClient("notestlv2"); client.UseDefaultCredentials = true; try { client.Send(mail); } catch (Exception ex) { Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Critical, "BuildRunner BuildRequestsQueue, PrepareBuild", "Send mail failed"); } } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Send mail end"); } try { if (!proc.HasExited) { proc.Kill(); } if (File.Exists("BuildLog.log")) { File.Delete("BuildLog.log"); } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Delete temp log"); } catch (Exception ex) { Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Critical, "BuildRunner BuildRequestsQueue, PrepareBuild", ex.ToString()); } } lock (s_lock) { Building = false; if (QueueList.Count <= 0) { QueueTimer.Stop(); Console.Out.WriteLine("Queue list empty, timer stopped"); } } Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Verbose, "BuildRunner BuildRequestsQueue, PrepareBuild", "Exit"); } }
private static void SetElementActiveOnShow(bool isActive, BuildElement foundItem) { foundItem.gameObject.SetActive(isActive); }
private void EmitMethod( AbstractTypeBuilderList builders, MethodInfo methdoInfo, BuildElement buildElement) { SetID(builders); _context.BuildElement = buildElement; var isCatchBlockRequired = false; var isFinallyBlockRequired = false; foreach (var builder in builders) { isCatchBlockRequired = isCatchBlockRequired || IsApplied(builder, builders, BuildStep.Catch); isFinallyBlockRequired = isFinallyBlockRequired || IsApplied(builder, builders, BuildStep.Finally); } BeginEmitMethod(methdoInfo); Build(BuildStep.Begin, builders); var emit = _context.MethodBuilder.Emitter; var returnLabel = _context.ReturnLabel; // Begin catch block. // if (isCatchBlockRequired || isFinallyBlockRequired) { _context.ReturnLabel = emit.DefineLabel(); emit.BeginExceptionBlock(); } Build(BuildStep.Before, builders); Build(BuildStep.Build, builders); Build(BuildStep.After, builders); if (isCatchBlockRequired || isFinallyBlockRequired) { emit.MarkLabel(_context.ReturnLabel); _context.ReturnLabel = returnLabel; } // End catch block. // if (isCatchBlockRequired) { emit .BeginCatchBlock(typeof(Exception)); _context.ReturnLabel = emit.DefineLabel(); _context.Exception = emit.DeclareLocal(typeof(Exception)); emit .stloc(_context.Exception); Build(BuildStep.Catch, builders); emit .rethrow .end(); emit.MarkLabel(_context.ReturnLabel); _context.ReturnLabel = returnLabel; _context.Exception = null; } if (isFinallyBlockRequired) { emit.BeginFinallyBlock(); _context.ReturnLabel = emit.DefineLabel(); Build(BuildStep.Finally, builders); emit.MarkLabel(_context.ReturnLabel); _context.ReturnLabel = returnLabel; } if (isCatchBlockRequired || isFinallyBlockRequired) { emit.EndExceptionBlock(); } Build(BuildStep.End, builders); EndEmitMethod(); }
int Locate(BuildElement elem) { int result = -1; foreach (BuildItem b in elem.BuildItemGroup) if (elem.BuildItemGroup[++result] == elem.BuildItem) return result; return result; }
private void UpdateSurroundingElementsConnections(BuildElement element) { SurroundingElementInfo.GetSurroundingElements(element) .ForEach(item => item.SetConnections()); }
#pragma warning restore 649 private void Start() { self = GetComponent <BuildElement>(); }
public static XElement GetElement(this XElement srcElement, String expression, BuildElement builder) { XElement target = srcElement.XPathSelectElement(expression); if (target == null) { srcElement.MergeElement(builder()); target = srcElement.XPathSelectElement(expression); } return(target); }
public static void RemoveElement(BuildElement element) { RemoveElementWithPosition(element.transform.position); }
public static CustomAction determineAction(BuildElement rule) { CustomAction ret = CustomAction.Unknown; string noExtension = ""; string extension = ""; foreach (string target in rule.dependencies) { extension = Path.GetExtension(target).Replace(".", ""); noExtension = Path.GetFileNameWithoutExtension(target); if (string.IsNullOrWhiteSpace(target)) { continue; } if (target.ToLower().Contains("clean")) { return(CustomAction.Ignore); } if (target.Contains("stdafx")) { return(CustomAction.Ignore); } if (extension.Equals("")) { //Phony target return(CustomAction.AttachAsPostBuildEvent); } if (rule.dependencies.Count > 0) { if (rule.dependencies[0].Equals("stdafx.cpp") || rule.dependencies[0].Equals("stdafx.h")) { return(CustomAction.Ignore); } } //this isn't exactly correct if (extension.Equals("o")) { ret = CustomAction.ConvertToProject; } if (extension.Equals("cpp")) { ret = CustomAction.ModifyComponent; } if (extension.Equals("dll")) { ret = CustomAction.ConvertToProject; } else if (extension.Equals("exe")) { ret = CustomAction.ConvertToProject; } else if (extension.Equals("ocx")) { ret = CustomAction.ConvertToProject; } else if (extension.Equals("hlp")) { ret = CustomAction.Ignore; } else if (extension.Equals("cab")) { ret = CustomAction.Unknown; } else if (extension.Equals("obj")) { ret = CustomAction.ModifyComponent; } else if (extension.Equals("h")) { ret = CustomAction.AttachAsPreBuildEvent; } else if (extension.Equals("c")) { ret = CustomAction.AttachAsPreBuildEvent; } else if (extension.Equals("lib")) { ret = CustomAction.ConvertToProject; } else if (extension.Equals("dat")) { ret = CustomAction.Unknown; } else if (extension.Equals("idt")) { ret = CustomAction.Unknown; } else if (extension.Equals("res")) { ret = CustomAction.ModifyComponent; } else if (extension.Equals("tlb")) { //handled during makefile processing ret = CustomAction.Ignore; } else if (extension.Equals("def")) { ret = CustomAction.Unknown; } } return(ret); }
public static CustomAction determineAction(BuildElement rule) { CustomAction ret = CustomAction.Unknown; string noExtension = ""; string extension = ""; foreach (string target in rule.dependencies) { extension = Path.GetExtension(target).Replace(".", ""); noExtension = Path.GetFileNameWithoutExtension(target); if (string.IsNullOrWhiteSpace(target)) continue; if (target.ToLower().Contains("clean")) return CustomAction.Ignore; if (target.Contains("stdafx")) return CustomAction.Ignore; if (extension.Equals("")) { //Phony target return CustomAction.AttachAsPostBuildEvent; } if (rule.dependencies.Count > 0) { if (rule.dependencies[0].Equals("stdafx.cpp") || rule.dependencies[0].Equals("stdafx.h")) { return CustomAction.Ignore; } } //this isn't exactly correct if (extension.Equals("o")) { ret = CustomAction.ConvertToProject; } if (extension.Equals("cpp")) { ret = CustomAction.ModifyComponent; } if (extension.Equals("dll")) { ret = CustomAction.ConvertToProject; } else if (extension.Equals("exe")) { ret = CustomAction.ConvertToProject; } else if (extension.Equals("ocx")) { ret = CustomAction.ConvertToProject; } else if (extension.Equals("hlp")) { ret = CustomAction.Ignore; } else if (extension.Equals("cab")) { ret = CustomAction.Unknown; } else if (extension.Equals("obj")) { ret = CustomAction.ModifyComponent; } else if (extension.Equals("h")) { ret = CustomAction.AttachAsPreBuildEvent; } else if (extension.Equals("c")) { ret = CustomAction.AttachAsPreBuildEvent; } else if (extension.Equals("lib")) { ret = CustomAction.ConvertToProject; } else if (extension.Equals("dat")) { ret = CustomAction.Unknown; } else if (extension.Equals("idt")) { ret = CustomAction.Unknown; } else if (extension.Equals("res")) { ret = CustomAction.ModifyComponent; } else if (extension.Equals("tlb")) { //handled during makefile processing ret = CustomAction.Ignore; } else if (extension.Equals("def")) { ret = CustomAction.Unknown; } } return ret; }