Oyunumda gerçekten yararlı olan ancak yavaş yavaş acı çeken iki sınıf var. Mesaj ve Özellik (özellik esasen bir bileşendir).
Her ikisi de bir temel sınıftan türetilir ve statik bir kimlik içerir, böylece sistemler yalnızca istediklerine dikkat edebilir. Çok iyi çalışıyor ... hariç ...
Oyunumu genişletirken sürekli yeni mesaj türleri ve mülk türleri yapıyorum. Her seferinde temelde bir classID ve bir veya iki standart veri türü veya bir işaretçi elde etmek için 2 dosya (hpp ve cpp) ve bir ton demirbaş yazmam gerekiyor.
Oyun oynamayı ve yeni fikirleri test etmeyi gerçek bir angarya haline getirmeye başlıyor. Keşke yeni bir mesaj veya özellik türü oluşturmak istediğimde, sadece şöyle bir şey yazabilmek istiyorum
ShootableProperty: int gunType, float shotspeed;
ItemCollectedMessage: int itemType;
üstbilgi ve cpp dosyası oluşturmak yerine, üst sınıf dahil bir yapıcı yazmak vb.
Aklımdaki mantıksal olarak 1 veya 2 satır olanı yapmak için yaklaşık 20-40 satır (korumalar ve her şey dahil).
Bu sorunu çözmek için bir programlama modeli var mı?
Senaryo yazmama ne dersin (ki hiçbir şey bilmiyorum) ... neredeyse aynı sınıfları tanımlamanın bir yolu var mı?
İşte tam olarak bir sınıf neye benziyor:
// Velocity.h
#ifndef VELOCITY_H_
#define VELOCITY_H_
#include "Properties.h"
#include <SFML/System/Vector2.hpp>
namespace LaB
{
namespace P
{
class Velocity: public LaB::Property
{
public:
static const PropertyID id;
Velocity(float vx = 0.0, float vy = 0.0)
: velocity(vx,vy) {}
Velocity(sf::Vector2f v) : velocity(v) {};
sf::Vector2f velocity;
};
} /* namespace P */
} /* namespace LaB */
#endif /* LaB::P_VELOCITY_H_ */
// Velocity.cpp
#include "Properties/Velocity.h"
namespace LaB
{
namespace P
{
const PropertyID Velocity::id = Property::registerID();
} /* namespace P */
} /* namespace LaB */
Tüm bunlar sadece bir 2D Vector ve bir 2D vektör beklediğini söyleyen bir kimlik için. (Bazı özelliklerin daha karmaşık unsurları vardır, ancak aynı fikirdir)