Example #1
0
        public void InstantiateGenerators()
        {
            Generator generator1 = new CircleGenerator();

            generator1.SetPowerLevel(5);

            Generator generator2 = new CircleGenerator();

            generator2.SetPowerLevel(3);

            Generator generator3 = new TriangleGenerator();

            generator3.SetPowerLevel(0);

            Generator generator4 = new OctagonGenerator();

            generator4.SetPowerLevel(10);


            generators = new List <Generator>
            {
                generator1,
                generator2,
                generator3,
                generator4,
            };
        }
Example #2
0
        public void InstantiateGenerators()
        {
            Generator generator1 = new CircleGenerator();

            generator1.SetPowerLevel(4);

            Generator generator2 = new TriangleGenerator();

            generator2.SetPowerLevel(5);

            Generator generator3 = new TriangleGenerator();

            generator3.SetPowerLevel(2);

            Generator generator4 = new RectangleGenerator();

            generator4.SetPowerLevel(2);

            Generator generator5 = new RectangleGenerator();

            generator5.SetPowerLevel(5);

            generators = new List <Generator>()
            {
                generator1,
                generator2,
                generator3,
                generator4,
                generator5,
            };
        }
Example #3
0
        public void InstantiateGenerators()
        {
            //Changed to Max Level of 2
            Generator generator1 = new CircleGenerator();

            generator1.SetPowerLevel(2);

            Generator generator2 = new CircleGenerator();

            generator2.SetPowerLevel(0);

            //Changed to 2
            Generator generator3 = new TriangleGenerator();

            generator3.SetPowerLevel(2);

            //Changed to Max Level / 2 = 4
            Generator generator4 = new OctagonGenerator();

            generator4.SetPowerLevel(4);


            generators = new List <Generator>
            {
                generator1,
                generator2,
                generator3,
                generator4,
            };
        }
        public GeneratorWindow(GameCanvas parent, Editor editor, Vector2d pos) : base(parent, null)
        {
            Title = $"Line Generator";
            SetSize(450, 500);
            DisableResizing();

            /*_typecontainer = new CollapsibleList(this)
             * {
             *  Dock = Dock.Left,
             *  AutoSizeToContents = false,
             *  Width = 100,
             *  Margin = new Margin(0, 0, 5, 0)
             * };*/

            MakeModal(true);

            if (!initialised)
            {
                gen_Circle       = new CircleGenerator("Circle Generator", 10.0, pos, 50, false);
                gen_10pc         = new TenPCGenerator("10PC Generator", new Vector2d(1.0, 1.0), 0.0);
                CurrentGenerator = GeneratorType.TenPC;
            }

            Setup();

            initialised = true;
        }
Example #5
0
        protected override bool CheckIntern(BaseReqArgument bra)
        {
            bra.NeedMapException();

            if (bra.sett == "near")
            {
                foreach (var pos in CircleGenerator.Gen(bra.pos, 1))
                {
                    if (S.Players().OverlayHighest("frontier", pos) == bra.player)
                    {
                        return(true);
                    }
                }
                return(false);
            }

            var p = S.Players().OverlayHighest("frontier", bra.pos);

            switch (bra.sett)
            {
            case "own":
                return(p == bra.player);

            case "enemy":
                return(p != null && p != bra.player);

            case "none":
                return(p == null);

            default:
                throw new ArgumentException(bra.sett + " is unknown.");
            }
        }
Example #6
0
        public void InstantiateGenerators()
        {
            //Stegosaurus has 14 stock threshold
            //Total Power / Perimeter = Stock Threshold
            //Total Power = 14 * 10000 = 140000

            Generator generator1 = new CircleGenerator();

            generator1.SetPowerLevel(2); // 50000 * 2 = 100000

            Generator generator2 = new CircleGenerator();

            generator2.SetPowerLevel(0); // 50000 * 0

            Generator generator3 = new TriangleGenerator();

            generator3.SetPowerLevel(3); // 15000 * 3 = 45000

            Generator generator4 = new OctagonGenerator();

            generator4.SetPowerLevel(0);


            generators = new List <Generator>
            {
                generator1,
                generator2,
                generator3,
                generator4,
            };
        }
Example #7
0
        public override void PreRun()
        {
            //load spell
            Spell spell = L.b.spells[action.data["waiting"]];

            //calc size
            var points = CircleGenerator.Gen(initPos, mapElementInfo.CalcVisibleRange(initPos));

            //collect move
            foreach (var pos in points)
            {
                //check them
                if (!player.fog.Visible(pos))
                {
                    continue;
                }

                if (!spell.reqTarget.Check(mapElementInfo, pos))
                {
                    continue;
                }

                Color(pos, 0);
            }
        }
Example #8
0
        private bool FindPos(Player player, UnitInfo unit, NVector pos, ActionHolder holder)
        {
            if (holder.data.ContainsKey("pos"))
            {
                return(true);
            }
            DataUnit dUnit = unit.dataUnit;

            //find next field
            foreach (var p in CircleGenerator.Gen(pos, unit.data.apMax / 5 * 2))
            {
                if (AddGoal(unit, holder, p))
                {
                    return(true);
                }
            }

            //has nothing?
            //search the whole map
            for (int x = 0; x < GameMgmt.Get().data.map.width; x++)
            {
                for (int y = 0; y < GameMgmt.Get().data.map.height; y++)
                {
                    if (AddGoal(unit, holder, new NVector(x, y, pos.level)))
                    {
                        return(true);
                    }
                }
            }

            //has a field?
            unit.SetLastInfo(S.T("actionRepeatErrorDestination", holder.DataAction().Name()));
            unit.SetWaitingAction(null);
            return(false);
        }
Example #9
0
        public void InstantiateGenerators()
        {
            Generator generator1 = new CircleGenerator();

            generator1.SetPowerLevel(5);

            Generator generator2 = new CircleGenerator();

            generator2.SetPowerLevel(1);

            Generator generator3 = new TriangleGenerator();

            generator3.SetPowerLevel(0);

            // Changed to 0 to meet power threshold

            Generator generator4 = new TriangleGenerator();

            generator4.SetPowerLevel(4);

            Generator generator5 = new TriangleGenerator();

            generator5.SetPowerLevel(1);

            Generator generator6 = new RectangleGenerator();

            generator6.SetPowerLevel(1);

            Generator generator7 = new RectangleGenerator();

            generator7.SetPowerLevel(5);

            Generator generator8 = new OctagonGenerator();

            generator8.SetPowerLevel(8);

            Generator generator9 = new OctagonGenerator();

            generator9.SetPowerLevel(1);

            Generator generator10 = new OctagonGenerator();

            generator10.SetPowerLevel(1);


            generators = new List <Generator>
            {
                generator1,
                generator2,
                generator3,
                generator4,
                generator5,
                generator6,
                generator7,
                generator8,
                generator9,
                generator10
            };
        }
Example #10
0
 // Use this for initialization
 void Start()
 {
     controller       = GameObject.FindGameObjectWithTag("GameController").GetComponent <MainGenerator> ();
     anim             = this.GetComponent <Animator> ();
     gen              = GameObject.Find("Spawner").GetComponent <CircleGenerator> ();
     rb               = this.GetComponent <Rigidbody2D> ();
     generatedEnemies = new List <GameObject> ();
 }
Example #11
0
        public void Clear(NVector pos, int radius)
        {
            //Debug.Log($"Clear {x},{y} for {radius}");

            foreach (var p in CircleGenerator.Gen(pos, radius))
            {
                Clear(p);
            }
        }
Example #12
0
        public GeneratorOptions <T> Circle <TProperty>(
            Expression <Func <T, TProperty> > propertyExpression,
            params TProperty[] list)
        {
            var generator = new CircleGenerator <TProperty>(list);

            AddConvention(propertyExpression, () => generator.GetRandomValue());
            return(this);
        }
Example #13
0
        public void InstantiateGenerators()
        {
            Generator generator1 = new CircleGenerator();

            generator1.SetPowerLevel(2);

            Generator generator2 = new CircleGenerator();

            generator2.SetPowerLevel(2);

            Generator generator3 = new TriangleGenerator();

            generator3.SetPowerLevel(2);

            Generator generator4 = new TriangleGenerator();

            generator4.SetPowerLevel(3);

            Generator generator5 = new TriangleGenerator();

            generator5.SetPowerLevel(1);

            Generator generator6 = new RectangleGenerator();

            generator6.SetPowerLevel(5);

            Generator generator7 = new RectangleGenerator();

            generator7.SetPowerLevel(5);

            Generator generator8 = new OctagonGenerator();

            generator8.SetPowerLevel(7);

            Generator generator9 = new OctagonGenerator();

            generator9.SetPowerLevel(2);

            Generator generator10 = new OctagonGenerator();

            generator10.SetPowerLevel(1);


            generators = new List <Generator>
            {
                generator1,
                generator2,
                generator3,
                generator4,
                generator5,
                generator6,
                generator7,
                generator8,
                generator9,
                generator10
            };
        }
Example #14
0
        private List <Line> CreateCircle(string[] commandArgs, Position position, List <SavedPosition> savedPositions,
                                         List <Line> lines)
        {
            IGenerator     generator;
            ICircleOptions circle = new Options();

            circle.Fill = true;
            switch (commandArgs.Length)
            {
            // radius height block [position]
            case 4:
                circle.Radius = commandArgs[1].ToInt();
                circle.Height = commandArgs[2].ToInt();
                circle.Block  = commandArgs[3];

                circle.CenterX = position.X;
                circle.CenterY = position.Y;
                circle.CenterZ = position.Z;
                break;

            // radius height block position
            case 5:
                circle.Radius = commandArgs[1].ToInt();
                circle.Height = commandArgs[2].ToInt();
                circle.Block  = commandArgs[3];
                var center = savedPositions.Single(a => a.Name.Equals(commandArgs[4])).Position;
                circle.CenterX = center.X;
                circle.CenterY = center.Y;
                circle.CenterZ = center.Z;
                break;

            // radius height block x y z
            case 7:
                circle.Radius  = commandArgs[1].ToInt();
                circle.Height  = commandArgs[2].ToInt();
                circle.Block   = commandArgs[3];
                circle.CenterX = commandArgs[4].ToInt();
                circle.CenterY = commandArgs[5].ToInt();
                circle.CenterZ = commandArgs[6].ToInt();
                break;

            default:
                var help = "create circle radius height block - center at current position\n" +
                           "create circle radius height block [named position]\n" +
                           "create circle radius height block x y z";
                _minecraft.Status(help);

                return(new List <Line>());

                break;
            }
            generator = new CircleGenerator();
            lines     = generator.Run((Options)circle);
            return(lines);
        }
Example #15
0
        private List <Line> CreateRing(string[] commandArgs, Position position, List <SavedPosition> savedPositions,
                                       List <Line> lines)
        {
            IGenerator     generator;
            ICircleOptions ring = new Options();

            ring.Fill = false;
            switch (commandArgs.Length)
            {
            // radius height block [position]
            case 4:
                ring.Block   = commandArgs[3];
                ring.Radius  = commandArgs[1].ToInt();
                ring.Height  = commandArgs[2].ToInt();
                ring.CenterX = position.X;
                ring.CenterY = position.Y;
                ring.CenterZ = position.Z;
                break;

            // radius height block position
            case 5:
                ring.Block = commandArgs[3];
                var center = savedPositions.Single(a => a.Name.Equals(commandArgs[4])).Position;
                ring.Radius  = commandArgs[1].ToInt();
                ring.Height  = commandArgs[2].ToInt();
                ring.CenterX = center.X;

                ring.CenterY = center.Y;
                ring.CenterZ = center.Z;
                break;

            // radius height block x y z
            case 7:
                ring.Block   = commandArgs[3];
                ring.Radius  = commandArgs[1].ToInt();
                ring.Height  = commandArgs[2].ToInt();
                ring.CenterX = commandArgs[4].ToInt();
                ring.CenterY = commandArgs[5].ToInt();
                ring.CenterZ = commandArgs[6].ToInt();
                break;

            default:
                _minecraft.Status("\ncreate ring syntax\n" +
                                  "create ring radius height block - current position\n" +
                                  "create ring radius height block [named position]\n" +
                                  "create ring radius height block x y z");
                return(new List <Line>());
            }
            generator = new CircleGenerator();
            lines     = generator.Run((Options)ring);
            return(lines);
        }
Example #16
0
        public override void Develop(Player player)
        {
            //get town
            var pos  = S.Towns().GetByPlayer(player.id)[0].pos;
            var list = CircleGenerator.Gen(pos, 20);

            foreach (var p in list)
            {
                if (S.Unit().Free(p))
                {
                    GameMgmt.Get().unit.Create(player.id, "christkind", p).FinishConstruct();
                    return;
                }
            }
        }
Example #17
0
        public override void FinishConstruct()
        {
            base.FinishConstruct();
            UpdateConnectedImage();

            //add border
            Player().overlay.Add("frontier", CircleGenerator.Gen(Pos(), baseData.visibilityRange), 1);
            Town().overlay.Add("boundary", CircleGenerator.Gen(Pos(), baseData.visibilityRange), 1);

            //add worker
            if (dataBuilding.worker > 0)
            {
                Town().AddRes(C.Inhabitant, (int)Math.Ceiling(dataBuilding.worker / 4f), ResType.Gift);
            }
        }
    protected void Circle(CircleGenerator circle)
    {
        var kernel = compute.FindKernel("Circle");

        compute.SetMatrix("_Transform", transform.localToWorldMatrix);
        compute.SetFloat("_DT", Time.deltaTime);

        var center = transform.InverseTransformPoint(circle.transform.position);

        compute.SetVector("_CircleCenter", center);
        var mag = transform.localScale.magnitude;

        compute.SetFloat("_CircleRadius", circle.Radius / mag);
        compute.SetFloat("_CircleWidth", circle.Width / mag);

        KernelGrids(kernel);
    }
        private static List <Line> CreateCircle(IMinecraftCommandService commandService, string[] commandArgs,
                                                Position position, List <SavedPosition> savedPositions)
        {
            ICircleOptions circle = new Options {
                Fill = true
            };
            var location = position;

            switch (commandArgs.Length)
            {
            // radius height(Y) block [position]
            case 4:
                circle.Radius = commandArgs[1].ToInt();
                circle.Height = commandArgs[2].ToInt();
                circle.Block  = commandArgs[3];
                break;


            case 5:     // radius height(Y) block savedposition
            case 7:     // radius height(Y) block x y z
                circle.Radius = commandArgs[1].ToInt();
                circle.Height = commandArgs[2].ToInt();
                circle.Block  = commandArgs[3];
                location      = location.GetAbsolutePosition(commandArgs.Skip(4).Take(3), savedPositions);
                break;

            default:
                var help = "\nCREATE CIRCLE\n" +
                           "create circle radius height(Y) block - center at current position\n" +
                           "create circle radius height(Y) block [named position]\n" +
                           "create circle radius height(Y) block x y z";
                commandService.Status(help);

                return(new List <Line>());
            }

            circle.Start = location.ToPoint();
            IGenerator generator = new CircleGenerator();

            return(generator.Run((Options)circle));
        }
Example #20
0
        /// <summary>
        /// Queues up a wave of enemies per player on a circle around the screen. If not player specific, there
        /// will be 1 CircleGenerator with NumberOfPlayers groups, if it is player specific, there will be one
        /// group from four separate CircleGenerators, with enemies of different players being different sizes in the
        /// same positions.
        /// </summary>
        /// <param name="enemyType"> The type of enemy to spawn.</param>
        /// <param name="playerSpecifc">If true, each spawn can only be damaged by the player who shares a
        /// colour with it.</param>
        void CirclesWave(EnemyType enemyType, bool playerSpecifc)
        {
            ICollection <IGenerator> wave;
            CircleGenerator          g;

            if (!playerSpecifc)
            {
                wave                    = new LinkedList <IGenerator>();
                g                       = new CircleGenerator(model.NumberOfPlayers);
                g.EnemyHealth           = 1 + LinearDifficulty(5, 0);
                g.EnemySize             = 20;
                g.EnemySizeVariance     = LinearDifficulty(5, 10);
                g.EnemyType             = enemyType;
                g.Frequency             = model.Music.ClicksPerBeat / 2;
                g.GroupSize             = 2 + LinearDifficulty(8, 10);
                g.MultiplayerAdjustment = 0;
                wave.Add(g);
                waves.Enqueue(wave);
            }
            else
            {
                foreach (MainGun p in model.ActivePlayers)
                {
                    wave                    = new LinkedList <IGenerator>();
                    g                       = new CircleGenerator(1);
                    g.EnemyHealth           = 1 + LinearDifficulty(5, 0);
                    g.EnemySize             = 15 + 2 * p.PlayerId;
                    g.EnemySizeVariance     = LinearDifficulty(5, 10);
                    g.EnemyType             = enemyType;
                    g.Frequency             = model.Music.ClicksPerBeat;
                    g.PlayerSpecific        = true;
                    g.TargetPlayer          = p.PlayerId;
                    g.GroupSize             = 2 + LinearDifficulty(15, 5);
                    g.MultiplayerAdjustment = 0;
                    wave.Add(g);
                    waves.Enqueue(wave);
                }
            }
        }
Example #21
0
        public void InstantiateGenerators()
        {
            //Triceratops has 16 stock threshold
            //Total Power / Perimeter = Stock Threshold
            //Total Power = 16 * 12000 = 192000
            //Oh look, 192000 is pretty close to 200000... I wonder how I can reach that easily.
            //This one uses the neat Floor(Total Power / Perimeter) to reach threshold.


            Generator generator1 = new CircleGenerator();

            generator1.SetPowerLevel(2); // 50000 * 2 = 100000

            Generator generator2 = new TriangleGenerator();

            generator2.SetPowerLevel(2); // 15000 * 2 = 30000

            Generator generator3 = new TriangleGenerator();

            generator3.SetPowerLevel(2); // 15000 * 2 = 30000

            Generator generator4 = new RectangleGenerator();

            generator4.SetPowerLevel(1); // 10000 * 2 * 1 = 20000

            Generator generator5 = new RectangleGenerator();

            generator5.SetPowerLevel(1); // 10000 * 2 * 1 = 20000

            generators = new List <Generator>()
            {
                generator1,
                generator2,
                generator3,
                generator4,
                generator5,
            };
        }
Example #22
0
        /// <summary>
        /// Destroy it
        /// </summary>
        public override void Kill()
        {
            //todo get ress back

            //remove border
            Player().overlay.Add("frontier", CircleGenerator.Gen(Pos(), baseData.visibilityRange), -1);
            Town().overlay.Add("boundary", CircleGenerator.Gen(Pos(), baseData.visibilityRange), -1);

            GameMgmt.Get().data.buildings.Remove(data);
            GameMgmt.Get().building.buildings.Remove(this);
            L.b.animations.Create("explosion", Pos());

            Destroy(gameObject);
            Debug.Log($"Kill building {name} at {Pos()}");

            //has modi?
            if (dataBuilding.modi.Count > 0)
            {
                S.Map().PathFinding(Pos().level).ResetAll();
            }

            //reset images?
            UpdateConnectedImage();
        }
Example #23
0
        public void InstantiateGenerators()
        {
            //T-Rex has 20 stock threshold
            //Total Power / Perimeter = T-Rex Stock Threshold
            //Total Power = 20 * 15000 = 300000

            //Circle Generator maximum is 2
            Generator generator1 = new CircleGenerator();

            generator1.SetPowerLevel(2); // 50000 * 2 = 100000

            Generator generator2 = new CircleGenerator();

            generator2.SetPowerLevel(2); // 50000 * 2 = 100000

            //Triangle Generator Max level is 3
            Generator generator3 = new TriangleGenerator();

            generator3.SetPowerLevel(2); // 15000 * 2  // These work well.

            Generator generator4 = new TriangleGenerator();

            generator4.SetPowerLevel(2); // 15000 * 2

            Generator generator5 = new TriangleGenerator();

            generator5.SetPowerLevel(0); // 15000 * 0

            Generator generator6 = new RectangleGenerator();

            generator6.SetPowerLevel(1); // 10000 * 2 * 1 = 20000

            Generator generator7 = new RectangleGenerator();

            generator7.SetPowerLevel(1); // 10000 * 2 * 1 = 20000

            //8 Max
            Generator generator8 = new OctagonGenerator();

            generator8.SetPowerLevel(0); // 2000 * 2 * 0 = 0

            Generator generator9 = new OctagonGenerator();

            generator9.SetPowerLevel(0); // 2000 * 0 = 0

            Generator generator10 = new OctagonGenerator();

            generator10.SetPowerLevel(0); // 2000 * 0 = 0


            generators = new List <Generator>
            {
                generator1,
                generator2,
                generator3,
                generator4,
                generator5,
                generator6,
                generator7,
                generator8,
                generator9,
                generator10
            };
        }
Example #24
0
        /// <summary>
        /// Chooses a random generator type and enemy type per player and queues them.
        /// </summary>
        /// <param name="useAllSides">False if only each player's own side should be used to spawn, true if
        /// there should be a chance of using a random side.</param>
        /// <param name="playerSpecifc">If true, each spawn can only be damaged by the player who shares a
        /// colour with it.</param>
        void RandomWave(bool useAllSides, bool playerSpecifc)
        {
            ICollection <IGenerator> wave = new LinkedList <IGenerator>();
            AbstractGenerator        g;

            foreach (MainGun p in model.ActivePlayers)
            {
                int side = p.PlayerId;
                // If useAllSides, sometimes choose a different side.
                if (useAllSides && random.Next(2) == 0)
                {
                    side = random.Next(0, 3);
                }
                //Choose the type of generator.
                int genType = random.Next(3);

                switch (genType)
                {
                case 0: g                   = new CircleGenerator(1);
                    g.GroupSize             = 20;
                    g.MultiplayerAdjustment = 1;
                    System.Console.WriteLine(0);
                    break;

                case 1: g = new PointGenerator(PointGenerator.PointOnSide(side, 20), 3 + LinearDifficulty(10, 12));
                    System.Console.WriteLine(1);
                    break;

                case 2: g                   = new SideGenerator(side, 1);
                    g.GroupSize             = 20;
                    g.MultiplayerAdjustment = 1;
                    System.Console.WriteLine(2);
                    break;

                default: throw new InvalidOperationException();
                }

                //Choose the type of enemy.
                int enemyType = random.Next(3);
                switch (enemyType)
                {
                case 0:
                    g.EnemyType = EnemyType.Regular;
                    break;

                case 1:
                    g.EnemyType = EnemyType.Spiral;
                    break;

                case 2:
                    g.EnemyType = EnemyType.Wave;
                    break;

                default: throw new InvalidOperationException();
                }

                g.EnemyHealth       = 1 + LinearDifficulty(5, 0);
                g.EnemySize         = 20;
                g.EnemySizeVariance = LinearDifficulty(5, 10);
                g.Frequency         = model.Music.ClicksPerBeat;
                if (playerSpecifc)
                {
                    g.PlayerSpecific = true;
                }

                wave.Add(g);
            }

            waves.Enqueue(wave);
        }
Example #25
0
        private void circleToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var ph = new CircleGenerator();

            dataModel.AddItem(ph);
        }