private static void DetermineBuildSelector(Bot bot) { string[] settings = FileUtil.ReadSettingsFile(); foreach (string line in settings) { string[] setting = line.Split('='); if (setting.Length != 2) { continue; } if (setting[0].Trim() != "BuildSelector") { continue; } string buildSelectorName = setting[1].Trim(); foreach (Type buildSelectorType in typeof(BuildSelector).Assembly.GetTypes().Where(type => (typeof(BuildSelector)).IsAssignableFrom(type))) { if (buildSelectorType.FullName.Substring(buildSelectorType.FullName.LastIndexOf('.') + 1) == buildSelectorName) { BuildSelector buildSelector = (BuildSelector)Activator.CreateInstance(buildSelectorType); bot.BuildSelector = buildSelector; break; } } } }
public void CancelSelection() { btnCancel.interactable = false; btnUpgrade.interactable = false; SetTurretToBuild(null); bsCurrent = null; }
public void Setup() { BuildSelector selector = GetComponentInChildren <BuildSelector>(); selector.Plant = Plant; selector.GetComponent <SpriteRenderer>().sprite = Plant.GetComponent <Plant>().Sprite; selector.transform.localPosition = Plant.GetComponent <Plant>().stats.MenuOffset; }
void Start() { _buildSelector = FindObjectOfType <BuildSelector>(); }
private void DrawBuildLocation(BuildSelector prevBuildSelector) { if (!(prevBuildSelector.stage == BuildSelectorStage.StagePlace || prevBuildSelector.stage == BuildSelectorStage.StageItemSelect)) { return; } var mouseCenter = GetMouseCenterDF(); if (prevBuildSelector.stage == BuildSelectorStage.StageItemSelect) { mouseCenter = prevBuildSelector.cursor; } for (int y = mouseCenter.y - prevBuildSelector.radius_y_low; y <= mouseCenter.y + prevBuildSelector.radius_y_high; y++) { for (int x = mouseCenter.x - prevBuildSelector.radius_x_low; x <= mouseCenter.x + prevBuildSelector.radius_x_high; x++) { int x_local = x + prevBuildSelector.radius_x_low - mouseCenter.x; int y_local = y + prevBuildSelector.radius_y_low - mouseCenter.y; int tile = prevBuildSelector.tiles[x_local + (y_local * (prevBuildSelector.radius_x_low + prevBuildSelector.radius_x_high + 1))]; var drawCenter = GameMap.DFtoUnityCoord(x, y, mouseCenter.z); switch (tile) { case 0: if (prevBuildSelector.errors.Count == 0) { Graphics.DrawMesh(previewLow, Matrix4x4.TRS(drawCenter, Quaternion.identity, Vector3.one), previewLight, 0); } else { Graphics.DrawMesh(previewLow, Matrix4x4.TRS(drawCenter, Quaternion.identity, Vector3.one), previewPurpleLight, 0); } break; case 1: if (prevBuildSelector.errors.Count == 0) { Graphics.DrawMesh(previewHigh, Matrix4x4.TRS(drawCenter, Quaternion.identity, Vector3.one), previewDark, 0); } else { Graphics.DrawMesh(previewHigh, Matrix4x4.TRS(drawCenter, Quaternion.identity, Vector3.one), previewPurpleDark, 0); } break; case 6: //Blocked case 7: //Hidden case 14: //Too close to edge default: Graphics.DrawMesh(previewHigh, Matrix4x4.TRS(drawCenter, Quaternion.identity, Vector3.one), previewRed, 0); break; } } } if (EventSystem.current.IsPointerOverGameObject()) { return; } SidebarCommand sidebarCommand = new SidebarCommand { selection_coord = mouseCenter }; if (Input.GetMouseButtonDown(0) && prevBuildSelector.stage == BuildSelectorStage.StagePlace) { sidebarCommand.action = MenuAction.MenuSelect; } DFConnection.Instance.EnqueueSidebarSet(sidebarCommand); }
private bool SelectorChanged(BuildSelector theirs) { var ours = prevBuildSelector; prevBuildSelector = theirs; if (ours == null) { if (theirs == null) { return(false); } return(true); } else { if (theirs == null) { return(true); } if ((BuildingStruct)ours.building_type != theirs.building_type) { return(true); } if (ours.stage != theirs.stage) { return(true); } if (ours.req_index != theirs.req_index) { return(true); } if (ours.requirements.Count != theirs.requirements.Count) { return(true); } if (ours.choices.Count != theirs.choices.Count) { return(true); } if (ours.errors.Count != theirs.errors.Count) { return(true); } for (int i = 0; i < ours.choices.Count; i++) { if (ours.choices[i].used_count != theirs.choices[i].used_count) { return(true); } if (ours.choices[i].distance != theirs.choices[i].distance) { return(true); } if (ours.choices[i].num_candidates != theirs.choices[i].num_candidates) { return(true); } if (ours.choices[i].name != theirs.choices[i].name) { return(true); } } for (int i = 0; i < ours.requirements.Count; i++) { if (ours.requirements[i].count_provided != theirs.requirements[i].count_provided) { return(true); } if (ours.requirements[i].count_required != theirs.requirements[i].count_required) { return(true); } if (ours.requirements[i].count_max != theirs.requirements[i].count_max) { return(true); } } for (int i = 0; i < ours.errors.Count; i++) { if (ours.errors[i] != theirs.errors[i]) { return(true); } } } return(false); }