public override void Update(double time, Game game) { xModOffset = 0; yModOffset = 0; //how to do mods! xModOffset = ModEffects.CalculateReceiverX(mods); yModOffset = ModEffects.CalculateReceiverY(mods); visual.x = xOffset + actualX + xModOffset; visual.y = yOffset + actualY + yModOffset; pressedVisual.x = visual.x; pressedVisual.y = visual.y; nMiss = false; foreach (var note in notes) { if (chart.beat >= note.time - chart.approachBeat) { //Console.WriteLine(collumn); //spawn the note Arrow temparrow = new Arrow(collumn, note, this.chart); game.addGameObject(temparrow); arrows.Add(temparrow); temparrow.mods = this.mods; spawnedNotes.Add(note); } } foreach (var note in spawnedNotes) { notes.Remove(note); } spawnedNotes.Clear(); //more to come //here it come foreach (var item in arrows) { item.xOffset = this.xOffset; item.yOffset = this.yOffset; item.dir = this.direction; item.angle = this.rot; if (chart.beat >= (item.noteInfo.time - chart.scoreTime) && chart.beat <= (item.noteInfo.time + chart.scoreTime)) { //time to HITE //have to write this after //Console.WriteLine("HIT"); bool hit = false; switch (collumn) { case Chart.collumn.Left: if (game.input.ButtonStates[Input.ButtonKind.Left] == Input.ButtonState.Press) { hit = true; } break; case Chart.collumn.Down: if (game.input.ButtonStates[Input.ButtonKind.Down] == Input.ButtonState.Press) { hit = true; } break; case Chart.collumn.Up: if (game.input.ButtonStates[Input.ButtonKind.Up] == Input.ButtonState.Press) { hit = true; } break; case Chart.collumn.Right: if (game.input.ButtonStates[Input.ButtonKind.Right] == Input.ButtonState.Press) { hit = true; } break; default: hit = false; break; } if (hit) { nMiss = true; chart.scoreHandler.Hit(); deadNotes.Add(item); } } else if (chart.beat <= (item.noteInfo.time + chart.missTime) && (item.noteInfo.time - chart.missTime) <= chart.beat) { bool miss = false; switch (collumn) { case Chart.collumn.Left: if (game.input.ButtonStates[Input.ButtonKind.Left] == Input.ButtonState.Press) { miss = true; } break; case Chart.collumn.Down: if (game.input.ButtonStates[Input.ButtonKind.Down] == Input.ButtonState.Press) { miss = true; } break; case Chart.collumn.Up: if (game.input.ButtonStates[Input.ButtonKind.Up] == Input.ButtonState.Press) { miss = true; } break; case Chart.collumn.Right: if (game.input.ButtonStates[Input.ButtonKind.Right] == Input.ButtonState.Press) { miss = true; } break; default: miss = false; break; } if (miss && !nMiss) { nMiss = true; chart.scoreHandler.Miss(true); deadNotes.Add(item); } } if ((item.noteInfo.time + chart.scoreTime) <= chart.beat) { //darn issa miss //Console.WriteLine("miss"); chart.scoreHandler.Miss(false); deadNotes.Add(item); } //REALLLLY FEELS LIKE A BAD IDEA DOING THIS LIKE THIS item.freeze(this.frozen); } foreach (var item in deadNotes) { arrows.Remove(item); item.alive = false; } bool pressed = false; switch (collumn) { case Chart.collumn.Left: if (game.input.ButtonStates[Input.ButtonKind.Left] == Input.ButtonState.Held) { pressed = true; } break; case Chart.collumn.Down: if (game.input.ButtonStates[Input.ButtonKind.Down] == Input.ButtonState.Held) { pressed = true; } break; case Chart.collumn.Up: if (game.input.ButtonStates[Input.ButtonKind.Up] == Input.ButtonState.Held) { pressed = true; } break; case Chart.collumn.Right: if (game.input.ButtonStates[Input.ButtonKind.Right] == Input.ButtonState.Held) { pressed = true; } break; default: pressed = false; break; } if (pressed) { pressedVisual.z = 1; } else { pressedVisual.z = -2; } }