public static Mesh GetPatternMesh(WarriorPattern pattern, PatternFlags flags, Vector2 position, bool inverted = false) { List <Vector2> locations = pattern.GetLocationsForFlags(flags, inverted); int sizeX = GameData.CurrentBattle.Board.Width; Vector3[] vertices = new Vector3[locations.Count * 4]; int[] triangles = new int[locations.Count * 6]; Vector2[] uv = new Vector2[vertices.Length]; position = BoardUtils.BoardToWorldPosition(position); int count = 0; foreach (Vector2 location in locations) { int x = ((int)position.x + (int)location.x); //TODO int y = ((int)position.y - (int)location.y); //TODO if (!BoardUtils.IsInsideBoard(new Vector2(x, y))) { continue; } int vX = count * 4; vertices[vX] = new Vector3(x, y); vertices[vX + 1] = new Vector3(x + 1, y); vertices[vX + 2] = new Vector3(x + 1, y + 1); vertices[vX + 3] = new Vector3(x, y + 1); int tX = count * 6; triangles[tX] = vX; triangles[tX + 1] = vX + 1; triangles[tX + 2] = vX + 2; triangles[tX + 3] = vX; triangles[tX + 4] = vX + 2; triangles[tX + 5] = vX + 3; //TODO varies depending on the X float xOffset = (flags & PatternFlags.Attack) == PatternFlags.Attack ? 0.5f : 0.75f; uv[vX] = new Vector2(xOffset, 0); uv[vX + 1] = new Vector2(xOffset + 0.25f, 0); uv[vX + 2] = new Vector2(xOffset + 0.25f, 1); uv[vX + 3] = new Vector2(xOffset, 1); count++; } Mesh mesh = new Mesh(); mesh.vertices = vertices; mesh.triangles = triangles; mesh.uv = uv; mesh.RecalculateNormals(); return(mesh); }
public static GameObject GetVisualObject(this WarriorPattern pattern, PatternFlags flags, Vector2 referencePosition, bool inverted = false) { GameObject patternObject = new GameObject("_PATTERN_" + flags.ToString()); patternObject.transform.position = new Vector3(patternObject.transform.position.x, patternObject.transform.position.y, -5); //TODO MeshFilter meshFilter = (MeshFilter)patternObject.AddComponent(typeof(MeshFilter)); meshFilter.mesh = MeshGenerator.GetPatternMesh(pattern, flags, referencePosition, inverted); MeshRenderer renderer = patternObject.AddComponent(typeof(MeshRenderer)) as MeshRenderer; renderer.material.shader = Shader.Find("Sprites/Default"); Texture2D texture = (Texture2D)Resources.Load("Sprites/board"); renderer.material.mainTexture = texture; return(patternObject); }
public static void Load() { WarriorTypes = new Dictionary <string, WarriorType> (8); // holy knight WarriorType warrior = new WarriorType("holy_knight"); warrior.Name = "Holy Knight"; warrior.Attack = 3; warrior.HP = 16; WarriorPattern pattern = new WarriorPattern(); pattern.SetFlagsAt(-1, 0, PatternFlags.Movement); pattern.SetFlagsAt(1, 0, PatternFlags.Movement | PatternFlags.Attack); pattern.SetFlagsAt(0, -1, PatternFlags.Movement | PatternFlags.Attack); pattern.SetFlagsAt(0, 1, PatternFlags.Movement | PatternFlags.Attack); pattern.SetFlagsAt(1, -1, PatternFlags.Attack); pattern.SetFlagsAt(1, 1, PatternFlags.Attack); warrior.Pattern = pattern; WarriorTypes.Add(warrior.Identifier, warrior); // blood mage warrior = new WarriorType("blood_mage"); warrior.Name = "Blood Mage"; warrior.Attack = 4; warrior.HP = 8; pattern = new WarriorPattern(); pattern.SetFlagsAt(-1, 0, PatternFlags.Movement); pattern.SetFlagsAt(1, 0, PatternFlags.Movement | PatternFlags.Attack); pattern.SetFlagsAt(0, -1, PatternFlags.Movement); pattern.SetFlagsAt(0, 1, PatternFlags.Movement); pattern.SetFlagsAt(0, -2, PatternFlags.Attack); pattern.SetFlagsAt(0, 2, PatternFlags.Attack); pattern.SetFlagsAt(1, -1, PatternFlags.Attack); pattern.SetFlagsAt(1, 1, PatternFlags.Attack); pattern.SetFlagsAt(2, -1, PatternFlags.Attack); pattern.SetFlagsAt(2, 0, PatternFlags.Attack); pattern.SetFlagsAt(2, 1, PatternFlags.Attack); pattern.SetFlagsAt(2, -2, PatternFlags.Attack); pattern.SetFlagsAt(2, 2, PatternFlags.Attack); warrior.Pattern = pattern; WarriorTypes.Add(warrior.Identifier, warrior); // dark cleric warrior = new WarriorType("shadow_cleric"); warrior.Name = "Shadow Cleric"; warrior.Attack = 5; warrior.HP = 8; pattern = new WarriorPattern(); pattern.SetFlagsAt(-1, 0, PatternFlags.Attack); pattern.SetFlagsAt(1, 0, PatternFlags.Attack); pattern.SetFlagsAt(0, -1, PatternFlags.Attack); pattern.SetFlagsAt(0, 1, PatternFlags.Attack); pattern.SetFlagsAt(-1, -1, PatternFlags.Attack); pattern.SetFlagsAt(-1, 1, PatternFlags.Attack); pattern.SetFlagsAt(1, 1, PatternFlags.Attack); pattern.SetFlagsAt(1, -1, PatternFlags.Attack); pattern.SetFlagsAt(0, -2, PatternFlags.Movement); pattern.SetFlagsAt(0, 2, PatternFlags.Movement); pattern.SetFlagsAt(-2, -1, PatternFlags.Movement); pattern.SetFlagsAt(-2, 1, PatternFlags.Movement); pattern.SetFlagsAt(2, -1, PatternFlags.Movement); pattern.SetFlagsAt(2, 1, PatternFlags.Movement); warrior.Pattern = pattern; WarriorTypes.Add(warrior.Identifier, warrior); // ninja warrior = new WarriorType("ninja"); warrior.Name = "Ninja"; warrior.Attack = 3; warrior.HP = 9; pattern = new WarriorPattern(); pattern.SetFlagsAt(0, -1, PatternFlags.Movement | PatternFlags.Attack); pattern.SetFlagsAt(0, 1, PatternFlags.Movement | PatternFlags.Attack); pattern.SetFlagsAt(0, -2, PatternFlags.Movement); pattern.SetFlagsAt(0, 2, PatternFlags.Movement); pattern.SetFlagsAt(-2, -2, PatternFlags.Movement); pattern.SetFlagsAt(-2, 2, PatternFlags.Movement); pattern.SetFlagsAt(2, -2, PatternFlags.Movement | PatternFlags.Attack); pattern.SetFlagsAt(2, 2, PatternFlags.Movement | PatternFlags.Attack); pattern.SetFlagsAt(-1, 0, PatternFlags.Attack); pattern.SetFlagsAt(1, 0, PatternFlags.Attack); pattern.SetFlagsAt(2, 0, PatternFlags.Attack); warrior.Pattern = pattern; WarriorTypes.Add(warrior.Identifier, warrior); // barbarian warrior = new WarriorType("barbarian"); warrior.Name = "Barbarian"; warrior.Attack = 4; warrior.HP = 12; pattern = new WarriorPattern(); pattern.SetFlagsAt(-1, 0, PatternFlags.Movement); pattern.SetFlagsAt(2, 0, PatternFlags.Movement); pattern.SetFlagsAt(0, -2, PatternFlags.Movement); pattern.SetFlagsAt(0, 2, PatternFlags.Movement); pattern.SetFlagsAt(0, -1, PatternFlags.Attack); pattern.SetFlagsAt(0, 1, PatternFlags.Attack); pattern.SetFlagsAt(1, 0, PatternFlags.Attack); pattern.SetFlagsAt(1, -1, PatternFlags.Attack); pattern.SetFlagsAt(1, 1, PatternFlags.Attack); pattern.SetFlagsAt(-1, -1, PatternFlags.Attack); pattern.SetFlagsAt(-1, 1, PatternFlags.Attack); warrior.Pattern = pattern; WarriorTypes.Add(warrior.Identifier, warrior); // wild hunter warrior = new WarriorType("wild_hunter"); warrior.Name = "Wild Hunter"; warrior.Attack = 3; warrior.HP = 10; pattern = new WarriorPattern(); pattern.SetFlagsAt(-2, 0, PatternFlags.Movement); pattern.SetFlagsAt(1, 0, PatternFlags.Movement); pattern.SetFlagsAt(0, -1, PatternFlags.Movement); pattern.SetFlagsAt(0, 1, PatternFlags.Movement); pattern.SetFlagsAt(0, -2, PatternFlags.Attack); pattern.SetFlagsAt(1, -2, PatternFlags.Attack); pattern.SetFlagsAt(2, -2, PatternFlags.Attack); pattern.SetFlagsAt(2, -1, PatternFlags.Attack); pattern.SetFlagsAt(2, 0, PatternFlags.Attack); pattern.SetFlagsAt(2, 1, PatternFlags.Attack); pattern.SetFlagsAt(2, 2, PatternFlags.Attack); pattern.SetFlagsAt(1, 2, PatternFlags.Attack); pattern.SetFlagsAt(0, 2, PatternFlags.Attack); warrior.Pattern = pattern; WarriorTypes.Add(warrior.Identifier, warrior); // sorcerer warrior = new WarriorType("sorcerer"); warrior.Name = "Sorcerer"; warrior.Attack = 4; warrior.HP = 8; pattern = new WarriorPattern(); pattern.SetFlagsAt(-1, 0, PatternFlags.Movement | PatternFlags.Attack); pattern.SetFlagsAt(1, 0, PatternFlags.Movement | PatternFlags.Attack); pattern.SetFlagsAt(0, -1, PatternFlags.Movement | PatternFlags.Attack); pattern.SetFlagsAt(0, 1, PatternFlags.Movement | PatternFlags.Attack); pattern.SetFlagsAt(0, -2, PatternFlags.Attack); pattern.SetFlagsAt(0, 2, PatternFlags.Attack); pattern.SetFlagsAt(-2, 0, PatternFlags.Attack); pattern.SetFlagsAt(2, 0, PatternFlags.Attack); warrior.Pattern = pattern; WarriorTypes.Add(warrior.Identifier, warrior); // assassin warrior = new WarriorType("assassin"); warrior.Name = "Assassin"; warrior.Attack = 8; warrior.HP = 6; pattern = new WarriorPattern(); pattern.SetFlagsAt(0, -1, PatternFlags.Movement); pattern.SetFlagsAt(0, 1, PatternFlags.Movement); pattern.SetFlagsAt(-2, 0, PatternFlags.Movement); pattern.SetFlagsAt(2, 0, PatternFlags.Movement); pattern.SetFlagsAt(2, -1, PatternFlags.Movement); pattern.SetFlagsAt(2, -2, PatternFlags.Movement); pattern.SetFlagsAt(2, 1, PatternFlags.Movement); pattern.SetFlagsAt(2, 2, PatternFlags.Movement); pattern.SetFlagsAt(1, 0, PatternFlags.Attack); warrior.Pattern = pattern; WarriorTypes.Add(warrior.Identifier, warrior); Loaded = true; }