Esempio n. 1
0
        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;
                    }
                }
            }
        }
Esempio n. 2
0
 public void CancelSelection()
 {
     btnCancel.interactable  = false;
     btnUpgrade.interactable = false;
     SetTurretToBuild(null);
     bsCurrent = null;
 }
Esempio n. 3
0
    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;
    }
Esempio n. 4
0
 void Start()
 {
     _buildSelector = FindObjectOfType <BuildSelector>();
 }
Esempio n. 5
0
    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);
    }
Esempio n. 6
0
    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);
    }