예제 #1
0
        public override void AI()
        {
            npc.TargetClosest();
            npc.timeLeft = NPC.activeTime;
            switch (stage)
            {
            case 0:
                Initialize();
                break;
            }
            Vector2 position   = npc.position - Main.screenPosition;
            Vector2 vecBetween = npc.Center - Main.player[npc.target].Center;
            float   polarAngle = DimensionBuilder.CalcAngleAlt((int)vecBetween.X, (int)vecBetween.Y);

            polarAngle -= (float)Math.PI;
            if (polarAngle < 0)
            {
                polarAngle += 2 * (float)Math.PI;
            }
            float rotation = (2 * (float)Math.PI) - polarAngle;

            //so rotation is what we want to get to
            rotation %= 2f * (float)Math.PI;
            if (Math.Abs(npc.rotation - rotation) > Math.PI)
            {
                npc.rotation += Math.Sign(npc.rotation - rotation) * ROT_SPEED * 4;
            }
            else if (Math.Abs(npc.rotation - rotation) > ROT_SPEED)
            {
                float sf = 4f * Math.Abs(npc.rotation - rotation) / (float)Math.PI;
                npc.rotation -= Math.Sign(npc.rotation - rotation) * ROT_SPEED * sf;
            }
            npc.rotation %= 2f * (float)Math.PI;
            base.AI();
        }
예제 #2
0
 public Dimension(Dimensions d) //Loading blank
 {
     dimension = d;
     data      = DimensionBuilder.GenerateCompressedEmptyDimension(Main.tile.GetLength(0), Main.tile.GetLength(1));
     chest     = new Chest[Main.maxChests];
     sign      = new Sign[Main.maxChests];
 }
예제 #3
0
 public Dimension(Dimensions d, TagCompound extraDat) //For current dimension
 {
     LoadExtraData(extraDat);
     data      = DimensionBuilder.GenerateCompressedEmptyDimension(Main.tile.GetLength(0), Main.tile.GetLength(1));
     chest     = new Chest[Main.maxChests];
     sign      = new Sign[Main.maxChests];
     dimension = d;
 }
예제 #4
0
        public void GivenDimension_WhenDeriving_ThenRequiredRelationsMustExist()
        {
            var builder = new DimensionBuilder(this.Session);

            builder.Build();

            Assert.True(this.Session.Derive(false).HasErrors);

            this.Session.Rollback();

            builder.WithName("name");
            builder.Build();

            Assert.False(this.Session.Derive(false).HasErrors);
        }
예제 #5
0
        public void GivenDimension_WhenDeriving_ThenRequiredRelationsMustExist()
        {
            var builder = new DimensionBuilder(this.DatabaseSession);
            builder.Build();

            Assert.IsTrue(this.DatabaseSession.Derive().HasErrors);

            this.DatabaseSession.Rollback();

            var unitOfMeasure = new UnitOfMeasureBuilder(this.DatabaseSession)
                .WithName("uom")
                .Build();

            builder.WithUnitOfMeasure(unitOfMeasure);
            builder.Build();

            Assert.IsFalse(this.DatabaseSession.Derive().HasErrors);
        }
예제 #6
0
        public void Generate(GenerationProgress progress)
        {
            switch (dimension)
            {
            /*
             * case Dimensions.Overworld:
             *  progress.Message = "Finishing up overworld";
             *  data = GetCompressedTileData(Main.tile);
             *  //basicTileData = GetCompressedBasicTileData(Main.tile);
             *  //extraTileData = GetExtraTileData(Main.tile);
             *  chest = Main.chest;
             *  sign = Main.sign;
             *  break;
             */
            case Dimensions.Jungle:
                progress.Message = "Generating the Jungle Dimension";
                DimensionData tilej = DimensionBuilder.GenerateJungleDimension(Main.tile.GetLength(0), Main.tile.GetLength(1));
                data           = GetCompressedTileData(tilej.tile);
                chest          = tilej.chest;
                sign           = tilej.sign;
                haveDiscovered = false;
                name           = jungNames[Main.rand.Next(0, jungNames.Length)];
                break;

            case Dimensions.Ice:
                progress.Message = "Generating the Ice Dimension";
                DimensionData tilei = DimensionBuilder.GenerateIceDimension(Main.tile.GetLength(0), Main.tile.GetLength(1));
                data           = GetCompressedTileData(tilei.tile);
                chest          = tilei.chest;
                sign           = tilei.sign;
                haveDiscovered = false;
                name           = iceNames[Main.rand.Next(0, iceNames.Length)];
                break;

            case Dimensions.Asteroid:

                progress.Message = "Generating the Asteroid Dimension";
                DimensionData tilea = DimensionBuilder.GenerateAsteroidDimension(Main.tile.GetLength(0), Main.tile.GetLength(1));
                data           = GetCompressedTileData(tilea.tile);
                chest          = tilea.chest;
                sign           = tilea.sign;
                haveDiscovered = false;
                name           = astNames[Main.rand.Next(0, astNames.Length)];
                break;

            case Dimensions.Overworld:
                progress.Message = "Finishing up the overworld";
                //(BasicTileData, ExtraTileData) data2 = DimensionBuilder.GenerateCompressedEmptyDimension(Main.tile.GetLength(0), Main.tile.GetLength(1));
                //basicTileData = data2.Item1;
                //extraTileData = data2.Item2;
                data           = DimensionBuilder.GenerateCompressedEmptyDimension(Main.tile.GetLength(0), Main.tile.GetLength(1));
                chest          = new Chest[Main.maxChests];
                sign           = new Sign[Main.maxChests];
                name           = Main.worldName;
                haveDiscovered = true;
                break;

            case Dimensions.Travel:
            default:
                name             = "---";
                haveDiscovered   = false;
                progress.Message = "Generating Empty Space";
                //(BasicTileData, ExtraTileData) data2 = DimensionBuilder.GenerateCompressedEmptyDimension(Main.tile.GetLength(0), Main.tile.GetLength(1));
                //basicTileData = data2.Item1;
                //extraTileData = data2.Item2;
                data  = DimensionBuilder.GenerateCompressedEmptyDimension(Main.tile.GetLength(0), Main.tile.GetLength(1));
                chest = new Chest[Main.maxChests];
                sign  = new Sign[Main.maxChests];
                break;
            }
        }