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); }
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"); }
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(); }