Esempio n. 1
0
        public static void RunChunkedCheckersScenario(string outputFile = "C:\\Users\\Justin Murray\\Desktop\\chunks.png")
        {
            ConstantField <float> half = new ConstantField <float>(10, 10, 0.5f);
            ConstantField <float> one  = new ConstantField <float>(10, 10, 1f);

            ChunkField <float> chunks = new ChunkField <float>(100, 100);

            for (int y = 0; y < chunks.Height; y += half.Height)
            {
                for (int x = 0; x < chunks.Width; x += half.Width)
                {
                    chunks.TryAddChunk(x, y, (x + y) / 10 % 2 == 0 ? half : one);
                }
            }

            Utils.OutputField(chunks, new Bitmap(chunks.Width, chunks.Height), outputFile);
        }
Esempio n. 2
0
        public static void RunStreamedMapCombinerScenario(int cacheSize = 16)
        {
            ImageServer server = new ImageServer();

            string[] fileNames = Directory.GetFiles("C:\\Users\\Justin Murray\\Desktop\\egwethoon\\", "submap*.png");
            foreach (string fileName in fileNames)
            {
                server.AddImage(fileName);
            }

            StreamedChunkedPreciseHeightField streamedField = new StreamedChunkedPreciseHeightField(512 * 256 / 32, 512 * 256 / 32, cacheSize,
                                                                                                    (x, y) =>
            {
                var chunkToLoad = server.TryGetPathForPoint(x, y);
                if (chunkToLoad.path != null)
                {
                    return(new ChunkField <float> .Chunk(chunkToLoad.x, chunkToLoad.y, new FieldFromPreciseBitmap(new Bitmap(chunkToLoad.path))));
                }
                return(null);
            });

            Field2d <float> output = new Field2d <float>(new ConstantField <float>(streamedField.Width, streamedField.Height, 0f));

            foreach (var chunkToLoad in server.GetImages())
            {
                var chunk = new ChunkField <float> .Chunk(chunkToLoad.x, chunkToLoad.y, new FieldFromPreciseBitmap(new Bitmap(chunkToLoad.path)));

                for (int y = 0; y < chunk.Field.Height; y++)
                {
                    for (int x = 0; x < chunk.Field.Width; x++)
                    {
                        output[y + chunk.MinPoint.Y / 2, x + chunk.MinPoint.X / 2] = chunk.Field[y, x];
                    }
                }
            }
            output = new BlurredField(output, 1f);

            Bitmap bmp = new Bitmap(output.Width, output.Height);

            for (int y = 0; y < output.Height; y++)
            {
                for (int x = 0; x < output.Width; x++)
                {
                    float val = output[y, x];
                    if (val > 2250f)
                    {
                        bmp.SetPixel(x, y, Lerp(Color.Gray, Color.White, (val - 2250f) / 1750f));
                    }
                    else if (val > 1250f)
                    {
                        bmp.SetPixel(x, y, Lerp(Color.Red, Color.Gray, (val - 1250f) / 1000f));
                    }
                    else if (val > 750f)
                    {
                        bmp.SetPixel(x, y, Lerp(Color.Yellow, Color.Red, (val - 750f) / 500f));
                    }
                    else if (val > 250f)
                    {
                        bmp.SetPixel(x, y, Lerp(Color.Green, Color.Yellow, (val - 250f) / 500f));
                    }
                    else if (val > 5f)
                    {
                        bmp.SetPixel(x, y, Lerp(Color.DarkGreen, Color.Green, (val - 5f) / 245f));
                    }
                    else
                    {
                        bmp.SetPixel(x, y, Color.Aqua);
                    }
                }
            }

            bmp.Save("C:\\Users\\Justin Murray\\Desktop\\egwethoon\\bigmap.png");
        }
Esempio n. 3
0
        private void Start()
        {
            // FieldManager.FieldData temp = new FieldManager.FieldData(16, 16,
            // "WL WL WL WL WL WL WL WL WL WL WL WL WL WL WL WL \n" +
            // "WL PW HL PW PW FR FR FR FR FR SL SL SL LK WL WL \n" +
            // "WL PW PW HL PW FR FR FR FR FR SL SL SL LK FR WL \n" +
            // "WL FR HL FR FR FR FR FR FR FR FR FR FR FR FR WL \n" +
            // "WL FR FR FR FR FR FR FR FR FR FR FR FR FR FR WL \n" +
            // "WL FR FR FR FR FR FR FR FR FR FR FR FR FR FR WL \n" +
            // "WL TN TN TN TN TN TN TN TN TN TN TN TN TN TN WL \n" +
            // "WL FR FR FR FR FR FR FR FR FR FR FR FR FR FR WL \n" +
            // "WL FR FR FR FR FR WL WL FR FR FR FR FR FR FR WL \n" +
            // "WL FR FR FR FR FR WL WL FR FR FR FR FR FR FR WL \n" +
            // "WL FR FR FR FR FR FR FR FR FR FR FR FR FR FR WL \n" +
            // "WL FR FR FR FR FR FR FR FR FR FR FR FR FR FR WL \n" +
            // "WL FR FR FR FR FR FR FR FR FR FR FR FR FR FR WL \n" +
            // "WL US US FR FR DS DS FR FR FR FR FR FR FR FR WL \n" +
            // "WL US US FR FR DS DS FR FR FR FR FR FR FR FR WL \n" +
            // "WL WL WL WL WL WL WL WL WL WL WL WL WL WL WL WL ");

            //FieldManager.FieldData temp1 = Common.Data.LoadFieldData();
            // FieldManager.FieldData temp2 = Common.Data.LoadFieldData();
            //FieldManager.FieldData temp = FieldManager.instance.Merge2FieldData(temp1, temp2, new Vector2Int(temp1.width,temp1.height));

            // 청크필드 매니저 선언
            ChunkField chunk = new ChunkField();

            // 청크 맵 생성
            FieldManager.instance.InitField(chunk.GenerateChunkMap(map_size: 3, isAttacked: false));

            // 테스트 파티 생성 (없을시)
            if (GameManager.PartyUnits.Count == 0)
            {
                GameManager.PartyUnits.Add(new Unit(UnitAlliance.Party, UnitSpecies.Human, 2));
                GameManager.PartyUnits.Add(new Unit(UnitAlliance.Party, UnitSpecies.Human, 2));
                GameManager.PartyUnits.Add(new Unit(UnitAlliance.Party, UnitSpecies.Human, 2));
                GameManager.PartyUnits.Add(new Unit(UnitAlliance.Party, UnitSpecies.Human, 2));
            }

            // 게임 시작시 재사용대기시간 초기화
            GameManager.PartyUnits.ForEach(u => u.Skills.ForEach(s => s.WaitingTime = 0));

            // 파티 유닛 최초 소환
            BattleView.SummonPartyUnits();

            // 적 생성
            List <Unit> enemies = new List <Unit>();

            enemies.Add(new Unit(UnitAlliance.Enemy, UnitSpecies.Human, 1));
            enemies.Add(new Unit(UnitAlliance.Enemy, UnitSpecies.Human, 1));
            enemies.Add(new Unit(UnitAlliance.Enemy, UnitSpecies.Human, 1));
            enemies.Add(new Unit(UnitAlliance.Enemy, UnitSpecies.Human, 1));
            // enemies.Add(new Unit(UnitAlliance.Enemy, UnitSpecies.Human, 1));
            // enemies.Add(new Unit(UnitAlliance.Enemy, UnitSpecies.Human, 1));
            // enemies.Add(new Unit(UnitAlliance.Enemy, UnitSpecies.Human, 1));
            // enemies.Add(new Unit(UnitAlliance.Enemy, UnitSpecies.Human, 1));
            // enemies.Add(new Unit(UnitAlliance.Enemy, UnitSpecies.Human, 1));
            enemies.Add(new Unit(UnitAlliance.Enemy, UnitSpecies.Human, 1));

            // 적 소환 타일 계산
            List <Tile> enemyTiles = FieldManager.GetBlankFloorTiles(enemies.Count);

            // 적 소환
            for (int i = 0; i < enemies.Count; i++)
            {
                Common.Command.Summon(enemies[i], enemyTiles[i].position);
            }

            // 배틀 설정
            BattleController.SetBattleMode(true);
            BattleView.TurnEndButton.gameObject.SetActive(false);
            BattleController.instance.NextTurnStart();

            // 모든 처리가 끝난 뒤에 애니메이션 재생 가능
            // FadeOutTextView.PlayText();
        }