Skip to content

Commit

Permalink
at least 3% more accurate code (#250)
Browse files Browse the repository at this point in the history
* whole lotta shit

* ui shit

* fuck

* shit
  • Loading branch information
ieee802dot11ac authored Jun 10, 2024
1 parent ba94421 commit 5fd91f7
Show file tree
Hide file tree
Showing 42 changed files with 993 additions and 180 deletions.
4 changes: 4 additions & 0 deletions config/SZBE69_B8/objects.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@

"network/net/JsonUtils.cpp": "NonMatching",

"network/ObjDup/DOFilter.cpp": "NonMatching",

"network/Plugins/ZLibPlugin.cpp": "Matching",

"network/Plugins/JobGetPublicURL.cpp": "Matching",
Expand Down Expand Up @@ -141,6 +143,7 @@
"system/bandobj/BandCamShot.cpp": "NonMatching",
"system/bandobj/CrowdAudio.cpp": "NonMatching",
"system/bandobj/NoteTube.cpp": "NonMatching",
"system/bandobj/StarDisplay.cpp": "NonMatching",
"system/bandobj/VocalTrackDir.cpp": "NonMatching",

"system/beatmatch/BaseGuitarTrackWatcherImpl.cpp": "NonMatching",
Expand Down Expand Up @@ -444,6 +447,7 @@
"system/ui/UILabelDir.cpp": "NonMatching",
"system/ui/UIList.cpp": "NonMatching",
"system/ui/UIListArrow.cpp": "NonMatching",
"system/ui/UIListCustom.cpp": "NonMatching",
"system/ui/UIListWidget.cpp": "NonMatching",
"system/ui/UIPanel.cpp": "Matching",
"system/ui/UIPicture.cpp": "NonMatching",
Expand Down
14 changes: 7 additions & 7 deletions src/band3/bandtrack/Gem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Gem::Gem(const GameGem& gg, unsigned int ui, float f1, float f2, bool b1, int i1
InitChordInfo(i2, b2);
}

Gem::~Gem() { unk_0x30.clear(); }
Gem::~Gem() { mTails.clear(); }

Gem& Gem::operator=(const Gem& g) {
(GameGem&)(*mGameGem) = *(g.mGameGem);
Expand All @@ -34,18 +34,18 @@ bool Gem::OnScreen(float) {

bool Gem::UseRGChordStyle() const {
bool r = false;
if (unk_0x4->IsRealGuitarChord() || unk_0x67_1 || unk_0x4->IsMuted()) r = true;
if (mGameGem->IsRealGuitarChord() || unk_0x67_1 || mGameGem->IsMuted()) r = true;
return r;
}

void Gem::AddStrumInstance(Symbol s1, Symbol s2) {
if (unk_0x0 == NULL || unk_0x0->unk_0x0 == 0) return;
int lowString = unk_0x4->GetLowestString();
int highString = unk_0x4->GetHighestString();
if (mGemManager == NULL || mGemManager->unk_0x0 == 0) return;
int lowString = mGameGem->GetLowestString();
int highString = mGameGem->GetHighestString();
MILO_ASSERT(lowString != -1, 572);
MILO_ASSERT(highString != -1, 573);
Symbol t0;
if (!unk_0x0->GetChordWidgetName(s1, s2, t0)) {
if (!mGemManager->GetChordWidgetName(s1, s2, t0)) {
MILO_WARN("could not find widget for %s for %s chord gem in %s", t0, s1, s2);
return;
}
Expand All @@ -66,7 +66,7 @@ void Gem::Release() {
}

void Gem::KillDuration() {
for (int i = 0; i < unk_0x30.size(); i++) unk_0x30[i]->Done();
for (int i = 0; i < mTails.size(); i++) mTails[i]->Done();
}

void Gem::Reset() {
Expand Down
3 changes: 1 addition & 2 deletions src/band3/bandtrack/Gem.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ class Gem {
void SetFretPos(int);
void GetChordFretLabelInfo(String&, int&) const;

// GemManager* mGemManager;
int mGemManager;
GemManager* mGemManager;
const GameGem* mGameGem;
std::set<TrackWidget*> mWidgets;
float mStart, mEnd, mTailStart;
Expand Down
8 changes: 8 additions & 0 deletions src/network/ObjDup/DOFilter.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#include "DOFilter.h"

namespace Quazal {
DOFilter::DOFilter() { }
DOFilter::~DOFilter() { }
int DOFilter::GetMinimumValidHandle() { return 0; }
int DOFilter::GetMaximumValidHandle() { return -1; }
}
15 changes: 15 additions & 0 deletions src/network/ObjDup/DOFilter.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#ifndef OBJDUP_DOFILTER_H
#define OBJDUP_DOFILTER_H

#include "Platform/RefCountedObject.h"

namespace Quazal {
class DOFilter : public RefCountedObject {
DOFilter();
virtual ~DOFilter();
virtual int GetMinimumValidHandle(); // these both return a struct
virtual int GetMaximumValidHandle();
};
}

#endif // OBJDUP_DOFILTER_H
10 changes: 10 additions & 0 deletions src/system/bandobj/BandLabel.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#ifndef BANDOBJ_BANDLABEL_H
#define BANDOBJ_BANDLABEL_H

#include "ui/UILabel.h"

class BandLabel : public UILabel {

};

#endif // BANDOBJ_BANDLABEL_H
175 changes: 175 additions & 0 deletions src/system/bandobj/StarDisplay.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
#include "StarDisplay.h"
#include "obj/ObjMacros.h"
#include "obj/Object.h"
#include "os/Debug.h"
#include "rndobj/Text.h"
#include "ui/UI.h"
#include "ui/UIComponent.h"
#include "utl/Symbol.h"
#include "utl/Symbols.h"
#include "utl/Symbols2.h"
#include "utl/Symbols3.h"

INIT_REVS(StarDisplay)

void StarDisplay::Init() {
Hmx::Object::RegisterFactory(StaticClassName(), NewObject);
TheUI->InitResources("StarDisplay");
}

StarDisplay::StarDisplay() : unk_0x114(0), unk_0x115(1), unk_0x116(0), mStars(5), unk_0x11C(5),
unk_0x120(RndText::kMiddleLeft), unk_0x124(gNullStr), unk_0x128(gNullStr) {
unk_0x10C = New<BandLabel>();
unk_0x110 = New<BandLabel>();
}
StarDisplay::~StarDisplay() {
delete unk_0x10C;
delete unk_0x110;
}

BEGIN_COPYS(StarDisplay)
UIComponent::Copy(o,ty);
END_COPYS

void StarDisplay::CopyMembers(const UIComponent* ui, Hmx::Object::CopyType ct) {
UIComponent::CopyMembers(ui, ct);
const StarDisplay* starDisplay = dynamic_cast<const StarDisplay*>(ui);
MILO_ASSERT(starDisplay, 62);
mStars = starDisplay->mStars;
unk_0x11C = starDisplay->unk_0x11C;
unk_0x114 = starDisplay->unk_0x114;
unk_0x115 = starDisplay->unk_0x115;
unk_0x116 = starDisplay->unk_0x116;
unk_0x120 = starDisplay->unk_0x120;
unk_0x124 = starDisplay->unk_0x124;
unk_0x128 = starDisplay->unk_0x128;
}

SAVE_OBJ(StarDisplay, 86)

BEGIN_LOADS(StarDisplay)
PreLoad(bs);
PostLoad(bs);
END_LOADS

void StarDisplay::PreLoad(BinStream& bs) {
LOAD_REVS(bs)
ASSERT_REVS(6, 0)
if (gRev != 1) bs >> mStars;
bs >> unk_0x11C;
bs >> unk_0x114;
if (gRev >= 3) {
bs >> unk_0x115;
bs >> unk_0x116;
if (gRev < 5) {
int x = 0; bs >> x;
}
}
if (gRev >= 4) bs >> (int&)unk_0x120;
if (gRev == 5) {
String s;
bs >> s;
bs >> s;
}
if (gRev >= 6) {
bs >> unk_0x124;
bs >> unk_0x128;
}
UIComponent::PreLoad(bs);
}

void StarDisplay::PostLoad(BinStream& bs) {
UIComponent::PostLoad(bs);
Update();
}

void StarDisplay::Enter() { UIComponent::Enter(); UpdateDisplay(); }

Symbol StarDisplay::GetSymbolForStarCount(int i) {
switch (i) {
case 0:
return stars_0;
case 1:
return stars_1;
case 2:
return stars_2;
case 3:
return stars_3;
case 4:
return stars_4;
case 5:
return stars_5;
case 6:
return stars_6;
default:
MILO_FAIL("Number of stars is unsupported: stars = %i", i);
return gNullStr;
}
}

int StarDisplay::GetStarCountForSymbol(Symbol s) {
int i = 0;
Symbol* s2;
do {
s2 = &GetSymbolForStarCount(i);
if (*s2 == s) return i;
} while (++i <= 6);
MILO_FAIL("can't set star display to token %s", s.Str());
return 0;
}

void StarDisplay::DrawShowing() {
ObjectDir* dir = mMesh->mDir.mDir;
MILO_ASSERT(dir, 312);
unk_0x10C->SetTransParent(this, false);
unk_0x10C->Draw();
unk_0x110->SetTransParent(this, false);
unk_0x110->Draw();
Transform* t;
if (mCache->mFlags & 1) t = &WorldXfm_Force();
else t = &mWorldXfm;
SetWorldXfm(*t);
}

void StarDisplay::SetValues(int st, int max) { mStars = st; unk_0x11C = max; UpdateDisplay(); }

void StarDisplay::SetToToken(Symbol s) { mStars = GetStarCountForSymbol(s); UpdateDisplay(); }

void StarDisplay::SetAlignment(RndText::Alignment a) { unk_0x120 = a; UpdateDisplay(); }

void StarDisplay::SetForceMixedMode(bool b) { unk_0x114 = b; UpdateDisplay(); }

void StarDisplay::SetShowDenominator(bool b) { unk_0x115 = b; UpdateDisplay(); }

void StarDisplay::Update() {
UIComponent::Update();
DataArray* typeDef = mTypeDef;
MILO_ASSERT(typeDef, 369);
ObjectDir* dir = mMesh->mDir.mDir;
MILO_ASSERT(dir, 372);
unk_0x10C->ResourceCopy(dir->Find<BandLabel>(typeDef->FindArray(resource_stars_label, true)->Str(1), true));
BandLabel* bl2 = dir->Find<BandLabel>(typeDef->FindArray(resource_stars_mixed_label, true)->Str(1), true);
unk_0x110->ResourceCopy(bl2);
UpdateDisplay();
}

BEGIN_HANDLERS(StarDisplay)
HANDLE_ACTION(set_values, SetValues(_msg->Int(2), _msg->Int(3)))
HANDLE_ACTION(set_to_token, SetToToken(_msg->Sym(2)))
HANDLE_SUPERCLASS(UIComponent)
HANDLE_CHECK(391)
END_HANDLERS

BEGIN_PROPSYNCS(StarDisplay)
SYNC_PROP_MODIFY(stars, mStars, UpdateDisplay())
SYNC_PROP_MODIFY(total_stars, unk_0x11C, UpdateDisplay())
SYNC_PROP_MODIFY(force_mixed_mode, unk_0x114, UpdateDisplay())
SYNC_PROP_MODIFY(show_empty_stars, unk_0x116, UpdateDisplay())
SYNC_PROP_MODIFY(show_denominator, unk_0x115, UpdateDisplay())
SYNC_PROP_SET(alignment, unk_0x120, SetAlignment((RndText::Alignment)_val.Int(NULL)))
SYNC_PROP_MODIFY(icon_override, unk_0x124, UpdateDisplay())
SYNC_PROP_MODIFY(empty_icon_override, unk_0x128, UpdateDisplay())
SYNC_PROP_SET(float_stars, (float)mStars, SetValues(_val.Float(NULL), unk_0x11C))
SYNC_PROP_SET(float_total_stars, (float)unk_0x11C, SetValues(mStars, _val.Float(NULL)))
SYNC_SUPERCLASS(UIComponent)
END_PROPSYNCS
50 changes: 50 additions & 0 deletions src/system/bandobj/StarDisplay.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#ifndef BANDOBJ_STARDISPLAY_H
#define BANDOBJ_STARDISPLAY_H

#include "bandobj/BandLabel.h"
#include "obj/Data.h"
#include "obj/ObjMacros.h"
#include "rndobj/Text.h"
#include "ui/UIComponent.h"

class StarDisplay : public UIComponent {
StarDisplay();
virtual DataNode Handle(DataArray*, bool);
virtual bool SyncProperty(DataNode&, DataArray*, int, PropOp);
virtual ~StarDisplay();
OBJ_CLASSNAME(StarDisplay)
OBJ_SET_TYPE(StarDisplay)
virtual void Copy(const Hmx::Object*, Hmx::Object::CopyType);
virtual void CopyMembers(const UIComponent*, Hmx::Object::CopyType);
virtual void Save(BinStream&);
virtual void Load(BinStream&);
virtual void PreLoad(BinStream&);
virtual void PostLoad(BinStream&);
virtual void Update();
virtual void Enter();

void SetValues(int, int);
void SetToToken(Symbol);
void UpdateDisplay();
void DrawShowing();

static Symbol GetSymbolForStarCount(int);
static int GetStarCountForSymbol(Symbol);
static void Init();

DECLARE_REVS
NEW_OBJ(StarDisplay)

BandLabel* unk_0x10C; // 0x10C
BandLabel* unk_0x110; // 0x110
bool unk_0x114; void SetForceMixedMode(bool); // 0x114
bool unk_0x115; void SetShowDenominator(bool b); // 0x115
bool unk_0x116; // 0x116
int mStars; // 0x118
int unk_0x11C; // 0x11C
RndText::Alignment unk_0x120; void SetAlignment(RndText::Alignment); // 0x120
Symbol unk_0x124; // 0x124
Symbol unk_0x128; // 0x128
};

#endif // BANDOBJ_STARDISPLAY_H
Loading

0 comments on commit 5fd91f7

Please sign in to comment.