26.03.2014

Некоторый прогресс

После нескольких дней раздумий распланировал следующую организацию данных:

//    Организация данных            |            Data structure

//    Enum с направлениями        |        Enum of directions
Enum Direction {
    Up,
    Right,
    Bottom,
    Down
}

//    Класс игры                                |            Game class
Class FrostGame {

    //    Все картинки тайлов хранятся здесь        |        Store tile graphics
    Class FrostTileImageSet {
        Map Class FrostTileImage {
            //    Сама картинка            |            Graphics itself
            Image img;
            //    Уникальный номер картинки в c++map'е        |        Id of graphics in c++map
            unsigned int uid;
        }
    }
       
    //    Все картинки персонажей хранятся здесь        |        Store actors graphics   
    Class FrostActorImageSet {
        Map Class FrostActorImage {
            //    Четыре направления        |        Four directions
            Image img[4];
            //    Уникальный номер картинки в c++map'е        |        Id of graphics in c++map       
            unsigned int uid;
        }
    }

    //    Карта со всем содержимым, т.е. тайлами и персонажами        |        Map with actors and tiles
    Class FrostMap {
        //    Ширина и высота        |        Width and Height
        int width, height;
        //    Массив с id картинок тайлов        |        Tile graphic ids
        int tileimageuid[width][height];
        //    Твёрдость тайла (Воздух - стена)        |        Tile solidness
        bool tilesolid[width][height];
       
        //    Список персонажей на карте.    0 -- всегда игрок        |        List of actors on map. Player is always 0
        Class FrostActorlist {
            //    Массив с актёрами        |        Array of actors
            Vector Class FrostActor {
                //    x y -- координаты актёра, imageuid -- номер спрайта, direction -- направление
                //    x y -- coord of actor, imageuid -- graphic id, direction -- self explainatory
                int x, y, imageuid, direction;
               
                //    Смещение относительно центра тайла, нужно для анимации
                //    Offset from tile center for animation purposes
                float dx, dy;
               
                //    Здоровье. Если <= 0.0f, то убирает персонажа из списка
                //    Health. If hp <= 0.0f then delete actor from list
                float hp;
            }
           
            //    Просматривает персонажей и удалят тех, у кого hp <= 0.0f
            //    Scans actorlist and delete all actors have hp <= 0.0f
            void CleanDeadActors();
        }
    }
}

Комментариев нет:

Отправить комментарий