// creates a new menu item
    private BuildMenuItem CreateMenuItem(BuildingBase buildingBase)
    {
        BuildMenuItem item = Instantiate(menuItemPrefab, scrollZone);

        item.SetupItem(buildingBase, BuildManager.instance.SelectBuild);
        return(item);
    }
    void Start()
    {
        craftingManager = GameObject.Find("GameManager").GetComponent <CraftingManager>();
        recipes         = new List <BuildMenuItem>();

        // Loop through all recipes
        foreach (CraftingRecipe craftingRecipe in craftingManager.buildables)
        {
            BuildMenuItem item = Instantiate(buildMenuItem, gameObject.transform);
            item.Init(craftingRecipe);
            recipes.Add(item);
        }
    }
Beispiel #3
0
    private void Place()
    {
        /*
         * Accept the position of the scheme
         */

        BuildMenuItem bmi = scheme.GetComponent <BuildMenuItem>();

        bmi.AcceptScheme(prefab);

        prefab          = null;
        scheme          = null;
        isPlacing       = false;
        schemeYRotation = 0.0f;
    }
Beispiel #4
0
    private void StartPlacing(BuildMenuItem item)
    {
        buildController.StartPlacing(item.gameObject);

        Close();
    }
            public override void OnUpdate()
            {
                if (Instance.HeightPerRow <= 0)
                {
                    Instance.HeightPerRow = Element.ButtonHeight;
                }
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return;
                }
                ArcenUI_ImageButtonSet elementAsType = (ArcenUI_ImageButtonSet)Element;

                if (elementAsType != null)
                {
                }                                //prevent compiler warning
                Window_InGameBuildTypeIconMenu windowController = (Window_InGameBuildTypeIconMenu)Element.Window.Controller;

                if (windowController != null)
                {
                }                                   //prevent compiler warning

                if (Instance.LastMenuIndex != Window_InGameBuildTabMenu.Instance.CurrentMenuIndex ||
                    Instance.LastTypeIndex != Instance.CurrentTypeIndex)
                {
                    Instance.LastMenuIndex = Window_InGameBuildTabMenu.Instance.CurrentMenuIndex;
                    Instance.LastTypeIndex = Instance.CurrentTypeIndex;

                    for (int i = 0; i < Instance.LastShownItems.Count; i++)
                    {
                        Instance.LastShownItems[i].Clear();
                    }

                    GameEntity entity = World_AIW2.Instance.GetEntityByID(Window_InGameBuildTabMenu.Instance.EntityID);
                    if (entity != null && entity.TypeData.BuildMenus.Count > 0)
                    {
                        int highestRowReached = 0;
                        if (Instance.LastMenuIndex >= entity.TypeData.BuildMenus.Count)
                        {
                            Instance.LastMenuIndex = 0;
                            Window_InGameBuildTabMenu.Instance.CurrentMenuIndex = 0;
                        }
                        BuildMenu menu = entity.TypeData.BuildMenus[Instance.LastMenuIndex];
                        if (menu != null)
                        {
                            float aspectRatioAdjustedButtonWidth  = this.Element.ButtonWidth;
                            float aspectRatioAdjustedButtonHeight = this.Element.ButtonHeight;
                            if (ArcenUI.Instance.PixelsPerPercent_X != ArcenUI.Instance.PixelsPerPercent_Y)
                            {
                                aspectRatioAdjustedButtonWidth *= ArcenUI.Instance.PixelsPerPercent_Y / ArcenUI.Instance.PixelsPerPercent_X;
                            }
                            //int totalColumns = Mathf.FloorToInt( this.Element.Width / aspectRatioAdjustedButtonWidth );
                            int currentImageListIndex = 0;

                            int shownColumnCount = 0;
                            for (int typeIndex = 0; typeIndex < menu.Columns.Count; typeIndex++)
                            {
                                List <BuildMenuItem> column = menu.Columns[typeIndex];
                                int buttonsInColumn         = 0;
                                for (int markIndex = 0; markIndex < column.Count; markIndex++)
                                {
                                    BuildMenuItem menuItem = column[markIndex];
                                    if (menuItem.EntityDataOrNull == null)
                                    {
                                        continue;
                                    }
                                    if (localSide.GetCanBuildAtAll(menuItem.EntityDataOrNull) != ArcenRejectionReason.Unknown)
                                    {
                                        continue;
                                    }
                                    buttonsInColumn = markIndex + 1;
                                }
                                highestRowReached = Math.Max(highestRowReached, buttonsInColumn);
                            }

                            for (int typeIndex = 0; typeIndex < menu.Columns.Count; typeIndex++)
                            {
                                if (Instance.LastShownItems.Count <= typeIndex)
                                {
                                    Instance.LastShownItems.Add(new List <bItem>());
                                }
                                List <bItem> lastShownItemList = Instance.LastShownItems[typeIndex];

                                bool haveShownAnythingInThisColumn = false;
                                List <BuildMenuItem> column        = menu.Columns[typeIndex];
                                if (column.Count <= 0)
                                {
                                    continue;
                                }
                                for (int markIndex = 0; markIndex < column.Count; markIndex++)
                                {
                                    if (lastShownItemList.Count <= markIndex)
                                    {
                                        lastShownItemList.Add(null);
                                    }

                                    BuildMenuItem menuItem = column[markIndex];
                                    if (menuItem.EntityDataOrNull == null)
                                    {
                                        continue;
                                    }
                                    if (localSide.GetCanBuildAtAll(menuItem.EntityDataOrNull) != ArcenRejectionReason.Unknown)
                                    {
                                        continue;
                                    }
                                    haveShownAnythingInThisColumn = true;

                                    bItem item = null;
                                    if (currentImageListIndex < this.Element.Images.Count)
                                    {
                                        item = Element.Images[currentImageListIndex].Controller as bItem;
                                        currentImageListIndex++;
                                    }
                                    else
                                    {
                                        item = new bItem();
                                        Vector2 dummy = Mat.V2_Zero;
                                        Vector2 size;
                                        size.x = aspectRatioAdjustedButtonWidth;
                                        size.y = aspectRatioAdjustedButtonHeight;
                                        Element.AddImageButton(item, size, dummy);
                                        currentImageListIndex = Element.Images.Count;
                                    }
                                    item.ColumnIndex             = shownColumnCount;
                                    lastShownItemList[markIndex] = item;

                                    float effectiveX = shownColumnCount * aspectRatioAdjustedButtonWidth;
                                    float effectiveY = ((highestRowReached - 1) - markIndex) * aspectRatioAdjustedButtonHeight;

                                    item.TypeDoingTheBuilding = entity.TypeData;
                                    item.SetTypeToBuild(menuItem.EntityDataOrNull);
                                    item.Element.Alignment.XAlignment.Offset = effectiveX;
                                    item.Element.Alignment.YAlignment.Offset = effectiveY;
                                    item.Element.UpdatePositionAndSize();
                                }
                                if (haveShownAnythingInThisColumn)
                                {
                                    shownColumnCount++;
                                }
                            }

                            //hide any extras
                            for (int i = currentImageListIndex; i < this.Element.Images.Count; i++)
                            {
                                bItem item = this.Element.Images[i].Controller as bItem;
                                item.SetTypeToBuild(null);
                                item.TypeDoingTheBuilding = null;
                            }
                        }
                        if (Instance.HeightPerRow > 0)
                        {
                            float currentExpansion = Instance.Window.SubContainer.Height - Instance.HeightPerRow;
                            float targetExpansion  = Instance.HeightPerRow * (highestRowReached - 1);
                            float deltaExpansion   = targetExpansion - currentExpansion;
                            if (deltaExpansion != 0)
                            {
                                Instance.Window.SubContainer.Height = Instance.HeightPerRow * highestRowReached;
                            }
                        }
                    }
                }
            }
            public override void OnUpdate()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalSide();

                if (localSide == null)
                {
                    return;
                }
                ArcenUI_ButtonSet      elementAsType    = (ArcenUI_ButtonSet)Element;
                Window_InGameBuildMenu windowController = (Window_InGameBuildMenu)Element.Window.Controller;

                if (windowController.MenuIndexChangedSinceLastButtonSetUpdate)
                {
                    elementAsType.ClearButtons();

                    GameEntity entity = World_AIW2.Instance.GetEntityByID(windowController.EntityID);
                    if (entity != null && entity.TypeData.BuildMenus.Count > 0)
                    {
                        if (windowController.LastMenuIndex >= entity.TypeData.BuildMenus.Count)
                        {
                            windowController.LastMenuIndex = 0;
                        }
                        BuildMenu menu = entity.TypeData.BuildMenus[windowController.LastMenuIndex];
                        if (menu != null)
                        {
                            int shownColumnCount = 0;
                            for (int x = 0; x < menu.Columns.Count; x++)
                            {
                                bool haveShownAnythingInThisColumn = false;
                                List <BuildMenuItem> column        = menu.Columns[x];
                                for (int y = 0; y < column.Count; y++)
                                {
                                    BuildMenuItem item = column[y];
                                    if (item.EntityDataOrNull != null && localSide.GetCanBuildAtAll(item.EntityDataOrNull) != ArcenRejectionReason.Unknown)
                                    {
                                        continue;
                                    }
                                    haveShownAnythingInThisColumn = true;
                                    bBuildItem newButtonController = new bBuildItem(entity.TypeData, item);
                                    newButtonController.ItemMenuIndex   = windowController.LastMenuIndex;
                                    newButtonController.ItemColumnIndex = x;
                                    newButtonController.ItemIndex       = y;
                                    Vector2 offset;
                                    offset.x = shownColumnCount * elementAsType.ButtonWidth;
                                    offset.y = y * elementAsType.ButtonHeight;
                                    Vector2 size;
                                    size.x = elementAsType.ButtonWidth;
                                    size.y = elementAsType.ButtonHeight;
                                    elementAsType.AddButton(newButtonController, size, offset);
                                }
                                if (haveShownAnythingInThisColumn)
                                {
                                    shownColumnCount++;
                                }
                            }
                        }
                    }

                    elementAsType.ActuallyPutItemsBackInPoolThatAreStillCleared();

                    windowController.MenuIndexChangedSinceLastButtonSetUpdate = false;
                }
            }
 public bBuildItem(GameEntityTypeData TypeDoingTheBuilding, BuildMenuItem Item)
 {
     this.TypeDoingTheBuilding = TypeDoingTheBuilding;
     this.Item = Item;
 }
            public override void OnUpdate()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return;
                }
                ArcenUI_ButtonSet          elementAsType    = (ArcenUI_ButtonSet)Element;
                Window_InGameBuildTypeMenu windowController = (Window_InGameBuildTypeMenu)Element.Window.Controller;

                if (windowController != null)
                {
                }                                   //prevent compiler warning

                if (Window_InGameBuildTypeMenu.Instance.LastMenuIndex != Window_InGameBuildTabMenu.Instance.CurrentMenuIndex)
                {
                    Window_InGameBuildTypeMenu.Instance.LastMenuIndex = Window_InGameBuildTabMenu.Instance.CurrentMenuIndex;
                    elementAsType.ClearButtons();

                    GameEntity entity = World_AIW2.Instance.GetEntityByID(Window_InGameBuildTabMenu.Instance.EntityID);
                    if (entity != null && entity.TypeData.BuildMenus.Count > 0)
                    {
                        if (Window_InGameBuildTypeMenu.Instance.LastMenuIndex >= entity.TypeData.BuildMenus.Count)
                        {
                            Window_InGameBuildTypeMenu.Instance.LastMenuIndex   = 0;
                            Window_InGameBuildTabMenu.Instance.CurrentMenuIndex = 0;
                        }
                        BuildMenu menu = entity.TypeData.BuildMenus[Window_InGameBuildTypeMenu.Instance.LastMenuIndex];
                        if (menu != null)
                        {
                            int shownColumnCount = 0;
                            for (int x = 0; x < menu.Columns.Count; x++)
                            {
                                bool haveShownAnythingInThisColumn = false;
                                List <BuildMenuItem> column        = menu.Columns[x];
                                if (column.Count <= 0)
                                {
                                    continue;
                                }
                                for (int y = 0; y < column.Count; y++)
                                {
                                    BuildMenuItem item = column[y];
                                    haveShownAnythingInThisColumn = true;
                                    bItem newButtonController = new bItem(entity.TypeData, item);
                                    newButtonController.ItemMenuIndex = Window_InGameBuildTypeMenu.Instance.LastMenuIndex;
                                    newButtonController.ItemTypeIndex = x;
                                    newButtonController.ItemIndex     = y;
                                    Vector2 offset;
                                    offset.x = shownColumnCount * elementAsType.ButtonWidth;
                                    offset.y = 0;
                                    Vector2 size;
                                    size.x = elementAsType.ButtonWidth;
                                    size.y = elementAsType.ButtonHeight;
                                    elementAsType.AddButton(newButtonController, size, offset);
                                }
                                if (haveShownAnythingInThisColumn)
                                {
                                    shownColumnCount++;
                                }
                            }
                        }
                    }

                    elementAsType.ActuallyPutItemsBackInPoolThatAreStillCleared();
                }
            }
Beispiel #9
0
        /// <summary>
        /// Invoked when preference menu should be displayed.
        /// </summary>
        /// <param name="control">open menu on click.</param>
        public void AddPreferenceMenu(Control control)
        {
            System.Windows.Controls.ContextMenu cm = new System.Windows.Controls.ContextMenu();

            control.MouseDown += delegate
            {
                if (cm.Items.Count > 0)
                {
                    cm.Items.Clear();
                }
                JSConsoleEnable = jsConsole.consoleStatus;
                if (JSConsoleEnable)
                {
                    cm.Items.Add(BuildMenuItem.Build("Run JavaScript...", true, false, delegate
                    {
                        JSConsoleEnable = jsConsole.runJSConsole(JSConsoleEnable);
                    }));
                }
                else if (!JSConsoleEnable)
                {
                    cm.Items.Add(BuildMenuItem.Build("Close JavaScript Console", true, false, delegate
                    {
                        JSConsoleEnable = jsConsole.runJSConsole(JSConsoleEnable);
                    }));
                }
                cm.Items.Add(BuildMenuItem.Build("Get HTML", true, false, delegate
                {
                    TextBox textBox        = new TextBox();
                    textBox.IsReadOnly     = true;
                    textBox.Text           = browser.GetHTML();
                    textBox.SelectionStart = 0;
                    textBox.TextWrapping   = TextWrapping.WrapWithOverflow;
                    textBox.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
                    textBox.VerticalScrollBarVisibility   = ScrollBarVisibility.Auto;

                    Window window = new Window();
                    window.Owner  = Window.GetWindow((FrameworkElement)browserView);
                    window.WindowStartupLocation = WindowStartupLocation.CenterOwner;
                    window.Title   = "Get HTML";
                    window.Height  = 600;
                    window.Width   = 850;
                    window.Content = textBox;
                    window.ShowDialog();
                }));
                cm.Items.Add(BuildMenuItem.Build("Popup Windows", true, false, delegate
                {
                    browser.LoadURL("http://www.popuptest.com/");
                }));
                cm.Items.Add(BuildMenuItem.Build("Upload File", true, false, delegate
                {
                    browser.LoadURL("http://www.cs.tut.fi/~jkorpela/forms/file.html#example");
                }));
                cm.Items.Add(BuildMenuItem.Build("Download File", true, false, delegate
                {
                    browser.LoadURL("http://cloud.teamdev.com/downloads/dotnetbrowser/dotnetbrowser-1.8.2.zip");
                }));
                cm.Items.Add(BuildMenuItem.Build("JavaScript Dialogs", true, false, delegate
                {
                    browser.LoadURL("http://www.javascripter.net/faq/alert.htm");
                }));
                cm.Items.Add(BuildMenuItem.Build("PDF Viewer", true, false, delegate
                {
                    browser.LoadURL("http://www.orimi.com/pdf-test.pdf");
                }));
                cm.Items.Add(BuildMenuItem.Build("Adobe Flash", true, false, delegate
                {
                    browser.LoadURL("https://helpx.adobe.com/flash-player.html");
                }));
                cm.Items.Add(BuildMenuItem.Build("Google Maps", true, false, delegate
                {
                    browser.LoadURL("https://www.google.com.ua/maps");
                }));
                cm.Items.Add(BuildMenuItem.Build("HTML5 Video", true, false, delegate
                {
                    browser.LoadURL("https://www.w3.org/2010/05/video/mediaevents.html");
                }));
                cm.Items.Add(BuildMenuItem.Build("Zoom In", true, false, delegate
                {
                    browser.ZoomIn();
                }));
                cm.Items.Add(BuildMenuItem.Build("Zoom Out", true, false, delegate
                {
                    browser.ZoomOut();
                }));
                cm.Items.Add(BuildMenuItem.Build("Actual size", true, false, delegate
                {
                    browser.ZoomReset();
                }));
                cm.Items.Add(BuildMenuItem.Build("Proxy Settings", true, false, delegate
                {
                    ProxyConfigForm proxyConfigForm = new ProxyConfigForm(browserView);
                    proxyConfigForm.Show();
                }));

                cm.Items.Add(BuildMenuItem.Build("Save Web Page...", true, false, delegate
                {
                    SaveWebPage();
                }));
                cm.Items.Add(BuildMenuItem.Build("Clear Cache", true, false, delegate
                {
                    if (!browser.URL.Contains("http://refreshyourcache.com/en/cache-test/"))
                    {
                        browser.LoadURL("http://refreshyourcache.com/en/cache-test/");
                        InfoMessageBox.Show((FrameworkElement)browserView, "Test page loaded. Press\n\"OK\" to clear the cache.", "Test page");
                    }
                    browser.CacheStorage.ClearCache();
                    browser.ReloadIgnoringCache();
                    InfoMessageBox.Show((FrameworkElement)browserView, "Cache is cleared successfully", "Clear Cache");
                }));

                //Child menu for MenuItem Preferences
                BrowserPreferencesMenu browserPreferencesMenu = new BrowserPreferencesMenu(browserView);
                cm.Items.Add(browserPreferencesMenu.PreferencesItem());

                //Child menu for MenuItem Execute Command
                BrowserExecuteCommandMenu browserExecuteCommandMenu = new BrowserExecuteCommandMenu(browserView);
                cm.Items.Add(browserExecuteCommandMenu.ExecuteCommandItem());

                cm.Items.Add(BuildMenuItem.Build("Print...", true, false, delegate
                {
                    Nullable <Boolean> print = false;
                    PrintDialog dlgPrint     = new PrintDialog();
                    print = dlgPrint.ShowDialog();
                    string printerName = dlgPrint.PrintQueue.Name;
                    if (print == true)
                    {
                        browser.PrintHandler = new MyPDFPrintHandler((printSettings) =>
                        {
                            printSettings.PrinterName     = printerName;
                            dlgPrint.UserPageRangeEnabled = true;

                            if (printSettings.PrinterName.Contains("PDF"))
                            {
                                string fileName = String.Empty;
                                if (SaveToPDF(browser.Title, out fileName))
                                {
                                    printSettings.PDFFilePath = fileName;
                                    printSettings.PrintToPDF  = true;
                                }
                            }
                            else
                            {
                                printSettings.PrintToPDF = false;
                                printSettings.PaperSize  = PaperSize.DEFAULT;
                            }
                            printSettings.PrintBackgrounds = true;
                            return(printSettings);
                        });
                        browser.Print();
                    }
                }));

                cm.Items.Add(new Separator());

                cm.Items.Add(BuildMenuItem.Build("More Features...", true, false, delegate
                {
                    browser.LoadURL("http://dotnetbrowser-support.teamdev.com/documentation");
                }));

                cm.Items.Add(new Separator());

                cm.Items.Add(BuildMenuItem.Build("About WPFDotNetBrowser Demo", true, false, delegate
                {
                    AboutDemo();
                }));
                cm.IsOpen = true;
            };
        }