Skip to content

Commit

Permalink
Merge pull request #120 from ChilliHugger/feature/108-add-gameplay-ru…
Browse files Browse the repository at this point in the history
…le-system

Feature/108 add gameplay rule system
  • Loading branch information
IcemarkUK authored May 23, 2022
2 parents 5eb3c58 + d95e611 commit 55bb485
Show file tree
Hide file tree
Showing 27 changed files with 315 additions and 299 deletions.
34 changes: 34 additions & 0 deletions main/midnight/src/extensions/ScrollView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,38 @@ namespace extensions {
{
startAutoScrollToDestination(des, timeInSec, attenuated);
}

ScrollingMenu* ScrollingMenu::create()
{
Vector<MenuItem*> items;
auto ret = new (std::nothrow) ScrollingMenu();
if (ret && ret->initWithArray(items))
{
ret->autorelease();
ret->enableScrolling();
}
else
{
CC_SAFE_DELETE(ret);
}

return ret;
}

void ScrollingMenu::enableScrolling()
{
_eventDispatcher->removeEventListenersForTarget(this);

auto touchListener = EventListenerTouchOneByOne::create();
touchListener->setSwallowTouches(false);

touchListener->onTouchBegan = CC_CALLBACK_2(Menu::onTouchBegan, this);
touchListener->onTouchMoved = CC_CALLBACK_2(Menu::onTouchMoved, this);
touchListener->onTouchEnded = CC_CALLBACK_2(Menu::onTouchEnded, this);
touchListener->onTouchCancelled = CC_CALLBACK_2(Menu::onTouchCancelled, this);

_eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this);
}


}
10 changes: 10 additions & 0 deletions main/midnight/src/extensions/ScrollView.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,15 @@ namespace extensions {
void scrollToPosition(const Vec2& des, float timeInSec, bool attenuated);

};


class ScrollingMenu : public cocos2d::Menu
{
public:
static ScrollingMenu * create();

protected:
void enableScrolling();
};

}
6 changes: 6 additions & 0 deletions main/midnight/src/frontend/language.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ and all the members of midnight/mu - www.midnightmu.com)";
constexpr LPCSTR KEYBOARD_KEY_H = "H";
constexpr LPCSTR KEYBOARD_KEY_N = "N";
constexpr LPCSTR KEYBOARD_KEY_O = "O";
constexpr LPCSTR KEYBOARD_KEY_R = "R";
constexpr LPCSTR KEYBOARD_KEY_U = "U";
constexpr LPCSTR KEYBOARD_KEY_Z = "Z";
constexpr LPCSTR KEYBOARD_KEY_ESC = "ESC";
Expand Down Expand Up @@ -96,6 +97,7 @@ and all the members of midnight/mu - www.midnightmu.com)";
constexpr LPCSTR OPTIONS_SCREEN_GAME = "GAME";
constexpr LPCSTR OPTIONS_SCREEN_CONTROL = "CONTROL";
constexpr LPCSTR OPTIONS_SCREEN_HELP = "HELP";
constexpr LPCSTR OPTIONS_SCREEN_RULES = "GAME RULES";
constexpr LPCSTR OPTIONS_SCREEN_MAINMENU = "MAIN MENU";
constexpr LPCSTR OPTIONS_SCREEN_SCREENMODE = "SCREEN MODE";
constexpr LPCSTR OPTIONS_SCREEN_TRANSITIONS = "SCREEN TRANSITIONS";
Expand All @@ -114,6 +116,10 @@ and all the members of midnight/mu - www.midnightmu.com)";
constexpr LPCSTR OPTIONS_SCREEN_MOVEMENTINDICATORS = "MOVEMENT INDICATORS";
constexpr LPCSTR OPTIONS_SCREEN_NOVELLA = "NOVELLA";

constexpr LPCSTR OPTIONS_SCREEN_RULE_1 = "RULE 1";
constexpr LPCSTR OPTIONS_SCREEN_RULE_2 = "RULE 2";
constexpr LPCSTR OPTIONS_SCREEN_RULE_3 = "RULE 3";

#if defined(_LOM_)

constexpr LPCSTR SPLASH_SCREEN_EXPLORE = "Now explore the epic world of";
Expand Down
9 changes: 8 additions & 1 deletion main/midnight/src/frontend/layout_id.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ enum layoutid_t
ID_MENU_GAME,
ID_MENU_CONTROL,
ID_MENU_HELP,
ID_MENU_RULES,

ID_OPTION_SCREENMODE,

Expand All @@ -122,7 +123,7 @@ enum layoutid_t
ID_OPTION_KEYBOARD_STYLE,
ID_OPTION_NIGHT_CONFIRM,
ID_OPTION_CURSOR_SIZE,

ID_SHOW_LEADER,
ID_DEBUG_MAP,

Expand Down Expand Up @@ -160,6 +161,12 @@ enum layoutid_t
ID_TUNNEL=4000,
ID_SHOW_TOOLTIP=5000,
ID_SELECT_DIRECTION=6000,

ID_OPTION_RULES=7000,
ID_OPTION_RULE_1=ID_OPTION_RULES+0,
ID_OPTION_RULE_2=ID_OPTION_RULES+1,
ID_OPTION_RULE_3=ID_OPTION_RULES+2,

};


Expand Down
54 changes: 42 additions & 12 deletions main/midnight/src/library/inc/cflags.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
#include "mxtypes.h"
#include "carchive.h"

template <class T>
class flags
template <class T, typename S>
class eflags
{
public:
~flags(){}
~eflags(){}
MXINLINE void Clear() { m_flags = 0; }
MXINLINE void ShiftLeft() { m_flags <<=1; }
MXINLINE void ShiftRight() { m_flags >>=1; }
Expand All @@ -25,19 +25,49 @@ class flags
if ( ar.IsStoring() ) { ar << m_flags ; }else{ar >> m_flags ;}
return ar;
}

MXINLINE flags() { m_flags = 0 ; }
MXINLINE void Set ( T f ) { m_flags |= (u32)f ; }
MXINLINE void Reset ( T f ) { m_flags &= ~(u32)f ; }
MXINLINE eflags() { m_flags = 0 ; }
MXINLINE void Set ( T f ) { m_flags |= (S)f ; }
MXINLINE void Set ( T f, bool v ) { if ( v ) Set(f); else Reset(f); }
MXINLINE void Reset ( T f ) { m_flags &= ~(S)f ; }
MXINLINE void Toggle ( T f ) { if ( Is(f) ) Reset(f); else Set(f); }
MXINLINE bool Is ( T f) const { return m_flags&(u32)f ? TRUE : FALSE ; }
MXINLINE operator u32() const { return m_flags; }
friend MXINLINE archive& operator<<( archive& ar, flags& f ) { return f.Serialize(ar); }
friend MXINLINE archive& operator>>( archive& ar, flags& f ) { return f.Serialize(ar); }
MXINLINE bool Is ( T f) const { return m_flags&(S)f ? TRUE : FALSE ; }
MXINLINE operator S() const { return m_flags; }
friend MXINLINE archive& operator<<( archive& ar, eflags<T,S>& f ) { return f.Serialize(ar); }
friend MXINLINE archive& operator>>( archive& ar, eflags<T,S>& f ) { return f.Serialize(ar); }

private:
u32 m_flags;
S m_flags;
};

// flags
template <typename T>
class flags
{
public:
~flags(){}
void Clear() { m_flags = 0; }
void ShiftLeft() { m_flags <<=1; }
void ShiftRight() { m_flags >>=1; }
archive& Serialize ( archive& ar )
{
if ( ar.IsStoring() ) { ar << m_flags ; }else{ar >> m_flags ;}
return ar;
}
MXINLINE flags() { m_flags = 0 ; }
MXINLINE void Set ( T f ) { m_flags |= f ; }
MXINLINE void Reset ( T f ) { m_flags &= ~f ; }
MXINLINE void Toggle ( T f ) { if ( Is(f) ) Reset(f); else Set(f); }
MXINLINE bool Is ( T f) const { return m_flags&f ? TRUE : FALSE ; }
MXINLINE operator T() const { return m_flags; }
friend MXINLINE archive& operator<<( archive& ar, flags<T>& f ) { return f.Serialize(ar); }
friend MXINLINE archive& operator>>( archive& ar, flags<T>& f ) { return f.Serialize(ar); }
private:
T m_flags;
};

typedef flags<u64> flags64;
typedef flags<u32> flags32;
typedef flags<u16> flags16;
typedef flags<u8> flags8;

#endif /* cflags_h */
139 changes: 24 additions & 115 deletions main/midnight/src/library/inc/mxtypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -248,101 +248,7 @@ namespace chilli {
MXINLINE void bitarray::Destroy() { if ( m_pData ) delete m_pData ; m_pData = NULL; m_nElements = 0; }
MXINLINE archive& operator<<( archive& ar, bitarray& array ) { return array.Serialize(ar); }
MXINLINE archive& operator>>( archive& ar, bitarray& array ) { return array.Serialize(ar); }



// flags
class flags32
{
public:
flags32();
~flags32();
void Set ( u32 flags ) ;
void Reset ( u32 flags ) ;
void Toggle ( u32 flags );
void Clear() { m_flags = 0; }
bool Is ( u32 flag ) const ;
void ShiftLeft() { m_flags <<=1; }
void ShiftRight() { m_flags >>=1; }
archive& Serialize ( archive& ar );
operator u32() const ;
friend archive& operator<<(archive& ar, flags32& flags );
friend archive& operator>>( archive& ar, flags32& flags );
private:
u32 m_flags;
};

class flags8
{
public:
flags8();
~flags8();
void Set ( u8 flags ) ;
void Reset ( u8 flags ) ;
void Toggle ( u32 flags );
void Clear() { m_flags = 0; }
bool Is ( u8 flag ) const ;
void ShiftLeft() { m_flags <<=1; }
void ShiftRight() { m_flags >>=1; }
archive& Serialize ( archive& ar );
operator u8() const ;
friend archive& operator<<(archive& ar, flags8& flags );
friend archive& operator>>( archive& ar, flags8& flags );
private:
u8 m_flags;
};

class flags16
{
public:
flags16();
~flags16();
void Set ( u16 flags ) ;
void Reset ( u16 flags ) ;
void Toggle ( u32 flags );
bool Is ( u16 flag ) const ;
void ShiftLeft() { m_flags <<=1; }
void ShiftRight() { m_flags >>=1; }
void Clear() { m_flags = 0; }
archive& Serialize ( archive& ar );
operator u16() const ;
friend archive& operator<<(archive& ar, flags16& flags );
friend archive& operator>>( archive& ar, flags16& flags );
private:
u16 m_flags;
};


/* flags32 */
MXINLINE flags32::flags32() { m_flags = 0 ; }
MXINLINE void flags32::Set ( u32 f ) { m_flags |= f ; }
MXINLINE void flags32::Reset ( u32 f ) { m_flags &= ~f ; }
MXINLINE void flags32::Toggle ( u32 f ) { if ( Is(f) ) Reset(f); else Set(f); }
MXINLINE bool flags32::Is ( u32 f) const { return (m_flags&f)==f; }
MXINLINE flags32::operator u32() const { return m_flags; }
MXINLINE archive& operator<<( archive& ar, flags32& f ) { return f.Serialize(ar); }
MXINLINE archive& operator>>( archive& ar, flags32& f ) { return f.Serialize(ar); }

/* flags8 */
MXINLINE flags8::flags8() { m_flags = 0 ; }
MXINLINE void flags8::Set ( u8 f ) { m_flags |= f ; }
MXINLINE void flags8::Reset ( u8 f ) { m_flags &= ~f ; }
MXINLINE void flags8::Toggle ( u32 f ) { if ( Is(f) ) Reset(f); else Set(f); }
MXINLINE bool flags8::Is ( u8 f ) const { return (m_flags&f)==f; }
MXINLINE flags8::operator u8() const { return m_flags; }
MXINLINE archive& operator<<( archive& ar, flags8& f ) { return f.Serialize(ar); }
MXINLINE archive& operator>>( archive& ar, flags8& f ) { return f.Serialize(ar); }

/* flags16 */
MXINLINE flags16::flags16() { m_flags = 0 ; }
MXINLINE void flags16::Set ( u16 f ) { m_flags |= f ; }
MXINLINE void flags16::Reset ( u16 f ) { m_flags &= ~f ; }
MXINLINE void flags16::Toggle ( u32 f ) { if ( Is(f) ) Reset(f); else Set(f); }
MXINLINE bool flags16::Is ( u16 f ) const { return (m_flags&f)==f; }
MXINLINE flags16::operator u16() const { return m_flags; }
MXINLINE archive& operator<<( archive& ar, flags16& f ) { return f.Serialize(ar); }
MXINLINE archive& operator>>( archive& ar, flags16& f ) { return f.Serialize(ar); }


// random
class randomno
{
Expand Down Expand Up @@ -380,19 +286,23 @@ namespace chilli {
~variant() {}

enum var_t {
none = 0,
vnumber = 1,
vstring = 2,
vyesno = 3,
vfloat = 4,
vdouble = 5,
vptr = 6,
vid = 7,
none = 0,
vsint32 = 1,
vnumber = vsint32,
vstring = 2,
vyesno = 3,
vfloat = 4,
vdouble = 5,
vptr = 6,
vid = 7,
vuint64 = 8,
};


s32& operator = ( s32 value )
{ vType=vnumber;vInt = value ; return vInt; }
{ vType=vsint32;vSInt32 = value ; return vSInt32; }
u64& operator = ( u64 value )
{ vType=vuint64;vUInt64 = value ; return vUInt64; }
mxid& operator = ( mxid value )
{ vType=vid;vId = value ; return vId; }
f32& operator = ( f32 value )
Expand All @@ -401,8 +311,6 @@ namespace chilli {
{ vType=vdouble;vDouble = value ; return vDouble; }
LPSTR& operator = ( LPSTR value )
{ vType=vstring;vString = value ; return vString; }
//LPSTR& operator = ( std::string value )
// { vType=vstring;vString = (LPSTR)value.c_str() ; return vString; }
LPSTR& operator = ( std::string& value )
{ vType=vstring;vString = (LPSTR)value.c_str() ; return vString; }
LPSTR& operator = ( const std::string& value )
Expand All @@ -415,7 +323,9 @@ namespace chilli {


operator s32() const
{ return vInt; }
{ return vSInt32; }
operator u64() const
{ return vUInt64; }
operator mxid() const
{ return vId; }
operator f32() const
Expand All @@ -424,20 +334,19 @@ namespace chilli {
{ return vDouble; }
operator char*() const
{ return vString; }
//operator c_str() const
// { return vString; }
operator void*() const
{ return vPtr; }

public:
var_t vType;
var_t vType;
union {
s32 vInt;
s32 vSInt32;
u64 vUInt64;
mxid vId;
f64 vDouble;
f32 vFloat;
char* vString;
void* vPtr;
f64 vDouble;
f32 vFloat;
char* vString;
void* vPtr;
};
};

Expand Down
Loading

0 comments on commit 55bb485

Please sign in to comment.