Skip to content

Commit f04bfb7

Browse files
committed
almost there
1 parent d59b463 commit f04bfb7

File tree

13 files changed

+401
-112
lines changed

13 files changed

+401
-112
lines changed
3.18 KB
Loading

source/archipelago/APEntryState.hx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -472,8 +472,8 @@ class APEntryState extends MusicBeatState
472472
fullSongCount = slotData.fullSongCount;
473473
APInfo.ticketWinCount = slotData.ticketWinCount;
474474
APInfo.ticketCount = 0;
475-
RankingSubstate.comboRankSetLimit = slotData.gradeNeeded;
476-
RankingSubstate.accRankSetLimit = slotData.accuracyNeeded;
475+
FlxG.save.data.gradesandacc = [slotData.gradeNeeded, slotData.accuracyNeeded];
476+
FlxG.save.flush();
477477
APInfo.unlockMethod = slotData.locationType;
478478
//APInfo.unlockType = slotData.locationMethod;
479479
trace(APInfo.unlockMethod);

source/archipelago/APPlayState.hx

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2061,16 +2061,6 @@ class APPlayState extends PlayState {
20612061

20622062
super.endSong();
20632063

2064-
trace("Sending checks for all checked notes...");
2065-
for (note in checkedNotes) {
2066-
trace("Sending check for note: " + note);
2067-
@:privateAccess{
2068-
trace("Sending location: " + note.checkInfo.loc);
2069-
apGame.info().LocationChecks([note.checkInfo.loc]);
2070-
}
2071-
}
2072-
trace("All checks sent.");
2073-
20742064

20752065
paused = true;
20762066
FreeplayManager.callVictory = FreeplayManager.isVictorySong(PlayState.SONG.song, currentMod);

source/archipelago/APSettingsSubState.hx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ class APSettingsSubState extends MusicBeatSubstate {
148148
"S-",
149149
"A+",
150150
"A",
151-
"A=",
151+
"A-",
152152
"B",
153153
"C",
154154
"D",

source/backend/Achievements.hx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ class Achievements {
101101
createAchievement('debugger', {name: "Debugger", description: "Beat the \"Test\" Stage from the Chart Editor.", hidden: true});
102102
createAchievement('pessy_easter_egg', {name: "Engine Gal Pal", description: "Teehee, you found me~!", hidden: true});
103103
createAchievement('freaky_bar', {name: "All-In-One", description: "Get the secret health mode.", hidden: true});
104+
createAchievement('much_better', {name: "Much Better", description: "Join the dark side.", hidden: true});
104105

105106
//dont delete this thing below
106107
_originalLength = _sortID + 1;

source/import.hx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,5 +101,5 @@ using yutautil.PointerTools;
101101
using yutautil.CUMacroTools; // Careful. Using C++ Lables in Haxe may act strangely.
102102
using yutautil.KonamiTracker;
103103
using yutautil.GenericObject;
104-
using yutautil.PyScript;
104+
//using yutautil.PyScript;
105105
#end

source/managers/RankingManager.hx

Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
package managers;
2+
3+
import substates.RankingSubstate;
4+
/**
5+
RANKING MANAGER INFO
6+
* This bad boy not only manages the ranking, but is also the ranking image itself!
7+
* Anything that needs the ranking to be present will use this manager to do so.
8+
* ya know, for consistancy sake
9+
* that and it beats having to make a new one every time.
10+
* Here's what this manager does:
11+
12+
** Manages the image that displays the ranking
13+
** saves and loads the ranking
14+
** can be either big (RankingSubState) or small (Freeplay)
15+
16+
if this needs to do literally anything else, it'll be added here.
17+
**/
18+
class RankingManager extends FlxSprite {
19+
public static var instance:RankingManager;
20+
public var rankTable:Array<String> = [
21+
'P', 'X', 'X-', 'SS+', 'SS-', 'SS-', 'S+', 'S', 'S-', 'A+', 'A', 'A-', 'B', 'C', 'D', 'E', 'NA', 'F'
22+
];
23+
24+
var size:String = 'small';
25+
26+
override public function new(size:String, ?defalutRank:String = 'NA') {
27+
this.size = size;
28+
instance = this;
29+
super();
30+
31+
switch (size) {
32+
case "small":
33+
loadGraphic(Paths.image('rankings/$defalutRank-small'));
34+
scale.x = scale.y = 80 / height;
35+
updateHitbox();
36+
antialiasing = true;
37+
scrollFactor.set();
38+
y = 690 - height;
39+
x = -200 + FlxG.width - 50;
40+
alpha = 0;
41+
case "big":
42+
loadGraphic(Paths.image('rankings/$defalutRank'));
43+
scrollFactor.set();
44+
antialiasing = true;
45+
setGraphicSize(0, 450);
46+
updateHitbox();
47+
screenCenter();
48+
alpha = 0;
49+
}
50+
}
51+
52+
public function doTween(tween:String, ?time:Float = 0.5, ?amount:Float = 1) {
53+
switch (tween) {
54+
case 'in':
55+
FlxTween.tween(this, {alpha: amount}, 0.5, {ease: FlxEase.quartInOut});
56+
case 'out':
57+
FlxTween.tween(this, {alpha: 0}, 0.5, {ease: FlxEase.quartInOut});
58+
}
59+
}
60+
61+
var rankingNum:Int = 15;
62+
var wifeConditions:Array<Bool> = [];
63+
override public function update(elapsed:Float) {
64+
super.update(elapsed);
65+
el = elapsed;
66+
}
67+
68+
// TODO: Make this better lol
69+
public static function grabLimits(grade:String, accuracy:String) {
70+
switch (grade) {
71+
case 'Any':
72+
RankingSubstate.comboRankSetLimit = 0;
73+
case "MFC":
74+
RankingSubstate.comboRankSetLimit = 1;
75+
case "SFC":
76+
RankingSubstate.comboRankSetLimit = 2;
77+
case "GFC":
78+
RankingSubstate.comboRankSetLimit = 3;
79+
case "AFC":
80+
RankingSubstate.comboRankSetLimit = 4;
81+
case "FC":
82+
RankingSubstate.comboRankSetLimit = 5;
83+
case "SDCB":
84+
RankingSubstate.comboRankSetLimit = 6;
85+
}
86+
87+
switch (accuracy) {
88+
case "Any":
89+
RankingSubstate.accRankSetLimit = 0;
90+
case "P":
91+
RankingSubstate.accRankSetLimit = 1;
92+
case "X":
93+
RankingSubstate.accRankSetLimit = 2;
94+
case "X-":
95+
RankingSubstate.accRankSetLimit = 3;
96+
case "SS+":
97+
RankingSubstate.accRankSetLimit = 4;
98+
case "SS":
99+
RankingSubstate.accRankSetLimit = 5;
100+
case "SS-":
101+
RankingSubstate.accRankSetLimit = 6;
102+
case "S+":
103+
RankingSubstate.accRankSetLimit = 7;
104+
case "S":
105+
RankingSubstate.accRankSetLimit = 8;
106+
case "S-":
107+
RankingSubstate.accRankSetLimit = 9;
108+
case "A+":
109+
RankingSubstate.accRankSetLimit = 10;
110+
case "A":
111+
RankingSubstate.accRankSetLimit = 11;
112+
case "A-":
113+
RankingSubstate.accRankSetLimit = 12;
114+
case "B":
115+
RankingSubstate.accRankSetLimit = 13;
116+
case "C":
117+
RankingSubstate.accRankSetLimit = 14;
118+
case "D":
119+
RankingSubstate.accRankSetLimit = 15;
120+
case "E":
121+
RankingSubstate.accRankSetLimit = 16;
122+
}
123+
}
124+
125+
var intendedRating:Int = 0;
126+
var lerpRating:Int = 0;
127+
var el:Float = 0;
128+
public var rankOverride:Bool = true;
129+
public function updateRank() {
130+
var acc = CoolUtil.floorDecimal(PlayState.instance.comboManager.ratingPercent * 100, 2);
131+
wifeConditions = [
132+
acc >= 99.9935, // P
133+
acc >= 99.980, // X
134+
acc >= 99.950, // X-
135+
acc >= 99.90, // SS+
136+
acc >= 99.80, // SS
137+
acc >= 99.70, // SS-
138+
acc >= 99.50, // S+
139+
acc >= 99, // S
140+
acc >= 96.50, // S-
141+
acc >= 93, // A+
142+
acc >= 90, // A
143+
acc >= 85, // A-
144+
acc >= 80, // B
145+
acc >= 70, // C
146+
acc >= 69, // Nice
147+
acc >= 60, // D
148+
acc < 60 // E
149+
];
150+
for (i in 0...wifeConditions.length)
151+
{
152+
var b = wifeConditions[i];
153+
if (b)
154+
{
155+
rankingNum = i;
156+
if (PlayState.deathCounter >= 30 || acc == 0)
157+
rankingNum = 17;
158+
break;
159+
}
160+
}
161+
switch (size) {
162+
case 'small':
163+
loadGraphic(Paths.image('rankings/${rankTable[rankingNum]}-small'));
164+
scale.x = scale.y = 140 / height;
165+
updateHitbox();
166+
antialiasing = true;
167+
scrollFactor.set();
168+
case 'big':
169+
loadGraphic(Paths.image('rankings/${rankTable[rankingNum]}'));
170+
scrollFactor.set();
171+
setGraphicSize(0, 450);
172+
updateHitbox();
173+
screenCenter();
174+
}
175+
}
176+
177+
public function setRank(rankNum:Int, ?instant:Bool = false) {
178+
rankOverride = true;
179+
intendedRating = rankNum;
180+
lerpRating = Std.int(FlxMath.lerp(intendedRating, lerpRating, Math.exp(-el * 12)));
181+
if (Math.abs(lerpRating - intendedRating) <= 0 || instant)
182+
lerpRating = intendedRating;
183+
184+
switch (size) {
185+
case 'small':
186+
loadGraphic(Paths.image('rankings/${rankTable[lerpRating]}-small'));
187+
scale.x = scale.y = 140 / height;
188+
updateHitbox();
189+
antialiasing = true;
190+
scrollFactor.set();
191+
y = 690 - height;
192+
x = -200 + FlxG.width - 50;
193+
case 'big':
194+
loadGraphic(Paths.image('rankings/${rankTable[lerpRating]}'));
195+
scrollFactor.set();
196+
setGraphicSize(0, 450);
197+
updateHitbox();
198+
screenCenter();
199+
}
200+
}
201+
}

source/options/MixtapeSettingsSubState.hx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ class MixtapeSettingsSubState extends BaseOptionsMenu
248248
STRING,
249249
["Light", "Dark"]);
250250
option.displayFormat = '< %v >';
251-
option.onChange = function() Achievements.unlock('much_better');
251+
option.onChange = function() {if (ClientPrefs.data.menuTheme == "Dark") Achievements.unlock('much_better');};
252252
addOption(option);
253253

254254
var option:Option = new Option('---MISC.---',

source/stages/MallEvil.hx

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,48 @@ import stages.objects.*;
44

55
class MallEvil extends BaseStage
66
{
7+
var snowSprites:Array<MallSnow> = [];
78
override function create()
89
{
910
var bg:BGSprite = new BGSprite('christmas/evilBG', -400, -500, 0.2, 0.2);
1011
bg.setGraphicSize(Std.int(bg.width * 0.8));
1112
bg.updateHitbox();
1213
add(bg);
1314

15+
if(!ClientPrefs.data.lowQuality) {
16+
var snowSprite = new MallSnow({
17+
x: -900,
18+
y: -1200,
19+
width: 2400,
20+
height: 400
21+
});
22+
snowSprite.scrollFactor.set(0.15, 0.15);
23+
snowSprite.antialiasing = ClientPrefs.data.antialiasing;
24+
snowSprite.color = FlxColor.RED;
25+
snowSprites.push(snowSprite);
26+
add(snowSprite);
27+
}
28+
1429
var evilTree:BGSprite = new BGSprite('christmas/evilTree', 300, -300, 0.2, 0.2);
1530
add(evilTree);
1631

1732
var evilSnow:BGSprite = new BGSprite('christmas/evilSnow', -200, 700);
1833
add(evilSnow);
1934
setDefaultGF('gf-christmas');
35+
36+
if (!ClientPrefs.data.lowQuality) {
37+
var snowSprite = new MallSnow({
38+
x: -900,
39+
y: -1200,
40+
width: 2400,
41+
height: 400
42+
});
43+
snowSprite.scrollFactor.set(0.15, 0.15);
44+
snowSprite.antialiasing = ClientPrefs.data.antialiasing;
45+
snowSprite.color = FlxColor.RED;
46+
snowSprites.push(snowSprite);
47+
add(snowSprite);
48+
}
2049

2150
//Winter Horrorland cutscene
2251
if (isStoryMode && !seenCutscene)
@@ -29,6 +58,34 @@ class MallEvil extends BaseStage
2958
}
3059
}
3160

61+
override function createPost() {
62+
super.createPost();
63+
if (!ClientPrefs.data.lowQuality) {
64+
var snowSprite = new MallSnow({
65+
x: -900,
66+
y: -1200,
67+
width: 2400,
68+
height: 400
69+
});
70+
snowSprite.scrollFactor.set(0.15, 0.15);
71+
snowSprite.antialiasing = ClientPrefs.data.antialiasing;
72+
snowSprites.push(snowSprite);
73+
add(snowSprite);
74+
}
75+
}
76+
77+
override function beatHit() {
78+
if (curBeat % 2 == 0)
79+
{
80+
for (snowSprite in snowSprites)
81+
{
82+
var spawnMin = FlxG.random.int(3, 12);
83+
var spawnMax = spawnMin + FlxG.random.int(12, 16);
84+
snowSprite.spawnGroup(spawnMin, spawnMax, 0.8, 1.4, 120, 360);
85+
}
86+
}
87+
}
88+
3289
function winterHorrorlandCutscene()
3390
{
3491
camHUD.visible = false;

source/stages/objects/MallSnow.hx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class MallSnow extends FlxTypedGroup<SnowSprite>
1313
public var scrollFactor:FlxPoint = FlxPoint.get(1, 1);
1414
public var scaleFactor:Float = 0;
1515
public var antialiasing:Bool = true;
16+
public var color:FlxColor = FlxColor.WHITE;
1617

1718
public override function new(spawnPos:SpawnPosition)
1819
{
@@ -71,6 +72,7 @@ class MallSnow extends FlxTypedGroup<SnowSprite>
7172
snowSprite.scale.set(snowSprite.startScale, snowSprite.startScale);
7273
snowSprite.x = FlxG.random.float(spawnPosition.x, spawnPosition.x + spawnPosition.width);
7374
snowSprite.y = FlxG.random.float(spawnPosition.y, spawnPosition.y + spawnPosition.height);
75+
snowSprite.color = color;
7476
add(snowSprite);
7577
}
7678
}

0 commit comments

Comments
 (0)