Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zitat von »"Debugger"«
Program received signal SIGTRAP, Trace/breakpoint trap.
In ntdll!DbgUiConnectToDbg () (C:\WINDOWS\system32\ntdll.dll)
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
PreparedAction::PreparedAction(Character& theCharacter, Action* PrepareAction, Action* MainAction): Action(theCharacter), m_PrepareAction(PrepareAction), m_MainAction(MainAction), m_Prepared(false) { } PreparedAction::~PreparedAction() { delete m_PrepareAction; delete m_MainAction; } bool PreparedAction::InhMove(float Time) { if(m_Prepared) { return m_MainAction->Move(Time); } else //die action muss noch vorbereitet werden { if(m_MainAction->Startable()) { m_PrepareAction->Stop(); m_Prepared=true; m_MainAction->Start(); return m_MainAction->Move(Time); } else { return m_PrepareAction->Move(Time); } } } void PreparedAction::InhStart() { if(m_Prepared) m_MainAction->Start(); else m_PrepareAction->Start(); } void PreparedAction::InhStop() { if(m_Prepared) m_MainAction->Stop(); else m_PrepareAction->Stop(); } bool PreparedAction::Breakable() { if(m_Prepared) return m_MainAction->Breakable(); else return m_PrepareAction->Breakable(); } |
C-/C++-Quelltext |
|
1 2 |
StartAction(new Action::PreparedAction(*this, new Action::Walk(*this, TheTarget), new Action::AttackMelee(*this, TheTarget))); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
class Action { public: Action(Character &theCharacter, bool Breakable=true);//Der Charakter, der die Aktion ausführt virtual ~Action(); bool Move(float Time); //gibt zurück, ob die Action fertig ist virtual bool Startable();//ob die Aktion gestartet werden kann virtual bool Breakable();//gibt an, ob eine Aktion unterbrochen werden kann //(laufen kann man unterbrechen, wenn man sich nach einem schlag aushohlen muss, kann man das nicht unterbrechen) void Start(); void Stop(); bool IsStarted(); protected: float GetActionParam(string Action, string Key); Character& m_Character; CharacterValues &m_CharacterValues; private: virtual bool InhMove(float Time) = 0; virtual void InhStart()=0; virtual void InhStop()=0; bool m_Breakable; bool m_Started; }; //eine Aktion, die erste eine ander ausführt um sie vorzubereiten class PreparedAction: public Action { public: PreparedAction(Character& theCharacter, Action* PrepareAction, Action* MainAction); ~PreparedAction(); bool InhMove(float Time); void InhStart(); void InhStop(); bool Breakable(); private: Action* m_PrepareAction; Action* m_MainAction; bool m_Prepared; //Ob die prepareaction schon fertig ist }; |
Zitat
in einem anderen Kontext benutzt ... und dort funktionierte alles.
Zitat von »"Jonathan_Klein"«
Ne, hilft nicht
Wäre es denn theoretisch Möglich, dass der Fehler ganz woanders liegt, aber eigentlich nichts macht, und es an dieser Stelle nun eher zufälig kracht?
Werbeanzeige