Beispiel #1
0
    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);
    }
Beispiel #2
0
    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);
    }
Beispiel #3
0
    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;
    }