Exemplo n.º 1
0
        private void Cancel_Click(object sender, MouseEventArgs e)
        {
            //need to fix cancel button for: footman/archer and all buildings besides townhall (ex: lumber mill, blacksmith, etc...)

            if (this.mode == 1)
            { //building cancel
                cancelBuild();
            }
            else if (this.mode == 5 || this.mode == 4) //attack or patrol mode
            {
                cancelHumanMoveArmy();
            }
            else if (this.mode == 2)                                  //human move button is on both peasant and footman
            {
                unitPtr temp     = gameData.chosenUnits.ElementAt(0); //get the first selected unit
                Unit    unitTemp = allUnits[temp.owner][temp.index];
                if (unitTemp.unitType == gameData.nameTranslation("Peasant"))
                {
                    cancelHumanMove();
                }
                else //army unit
                {
                    cancelHumanMoveArmy();
                }
            }
            else
            { //normal cancel
                inGameButton_Show();
                BuildSimple_Hide();
                builder.buildCancel();
                this.mode = 0;
            }
            focus_form.Focus();
            this.ActiveControl = null;//prevent buttons block the input
        }
Exemplo n.º 2
0
        private void gatherResources()
        { //this function will send idle peasants to gather resource
            int id = findFirstUnit("Peasant");

            if (id != -1) //while we still have an idle peasant
            {
                Unit temp = allUnits[playerNum][id];
                if (temp.onCommand == false && (temp.gold <= 0 && temp.lumber <= 0)) //only use peasant if the peasant not already on duty (and not carrying resources)
                {
                    //Check which resource to gather (send peasant gathering the resource that AI has less of at the moment)
                    if (gameData.gold[playerNum] > gameData.lumber[playerNum]) //we have more gold
                    {                                                          //so gather lumber
                        unitPtr tempTarget = new unitPtr();
                        tempTarget.x = (int)temp.x;
                        tempTarget.y = (int)temp.y;
                        unitPtr ret = gameData.findNearestTree(tempTarget, temp, 10, allUnits); //search a range of 10 for tree

                        /*if (ret.owner == -1) //we did not find a tree
                         * {//there was no tree in range (hence expand search distance once)
                         *  ret = gameData.findNearestTree(tempTarget, temp, 10); //search a range of 25 (more extensive search)
                         * }*/
                        if (ret.owner == 0) //after all search, if we had found a tree
                        {                   //move peasant to chop it
                            moveUnit(id, ret.x, ret.y);
                            //this.waitAndTryAgainG += waitTimer;
                        }
                        else //we gather gold as there is usually always gold
                        {
                            unitPtr retG = gameData.findNearestBuilding(allUnits, temp, "gather"); //find a goldMine
                            if (retG.owner != -1) //if there is an existing goldMine
                            {
                                Unit tempGM = allUnits[0][retG.index];
                                moveUnit(id, (int)tempGM.x, (int)tempGM.y); //send peasant to goldMine
                                //this.waitAndTryAgainG += waitTimer;
                            }
                        }
                        //else AI will do nothing as most likely trees ran out around AI
                    }
                    else //we have more lumber or equal so gather gold (priority on gold for army)
                    {
                        unitPtr ret = gameData.findNearestBuilding(allUnits, temp, "gather"); //find a goldMine
                        if (ret.owner != -1) //if there is an existing goldMine
                        {
                            Unit tempGM = allUnits[0][ret.index];
                            moveUnit(id, (int)tempGM.x, (int)tempGM.y); //send peasant to goldMine
                            //this.waitAndTryAgainG += waitTimer;
                        }
                    }
                }
                else if ((temp.gold > 0 || temp.lumber > 0)) //peasant carrying resources, so store resource first
                {
                    if (temp.gold > 0)
                    {
                        unitPtr goTo = gameData.findNearestBuilding(allUnits, temp, "gold");
                        if (goTo.owner != -1) //we actually found a  building
                        {
                            Unit tempBuilding = allUnits[goTo.owner][goTo.index];
                            moveUnit(id, (int)tempBuilding.x, (int)tempBuilding.y);
                        }
                    }
                    else
                    {
                        unitPtr goTo = gameData.findNearestBuilding(allUnits, temp, "lumber");
                        if (goTo.owner != -1) //we actually found a  building
                        {
                            Unit tempBuilding = allUnits[goTo.owner][goTo.index];
                            moveUnit(id, (int)tempBuilding.x, (int)tempBuilding.y);
                        }
                    }
                }
            }
            else
            {
                this.waitAndTryAgainG += waitTimer;
            }
        }