Code Monkey home page Code Monkey logo

gmpack's People

Contributors

lysevi avatar

Watchers

 avatar  avatar

gmpack's Issues

рефакторим

  • Вводим новые типа PtrTower (std::shared_ptrcore::BaseTower) и PtrUnit (std::shared_ptrcore::BaseUnit)
  • Вводим UnitManager (std::map<> с методом getUnitById ) и TowerManager - синглтоны, хранящие списки PtrTower, PtrUnit, чтобы разгрузить код TDGame.
  • Приводим ProcessLogger к виду LogManager.
  • отдельный метод для размещения на карте башен. занятое место надо помечать как ROCK
  • у каждого юнита свой список для перемещения, чтобы не было случая, когда юнита отрезали от основного пути.
  • Перемещение по карте перенести в код BaseUnitManager. (void nextStep())
  • Поиск следующей цели перенести в код TowerManager
  • Поворот к следующему юниту перенести в код BaseTowerManager. (void rotateToTarget())
  • избавляемся от core::Coord. он не нужен. вместо него Vector3d.
  • В Object3d добавляем поле Vector3d orientation - ориентация "лица" объекта в пространстве.

Этап2

  • перейти на векторное представление движения ( у object3d ввести атрибуты Vector3d position, Vector3d orintation)
  • Движение юнитов считаем, опять же, векторами (вектор скорости каждому типу свой).
  • пули (пока примитивные)

скопировать с sdl_tutor скелет

логер, Exception NonCopy из DataAcc и сабж. сделать его библиотекой (core + добавить CAppState и CAppStateManager), чтобы можно было использовать в других подпроектах. стурктур сделать такой:

utest (unit tests)
core (library)
test (executable)
CMakeLists.txt

флаги сборки должны быть с -Wall

Рефакторим

  • Класс с настройками.
    • цвета базовых элементов
    • углы отклонения при атаке

Уровни

  • Класс загрузки каждого отдельного уровня (описание в отдельном файле.) Уровень включает в себя:
    • список волн и тип врагов в каждой волне
    • доступные/недоступные башни
    • ограничения

Этап 3

  • рассчет попаданий и показ оставшегося здоровья.

скрипты врагов

в скрипте должно быть описано:

  • название и описание
  • вершины одной плоскости врага (вторая плоскость и бока достраиваются автоматически
  • скорость перемещения
  • прозрачность и цвет
  • количество жизней

Черновая реализация

  • отрисовка карты
  • отрисовка юнитов
  • отрисовка башен. + круг действия башни по клику
  • движение по точкам карт.(класс отдельный от реализации самого юнита) движение черновое, не плавное.
  • клик по карте/юниту.
  • поворот башни к ближайшему врагу в радиусе и удержание его пока не уйдет.

Тесты!

  • основные векторные операции (перемещения, поврота, расчета траектории полета).

сглаживание

    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnable(GL_BLEND);
    // Сглаживание точек
    glEnable(GL_POINT_SMOOTH);
    glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
    // Сглаживание линий
    glEnable(GL_LINE_SMOOTH);
    glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
    // Сглаживание полигонов    
    glEnable(GL_POLYGON_SMOOTH);
    glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.