├── .all-contributorsrc ├── .gitattributes ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug-report-for-beta-clients.md │ ├── bug_report.md │ ├── feature_request.md │ └── question-help.md ├── images │ ├── gameplay.png │ ├── landing_page.png │ ├── results_page_accuracy.png │ └── results_page_combo_progress.png └── workflows │ ├── check.yml │ ├── manual.yml │ └── release.yml ├── .gitignore ├── .markdownlint.json ├── .vscode ├── extensions.json ├── launch.json └── tasks.json ├── LICENSE ├── README.md ├── application-mobile.xml ├── application.xml ├── asconfig.hybrid.json ├── asconfig.json ├── asconfig.lib.json ├── asconfig.mobile.json ├── asconfig.release.json ├── assets ├── .gitignore ├── assets.fla ├── branding-icons.zip ├── branding.fla ├── components.fla ├── icons.fla └── noteskins │ ├── NoteSkin1.fla │ ├── NoteSkin10.fla │ ├── NoteSkin2.fla │ ├── NoteSkin3.fla │ ├── NoteSkin4.fla │ ├── NoteSkin5.fla │ ├── NoteSkin6.fla │ ├── NoteSkin7.fla │ ├── NoteSkin8.fla │ ├── NoteSkin9.fla │ ├── noteskin1 │ ├── note_blue.png │ ├── note_cyan.png │ ├── note_green.png │ ├── note_orange.png │ ├── note_pink.png │ ├── note_purple.png │ ├── note_red.png │ ├── note_white.png │ ├── note_yellow.png │ ├── packed.json │ ├── packed.png │ ├── packed.tps │ └── receptor.png │ ├── noteskin10 │ ├── note_blue.png │ ├── note_cyan.png │ ├── note_green.png │ ├── note_orange.png │ ├── note_pink.png │ ├── note_purple.png │ ├── note_red.png │ ├── note_white.png │ ├── note_yellow.png │ ├── packed.json │ ├── packed.png │ ├── packed.tps │ └── receptor.png │ ├── noteskin2 │ ├── note_blue.png │ ├── note_cyan.png │ ├── note_green.png │ ├── note_orange.png │ ├── note_pink.png │ ├── note_purple.png │ ├── note_red.png │ ├── note_white.png │ ├── note_yellow.png │ ├── packed.json │ ├── packed.png │ ├── packed.tps │ └── receptor.png │ ├── noteskin3 │ ├── note_blue.png │ ├── note_cyan.png │ ├── note_green.png │ ├── note_orange.png │ ├── note_pink.png │ ├── note_purple.png │ ├── note_red.png │ ├── note_white.png │ ├── note_yellow.png │ ├── packed.json │ ├── packed.png │ ├── packed.tps │ └── receptor.png │ ├── noteskin4 │ ├── note_blue.png │ ├── note_cyan.png │ ├── note_green.png │ ├── note_orange.png │ ├── note_pink.png │ ├── note_purple.png │ ├── note_red.png │ ├── note_white.png │ ├── note_yellow.png │ ├── packed.json │ ├── packed.png │ ├── packed.tps │ └── receptor.png │ ├── noteskin5 │ ├── note_blue.png │ ├── note_cyan.png │ ├── note_green.png │ ├── note_orange.png │ ├── note_pink.png │ ├── note_purple.png │ ├── note_red.png │ ├── note_white.png │ ├── note_yellow.png │ ├── packed.json │ ├── packed.png │ ├── packed.tps │ └── receptor.png │ ├── noteskin6 │ ├── note_blue.png │ ├── note_cyan.png │ ├── note_green.png │ ├── note_orange.png │ ├── note_pink.png │ ├── note_purple.png │ ├── note_red.png │ ├── note_white.png │ ├── note_yellow.png │ ├── packed.json │ ├── packed.png │ ├── packed.tps │ └── receptor.png │ ├── noteskin7 │ ├── note_blue.png │ ├── note_cyan.png │ ├── note_green.png │ ├── note_orange.png │ ├── note_pink.png │ ├── note_purple.png │ ├── note_red.png │ ├── note_white.png │ ├── note_yellow.png │ ├── packed.json │ ├── packed.png │ ├── packed.tps │ └── receptor.png │ ├── noteskin8 │ ├── note_blue.png │ ├── note_cyan.png │ ├── note_green.png │ ├── note_orange.png │ ├── note_pink.png │ ├── note_purple.png │ ├── note_red.png │ ├── note_white.png │ ├── note_yellow.png │ ├── packed.json │ ├── packed.png │ ├── packed.tps │ └── receptor.png │ ├── noteskin9 │ ├── note_blue.png │ ├── note_cyan.png │ ├── note_green.png │ ├── note_orange.png │ ├── note_pink.png │ ├── note_purple.png │ ├── note_red.png │ ├── note_white.png │ ├── note_yellow.png │ ├── packed.json │ ├── packed.png │ ├── packed.tps │ └── receptor.png │ └── noteskins.fla ├── bootstrap.ps1 ├── certs ├── .gitignore ├── GenerateCertificate.ps1 ├── GenerateGithubSecret.ps1 └── README.md ├── changelog.txt ├── data └── icons │ ├── icon-144.png │ ├── icon-180.png │ ├── icon-192.png │ ├── icon-36.png │ ├── icon-48.png │ ├── icon-512.png │ ├── icon-72.png │ └── icon-96.png ├── dist └── .gitignore ├── fonts ├── AachenLight │ ├── asconfig.aachen.json │ ├── assets │ │ └── AachenLight.ttf │ └── src │ │ └── AachenLight.as ├── FontAwesome │ ├── asconfig.fontawesome.json │ ├── assets │ │ ├── FontAwesome6FreeSolid.otf │ │ └── LICENSE │ └── src │ │ └── FontAwesome.as ├── NotoSans │ ├── asconfig.notosans.json │ ├── assets │ │ ├── LICENSE │ │ ├── NotoSans-Bold.ttf │ │ ├── NotoSans-BoldItalic.ttf │ │ └── NotoSans-CJK-Bold.ttc │ └── src │ │ └── NotoSans.as ├── README.md └── asconfig.embed-fonts.json ├── libs ├── assets │ ├── assets.swc │ ├── branding.swc │ └── icons.swc └── blooddy_crypto.swc ├── r3.code-workspace ├── renovate.json └── src ├── AirContext.as ├── Constant.as ├── FileCache.as ├── Flags.as ├── Fonts.as ├── GlobalVariables.as ├── LocalOptions.as ├── LocalStore.as ├── Logger.as ├── LoginMenu.as ├── Main.as ├── URLs.as ├── Updater.as ├── arc └── ArcGlobals.as ├── assets └── GameBackgroundColor.as ├── be └── aboutme │ └── airserver │ ├── AIRServer.as │ ├── Client.as │ ├── endpoints │ ├── IClientHandler.as │ ├── IEndPoint.as │ └── socket │ │ ├── SocketEndPoint.as │ │ └── handlers │ │ ├── SocketClientHandler.as │ │ ├── SocketClientHandlerFactory.as │ │ └── websocket │ │ ├── WebSocketClientHandler.as │ │ └── WebSocketClientHandlerFactory.as │ ├── events │ ├── AIRServerEvent.as │ ├── EndPointEvent.as │ ├── MessageReceivedEvent.as │ └── MessagesAvailableEvent.as │ └── messages │ ├── Message.as │ └── serialization │ ├── IMessageSerializer.as │ └── JSONSerializer.as ├── classes ├── Alert.as ├── DynamicLoader.as ├── DynamicSprite.as ├── DynamicTextField.as ├── FileTracker.as ├── GameNote.as ├── GameReceptor.as ├── ImageCache.as ├── Language.as ├── Noteskins.as ├── NoteskinsStruct.as ├── Playlist.as ├── Site.as ├── SongInfo.as ├── SongPlayerBytes.as ├── SongPreview.as ├── SongQueueItem.as ├── StatTracker.as ├── Tweens.as ├── User.as ├── chart │ ├── Note.as │ ├── NoteChart.as │ ├── NoteMod.as │ ├── Song.as │ └── parse │ │ ├── ChartBase.as │ │ ├── ChartFFRLegacy.as │ │ ├── ChartOSU.as │ │ ├── ChartQuaver.as │ │ ├── ChartSSC.as │ │ ├── ChartStepmania.as │ │ ├── ChartStepmaniaBeat.as │ │ └── ExternalChartBase.as ├── filter │ ├── EngineLevelFilter.as │ └── SavedFilterButton.as ├── mp │ ├── MPColors.as │ ├── MPModes.as │ ├── MPSocketDataRaw.as │ ├── MPSocketDataText.as │ ├── MPSong.as │ ├── MPTeam.as │ ├── MPUser.as │ ├── MPUserPermissions.as │ ├── MPView.as │ ├── Multiplayer.as │ ├── commands │ │ ├── IMPCommand.as │ │ ├── MPCFFRGameModifiers.as │ │ ├── MPCFFRGameStateChange.as │ │ ├── MPCFFRPlaybackRequest.as │ │ ├── MPCFFRReady.as │ │ ├── MPCFFRReadyForce.as │ │ ├── MPCFFRResultsWait.as │ │ ├── MPCFFRScoreUpdate.as │ │ ├── MPCFFRSong.as │ │ ├── MPCFFRSongLoadError.as │ │ ├── MPCFFRSongLoadProgress.as │ │ ├── MPCFFRSongPlayable.as │ │ ├── MPCFFRSongProgress.as │ │ ├── MPCFFRSongRate.as │ │ ├── MPCFFRSongStart.as │ │ ├── MPCLogin.as │ │ ├── MPCModBanUser.as │ │ ├── MPCModMuteUser.as │ │ ├── MPCRoomCreate.as │ │ ├── MPCRoomDelete.as │ │ ├── MPCRoomEdit.as │ │ ├── MPCRoomInfo.as │ │ ├── MPCRoomInvite.as │ │ ├── MPCRoomJoin.as │ │ ├── MPCRoomJoinCode.as │ │ ├── MPCRoomLeave.as │ │ ├── MPCRoomMessage.as │ │ ├── MPCRoomTeamChange.as │ │ ├── MPCRoomUserBlock.as │ │ ├── MPCRoomUserOwner.as │ │ ├── MPCUserBlock.as │ │ ├── MPCUserMessage.as │ │ └── MPCommands.as │ ├── components │ │ ├── MPChatTypes.as │ │ ├── MPMenuRoomButton.as │ │ ├── MPViewChatLogRoom.as │ │ ├── MPViewChatLogUser.as │ │ ├── MPViewUserListPM.as │ │ ├── MPViewUserListRoom.as │ │ ├── browser │ │ │ ├── MPBrowserEntry.as │ │ │ └── MPBrowserScrollpane.as │ │ ├── chatlog │ │ │ ├── MPChatLogEntry.as │ │ │ ├── MPChatLogEntryMatchResults.as │ │ │ ├── MPChatLogEntrySong.as │ │ │ ├── MPChatLogEntryText.as │ │ │ └── MPChatLogRoomInvite.as │ │ └── userlist │ │ │ ├── MPUserListEntry.as │ │ │ └── MPUserlistScrollpane.as │ ├── events │ │ ├── MPEvent.as │ │ ├── MPPMSelect.as │ │ ├── MPRoomEvent.as │ │ ├── MPRoomRawEvent.as │ │ ├── MPUserEvent.as │ │ └── MPViewEvent.as │ ├── mode │ │ └── ffr │ │ │ ├── MPFFRState.as │ │ │ ├── MPGameplayMods.as │ │ │ ├── MPMatchFFR.as │ │ │ ├── MPMatchFFRTeam.as │ │ │ ├── MPMatchFFRUser.as │ │ │ ├── MPMatchResultsFFR.as │ │ │ ├── MPMatchResultsTeam.as │ │ │ ├── MPMatchResultsUser.as │ │ │ └── mods │ │ │ ├── MPGameplayModBoolean.as │ │ │ └── MPGameplayModNumber.as │ ├── pm │ │ └── MPUserChatHistory.as │ ├── prompts │ │ ├── MPRoomUserInvitePrompt.as │ │ └── MPUserProfilePrompt.as │ ├── room │ │ ├── MPRoom.as │ │ └── MPRoomFFR.as │ └── views │ │ ├── MPRoomView.as │ │ ├── MPRoomViewFFR.as │ │ ├── MPRoomViewLobby.as │ │ ├── MPServerBrowserView.as │ │ └── MPUserMessagesView.as ├── replay │ ├── Replay.as │ ├── ReplayBinFrame.as │ ├── ReplayNote.as │ ├── ReplayPack.as │ └── ReplayPacked.as ├── score │ ├── ScoreHandler.as │ └── ScoreHandlerEvent.as ├── ui │ ├── Box.as │ ├── BoxButton.as │ ├── BoxCheck.as │ ├── BoxIcon.as │ ├── BoxSlider.as │ ├── BoxText.as │ ├── ColorField.as │ ├── HeartSelector.as │ ├── IScrollPane.as │ ├── IconUtil.as │ ├── MouseTooltip.as │ ├── ProgressBar.as │ ├── Prompt.as │ ├── PromptInput.as │ ├── ScrollBar.as │ ├── ScrollPane.as │ ├── ScrollPaneContent.as │ ├── SimpleBoxButton.as │ ├── StarSelector.as │ ├── Text.as │ ├── Throbber.as │ ├── UIIcon.as │ ├── UIIconHover.as │ ├── UILockWait.as │ └── ValidatedText.as └── user │ ├── UserSongData.as │ ├── UserSongNotes.as │ ├── UserStats.as │ └── UserStatsScore.as ├── com ├── bit101 │ └── components │ │ ├── ComboBox.as │ │ ├── Component.as │ │ ├── Label.as │ │ ├── List.as │ │ ├── ListItem.as │ │ ├── Panel.as │ │ ├── PushButton.as │ │ ├── ScrollBar.as │ │ ├── Slider.as │ │ └── VScrollBar.as ├── coltware │ └── airxzip │ │ ├── ZipCRC32.as │ │ ├── ZipEndRecord.as │ │ ├── ZipEntry.as │ │ ├── ZipError.as │ │ ├── ZipErrorEvent.as │ │ ├── ZipEvent.as │ │ ├── ZipFileReader.as │ │ ├── ZipFileWriter.as │ │ ├── ZipHeader.as │ │ ├── crypt │ │ ├── ICrypto.as │ │ └── ZipCrypto.as │ │ └── zip_internal.as ├── flashdynamix │ └── utils │ │ └── SWFProfiler.as ├── flashfla │ ├── loader │ │ └── DataEvent.as │ ├── media │ │ ├── Beatbox.as │ │ ├── MP3Extraction.as │ │ ├── SwfParser.as │ │ └── SwfSilencer.as │ ├── net │ │ ├── DynamicURLLoader.as │ │ ├── ForcibleLoader.as │ │ ├── MultipartURLLoader.as │ │ ├── WebRequest.as │ │ └── events │ │ │ └── MultipartURLLoaderEvent.as │ ├── parser │ │ └── YAML.as │ └── utils │ │ ├── ArrayUtil.as │ │ ├── Average.as │ │ ├── ColorUtil.as │ │ ├── Crypt.as │ │ ├── DateUtil.as │ │ ├── ExtraMath.as │ │ ├── GameNotePool.as │ │ ├── NumberUtil.as │ │ ├── ObjectUtil.as │ │ ├── RollingAverage.as │ │ ├── Screenshots.as │ │ ├── SpriteUtil.as │ │ ├── StringUtil.as │ │ ├── SystemUtil.as │ │ ├── TimeUtil.as │ │ ├── VectorUtil.as │ │ ├── getDefinitionNames.as │ │ └── sprintf.as ├── greensock │ ├── BlitMask.as │ ├── TimelineLite.as │ ├── TimelineMax.as │ ├── TweenAlign.as │ ├── TweenLite.as │ ├── TweenMax.as │ ├── TweenNano.as │ ├── core │ │ ├── Animation.as │ │ ├── PropTween.as │ │ └── SimpleTimeline.as │ ├── easing │ │ ├── Back.as │ │ ├── BackIn.as │ │ ├── BackInOut.as │ │ ├── BackOut.as │ │ ├── Bounce.as │ │ ├── BounceIn.as │ │ ├── BounceInOut.as │ │ ├── BounceOut.as │ │ ├── Circ.as │ │ ├── CircIn.as │ │ ├── CircInOut.as │ │ ├── CircOut.as │ │ ├── Cubic.as │ │ ├── Ease.as │ │ ├── EaseLookup.as │ │ ├── Elastic.as │ │ ├── ElasticIn.as │ │ ├── ElasticInOut.as │ │ ├── ElasticOut.as │ │ ├── Expo.as │ │ ├── ExpoIn.as │ │ ├── ExpoInOut.as │ │ ├── ExpoOut.as │ │ ├── Linear.as │ │ ├── Power0.as │ │ ├── Power1.as │ │ ├── Power2.as │ │ ├── Power3.as │ │ ├── Power4.as │ │ ├── Quad.as │ │ ├── Quart.as │ │ ├── Quint.as │ │ ├── RoughEase.as │ │ ├── Sine.as │ │ ├── SineIn.as │ │ ├── SineInOut.as │ │ ├── SineOut.as │ │ ├── SlowMo.as │ │ ├── SteppedEase.as │ │ ├── Strong.as │ │ └── core │ │ │ └── EasePoint.as │ ├── events │ │ ├── LoaderEvent.as │ │ └── TweenEvent.as │ └── plugins │ │ ├── AutoAlphaPlugin.as │ │ ├── BevelFilterPlugin.as │ │ ├── BezierPlugin.as │ │ ├── BezierThroughPlugin.as │ │ ├── BlurFilterPlugin.as │ │ ├── CacheAsBitmapPlugin.as │ │ ├── ColorMatrixFilterPlugin.as │ │ ├── ColorTransformPlugin.as │ │ ├── DirectionalRotationPlugin.as │ │ ├── DropShadowFilterPlugin.as │ │ ├── EndArrayPlugin.as │ │ ├── EndVectorPlugin.as │ │ ├── FilterPlugin.as │ │ ├── FrameBackwardPlugin.as │ │ ├── FrameForwardPlugin.as │ │ ├── FrameLabelPlugin.as │ │ ├── FramePlugin.as │ │ ├── GlowFilterPlugin.as │ │ ├── HexColorsPlugin.as │ │ ├── OnChangeRatioPlugin.as │ │ ├── OnCompleteRenderPlugin.as │ │ ├── Positions2DPlugin.as │ │ ├── QuaternionsPlugin.as │ │ ├── RemoveTintPlugin.as │ │ ├── RoundPropsPlugin.as │ │ ├── ScalePlugin.as │ │ ├── ScrollRectPlugin.as │ │ ├── SetActualSizePlugin.as │ │ ├── SetSizePlugin.as │ │ ├── ShortRotationPlugin.as │ │ ├── SoundTransformPlugin.as │ │ ├── StageQualityPlugin.as │ │ ├── TintPlugin.as │ │ ├── TransformMatrixPlugin.as │ │ ├── TweenPlugin.as │ │ ├── VisiblePlugin.as │ │ └── VolumePlugin.as └── worlize │ └── websocket │ ├── WebSocket.as │ ├── WebSocketCloseStatus.as │ ├── WebSocketConfig.as │ ├── WebSocketError.as │ ├── WebSocketErrorEvent.as │ ├── WebSocketEvent.as │ ├── WebSocketFrame.as │ ├── WebSocketMessage.as │ ├── WebSocketOpcode.as │ ├── WebSocketState.as │ └── WebSocketURI.as ├── game ├── GameLoading.as ├── GameMenu.as ├── GameMultiplayerWait.as ├── GameOptions.as ├── GameResults.as ├── GameResultsMP.as ├── GameScoreResult.as ├── GameplayDisplay.as ├── SkillRating.as ├── controls │ ├── AccuracyBar.as │ ├── BarBottom.as │ ├── BarTop.as │ ├── Combo.as │ ├── ComboTotal.as │ ├── GameControl.as │ ├── GameControlEditor.as │ ├── GameLayoutManager.as │ ├── Judge.as │ ├── Judge_Tweens.as │ ├── LifeBar.as │ ├── MPFFRScoreCompare.as │ ├── NoteBox.as │ ├── PAWindow.as │ ├── ProgressBarGame.as │ ├── RawGoods.as │ ├── Score.as │ ├── ScreenCut.as │ └── TextStatic.as ├── events │ ├── GamePlaybackEvent.as │ ├── GamePlaybackFocusChange.as │ ├── GamePlaybackJudgeResult.as │ ├── GamePlaybackKeyDown.as │ ├── GamePlaybackKeyUp.as │ ├── GamePlaybackReader.as │ ├── GamePlaybackScoreState.as │ ├── GamePlaybackSpectatorEnd.as │ └── GamePlaybackSpectatorHit.as ├── graph │ ├── GraphAccuracy.as │ ├── GraphAccuracyPrecise.as │ ├── GraphAccuracyPrecise2.as │ ├── GraphBase.as │ ├── GraphCombo.as │ └── GraphCrossPoint.as ├── noteskins │ ├── EmbedNoteskin1.as │ ├── EmbedNoteskin10.as │ ├── EmbedNoteskin2.as │ ├── EmbedNoteskin3.as │ ├── EmbedNoteskin4.as │ ├── EmbedNoteskin5.as │ ├── EmbedNoteskin6.as │ ├── EmbedNoteskin7.as │ ├── EmbedNoteskin8.as │ ├── EmbedNoteskin9.as │ ├── EmbedNoteskinBase.as │ ├── ExternalNoteskin.as │ ├── NoteSkin1.swf │ ├── NoteSkin10.swf │ ├── NoteSkin2.swf │ ├── NoteSkin3.swf │ ├── NoteSkin4.swf │ ├── NoteSkin5.swf │ ├── NoteSkin6.swf │ ├── NoteSkin7.swf │ ├── NoteSkin8.swf │ └── NoteSkin9.swf └── results │ ├── GameResultBackground.as │ ├── GameResultFFRScoreList.as │ ├── GameResultFFRView.as │ └── GameResultSingleView.as ├── menu ├── FileLoader.as ├── MainMenu.as ├── MenuButton.as ├── MenuMultiplayer.as ├── MenuPanel.as ├── MenuSongSelection.as ├── MenuSongSelectionOptions.as ├── MenuTokens.as ├── SongItem.as └── TokenItem.as └── popups ├── FilterItemButton.as ├── PopupContextMenu.as ├── PopupFileBrowser.as ├── PopupFilterManager.as ├── PopupHelp.as ├── PopupHighscores.as ├── PopupMessage.as ├── PopupQueueManager.as ├── PopupSkillRankUpdate.as ├── PopupSongNotes.as ├── PopupTokenUnlock.as ├── filebrowser ├── DifficultyItem.as ├── FileBrowserDifficultyItem.as ├── FileBrowserFilter.as ├── FileBrowserItem.as ├── FileBrowserList.as ├── FileFolder.as └── FileFolderItem.as ├── replays ├── ReplayHistoryEntry.as ├── ReplayHistoryScrollpane.as ├── ReplayHistoryTabBase.as ├── ReplayHistoryTabLocal.as ├── ReplayHistoryTabOnline.as ├── ReplayHistoryTabSession.as └── ReplayHistoryWindow.as └── settings ├── SettingsTabBase.as ├── SettingsTabColors.as ├── SettingsTabDebug.as ├── SettingsTabGeneral.as ├── SettingsTabInput.as ├── SettingsTabMisc.as ├── SettingsTabModifiers.as ├── SettingsTabNoteskin.as ├── SettingsTabVisuals.as └── SettingsWindow.as /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | 3 | *.db filter=lfs diff=lfs merge=lfs -text 4 | *.fla filter=lfs diff=lfs merge=lfs -text 5 | *.p12 filter=lfs diff=lfs merge=lfs -text 6 | *.png filter=lfs diff=lfs merge=lfs -text 7 | *.swc filter=lfs diff=lfs merge=lfs -text 8 | *.swf filter=lfs diff=lfs merge=lfs -text 9 | *.ttf filter=lfs diff=lfs merge=lfs -text 10 | *.zip filter=lfs diff=lfs merge=lfs -text 11 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @flashflashrevolution/rcubed-contributors 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report-for-beta-clients.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report for Beta Clients 3 | about: Help clean up a build before release! 4 | title: '' 5 | labels: beta, bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **Screenshots** 14 | Add a screenshot as proof that is happened! 15 | 16 | **Reproduction Steps** 17 | Follow these steps to reproduce bug: 18 | 1. Go to '...' 19 | 2. Click on '....' 20 | 3. Scroll down to '....' 21 | 4. See error 22 | 23 | **Reproduction Rate** 24 | This bug occurs xxx% of the time. 25 | 26 | **Expected behaviour** 27 | A clear and concise description of what you expected to happen. 28 | 29 | **Desktop (please complete the following information):** 30 | - Platform: [Web or Air] 31 | - Version: [e.g. 1.1.1] 32 | 33 | **Additional context or comments** 34 | Add any other context about the problem here. Did you see any pop-ups? Did you get a call-stack? 35 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Found a bug in R3? Report it! 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **Screenshots** 14 | Add a screenshot as proof that is happened! 15 | 16 | **Reproduction Steps** 17 | Follow these steps to reproduce bug: 18 | 1. Go to '...' 19 | 2. Click on '....' 20 | 3. Scroll down to '....' 21 | 4. See error 22 | 23 | **Reproduction Rate** 24 | This bug occurs xxx% of the time. 25 | 26 | **Expected behaviour** 27 | A clear and concise description of what you expected to happen. 28 | 29 | **Desktop (please complete the following information):** 30 | - Platform: [Web or Air] 31 | - Version: [e.g. 1.1.1] 32 | 33 | **Additional context or comments** 34 | Add any other context about the problem here. Did you see any pop-ups? Did you get a call-stack? 35 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest a feature! (Search for your feature request first, it might have been 4 | suggested already.) 5 | title: '' 6 | labels: enhancement 7 | assignees: '' 8 | 9 | --- 10 | 11 | **Is your feature based on a frustration?** 12 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 13 | 14 | **If so, Describe the solution you'd like** 15 | A clear and concise description of what you want to happen. 16 | 17 | **And, Describe alternatives you've considered** 18 | A clear and concise description of any alternative solutions or features you've considered. 19 | 20 | **Otherwise, is your feature just a cool thing you want?** 21 | (Start by deleting the frustration section, and this bracketed text.) 22 | Describe your feature! 23 | 24 | ** Images ** 25 | If applicable, please sketch out what you mean in a piece of painting software. 26 | You may be able to just take a screenshot of R3 and draw over it. 27 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question-help.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Question / Help 3 | about: Have a question about rCubed, or can't setup your development environment? (Search for your question first, it might have been answered already.) 4 | title: '' 5 | labels: question 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Question** 11 | Describe what you are trying to achieve and where you need guidance. 12 | 13 | **If the current behavior is a bug, please provide the steps to reproduce, and if possible a minimal demo of the problem** 14 | -------------------------------------------------------------------------------- /.github/images/gameplay.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:47ef88064a10a2d7b6e1f9a24cf89d666410a720df7cc49265c8d68d45e648a4 3 | size 71120 4 | -------------------------------------------------------------------------------- /.github/images/landing_page.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9d3de452ea8dfe300107dd6c6ad4548a0e6e3fcc630c0af075e6a3e9f40bf97b 3 | size 389632 4 | -------------------------------------------------------------------------------- /.github/images/results_page_accuracy.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8dd87597821acbf5932d96e260acf502cc700a6683d912cc947d79fc3fe4e8d9 3 | size 278326 4 | -------------------------------------------------------------------------------- /.github/images/results_page_combo_progress.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d4de7cd104b8c66b1b7cb19bdaa4f9f240ac05612b457902484c2a21ade18985 3 | size 264096 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/settings.json 2 | *.code-workspace 3 | !r3.code-workspace 4 | bin/ 5 | node_modules/ 6 | package-lock.json 7 | -------------------------------------------------------------------------------- /.markdownlint.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": true, 3 | "MD033": { 4 | "allowed_elements": [ 5 | "kbd", 6 | "details", 7 | "summary" 8 | ] 9 | }, 10 | "no-hard-tabs": false, 11 | "MD013": false, 12 | "indentation": true 13 | } 14 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "bowlerhatllc.vscode-nextgenas", 4 | "lonewolf.vscode-astools", 5 | "codezombiech.gitignore", 6 | "davidanson.vscode-markdownlint", 7 | "yzhang.markdown-all-in-one" 8 | ], 9 | "unwantedRecommendations": [] 10 | } 11 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "swf", 6 | "request": "launch", 7 | "name": "Launch R3", 8 | "preLaunchTask": "ActionScript: compile debug - asconfig.json" 9 | }, 10 | { 11 | "type": "swf", 12 | "request": "attach", 13 | "name": "Attach SWF" 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [] 4 | } 5 | -------------------------------------------------------------------------------- /application.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | R3 4 | 9.9.9 5 | R3 6 | 7 | R^3 8 | 9 | 64 10 | 11 | R^3 Engine 12 | 13 | extendedDesktop desktop 14 | discrete 15 | 16 | [Path to content will be replaced by Visual Studio Code.] 17 | R^3 18 | standard 19 | false 20 | true 21 | true 22 | true 23 | true 24 | direct 25 | 26 | 30 | 31 | data/icons/icon-36.png 32 | data/icons/icon-48.png 33 | data/icons/icon-72.png 34 | data/icons/icon-96.png 35 | data/icons/icon-144.png 36 | data/icons/icon-180.png 37 | data/icons/icon-192.png 38 | data/icons/icon-512.png 39 | 40 | 41 | -------------------------------------------------------------------------------- /asconfig.hybrid.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "asconfig.release.json", 3 | "compilerOptions": { 4 | "output": "bin/release/air.swf", 5 | "define": [ 6 | { 7 | "name": "R3::VERSION_PREFIX", 8 | "value": "\"0.0.8+\"" 9 | } 10 | ], 11 | "swf-version": 26, 12 | "target-player": "26.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /asconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "application": "application.xml", 3 | "type": "lib", 4 | "config": "air", 5 | "compilerOptions": { 6 | "debug": true, 7 | "source-path": ["src"], 8 | "include-sources": ["src"], 9 | "library-path": ["libs/", "libs/assets/"], 10 | "include-libraries": ["fonts/bin/"], 11 | "output": "bin/R3Lib.swc", 12 | "swf-version": 26, 13 | "target-player": "26.0", 14 | "locale": ["en_US"], 15 | "define": [ 16 | { 17 | "name": "CONFIG::debug", 18 | "value": true 19 | }, 20 | { 21 | "name": "CONFIG::release", 22 | "value": false 23 | }, 24 | { 25 | "name": "CONFIG::updater", 26 | "value": false 27 | }, 28 | { 29 | "name": "CONFIG::timeStamp", 30 | "value": "\"9999-12-31\"" 31 | }, 32 | { 33 | "name": "R3::HASH_STRING", 34 | "value": "\"hashstring\"" 35 | }, 36 | { 37 | "name": "R3::BRAND_NAME_LONG", 38 | "value": "\"FlashFlashRevolution\"" 39 | }, 40 | { 41 | "name": "R3::BRAND_NAME_SHORT", 42 | "value": "\"FFR\"" 43 | }, 44 | { 45 | "name": "R3::ROOT_URL", 46 | "value": "\"www.flashflashrevolution.com\"" 47 | }, 48 | { 49 | "name": "R3::VERSION", 50 | "value": "\"9.9.9\"" 51 | }, 52 | { 53 | "name": "R3::VERSION_PREFIX", 54 | "value": "\"MAIN_LIB\"" 55 | }, 56 | { 57 | "name": "R3::VERSION_SUFFIX", 58 | "value": "\"\"" 59 | } 60 | ] 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /asconfig.mobile.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "asconfig.release.json", 3 | "application": "application-mobile.xml", 4 | "config": "airmobile", 5 | "compilerOptions": { 6 | "define": [], 7 | // Overrides left here for alternate builds. 8 | "swf-version": 43, 9 | "target-player": "32.0" 10 | }, 11 | "airOptions": { 12 | "android": { 13 | "output": "bin/Main.apk", 14 | "signingOptions": { 15 | "storetype": "jks", 16 | "keystore": "certs/mobile.keystore" 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /asconfig.release.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "asconfig.json", 3 | "compilerOptions": { 4 | "verbose-stacktraces": false, 5 | "advanced-telemetry": false, 6 | "optimize": true, 7 | "output": "bin/release/R3Air.swf", 8 | "define": [ 9 | { 10 | "name": "CONFIG::debug", 11 | "value": false 12 | }, 13 | { 14 | "name": "CONFIG::release", 15 | "value": true 16 | }, 17 | { 18 | "name": "CONFIG::timeStamp", 19 | "value": "\"#{DATESTAMP}#\"" 20 | }, 21 | { 22 | "name": "R3::HASH_STRING", 23 | "value": "\"hash:#{SCORE_SAVE_SALT}#\"" 24 | }, 25 | { 26 | "name": "R3::VERSION", 27 | "value": "\"#{VERSION}#\"" 28 | }, 29 | { 30 | "name": "R3::VERSION_SUFFIX", 31 | "value": "\"\"" 32 | } 33 | ], 34 | "debug": false, 35 | "omit-trace-statements": true, 36 | // Overrides left here for alternate builds. 37 | "swf-version": 43, 38 | "target-player": "32.0" 39 | }, 40 | "airOptions": { 41 | "windows": { 42 | "target": "bundle", 43 | "output": "dist/R3Release", 44 | "signingOptions": { 45 | "storetype": "pkcs12", 46 | "keystore": "certs/air-cert.p12", 47 | "tsa": "http://timestamp.digicert.com" 48 | } 49 | }, 50 | "mac": { 51 | "target": "bundle", 52 | "output": "dist/r3Release.app", 53 | "signingOptions": { 54 | "storetype": "pkcs12", 55 | "keystore": "certs/air-cert.p12", 56 | "tsa": "http://timestamp.digicert.com" 57 | } 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /assets/.gitignore: -------------------------------------------------------------------------------- 1 | RECOVER_* 2 | DataStore/ 3 | *.swf 4 | *.swc 5 | -------------------------------------------------------------------------------- /assets/assets.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:35c30320d5e5dd5331079f4fe586efc088e3bed4f10ee456c91358d57782f58a 3 | size 1485261 4 | -------------------------------------------------------------------------------- /assets/branding-icons.zip: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c170366bbe973601273cb7d7494a4be499d56207d2bf944adec6ca6f05ae6fcb 3 | size 246330 4 | -------------------------------------------------------------------------------- /assets/branding.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:009a25f729c01af477f1599fd8407bfcb5adbf01d8fff30ee17ed5e013f7ef87 3 | size 216547 4 | -------------------------------------------------------------------------------- /assets/components.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8bc65db4fdac89d828c82030594bf89ecac9258d18b36539000bffdb18780576 3 | size 1044503 4 | -------------------------------------------------------------------------------- /assets/icons.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:afbdce51dda8579f6bac08373859138ad2e6ad281b68732fece3b678e617da2b 3 | size 259568 4 | -------------------------------------------------------------------------------- /assets/noteskins/NoteSkin1.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d89b870490936fa5c0b8a37222b059286889641319a7a7c29bb85cdbe2688855 3 | size 75177 4 | -------------------------------------------------------------------------------- /assets/noteskins/NoteSkin10.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2be8cf7e5cd2fa3c0a7c143b39942f94d184ee78c036a91c9f074f34929ebb73 3 | size 122895 4 | -------------------------------------------------------------------------------- /assets/noteskins/NoteSkin2.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d88a93959bf6f98a751da92668752940824430583f70abf812908ba5023e1cf4 3 | size 50504 4 | -------------------------------------------------------------------------------- /assets/noteskins/NoteSkin3.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:eeeaac5f8e2244609383fb2048cb2a835d26886c0f5a0704414269571c40be9a 3 | size 50525 4 | -------------------------------------------------------------------------------- /assets/noteskins/NoteSkin4.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:df54b218318229fdc31c2fd9ad20c61ec5f0521e801aa34d3fdcbd8b26ad7fd6 3 | size 90865 4 | -------------------------------------------------------------------------------- /assets/noteskins/NoteSkin5.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e16e5d36bdec278f8e600a3c9b2a42cc65da4c287506850076274f70c8a079c9 3 | size 110095 4 | -------------------------------------------------------------------------------- /assets/noteskins/NoteSkin6.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5ae4f2c5ae1fe172b65f856ad3d5dd1a9bbb81b8dcd13ba41ab6bdaddc4633fb 3 | size 90242 4 | -------------------------------------------------------------------------------- /assets/noteskins/NoteSkin7.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ab7cf310a113a3c7100f07e43dbf3b3d205412445f799f4233251b490c357b2a 3 | size 94195 4 | -------------------------------------------------------------------------------- /assets/noteskins/NoteSkin8.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:51d154f323b9b2b57ece652cf8796ff522de8955ce211f4e693aa4f81802ba06 3 | size 53243 4 | -------------------------------------------------------------------------------- /assets/noteskins/NoteSkin9.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9183d2e86b18e25a556b11ff5d28ddc9bcff6ccf78c5e5faa6de37ba3afaf892 3 | size 44957 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin1/note_blue.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a6c1b39500b3cd3dea2b4a89a927d4a67e971b68b06ea7d0b4ab5612160e6571 3 | size 7073 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin1/note_cyan.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1487db32e1b7257c5326360dc1d88ca63397e32d86bb3383df5c1f7529a915fb 3 | size 5859 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin1/note_green.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:628d2f1942d16041092322bf5862e5c893aa139de672bcf224c4ce97dc56014f 3 | size 5554 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin1/note_orange.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:341b73f8edf555a6f3ac1d525de94c83f1aa68a3101b5ade34402126266f48b0 3 | size 5528 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin1/note_pink.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:40f9871c84089bf8d630619ab8c94e1f4f5f25d9e812bd2426c2c68f9cef4f63 3 | size 5805 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin1/note_purple.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:635b145c603ffff17db42c03e8f049ea026146395c717bbd1d1da82f50e1143f 3 | size 6607 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin1/note_red.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:287c0a804d0e231a7fbb29c4d9bfad8fc348dec63a178f31f96b9062299cbd06 3 | size 6569 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin1/note_white.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:bcf2cb5fa02ba2ad7376bb5cbd0b8369da98ba09244aa4e7530f6176a5af2a6f 3 | size 4739 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin1/note_yellow.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:37339cee56f9b5ca5629c36f29d3b41d24382b0b18dc630aaeb731521c4db1b8 3 | size 4688 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin1/packed.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:09a4aa100eed31438855926b7eb3fb1ca63f83f310e8cfc91287b2ea96bbd410 3 | size 58278 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin1/receptor.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c19cdaed7f3ff9f2dc8d083a69ecd40867c7eb2b83a192e6aa373ef061972c00 3 | size 6957 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin10/note_blue.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a844b17ebe680fe00c63c1b5edaa85f7899faa4e18db0964ec1e9c845c686ec7 3 | size 4908 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin10/note_cyan.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a57c49493856494f752aced3ab8b368d2f9cd818f6abef84976985e4fde8a3be 3 | size 5370 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin10/note_green.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b7c99a3ec3637b2fe9b4e3ff00fef9679a81a4b16b2e9154b96808b02f863b07 3 | size 6102 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin10/note_orange.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7a8eecef5400d2530b4ca593fc4cb4623a94baf370cf1bcdbd28c16582a0328c 3 | size 5557 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin10/note_pink.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:889f9c8a4a32c59c17213a3fb118045326c6875d3fea0e89858d69d7094b7eed 3 | size 4827 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin10/note_purple.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f16d0e0b8efdf600626e00a9f32d893ab7cde6060d2cc7bb86cf19398b824cc4 3 | size 5970 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin10/note_red.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:30663f3a7d35b43f1abf1b2d01831c3954ebc0666d290a8bfc410756907c2574 3 | size 4653 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin10/note_white.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:95d0798fdff70e76c32e82cf6798750bf95f4c71ce48aff63db0a933b54b0adc 3 | size 4398 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin10/note_yellow.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e66195695ad237d766cfec5bff021e25b6aea8a2cacdb419e7cc981e2b6e6205 3 | size 5133 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin10/packed.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0c9086b2716df9d9bc9b58fe79cfcca5f01d9d0fabe10ee65d4e53351782a528 3 | size 42937 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin10/receptor.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a2f545b20a834eb0f82186a21a30f1299445b6786fc3e5b155778b43fac0784f 3 | size 4653 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin2/note_blue.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9013378572d189753adf79ffd6e1f9ad9da893f420040946547a3fb2846eda0b 3 | size 2299 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin2/note_cyan.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d8ac5d93b8e2441c4186f5aa19c9a6ede7e1fac626503e03be876a7cdc897ead 3 | size 2265 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin2/note_green.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:22cc9ec243466702e0ec41dcbfbcbdc156ee960cf505ea0c3a36ad2a04f91e4e 3 | size 2142 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin2/note_orange.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f187c526e2de0ed0a8b70faadf686ce607cc125e56455c42e1817a9362fc5580 3 | size 2140 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin2/note_pink.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3acba924edad96cdcc238dc397957257b4cf1f262a026bb0500b537fd9e97154 3 | size 2140 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin2/note_purple.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:64c4c7bbaf2596a86af781fe57f0ede252a459a957073c8a4eab3448b635fe09 3 | size 2156 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin2/note_red.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9d7a5efd6f215818044d17fd79c67e64def733ff90745dbf7a06492818e850b3 3 | size 2079 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin2/note_white.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cae8fd07089f533b3c9e7d95774489d8935deffa8a3b6ef742a2dc5f5385abc2 3 | size 1793 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin2/note_yellow.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3f39996b35aa6237d745cb771413755f1365f2c97893f86ecc55b9ba84b3380e 3 | size 1959 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin2/packed.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:fa30ea0da907544952000ffeee3c5dd59f9239569dcdbf6d616f6c755308275f 3 | size 16979 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin2/receptor.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c9a7dad397c24fd0d3d1ce6811d7498334eac190a005d80195922c18fdfff52d 3 | size 2499 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin3/note_blue.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c04eacc7b565897a6b9e71909570466d33996f51e65363ef9087c670a2f6f391 3 | size 1563 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin3/note_cyan.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d12be8acc4060a9e0d3317355d915ddf81ede3fc315d846a1131ec42d1c6c736 3 | size 1158 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin3/note_green.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a75b0d7d186fc256b05f80400cc38e643accc60e259d02747eb189e61ef96da2 3 | size 1388 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin3/note_orange.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8bfc9976f9329bafe5d59143a428bcb89c574130d95407bab478ed3a285fe63c 3 | size 1022 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin3/note_pink.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:340fe9dc239ceab54f4e4970302634ff2b78becd3b31ae861c85cd713545c54f 3 | size 879 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin3/note_purple.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a962602a4cc42e3714c662ee0155fa8f72b722a67a4ddd5def96fde65a9df0da 3 | size 1238 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin3/note_red.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c6fc8d8616fe2aee4e73bfedae2045955d4ea81dbe9cf4f01f03fc4e8608404d 3 | size 1167 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin3/note_white.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ad322003e0a6c498241ce529f937b9f6559678d0decbf628273c0d5ebe8c0577 3 | size 543 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin3/note_yellow.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:400371612eae19272b9784cf7896bd7fba2d496af3f8354a8e7c10e3ebac7b4c 3 | size 1288 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin3/packed.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5aff1dfe2323b2a260cdaaaa1f7efe25f211ababb44d0828d971a36de867557b 3 | size 10700 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin3/receptor.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:aaf5ea172ce4a9bc0cc4632cc53a9b10b22b376fa6b692a957e8ba65379b1890 3 | size 1170 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin4/note_blue.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2663bdad33f4582621bae86470c9ee2b7bfec3a6dfb4e9c6c8c176f4a2aababb 3 | size 3974 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin4/note_cyan.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0b2ae67aa80451752485506d2763f5a6c400aefaa39257555247095f5b8894c4 3 | size 4047 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin4/note_green.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:bd53249e95225fe9cb3c7ac93ec08a1f9b238941addbf40a397cf9c3e20e37a6 3 | size 4069 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin4/note_orange.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cb52ebc38a29d8134ee2f533e5d4c97b51ccc1f81c8aa4ca8e59398763fa0395 3 | size 4418 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin4/note_pink.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:90ae37bb7c51289f07d9a1119901efee4a21b4d8a98f978f86d209b76940d995 3 | size 4109 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin4/note_purple.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:78ef3b2902b95ecf19a09d01642f4f981695f5188b4e47a9f84eb706a745c326 3 | size 4407 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin4/note_red.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:efefa6150e9b0cd75b31f73d7b3954c7c5731c75c2e826d72ab8307b1ab4a134 3 | size 6297 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin4/note_white.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8a7ca0ecaa481d6cc344da958f0565f25c1773f4254f5221c18e21e0dfd61b4c 3 | size 3953 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin4/note_yellow.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3e36949f26b5ee2f9eecc8014c0cbbdc0189175626cf27882f5404b49b74c43a 3 | size 4036 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin4/packed.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8cc70f47ca8533d3db0fd571601a98634d20c5c321db6b54f9f9e732648cf685 3 | size 30117 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin4/receptor.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7d12563ba65c7dc8db2e9c5fe0f2d737f108ffe7f3f5c836b75ad1fc2e4677e1 3 | size 3695 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin5/note_blue.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e76d0ddff3f3c51619423c8db1a4a8169419b130fc15bb455035be6b41e725f1 3 | size 5139 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin5/note_cyan.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:60d3b2ec3ef39bf8497f687004f656b83f604414b000c365bbe6d8c110c4be82 3 | size 5204 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin5/note_green.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0119c2c8855a08bfb3681275a650de0b6c09776c97d448154e990e76e3080921 3 | size 5339 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin5/note_orange.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3bffa106f200963b54e57ed8f33574a1fc887f4d4d0d3d52ee30aa1f487d39d3 3 | size 5302 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin5/note_pink.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:83f1c22509052e9358dcffa7d0dda51647ae71e4470ecd4e5baf77f904991231 3 | size 5437 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin5/note_purple.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:76536087609ad723afb28a64463b9e4c5599ad988639d532c4a0752da015ce9e 3 | size 5474 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin5/note_red.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:692c8a5147a2e8447f355cb9d5469513a38598809819a735b4fd8440d062e014 3 | size 5374 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin5/note_white.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1905f846f63dd11373a8082342db829d3b68e620bb683552870775a7e17904af 3 | size 3602 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin5/note_yellow.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:41cfbc6e2057763ab6d868a6eef123ae847824eb439b56f5b3f660e104c70d8e 3 | size 5290 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin5/packed.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f3b639e3e13f00e15ea45a66deaee6b90fa98e1791c9e526af6c8a57805d9d1c 3 | size 34293 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin5/receptor.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:77a37189e457527977cd1d7be6c4c27e30d5fd7fa0d721058b7f31e27259d4ac 3 | size 3821 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin6/note_blue.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:822295e390bf0501594d0bda68a9bbb0851d314ddc6e4797ba185641b68f5e72 3 | size 7097 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin6/note_cyan.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a82c73eb02b2847b3d6e5dfcaef354d9a9bbbe88d8f7c88640c4955fee1a5ab0 3 | size 7096 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin6/note_green.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2d0ffbef1f073e6f3784bac4fa8235714feb35995a8f1d0d2928c1150374a10f 3 | size 7070 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin6/note_orange.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cce8c34465281de54369a3d8cafd32429aed59478d8692d9326825ce1bce2698 3 | size 7121 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin6/note_pink.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cb98d54cd021ddd48e13596a59191adf01e81dd8346554982525072e6e5b6a4f 3 | size 7070 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin6/note_purple.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a53f59ff5b9fffcfb7b4c3eca99cded836bfd2953f8ea048766e1cb77d36fa88 3 | size 7060 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin6/note_red.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:93be2d63d2f845dfb0bf8ca0d24d603e40672d4286537cc976cd962d5ecfa7a4 3 | size 7072 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin6/note_white.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:759885015d9ed881181aac604c89d1e9a6fbceaea90627dc240afa50e9206005 3 | size 6397 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin6/note_yellow.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d78a624395dffc8b1e126040d791df60db561eb979871c856eb557f1dc124750 3 | size 7123 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin6/packed.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d17e0d4813a29d2c93b7fc550b5af0914d0abfa033af80678566c4ed27a0108d 3 | size 29757 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin6/receptor.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:fe5373be41f1a23124282f99ea57be8b47aa443b3d640971d11b6bcdf1745a9a 3 | size 7320 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin7/note_blue.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c48d8230058ceccc2ea78cd5e0b61d402913eea02e4d01d607b8b2aa859f4778 3 | size 7621 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin7/note_cyan.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e7ea9be22dd7daa6c2d4ed6294140799595f64a6297974b4b36f3d010c559454 3 | size 7685 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin7/note_green.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2090c01e72e7e05eb3df6c744a9c6917a1a836235ceb4788bd7e859b24dbabc5 3 | size 7745 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin7/note_orange.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e3b8498788fa9e4dea63f1c3f70131415ca8cfe16b04560c5645533e4851a9e7 3 | size 7680 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin7/note_pink.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:bc567f1129b71dd156c7446eddc8ba9b246da9dfb5e7049955cde62f864d31fa 3 | size 7630 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin7/note_purple.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1b559e7afcad3dc99c3ca9f269806a4f53f053481921452910a9151127844082 3 | size 7622 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin7/note_red.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f92c0d1a8ce746d005ec78c5f06391a1b4df490b4f7adc6cae14b664b73ed6b7 3 | size 7674 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin7/note_white.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4cbe52a4d63bd2da5e2f7d695aa5734db672191618e2c63d7dfa392e3431d156 3 | size 6202 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin7/note_yellow.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:02585aba902e850bf47244726da843980dfce4c253a7ae7b433e9b90579495f3 3 | size 7650 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin7/packed.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:eed66e13ec1b236f008e1e503a381ad1c977fe5aa2334ecd110e2c2c26615364 3 | size 35850 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin7/receptor.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a83feb1d31744853c1069bcbb7113003738688858b3fd0fb7a6476517f4b50ea 3 | size 8342 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin8/note_blue.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:28c3802877dc1576d820d32b5756f2bd5e630c5bda88570528d6843e4e4f1972 3 | size 2789 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin8/note_cyan.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:518c0de91c69487a6642f844fd710ee5d902c28dfe79e391cef4256c5b8e20c4 3 | size 1929 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin8/note_green.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:df2ef57fcf395c2c773d58da8fcb735c01ab55306279527cca4f8e44d407225b 3 | size 2468 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin8/note_orange.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c7ba4259095cab31d7a3d1f08b62434211aa1080166d529db67d7274100865b5 3 | size 941 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin8/note_pink.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:716609798701e698ada86b9a715db3b6a918dd3ce1a41aba809d28eea65a058c 3 | size 1536 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin8/note_purple.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:be9cdc09f3e27e8474a12679b280532636b301ac3912d2331a1fa87467557cba 3 | size 2065 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin8/note_red.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a3a8924c23efd420adb6d811c0ed3ba4a9a50551e81359bb8630d3a4e7b75e39 3 | size 1061 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin8/note_white.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:25c22e1eefdf14bcaa2c57e932f626624f852dfc818dffd68d4b1e2b575771ae 3 | size 743 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin8/note_yellow.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:447fb854b02ca88edd3894259a62e75135119e2bc348a41a998d0abcdb49c48c 3 | size 2102 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin8/packed.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8db6b8c5a9f19c40912469276b397faa5d3cda5e6d69ebb36fbac21977b6929e 3 | size 10584 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin8/receptor.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:be9ddb1791764201c4f0fea924132cf6639bd130dec5759e5ec591f396c0d5ff 3 | size 1767 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin9/note_blue.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:59194955d946ac27031174649ab9f799a797b7f04ddf8923d25fe702e9e70fec 3 | size 1606 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin9/note_cyan.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f754f0bf3333de320dfd7f6bf06a349556c5127574a958b6444347968f2c4aaf 3 | size 1615 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin9/note_green.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5d82639f3e695268d32e296e4a2a46e8c34c69be20d4a9fe33ae71973d34ecd6 3 | size 1573 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin9/note_orange.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cb229ae2541ecec4ab4311d582e98b92534918864831302a738c0897ba4158b7 3 | size 1580 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin9/note_pink.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2d5c13fbb3d2c60c9ec77c458da1f85916ef17978171cf10d559a97a5602883e 3 | size 1560 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin9/note_purple.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5d82639f3e695268d32e296e4a2a46e8c34c69be20d4a9fe33ae71973d34ecd6 3 | size 1573 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin9/note_red.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:17b6a4b95a180212b4d7639a2a5341066ee3119d20ac06a64086a591c7bdb3c6 3 | size 1609 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin9/note_white.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:054a1395b4534924ca3694d30ddf0ce813e7defcd7936417b35523d0bd5db25f 3 | size 1548 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin9/note_yellow.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:11b68ba0d2797f52beaf7709b798690855de139b121af1e64ae5c880fef0cef9 3 | size 1613 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin9/packed.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:095618e22fe06d168ed10cd37b92fab57e3d33a0faf32d4a44ed1865496b48b6 3 | size 7444 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskin9/receptor.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2d5c13fbb3d2c60c9ec77c458da1f85916ef17978171cf10d559a97a5602883e 3 | size 1560 4 | -------------------------------------------------------------------------------- /assets/noteskins/noteskins.fla: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:83c92996225afbb75e49aca16a0032ab5852eca35f8e104abfc0fc6b685cf078 3 | size 526571 4 | -------------------------------------------------------------------------------- /certs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !*/ 3 | !.git* 4 | !*.ps1 5 | !*.md 6 | -------------------------------------------------------------------------------- /certs/README.md: -------------------------------------------------------------------------------- 1 | # Certificate Generators 2 | 3 | Air requires that all packages are signed. 4 | For development purposes, you can sign it with a self signed certificate, 5 | which is good because CA sourced code signing certificates are pretty expensive. 6 | 7 | You will need to run the certificate script from an account with administrator permissions, 8 | and from a shell in administrator mode. 9 | You can open an *elevated* powershell console by: 10 | 11 | --- 12 | 13 | - [Certificate Generators](#certificate-generators) 14 | - [Running the Scripts](#running-the-scripts) 15 | - [Certificate](#certificate) 16 | - [Github Secrets](#github-secrets) 17 | 18 | --- 19 | 20 | ## Running the Scripts 21 | 22 | - Pressing the Windows key. 23 | - Typing `powershell`. 24 | - And either: 25 | - Right clicking and clicking `Run as administrator`. 26 | - Clicking `Run as Administrator` in the right panel. 27 | 28 | --- 29 | 30 | ## Certificate 31 | 32 | This is a signed script that creates a Certificate valid for 1 month, 33 | with all of the specifications required for an air package. 34 | If you modify this script, Powershell will complain, 35 | and you may not be able to run it. 36 | 37 | ## Github Secrets 38 | 39 | This is a signed script that creates a BASE64 string of the certificate. 40 | This is utilized by the workflow action for github. 41 | If you modify this script, Powershell will complain, 42 | and you may not be able to run it. 43 | -------------------------------------------------------------------------------- /data/icons/icon-144.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f3fd4f8d2bd37ff9722a88baafff99b4522884795867e49788f3aad78ae843f5 3 | size 10746 4 | -------------------------------------------------------------------------------- /data/icons/icon-180.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ee23d44536dc10ac1760b42ab2311618d84a3bacd719d2d9b24963b34ad4e881 3 | size 13192 4 | -------------------------------------------------------------------------------- /data/icons/icon-192.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9f953ea1048051dd2d4bd26a08d1427f0d916afe678bff3621831c68d5ec72d1 3 | size 13521 4 | -------------------------------------------------------------------------------- /data/icons/icon-36.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4669c518f0880c01bcb30f72628dbc872febef59a4609a873d03462c7bd5bb71 3 | size 1974 4 | -------------------------------------------------------------------------------- /data/icons/icon-48.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9932eba281e4233b05b1cd07f5019810f17f2c104f8272ee0195d1cd3dc548c7 3 | size 3099 4 | -------------------------------------------------------------------------------- /data/icons/icon-512.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:53dee2a70461fd3f66edf9bee67c1cf05a7359cc3c6570f3f7b7704f347ca469 3 | size 42965 4 | -------------------------------------------------------------------------------- /data/icons/icon-72.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:47df926281f8673255785705fe5ff658e3e50fb715e68c7f69f6f72a16334fd6 3 | size 4809 4 | -------------------------------------------------------------------------------- /data/icons/icon-96.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6e5c3c130392fd2d8c514b30756da781c817cb28157de28d5c94aeac287ee971 3 | size 6742 4 | -------------------------------------------------------------------------------- /dist/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !*/ 3 | !.git* 4 | -------------------------------------------------------------------------------- /fonts/AachenLight/asconfig.aachen.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "lib", 3 | "files": [ 4 | "src/AachenLight.as" 5 | ], 6 | "compilerOptions": { 7 | "output": "bin/AachenLight.swf" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /fonts/AachenLight/assets/AachenLight.ttf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9b925be107ca38044171db98ab4643eac17f4e016ce545c0d991e125cc45e112 3 | size 32444 4 | -------------------------------------------------------------------------------- /fonts/AachenLight/src/AachenLight.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import flash.text.Font; 4 | 5 | [Embed(source = '../assets/AachenLight.ttf', fontFamily = 'Aachen-Light', fontStyle = 'normal', fontWeight = 'normal', mimeType = "application/x-font", advancedAntiAliasing = true, embedAsCFF = false)] 6 | public class AachenLight extends Font 7 | { 8 | 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /fonts/FontAwesome/asconfig.fontawesome.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "lib", 3 | "files": [ 4 | "src/FontAwesome.as" 5 | ], 6 | "compilerOptions": { 7 | "output": "bin/Font-FontAwesome.swf" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /fonts/FontAwesome/assets/FontAwesome6FreeSolid.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flashflashrevolution/rCubed/980f2d234711bf21a34c5c18c6bb130ddc0e23ca/fonts/FontAwesome/assets/FontAwesome6FreeSolid.otf -------------------------------------------------------------------------------- /fonts/FontAwesome/src/FontAwesome.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import flash.display.Sprite; 4 | 5 | public class FontAwesome extends Sprite 6 | { 7 | [Embed(source = '../assets/FontAwesome6FreeSolid.otf', fontFamily = 'FontAwesome', fontStyle = 'normal', fontWeight = 'bold', mimeType = "application/x-font", unicodeRange = 'U+0000-U+FFFF', advancedAntiAliasing = true, embedAsCFF = false)] 8 | public static var Solid:Class; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /fonts/NotoSans/asconfig.notosans.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "lib", 3 | "files": [ 4 | "src/NotoSans.as" 5 | ], 6 | "compilerOptions": { 7 | "output": "bin/Font-NotoSans.swf" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /fonts/NotoSans/assets/NotoSans-Bold.ttf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7c15ac396d2ce6bc33a3b4efacdbd322c9e46376599a725c6f790d8036052cab 3 | size 455164 4 | -------------------------------------------------------------------------------- /fonts/NotoSans/assets/NotoSans-BoldItalic.ttf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:789187a945fde0ec70d62fdc177ba9f50efe159a0c8a53d3fdfca20391e3181f 3 | size 627864 4 | -------------------------------------------------------------------------------- /fonts/NotoSans/assets/NotoSans-CJK-Bold.ttc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flashflashrevolution/rCubed/980f2d234711bf21a34c5c18c6bb130ddc0e23ca/fonts/NotoSans/assets/NotoSans-CJK-Bold.ttc -------------------------------------------------------------------------------- /fonts/NotoSans/src/NotoSans.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | import flash.display.Sprite; 4 | 5 | public class NotoSans extends Sprite 6 | { 7 | // "U+4E00-U+62FF" // CJK Unified Ideographs (Part 1/4) 8 | // "U+6300-U+77FF" // CJK Unified Ideographs (Part 2/4) 9 | // "U+7800-U+8CFF" // CJK Unified Ideographs (Part 3/4) 10 | // "U+8D00-U+9FFF" // CJK Unified Ideographs (Part 4/4) 11 | 12 | // U+30A0-U+30FF // Katakana 13 | // U+3040-U+309F // Hiragana 14 | 15 | // "U+0020-U+007E" // Basic Latin 16 | // "U+00A0-U+00FF" // Latin-1 Supplement 17 | // "U+0100-U+017F" // Latin Extended-A 18 | // "U+0180-U+024F" // Latin Extended-B 19 | 20 | // "U+0400-U+04FF" // Cyrillic 21 | // "U+0500-U+052F" // Cyrillic Supplement 22 | 23 | [Embed(source = '../assets/NotoSans-CJK-Bold.ttc', fontFamily = 'Noto Sans CJK JP Bold', fontStyle = 'normal', fontWeight = 'bold', mimeType = "application/x-font", advancedAntiAliasing = true, embedAsCFF = false)] 24 | public static var CJKBold:Class; 25 | 26 | [Embed(source = '../assets/NotoSans-Bold.ttf', fontFamily = 'Noto Sans', fontStyle = 'normal', fontWeight = 'bold', mimeType = "application/x-font", advancedAntiAliasing = true, embedAsCFF = false)] 27 | public static var Bold:Class; 28 | 29 | [Embed(source = '../assets/NotoSans-BoldItalic.ttf', fontFamily = 'Noto Sans', fontStyle = 'italic', fontWeight = 'bold', mimeType = "application/x-font", advancedAntiAliasing = true, embedAsCFF = false)] 30 | public static var BoldItalic:Class; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /fonts/asconfig.embed-fonts.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "lib", 3 | "compilerOptions": { 4 | "debug": false, 5 | "source-path": [ 6 | "./AachenLight/src", 7 | "./NotoSans/src", 8 | "./FontAwesome/src" 9 | ], 10 | "include-sources": [ 11 | "./AachenLight/src", 12 | "./NotoSans/src", 13 | "./FontAwesome/src" 14 | ], 15 | "output": "bin/Embedded-Fonts.swc", 16 | "swf-version": 43, 17 | "target-player": "32.0", 18 | "locale": [ 19 | "en_US" 20 | ] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /libs/assets/assets.swc: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a67131333cbd0911aaa1a905219184da0b9fca37c9e68c4ca11d0a93e0813b42 3 | size 389866 4 | -------------------------------------------------------------------------------- /libs/assets/branding.swc: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e3ff80d0360ac88b9a6d5fb96f3adda37eac4697cc5a57df19bf2103ab1f7068 3 | size 5576 4 | -------------------------------------------------------------------------------- /libs/assets/icons.swc: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:fcd5bf46c972dd4da974291e6031a02e84a1f9d1946c8dc91b605e6d15890543 3 | size 15622 4 | -------------------------------------------------------------------------------- /libs/blooddy_crypto.swc: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:78769746a81edb31b507d344bd3f96f5aae15da8bcce1f49ada75af15409729d 3 | size 71382 4 | -------------------------------------------------------------------------------- /r3.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "." 5 | } 6 | ], 7 | "settings": { 8 | "astools.braceStyle": "Adobe", 9 | "editor.formatOnPaste": true, 10 | "editor.formatOnSave": true, 11 | "editor.fontLigatures": true, 12 | "editor.renderFinalNewline": "on", 13 | "editor.insertSpaces": true, 14 | "workbench.editor.highlightModifiedTabs": true, 15 | "files.trimFinalNewlines": true, 16 | "files.insertFinalNewline": true, 17 | "as3mxml.sdk.framework": "c:\\airsdk\\32.0.0.116", 18 | "files.eol": "\r\n", 19 | "markdown.extension.toc.githubCompatibility": true, 20 | "files.exclude": { 21 | "node_modules/": true, 22 | "package-lock.json": true, 23 | "assets/DataStore": true, 24 | "assets/RECOVER*": true 25 | }, 26 | "yaml.schemas": { 27 | "http://json.schemastore.org/github-workflow": [ 28 | ".github/workflows/*" 29 | ] 30 | }, 31 | "as3mxml.sources.organizeImports.insertNewLineBetweenTopLevelPackages": false 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:base" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /src/Flags.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | 4 | public class Flags 5 | { 6 | public static const F2_REPLAYS:String = "f2_replays"; 7 | public static const STARTUP_SCREEN:String = "startup_screen"; 8 | public static const LEGACY_ENGINE_DEFAULT_LOAD:String = "legacy_engine_default_load"; 9 | public static const LEGACY_ENGINE_DEFAULT_LOAD_SKIP:String = "legacy_engine_default_load_skip"; 10 | public static const ENABLE_GLOBAL_POPUPS:String = "enable_global_popups"; 11 | public static const FILE_LOADER_OPEN:String = "file_loader_open"; 12 | public static const MP_INITAL_LOAD:String = "mp_initial_load"; 13 | public static const MP_MENU_RETURN:String = "mp_menu_return"; 14 | public static const MP_MENU_RESULTS:String = "mp_menu_results"; 15 | 16 | public static var VALUES:Object = {}; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Fonts.as: -------------------------------------------------------------------------------- 1 | package 2 | { 3 | 4 | public class Fonts 5 | { 6 | public static const BASE_FONT:String = "Noto Sans"; //new NotoSans.Bold().fontName; 7 | public static const BASE_FONT_CJK:String = "Noto Sans CJK JP Bold"; //new NotoSans.CJKBold().fontName; 8 | public static const AACHEN_LIGHT:String = "Aachen-Light"; //new AachenLight().fontName; 9 | public static const FONT_AWESOME:String = "FontAwesome"; //new FontAwesome.Solid().fontName; 10 | 11 | // Embed Fonts 12 | AachenLight; 13 | NotoSans.CJKBold; 14 | NotoSans.Bold; 15 | NotoSans.BoldItalic; 16 | FontAwesome.Solid; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/be/aboutme/airserver/endpoints/IClientHandler.as: -------------------------------------------------------------------------------- 1 | package be.aboutme.airserver.endpoints 2 | { 3 | import be.aboutme.airserver.messages.Message; 4 | import flash.events.IEventDispatcher; 5 | 6 | public interface IClientHandler extends IEventDispatcher 7 | { 8 | function close():void; 9 | function get messagesAvailable():Boolean; 10 | function readMessage():Message; 11 | function writeMessage(messageToWrite:Message):void; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/be/aboutme/airserver/endpoints/IEndPoint.as: -------------------------------------------------------------------------------- 1 | package be.aboutme.airserver.endpoints 2 | { 3 | import flash.events.IEventDispatcher; 4 | 5 | public interface IEndPoint extends IEventDispatcher 6 | { 7 | function open():Boolean; 8 | function close():void; 9 | function type():String; 10 | function currentPort():uint; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/be/aboutme/airserver/endpoints/socket/handlers/SocketClientHandlerFactory.as: -------------------------------------------------------------------------------- 1 | package be.aboutme.airserver.endpoints.socket.handlers 2 | { 3 | import be.aboutme.airserver.messages.serialization.IMessageSerializer; 4 | import flash.net.Socket; 5 | 6 | public class SocketClientHandlerFactory 7 | { 8 | public var type:String = "unknown"; 9 | 10 | protected var messageSerializer:IMessageSerializer; 11 | protected var crossDomainPolicyXML:XML; 12 | 13 | public function SocketClientHandlerFactory(messageSerializer:IMessageSerializer, crossDomainPolicyXML:XML = null) 14 | { 15 | this.messageSerializer = messageSerializer; 16 | this.crossDomainPolicyXML = crossDomainPolicyXML; 17 | } 18 | 19 | public function createHandler(socket:Socket):SocketClientHandler 20 | { 21 | return new SocketClientHandler(socket, messageSerializer, crossDomainPolicyXML); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/be/aboutme/airserver/endpoints/socket/handlers/websocket/WebSocketClientHandlerFactory.as: -------------------------------------------------------------------------------- 1 | package be.aboutme.airserver.endpoints.socket.handlers.websocket 2 | { 3 | import be.aboutme.airserver.endpoints.socket.handlers.SocketClientHandler; 4 | import be.aboutme.airserver.endpoints.socket.handlers.SocketClientHandlerFactory; 5 | import be.aboutme.airserver.messages.serialization.IMessageSerializer; 6 | import be.aboutme.airserver.messages.serialization.JSONSerializer; 7 | import flash.net.Socket; 8 | 9 | public class WebSocketClientHandlerFactory extends SocketClientHandlerFactory 10 | { 11 | 12 | public function WebSocketClientHandlerFactory(messageSerializer:IMessageSerializer = null, crossDomainPolicyXML:XML = null) 13 | { 14 | if (messageSerializer == null) 15 | { 16 | messageSerializer = new JSONSerializer(); 17 | } 18 | super(messageSerializer, crossDomainPolicyXML); 19 | 20 | type = "websocket"; 21 | } 22 | 23 | override public function createHandler(socket:Socket):SocketClientHandler 24 | { 25 | return new WebSocketClientHandler(socket, messageSerializer, crossDomainPolicyXML); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/be/aboutme/airserver/events/AIRServerEvent.as: -------------------------------------------------------------------------------- 1 | package be.aboutme.airserver.events 2 | { 3 | import be.aboutme.airserver.Client; 4 | import flash.events.Event; 5 | 6 | public class AIRServerEvent extends Event 7 | { 8 | 9 | public static const CLIENT_ADDED:String = "clientAdded"; 10 | public static const CLIENT_REMOVED:String = "clientRemoved"; 11 | 12 | public var client:Client; 13 | 14 | public function AIRServerEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false) 15 | { 16 | super(type, bubbles, cancelable); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/be/aboutme/airserver/events/EndPointEvent.as: -------------------------------------------------------------------------------- 1 | package be.aboutme.airserver.events 2 | { 3 | import be.aboutme.airserver.endpoints.IClientHandler; 4 | import flash.events.Event; 5 | 6 | public class EndPointEvent extends Event 7 | { 8 | 9 | public static const CLIENT_HANDLER_ADDED:String = "clientHandlerAdded"; 10 | 11 | public var clientHandler:IClientHandler; 12 | 13 | public function EndPointEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false) 14 | { 15 | super(type, bubbles, cancelable); 16 | } 17 | 18 | override public function clone():Event 19 | { 20 | var e:EndPointEvent = new EndPointEvent(type, bubbles, cancelable); 21 | e.clientHandler = clientHandler; 22 | return e; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/be/aboutme/airserver/events/MessageReceivedEvent.as: -------------------------------------------------------------------------------- 1 | package be.aboutme.airserver.events 2 | { 3 | import be.aboutme.airserver.messages.Message; 4 | import flash.events.Event; 5 | 6 | public class MessageReceivedEvent extends Event 7 | { 8 | 9 | public static const MESSAGE_RECEIVED:String = "messageReceived"; 10 | 11 | public var message:Message; 12 | 13 | public function MessageReceivedEvent(type:String, message:Message, bubbles:Boolean = false, cancelable:Boolean = false) 14 | { 15 | super(type, bubbles, cancelable); 16 | this.message = message; 17 | } 18 | 19 | override public function clone():Event 20 | { 21 | return new MessageReceivedEvent(type, message, bubbles, cancelable); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/be/aboutme/airserver/events/MessagesAvailableEvent.as: -------------------------------------------------------------------------------- 1 | package be.aboutme.airserver.events 2 | { 3 | import flash.events.Event; 4 | 5 | public class MessagesAvailableEvent extends Event 6 | { 7 | 8 | public static const MESSAGES_AVAILABLE:String = "messagesAvailable"; 9 | 10 | public function MessagesAvailableEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false) 11 | { 12 | super(type, bubbles, cancelable); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/be/aboutme/airserver/messages/Message.as: -------------------------------------------------------------------------------- 1 | package be.aboutme.airserver.messages 2 | { 3 | 4 | public class Message 5 | { 6 | public var senderId:uint; 7 | public var command:String = ""; 8 | public var data:* = ""; 9 | 10 | public function Message() 11 | { 12 | } 13 | 14 | public function toString():String 15 | { 16 | return "[Message " + data + "]"; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/be/aboutme/airserver/messages/serialization/IMessageSerializer.as: -------------------------------------------------------------------------------- 1 | package be.aboutme.airserver.messages.serialization 2 | { 3 | import be.aboutme.airserver.messages.Message; 4 | 5 | public interface IMessageSerializer 6 | { 7 | function serialize(message:Message):*; 8 | function deserialize(serialized:*):Vector.; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/be/aboutme/airserver/messages/serialization/JSONSerializer.as: -------------------------------------------------------------------------------- 1 | package be.aboutme.airserver.messages.serialization 2 | { 3 | import be.aboutme.airserver.messages.Message; 4 | 5 | public class JSONSerializer implements IMessageSerializer 6 | { 7 | 8 | protected var messageDelimiter:String; 9 | 10 | public function JSONSerializer(messageDelimiter:String = "\n") 11 | { 12 | this.messageDelimiter = messageDelimiter; 13 | } 14 | 15 | public function serialize(message:Message):* 16 | { 17 | return JSON.stringify(message); 18 | } 19 | 20 | public function deserialize(serialized:*):Vector. 21 | { 22 | var split:Array = serialized.split(messageDelimiter); 23 | var messages:Vector. = new Vector.(); 24 | for each (var input:String in split) 25 | { 26 | if (input.length > 0) 27 | { 28 | var decoded:Object = JSON.parse(input); 29 | var message:Message = new Message(); 30 | if (decoded.hasOwnProperty("senderId")) 31 | message.senderId = decoded.senderId; 32 | if (decoded.hasOwnProperty("command")) 33 | message.command = decoded.command; 34 | if (decoded.hasOwnProperty("data")) 35 | message.data = decoded.data; 36 | else 37 | message.data = decoded; 38 | messages.push(message); 39 | } 40 | } 41 | return messages; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/classes/DynamicLoader.as: -------------------------------------------------------------------------------- 1 | package classes 2 | { 3 | import flash.display.Loader; 4 | 5 | public dynamic class DynamicLoader extends Loader 6 | { 7 | 8 | public function DynamicLoader() 9 | { 10 | super(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/classes/DynamicSprite.as: -------------------------------------------------------------------------------- 1 | package classes 2 | { 3 | import flash.display.Sprite; 4 | 5 | public dynamic class DynamicSprite extends Sprite 6 | { 7 | public function DynamicSprite() 8 | { 9 | super(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/classes/DynamicTextField.as: -------------------------------------------------------------------------------- 1 | package classes 2 | { 3 | import flash.text.TextField; 4 | 5 | dynamic public class DynamicTextField extends TextField 6 | { 7 | 8 | public function DynamicTextField() 9 | { 10 | super(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/classes/FileTracker.as: -------------------------------------------------------------------------------- 1 | package classes 2 | { 3 | import com.flashfla.utils.NumberUtil; 4 | 5 | public class FileTracker 6 | { 7 | public var files:Number = 0; 8 | public var dirs:Number = 0; 9 | public var size:Number = 0; 10 | public var file_paths:Vector. = new Vector.(); 11 | 12 | public function get size_human():String 13 | { 14 | return NumberUtil.bytesToString(size); 15 | } 16 | 17 | public function toString():String 18 | { 19 | return "[files=" + files + " dirs=" + dirs + " size=" + size + " size_human=" + size_human + "]"; 20 | } 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/classes/GameNote.as: -------------------------------------------------------------------------------- 1 | package classes 2 | { 3 | import flash.display.Sprite; 4 | 5 | public class GameNote extends Sprite 6 | { 7 | private static var _noteskins:Noteskins = Noteskins.instance; 8 | 9 | private var _note:Sprite; 10 | public var NOTESKIN:int = 0; 11 | public var ID:int = 0; 12 | public var DIR:String; 13 | public var COLOR:String; 14 | public var POSITION:int = 0; 15 | public var FRAME:int = 0; 16 | public var SPAWN_PROGRESS:int = 0; 17 | 18 | public function GameNote(id:int, dir:String, color:String, position:int = 0, frame:int = 0, activeNoteSkin:int = 1) 19 | { 20 | this.NOTESKIN = activeNoteSkin; 21 | this.ID = id; 22 | this.DIR = dir; 23 | this.COLOR = color; 24 | this.POSITION = position; 25 | this.FRAME = frame; 26 | 27 | var _noteInfo:Object = _noteskins.getInfo(activeNoteSkin); 28 | _note = _noteskins.getNote(activeNoteSkin, this.COLOR, this.DIR); 29 | _note.x = -(_noteInfo.width >> 1); 30 | _note.y = -(_noteInfo.height >> 1); 31 | this.addChild(_note); 32 | } 33 | 34 | public function dispose():void 35 | { 36 | if (_note != null && this.contains(_note)) 37 | { 38 | this.removeChild(_note); 39 | } 40 | 41 | _note = null; 42 | } 43 | 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/classes/SongPreview.as: -------------------------------------------------------------------------------- 1 | package classes 2 | { 3 | import classes.replay.Replay; 4 | 5 | public class SongPreview extends Replay 6 | { 7 | public function SongPreview(song_id:int) 8 | { 9 | super(song_id); 10 | this.level = song_id; 11 | } 12 | 13 | public function setupSongPreview(songData:Object = null):void 14 | { 15 | var _gvars:GlobalVariables = GlobalVariables.instance; 16 | 17 | if (!songData) 18 | songData = Playlist.instanceCanon.playList[this.level]; 19 | 20 | if (!songData) 21 | return; 22 | 23 | this.level = songData.level; 24 | 25 | this.user = new User(false, false); 26 | this.user.siteId = 1743546; 27 | this.user.name = "Song Preview"; 28 | this.user.skillLevel = _gvars.MAX_DIFFICULTY; 29 | this.user.loadAvatar(); 30 | 31 | this.timestamp = Math.floor((new Date()).getTime() / 1000); 32 | this.settings = _gvars.playerUser.settings; 33 | 34 | this.isPreview = true; 35 | this.isLoaded = true; 36 | 37 | _gvars.options.fill(); 38 | } 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/classes/SongQueueItem.as: -------------------------------------------------------------------------------- 1 | package classes 2 | { 3 | 4 | public class SongQueueItem 5 | { 6 | public var name:String; 7 | public var items:Array; 8 | 9 | public function SongQueueItem(name:String, items:Array) 10 | { 11 | this.name = name; 12 | this.items = items; 13 | } 14 | 15 | public function toString():String 16 | { 17 | return JSON.stringify(this); 18 | } 19 | 20 | public static function fromString(json:String):SongQueueItem 21 | { 22 | try 23 | { 24 | var obj:Object = JSON.parse(json); 25 | return new SongQueueItem(obj.name, obj.items); 26 | } 27 | catch (e:Error) 28 | { 29 | 30 | } 31 | 32 | return new SongQueueItem("invalid", []); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/classes/chart/Note.as: -------------------------------------------------------------------------------- 1 | package classes.chart 2 | { 3 | 4 | public class Note 5 | { 6 | public var direction:String; 7 | public var time:Number; 8 | public var color:String; 9 | public var frame:Number; 10 | 11 | /** 12 | * Defines a new Note object. 13 | * @param direction 14 | * @param time 15 | * @param color 16 | * @param frame 17 | */ 18 | public function Note(direction:String, time:Number, color:String, frame:Number = -1):void 19 | { 20 | this.direction = direction; 21 | this.time = time; 22 | this.color = color; 23 | this.frame = frame; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/classes/chart/parse/ChartBase.as: -------------------------------------------------------------------------------- 1 | package classes.chart.parse 2 | { 3 | 4 | import flash.utils.ByteArray; 5 | 6 | public class ChartBase 7 | { 8 | public var ignoreValidation:Boolean = false; 9 | 10 | public var validColumnCounts:Array = [4]; //, 5, 6, 7, 8, 9, 10]; 11 | 12 | public static var COLUMNS:Object = {4: ['L', 'D', 'U', 'R'], 13 | 5: ['L', 'D', 'C', 'U', 'R'], 14 | 6: ['L', 'Q', 'D', 'U', 'W', 'R'], 15 | 7: ['L', 'Q', 'D', 'C', 'U', 'W', 'R'], 16 | 8: ['L', 'D', 'U', 'R', 'Q', 'W', 'T', 'Y'], 17 | 9: ['L', 'D', 'U', 'R', 'C', 'Q', 'W', 'T', 'Y'], 18 | 10: ['L', 'D', 'C', 'U', 'R', 'Q', 'W', 'V', 'T', 'Y']}; 19 | 20 | public var data:Object = {"notes": []}; 21 | public var charts:Array = []; 22 | 23 | public var loaded:Boolean = false; 24 | public var parsed:Boolean = false; 25 | 26 | public function parse():void 27 | { 28 | 29 | } 30 | 31 | public function load(fileData:ByteArray, fileName:String = null):Boolean 32 | { 33 | return false; 34 | } 35 | 36 | public function getChartTimeFast(chart_index:Object = null):Number 37 | { 38 | return 0; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/classes/mp/MPColors.as: -------------------------------------------------------------------------------- 1 | package classes.mp 2 | { 3 | 4 | public class MPColors 5 | { 6 | public static const SYSTEM_MESSAGE_COLOR:String = "#FDCF53"; 7 | public static const TIMESTAMP_COLOR:String = "#CBCBCB"; 8 | 9 | public static const NAME_ADMIN:String = "#F25C5C"; 10 | public static const NAME_MOD:String = "#A6F968"; 11 | public static const NAME_USER:String = "#FFFFFF"; 12 | 13 | public static const MESSAGE_COLOR:String = "#EAEAEA"; 14 | public static const MESSAGE_MOD_COLOR:String = "#A6F968"; 15 | public static const MESSAGE_ADMIN_COLOR:String = "#F25C5C"; 16 | 17 | public static const USER_JOIN:String = "#A6F968"; 18 | public static const USER_LEAVE:String = "#F25C5C"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/classes/mp/MPModes.as: -------------------------------------------------------------------------------- 1 | package classes.mp 2 | { 3 | import classes.Language; 4 | 5 | public class MPModes 6 | { 7 | private static const _lang:Language = Language.instance; 8 | 9 | public static function getTeamModes():Array 10 | { 11 | return [{"data": "ffa", "label": _lang.stringSimple("mp_room_team_type_ffa")}, 12 | {"data": "team", "label": _lang.stringSimple("mp_room_team_type_team")}]; 13 | } 14 | 15 | public static function getMaxPlayers():Array 16 | { 17 | const out:Array = []; 18 | for (var i:Number = 1; i <= 10; i++) 19 | out[out.length] = i; 20 | return out; 21 | } 22 | 23 | public static function getTeams():Array 24 | { 25 | const out:Array = []; 26 | for (var i:Number = 2; i <= 5; i++) 27 | out[out.length] = i; 28 | return out; 29 | } 30 | 31 | public static function getTeamMaxPlayers():Array 32 | { 33 | const out:Array = []; 34 | for (var i:Number = 1; i <= 5; i++) 35 | out[out.length] = i; 36 | return out; 37 | } 38 | 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/classes/mp/MPSocketDataRaw.as: -------------------------------------------------------------------------------- 1 | package classes.mp 2 | { 3 | 4 | import com.worlize.websocket.WebSocketMessage; 5 | import flash.utils.ByteArray; 6 | 7 | public class MPSocketDataRaw 8 | { 9 | public var type:Number; 10 | public var action:Number; 11 | public var data:ByteArray; 12 | 13 | public function MPSocketDataRaw(type:Number, action:Number, data:ByteArray = null) 14 | { 15 | this.type = type; 16 | this.action = action; 17 | this.data = data; 18 | } 19 | 20 | public static function parse(message:WebSocketMessage):MPSocketDataRaw 21 | { 22 | try 23 | { 24 | if (message == null) 25 | return null; 26 | 27 | // Binary Command 28 | if (message.type === WebSocketMessage.TYPE_BINARY) 29 | { 30 | if (message.binaryData == null || message.binaryData.length == 0) 31 | return null; 32 | 33 | var data:ByteArray = message.binaryData; 34 | var type:Number = data.readUnsignedByte(); 35 | var action:Number = data.readUnsignedByte(); 36 | 37 | data.position = 0; 38 | 39 | return new MPSocketDataRaw(type, action, data); 40 | } 41 | } 42 | catch (err:Error) 43 | { 44 | trace("parseMessage err:", err); 45 | } 46 | 47 | return null; 48 | } 49 | 50 | public function toString():String 51 | { 52 | return "[MPSocketDataRaw type=" + type + ", action=" + action + "]"; 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/classes/mp/MPSong.as: -------------------------------------------------------------------------------- 1 | package classes.mp 2 | { 3 | 4 | public class MPSong 5 | { 6 | public var id:uint; 7 | public var level_id:String; 8 | 9 | public var name:String; 10 | public var author:String; 11 | public var time:String; 12 | public var note_count:Number; 13 | public var difficulty:Number; 14 | 15 | public var engine:Object; 16 | 17 | public var selected:Boolean = false; 18 | 19 | public function update(data:Object):void 20 | { 21 | selected = data.selected; 22 | name = data.name; 23 | author = data.author; 24 | time = data.time; 25 | note_count = data.note_count; 26 | difficulty = data.difficulty; 27 | engine = data.engine; 28 | id = data.id; 29 | level_id = data.level_id; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/classes/mp/MPUserPermissions.as: -------------------------------------------------------------------------------- 1 | package classes.mp 2 | { 3 | 4 | public class MPUserPermissions 5 | { 6 | public var admin:Boolean = false; 7 | public var mod:Boolean = false; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/classes/mp/MPView.as: -------------------------------------------------------------------------------- 1 | package classes.mp 2 | { 3 | import classes.Language; 4 | import classes.ui.UILockWait; 5 | import flash.display.DisplayObjectContainer; 6 | import flash.display.Sprite; 7 | import flash.events.KeyboardEvent; 8 | 9 | public class MPView extends Sprite 10 | { 11 | protected static const _gvars:GlobalVariables = GlobalVariables.instance; 12 | protected static const _mp:Multiplayer = Multiplayer.instance; 13 | protected static const _lang:Language = Language.instance; 14 | 15 | protected var _lock:UILockWait; 16 | 17 | public function MPView(parent:DisplayObjectContainer, xpos:Number = 0, ypos:Number = 0):void 18 | { 19 | this.x = xpos; 20 | this.y = ypos; 21 | 22 | parent.addChild(this); 23 | } 24 | 25 | public function build():void 26 | { 27 | 28 | } 29 | 30 | public function dispose():void 31 | { 32 | 33 | } 34 | 35 | public function onKeyInput(e:KeyboardEvent):void 36 | { 37 | 38 | } 39 | 40 | public function onSelect():void 41 | { 42 | 43 | } 44 | 45 | public function onExit():void 46 | { 47 | 48 | } 49 | 50 | public function setBlocker(enabled:Boolean):void 51 | { 52 | if (enabled && _lock == null) 53 | { 54 | _lock = new UILockWait(parent.stage, true); 55 | } 56 | else if (!enabled && _lock != null) 57 | { 58 | _lock.remove(); 59 | _lock = null; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/classes/mp/commands/IMPCommand.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | 4 | public interface IMPCommand 5 | { 6 | function toJSON():String; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRGameModifiers.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoomFFR; 4 | 5 | public class MPCFFRGameModifiers implements IMPCommand 6 | { 7 | public var room:MPRoomFFR; 8 | public var mods:Object; 9 | 10 | public function MPCFFRGameModifiers(room:MPRoomFFR, mods:Object) 11 | { 12 | this.room = room; 13 | this.mods = mods; 14 | } 15 | 16 | public function toJSON():String 17 | { 18 | return JSON.stringify({"t": "mode", 19 | "a": "game_mods", 20 | "d": { 21 | "uid": room.uid, 22 | "mods": mods 23 | }}); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRGameStateChange.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoomFFR; 4 | 5 | public class MPCFFRGameStateChange implements IMPCommand 6 | { 7 | public var room:MPRoomFFR; 8 | public var state:String; 9 | 10 | public function MPCFFRGameStateChange(room:MPRoomFFR, state:String) 11 | { 12 | this.room = room; 13 | this.state = state; 14 | } 15 | 16 | public function toJSON():String 17 | { 18 | return JSON.stringify({"t": "mode", 19 | "a": "game_state", 20 | "d": { 21 | "uid": room.uid, 22 | "state": state 23 | }}); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRPlaybackRequest.as: -------------------------------------------------------------------------------- 1 | 2 | package classes.mp.commands 3 | { 4 | import classes.mp.MPUser; 5 | import classes.mp.room.MPRoomFFR; 6 | 7 | public class MPCFFRPlaybackRequest implements IMPCommand 8 | { 9 | public var room:MPRoomFFR; 10 | public var user:MPUser; 11 | public var index:uint; 12 | 13 | public function MPCFFRPlaybackRequest(room:MPRoomFFR, user:MPUser, index:uint) 14 | { 15 | this.room = room; 16 | this.user = user; 17 | this.index = index; 18 | } 19 | 20 | public function toJSON():String 21 | { 22 | return JSON.stringify({"t": "mode", 23 | "a": "playback_request", 24 | "d": { 25 | "uid": room.uid, 26 | "userUID": user.uid, 27 | "index": index 28 | }}); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRReady.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoomFFR; 4 | 5 | public class MPCFFRReady implements IMPCommand 6 | { 7 | public var room:MPRoomFFR; 8 | 9 | public function MPCFFRReady(room:MPRoomFFR):void 10 | { 11 | this.room = room; 12 | } 13 | 14 | public function toJSON():String 15 | { 16 | return JSON.stringify({"t": "mode", 17 | "a": "ready", 18 | "d": { 19 | "uid": room.uid 20 | }}); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRReadyForce.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoomFFR; 4 | 5 | public class MPCFFRReadyForce implements IMPCommand 6 | { 7 | public var room:MPRoomFFR; 8 | 9 | public function MPCFFRReadyForce(room:MPRoomFFR):void 10 | { 11 | this.room = room; 12 | } 13 | 14 | public function toJSON():String 15 | { 16 | return JSON.stringify({"t": "mode", 17 | "a": "ready_force", 18 | "d": { 19 | "uid": room.uid 20 | }}); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRResultsWait.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoomFFR; 4 | 5 | public class MPCFFRResultsWait implements IMPCommand 6 | { 7 | public var room:MPRoomFFR; 8 | 9 | public function MPCFFRResultsWait(room:MPRoomFFR) 10 | { 11 | this.room = room; 12 | } 13 | 14 | public function toJSON():String 15 | { 16 | return JSON.stringify({"t": "mode", 17 | "a": "results_wait", 18 | "d": { 19 | "uid": room.uid 20 | }}); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRSong.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoomFFR; 4 | 5 | public class MPCFFRSong implements IMPCommand 6 | { 7 | public var room:MPRoomFFR; 8 | 9 | public var type:String; 10 | public var id:uint; 11 | public var level_id:String; 12 | 13 | public var name:String; 14 | public var author:String; 15 | public var time:String; 16 | public var note_count:Number; 17 | public var difficulty:Number; 18 | 19 | public var engine:Object; 20 | 21 | 22 | public function MPCFFRSong(room:MPRoomFFR):void 23 | { 24 | this.room = room; 25 | } 26 | 27 | public function toJSON():String 28 | { 29 | var data:Object = {"uid": room.uid, 30 | "type": type, 31 | "id": id, 32 | "level_id": level_id, 33 | "name": name, 34 | "author": author, 35 | "time": time, 36 | "note_count": note_count, 37 | "difficulty": difficulty, 38 | "engine": engine}; 39 | 40 | return JSON.stringify({"t": "mode", 41 | "a": "song", 42 | "d": data}); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRSongLoadError.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoomFFR; 4 | 5 | public class MPCFFRSongLoadError implements IMPCommand 6 | { 7 | public var room:MPRoomFFR; 8 | 9 | public function MPCFFRSongLoadError(room:MPRoomFFR):void 10 | { 11 | this.room = room; 12 | } 13 | 14 | public function toJSON():String 15 | { 16 | return JSON.stringify({"t": "mode", 17 | "a": "loading_error", 18 | "d": { 19 | "uid": room.uid 20 | }}); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRSongLoadProgress.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoomFFR; 4 | 5 | public class MPCFFRSongLoadProgress implements IMPCommand 6 | { 7 | public var room:MPRoomFFR; 8 | public var progress:int; 9 | public var isLoaded:Boolean; 10 | 11 | public function MPCFFRSongLoadProgress(room:MPRoomFFR, progress:int, isLoaded:Boolean):void 12 | { 13 | this.room = room; 14 | this.progress = progress; 15 | this.isLoaded = isLoaded; 16 | } 17 | 18 | public function toJSON():String 19 | { 20 | return JSON.stringify({"t": "mode", 21 | "a": "loading", 22 | "d": { 23 | "uid": room.uid, 24 | "progress": progress, 25 | "complete": isLoaded 26 | }}); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRSongPlayable.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoomFFR; 4 | 5 | public class MPCFFRSongPlayable implements IMPCommand 6 | { 7 | public var room:MPRoomFFR; 8 | public var canPlay:Boolean; 9 | 10 | public var id:uint; 11 | public var level_id:String; 12 | public var engine:Object; 13 | 14 | public function MPCFFRSongPlayable(room:MPRoomFFR):void 15 | { 16 | this.room = room; 17 | } 18 | 19 | public function toJSON():String 20 | { 21 | return JSON.stringify({"t": "mode", 22 | "a": "song_playable", 23 | "d": { 24 | "uid": room.uid, 25 | "playable": canPlay, 26 | "id": id, 27 | "level_id": level_id, 28 | "engine": engine 29 | }}); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRSongProgress.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoomFFR; 4 | 5 | public class MPCFFRSongProgress implements IMPCommand 6 | { 7 | public var room:MPRoomFFR; 8 | public var progress:Number; 9 | 10 | public function MPCFFRSongProgress(room:MPRoomFFR, progress:Number):void 11 | { 12 | this.room = room; 13 | this.progress = progress; 14 | } 15 | 16 | public function toJSON():String 17 | { 18 | return JSON.stringify({"t": "mode", 19 | "a": "song_progress", 20 | "d": { 21 | "uid": room.uid, 22 | "progress": progress 23 | }}); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRSongRate.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoomFFR; 4 | 5 | public class MPCFFRSongRate implements IMPCommand 6 | { 7 | public var room:MPRoomFFR; 8 | public var rate:Number; 9 | 10 | public function MPCFFRSongRate(room:MPRoomFFR, rate:Number):void 11 | { 12 | this.room = room; 13 | this.rate = rate; 14 | } 15 | 16 | public function toJSON():String 17 | { 18 | return JSON.stringify({"t": "mode", 19 | "a": "song_rate", 20 | "d": { 21 | "uid": room.uid, 22 | "rate": rate 23 | }}); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCFFRSongStart.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoomFFR; 4 | 5 | public class MPCFFRSongStart implements IMPCommand 6 | { 7 | public var room:MPRoomFFR; 8 | public var settings:Object; 9 | public var layout:Object; 10 | public var noteskin:String; 11 | 12 | public function MPCFFRSongStart(room:MPRoomFFR, settings:Object, layout:Object, noteskin:String) 13 | { 14 | this.room = room; 15 | this.settings = settings; 16 | this.layout = layout; 17 | this.noteskin = noteskin; 18 | } 19 | 20 | public function toJSON():String 21 | { 22 | return JSON.stringify({"t": "mode", 23 | "a": "song_start", 24 | "d": { 25 | "uid": room.uid, 26 | "settings": settings, 27 | "layout": layout, 28 | "noteskin": noteskin 29 | }}); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCLogin.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.User; 4 | 5 | public class MPCLogin implements IMPCommand 6 | { 7 | public var user:User; 8 | public var version:uint; 9 | public var game_hash:String; 10 | public var game_version:String; 11 | 12 | public function MPCLogin(version:uint, user:User, game_hash:String, game_version:String) 13 | { 14 | this.version = version; 15 | this.user = user; 16 | this.game_hash = game_hash; 17 | this.game_version = game_version; 18 | } 19 | 20 | public function toJSON():String 21 | { 22 | var data:Object = {"sid": user.siteId, 23 | "token": user.hash, 24 | "version": version, 25 | "game_hash": game_hash, 26 | "game_version": game_version}; 27 | 28 | return JSON.stringify({"t": "sys", 29 | "a": "login", 30 | "d": data}); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCModBanUser.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.MPUser; 4 | 5 | public class MPCModBanUser implements IMPCommand 6 | { 7 | public var user:MPUser; 8 | public var duration:Number; 9 | 10 | public function MPCModBanUser(user:MPUser, duration:int):void 11 | { 12 | this.user = user; 13 | this.duration = duration; 14 | } 15 | 16 | public function toJSON():String 17 | { 18 | return JSON.stringify({"t": "user", 19 | "a": "mod_ban", 20 | "d": { 21 | "uid": user.uid, 22 | "sid": user.sid, 23 | "duration": duration 24 | }}); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCModMuteUser.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.MPUser; 4 | 5 | public class MPCModMuteUser implements IMPCommand 6 | { 7 | public var user:MPUser; 8 | public var duration:Number; 9 | 10 | public function MPCModMuteUser(user:MPUser, duration:int):void 11 | { 12 | this.user = user; 13 | this.duration = duration; 14 | } 15 | 16 | public function toJSON():String 17 | { 18 | return JSON.stringify({"t": "user", 19 | "a": "mod_mute", 20 | "d": { 21 | "uid": user.uid, 22 | "sid": user.sid, 23 | "duration": duration 24 | }}); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCRoomCreate.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | 4 | public class MPCRoomCreate implements IMPCommand 5 | { 6 | public var name:String; 7 | public var password:String; 8 | public var type:String; 9 | 10 | public var max_players:Number; 11 | public var team_count:Number; 12 | 13 | public function toJSON():String 14 | { 15 | var data:Object = {"type": type, 16 | "name": name, 17 | "password": password, 18 | "team_count": team_count, 19 | "max_players": max_players}; 20 | 21 | return JSON.stringify({"t": "room", 22 | "a": "create", 23 | "d": data}); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCRoomDelete.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoom; 4 | 5 | public class MPCRoomDelete implements IMPCommand 6 | { 7 | public var room:MPRoom; 8 | 9 | public function MPCRoomDelete(room:MPRoom):void 10 | { 11 | this.room = room; 12 | } 13 | 14 | public function toJSON():String 15 | { 16 | return JSON.stringify({"t": "room", 17 | "a": "delete", 18 | "d": {"uid": room.uid}}); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCRoomEdit.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoom; 4 | 5 | public class MPCRoomEdit implements IMPCommand 6 | { 7 | public var room:MPRoom; 8 | 9 | public var name:String; 10 | public var password:String; 11 | 12 | public var team_count:Number; 13 | public var max_players:Number; 14 | 15 | public function MPCRoomEdit(room:MPRoom):void 16 | { 17 | this.room = room; 18 | } 19 | 20 | public function toJSON():String 21 | { 22 | var data:Object = {"uid": room.uid, 23 | "name": name, 24 | "password": password, 25 | "team_count": team_count, 26 | "max_players": max_players}; 27 | 28 | return JSON.stringify({"t": "room", 29 | "a": "edit", 30 | "d": data}); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCRoomInfo.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoom; 4 | 5 | public class MPCRoomInfo implements IMPCommand 6 | { 7 | public var room:MPRoom; 8 | 9 | public function MPCRoomInfo(room:MPRoom):void 10 | { 11 | this.room = room; 12 | } 13 | 14 | public function toJSON():String 15 | { 16 | return JSON.stringify({"t": "room", 17 | "a": "info", 18 | "d": { 19 | "uid": room.uid 20 | }}); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCRoomInvite.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.MPUser; 4 | import classes.mp.room.MPRoom; 5 | 6 | public class MPCRoomInvite implements IMPCommand 7 | { 8 | public var user:MPUser; 9 | public var room:MPRoom; 10 | 11 | public function MPCRoomInvite(user:MPUser, room:MPRoom):void 12 | { 13 | this.user = user; 14 | this.room = room; 15 | } 16 | 17 | public function toJSON():String 18 | { 19 | return JSON.stringify({"t": "user", 20 | "a": "room_invite", 21 | "d": { 22 | "uid": user.uid, 23 | "sid": user.sid, 24 | "name": room.name, 25 | "code": room.joinCode 26 | }}); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCRoomJoin.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoom; 4 | 5 | public class MPCRoomJoin implements IMPCommand 6 | { 7 | public var room:MPRoom; 8 | public var password:String; 9 | 10 | public function MPCRoomJoin(room:MPRoom, password:String = null):void 11 | { 12 | this.room = room; 13 | this.password = password; 14 | } 15 | 16 | public function toJSON():String 17 | { 18 | var data:Object = {"uid": room.uid}; 19 | 20 | if (password != null && password.length > 0) 21 | data["password"] = password; 22 | 23 | return JSON.stringify({"t": "room", 24 | "a": "join", 25 | "d": data}); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCRoomJoinCode.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | 4 | public class MPCRoomJoinCode implements IMPCommand 5 | { 6 | public var code:String; 7 | 8 | public function MPCRoomJoinCode(code:String):void 9 | { 10 | this.code = code; 11 | } 12 | 13 | public function toJSON():String 14 | { 15 | return JSON.stringify({"t": "room", 16 | "a": "join_code", 17 | "d": code}); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCRoomLeave.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoom; 4 | 5 | public class MPCRoomLeave implements IMPCommand 6 | { 7 | public var room:MPRoom; 8 | 9 | public function MPCRoomLeave(room:MPRoom) 10 | { 11 | this.room = room; 12 | } 13 | 14 | public function toJSON():String 15 | { 16 | return JSON.stringify({"t": "room", 17 | "a": "leave", 18 | "d": { 19 | "uid": room.uid 20 | }}); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCRoomMessage.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.room.MPRoom; 4 | 5 | public class MPCRoomMessage implements IMPCommand 6 | { 7 | public var room:MPRoom; 8 | public var message:String; 9 | public var type:Number; 10 | 11 | public function MPCRoomMessage(room:MPRoom, message:String, type:Number = 0):void 12 | { 13 | this.room = room; 14 | this.message = message; 15 | this.type = type; 16 | } 17 | 18 | public function toJSON():String 19 | { 20 | return JSON.stringify({"t": "room", 21 | "a": "message", 22 | "d": { 23 | "uid": room.uid, 24 | "message": message, 25 | "type": type 26 | }}); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCRoomTeamChange.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.MPTeam; 4 | import classes.mp.room.MPRoom; 5 | 6 | public class MPCRoomTeamChange implements IMPCommand 7 | { 8 | public var room:MPRoom; 9 | public var team:MPTeam; 10 | 11 | public function MPCRoomTeamChange(room:MPRoom, team:MPTeam) 12 | { 13 | this.room = room; 14 | this.team = team; 15 | } 16 | 17 | public function toJSON():String 18 | { 19 | var data:Object = {"uid": room.uid, 20 | "team": team.uid}; 21 | 22 | return JSON.stringify({"t": "room", 23 | "a": "team", 24 | "d": data}); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCRoomUserBlock.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.MPUser; 4 | import classes.mp.room.MPRoom; 5 | 6 | public class MPCRoomUserBlock implements IMPCommand 7 | { 8 | public var room:MPRoom; 9 | public var user:MPUser; 10 | public var duration:Number; 11 | 12 | public function MPCRoomUserBlock(room:MPRoom, user:MPUser, duration:int):void 13 | { 14 | this.room = room; 15 | this.user = user; 16 | this.duration = duration; 17 | } 18 | 19 | public function toJSON():String 20 | { 21 | return JSON.stringify({"t": "room", 22 | "a": "user_block", 23 | "d": { 24 | "uid": room.uid, 25 | "userUID": user.uid, 26 | "userSID": user.sid, 27 | "duration": duration 28 | }}); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCRoomUserOwner.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.MPUser; 4 | import classes.mp.room.MPRoom; 5 | 6 | public class MPCRoomUserOwner implements IMPCommand 7 | { 8 | public var room:MPRoom; 9 | public var user:MPUser; 10 | 11 | public function MPCRoomUserOwner(room:MPRoom, user:MPUser):void 12 | { 13 | this.room = room; 14 | this.user = user; 15 | } 16 | 17 | public function toJSON():String 18 | { 19 | return JSON.stringify({"t": "room", 20 | "a": "user_owner", 21 | "d": { 22 | "uid": room.uid, 23 | "userUID": user.uid 24 | }}); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCUserBlock.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.MPUser; 4 | 5 | public class MPCUserBlock implements IMPCommand 6 | { 7 | public var user:MPUser; 8 | public var message:String; 9 | public var type:Number; 10 | 11 | public function MPCUserBlock(user:MPUser):void 12 | { 13 | this.user = user; 14 | } 15 | 16 | public function toJSON():String 17 | { 18 | return JSON.stringify({"t": "user", 19 | "a": "block", 20 | "d": { 21 | "uid": user.uid, 22 | "sid": user.sid 23 | }}); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCUserMessage.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | import classes.mp.MPUser; 4 | 5 | public class MPCUserMessage implements IMPCommand 6 | { 7 | public var user:MPUser; 8 | public var message:String; 9 | public var type:Number; 10 | 11 | public function MPCUserMessage(user:MPUser, message:String, type:Number = 0):void 12 | { 13 | this.user = user; 14 | this.message = message; 15 | this.type = type; 16 | } 17 | 18 | public function toJSON():String 19 | { 20 | return JSON.stringify({"t": "user", 21 | "a": "message", 22 | "d": { 23 | "uid": user.uid, 24 | "sid": user.sid, 25 | "message": message, 26 | "type": type 27 | }}); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/classes/mp/commands/MPCommands.as: -------------------------------------------------------------------------------- 1 | package classes.mp.commands 2 | { 3 | 4 | public class MPCommands 5 | { 6 | public static const UPDATE_LOBBY:String = '{"t":"sys","a":"lobby"}'; 7 | 8 | public static const UPDATE_ROOM_LIST:String = '{"t":"sys","a":"room_list"}'; 9 | 10 | public static const TOGGLE_MODE_READY_STATE:String = '{"t":"mode","a":"ready"}'; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/classes/mp/components/MPChatTypes.as: -------------------------------------------------------------------------------- 1 | package classes.mp.components 2 | { 3 | 4 | public class MPChatTypes 5 | { 6 | public static const USER:uint = 0; 7 | public static const MOD:uint = 1; 8 | public static const ADMIN:uint = 2; 9 | public static const SYSTEM:uint = 3; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/classes/mp/components/chatlog/MPChatLogEntry.as: -------------------------------------------------------------------------------- 1 | package classes.mp.components.chatlog 2 | { 3 | import flash.display.Sprite; 4 | 5 | public class MPChatLogEntry extends Sprite 6 | { 7 | public var built:Boolean = false; 8 | 9 | protected var _width:Number = 200; 10 | protected var _height:Number = 30; 11 | 12 | public function MPChatLogEntry():void 13 | { 14 | 15 | } 16 | 17 | public function build(width:Number):void 18 | { 19 | 20 | } 21 | 22 | override public function get height():Number 23 | { 24 | return _height; 25 | } 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/classes/mp/components/chatlog/MPChatLogEntryText.as: -------------------------------------------------------------------------------- 1 | package classes.mp.components.chatlog 2 | { 3 | import flash.text.AntiAliasType; 4 | import flash.text.TextField; 5 | import flash.text.TextFieldAutoSize; 6 | import flash.text.TextFormat; 7 | 8 | public class MPChatLogEntryText extends MPChatLogEntry 9 | { 10 | private static const FORMAT:TextFormat = new TextFormat(Fonts.BASE_FONT_CJK, 11, 0xFFFFFF, true); 11 | 12 | private var field:TextField; 13 | public var message:String; 14 | 15 | public function MPChatLogEntryText(message:String) 16 | { 17 | this.message = message; 18 | 19 | this.mouseChildren = false; 20 | this.cacheAsBitmap = true; 21 | } 22 | 23 | override public function build(pane_width:Number):void 24 | { 25 | if (built) 26 | return; 27 | 28 | _width = pane_width; 29 | 30 | field = new TextField(); 31 | field.width = _width - 10; 32 | field.x = 5; 33 | field.y = 3; 34 | 35 | field.autoSize = TextFieldAutoSize.LEFT; 36 | field.multiline = true; 37 | field.wordWrap = true; 38 | field.embedFonts = true; 39 | field.selectable = false; 40 | field.antiAliasType = AntiAliasType.ADVANCED; 41 | field.autoSize = "left"; 42 | field.defaultTextFormat = FORMAT; 43 | 44 | field.htmlText = message; 45 | 46 | addChild(field); 47 | 48 | _height = field.textHeight + 7; 49 | built = true; 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/classes/mp/events/MPPMSelect.as: -------------------------------------------------------------------------------- 1 | package classes.mp.events 2 | { 3 | import classes.mp.pm.MPUserChatHistory; 4 | import flash.events.Event; 5 | 6 | public class MPPMSelect extends Event 7 | { 8 | public static const CHAT_SELECT:String = "chat_select"; 9 | 10 | public var chat:MPUserChatHistory; 11 | 12 | public function MPPMSelect(chat:MPUserChatHistory):void 13 | { 14 | this.chat = chat; 15 | super(CHAT_SELECT); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/classes/mp/events/MPRoomEvent.as: -------------------------------------------------------------------------------- 1 | package classes.mp.events 2 | { 3 | import classes.mp.MPSocketDataText; 4 | import classes.mp.MPUser; 5 | import classes.mp.room.MPRoom; 6 | 7 | public class MPRoomEvent extends MPEvent 8 | { 9 | public var room:MPRoom; 10 | public var user:MPUser; 11 | 12 | public function MPRoomEvent(type:String, command:MPSocketDataText, room:MPRoom, user:MPUser = null) 13 | { 14 | super(type, command); 15 | 16 | this.room = room; 17 | this.user = user; 18 | } 19 | 20 | override public function toString():String 21 | { 22 | return "---------------------------------\n[MPRoomEvent type=" + type + "]" + "\n" + command; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/classes/mp/events/MPRoomRawEvent.as: -------------------------------------------------------------------------------- 1 | package classes.mp.events 2 | { 3 | import classes.mp.MPSocketDataRaw; 4 | import classes.mp.MPUser; 5 | import classes.mp.room.MPRoom; 6 | import flash.events.Event; 7 | 8 | public class MPRoomRawEvent extends Event 9 | { 10 | public var room:MPRoom; 11 | public var user:MPUser; 12 | public var command:MPSocketDataRaw; 13 | 14 | public function MPRoomRawEvent(type:String, command:MPSocketDataRaw, room:MPRoom, user:MPUser = null) 15 | { 16 | super(type); 17 | 18 | this.command = command; 19 | this.room = room; 20 | this.user = user; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/classes/mp/events/MPUserEvent.as: -------------------------------------------------------------------------------- 1 | package classes.mp.events 2 | { 3 | import classes.mp.MPSocketDataText; 4 | import classes.mp.MPUser; 5 | 6 | public class MPUserEvent extends MPEvent 7 | { 8 | public var user:MPUser; 9 | public var user_sender:MPUser; 10 | 11 | public function MPUserEvent(type:String, command:MPSocketDataText, user:MPUser = null, user_sender:MPUser = null) 12 | { 13 | super(type, command); 14 | 15 | this.user = user; 16 | this.user_sender = user_sender; 17 | } 18 | 19 | override public function toString():String 20 | { 21 | return "---------------------------------\n[MPUserEvent type=" + type + "]" + "\n" + command; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/classes/mp/events/MPViewEvent.as: -------------------------------------------------------------------------------- 1 | package classes.mp.events 2 | { 3 | import flash.events.Event; 4 | 5 | public class MPViewEvent extends Event 6 | { 7 | public static const CHANGE:String = "change_selected_view"; 8 | 9 | public var view:String; 10 | 11 | public function MPViewEvent(view:String) 12 | { 13 | super(CHANGE, false, false); 14 | 15 | this.view = view; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/classes/mp/mode/ffr/MPMatchFFRTeam.as: -------------------------------------------------------------------------------- 1 | package classes.mp.mode.ffr 2 | { 3 | 4 | public class MPMatchFFRTeam 5 | { 6 | public var users:Vector. = new []; 7 | 8 | public var id:int = 0; 9 | public var position:int = 1; 10 | public var raw_score:Number = 0; 11 | 12 | public function update(data:Object):void 13 | { 14 | if (data.id != undefined) 15 | id = data.id; 16 | 17 | if (data.position != undefined) 18 | position = data.position; 19 | 20 | if (data.raw_score != undefined) 21 | raw_score = data.raw_score; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/classes/mp/mode/ffr/MPMatchResultsTeam.as: -------------------------------------------------------------------------------- 1 | package classes.mp.mode.ffr 2 | { 3 | 4 | public class MPMatchResultsTeam 5 | { 6 | public var uid:int; 7 | public var name:String; 8 | public var raw_score:Number; 9 | public var position:int; 10 | public var users:Vector. = new []; 11 | 12 | public function update(data:Object):void 13 | { 14 | if (data.id != undefined) 15 | this.uid = data.id; 16 | 17 | if (data.name != undefined) 18 | this.name = data.name; 19 | 20 | if (data.raw_score != undefined) 21 | this.raw_score = data.raw_score; 22 | 23 | if (data.position != undefined) 24 | this.position = data.position; 25 | } 26 | 27 | public function toString():String 28 | { 29 | return name; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/classes/mp/mode/ffr/mods/MPGameplayModBoolean.as: -------------------------------------------------------------------------------- 1 | package classes.mp.mode.ffr.mods 2 | { 3 | 4 | public class MPGameplayModBoolean 5 | { 6 | public var mod:String; 7 | public var enabled:Boolean = false; 8 | public var value:Boolean; 9 | 10 | public function MPGameplayModBoolean(mod:String, enabled:Boolean = false, value:Boolean = false):void 11 | { 12 | this.mod = mod; 13 | this.enabled = enabled; 14 | this.value = value; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/classes/mp/mode/ffr/mods/MPGameplayModNumber.as: -------------------------------------------------------------------------------- 1 | package classes.mp.mode.ffr.mods 2 | { 3 | 4 | public class MPGameplayModNumber 5 | { 6 | public var mod:String; 7 | public var enabled:Boolean = false; 8 | public var value:Number; 9 | 10 | public function MPGameplayModNumber(mod:String, enabled:Boolean = false, value:Number = 1):void 11 | { 12 | this.mod = mod; 13 | this.enabled = enabled; 14 | this.value = value; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/classes/replay/ReplayBinFrame.as: -------------------------------------------------------------------------------- 1 | package classes.replay 2 | { 3 | 4 | public class ReplayBinFrame 5 | { 6 | public var time:Number; 7 | public var direction:String; 8 | public var index:int; 9 | 10 | public function ReplayBinFrame(time:Number, dir:String = "", index:int = 0):void 11 | { 12 | this.time = time; 13 | this.direction = dir; 14 | this.index = index; 15 | } 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/classes/replay/ReplayNote.as: -------------------------------------------------------------------------------- 1 | package classes.replay 2 | { 3 | 4 | public class ReplayNote 5 | { 6 | public var direction:String; 7 | public var frame:Number; 8 | public var time:Number; 9 | public var score:Number; 10 | 11 | public function ReplayNote(direction:String, frame:Number = -1, time:Number = -1, score:Number = 0):void 12 | { 13 | this.direction = direction; 14 | this.frame = frame; 15 | this.time = time; 16 | this.score = score; 17 | } 18 | 19 | /** 20 | * Used to sort vector replay notes by frame number in ASC order. 21 | * Called in GamePlay after a level end to finalize the replay data. 22 | * @param a ReplayNote A 23 | * @param b ReplayNote B 24 | * @return Number 25 | */ 26 | public static function sortFunction(a:ReplayNote, b:ReplayNote):Number 27 | { 28 | return a.frame - b.frame; 29 | } 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/classes/replay/ReplayPacked.as: -------------------------------------------------------------------------------- 1 | package classes.replay 2 | { 3 | import flash.utils.ByteArray; 4 | 5 | public class ReplayPacked 6 | { 7 | public var MAGIC:String; 8 | public var MAJOR_VER:uint; 9 | public var MINOR_VER:uint; 10 | public var user_id:uint; 11 | public var song_id:uint; 12 | public var song_rate:Number; 13 | public var timestamp:uint; 14 | public var judgements:Object; 15 | public var raw_judgements:String; 16 | public var settings:Object; 17 | public var raw_settings:String; 18 | public var rep_notes:Vector.; 19 | public var rep_boos:Vector.; 20 | public var checksum:uint; 21 | public var rechecksum:uint; 22 | public var replay_bin:ByteArray; 23 | 24 | public var error:String; 25 | 26 | public function get VERSION():uint 27 | { 28 | return MAJOR_VER * 1000 + MINOR_VER; 29 | } 30 | 31 | public function update():void 32 | { 33 | var i:int; 34 | 35 | // 1.0 -> 1.1: 36 | // Judge ms Inversion 37 | if (MAJOR_VER == 1 && MINOR_VER == 0) 38 | { 39 | for (i = 0; i < rep_notes.length; i++) 40 | { 41 | rep_notes[i].time = rep_notes[i].time * -1; 42 | } 43 | 44 | MAJOR_VER = 1; 45 | MINOR_VER = 1; 46 | } 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/classes/score/ScoreHandlerEvent.as: -------------------------------------------------------------------------------- 1 | package classes.score 2 | { 3 | import flash.events.Event; 4 | import game.GameScoreResult; 5 | 6 | public class ScoreHandlerEvent extends Event 7 | { 8 | public static const SUCCESS:String = "success"; 9 | public static const FAILURE:String = "failure"; 10 | 11 | public var result:GameScoreResult; 12 | public var rank:String; 13 | public var last_best:String; 14 | public var hash:String; 15 | 16 | public function ScoreHandlerEvent(type:String, result:GameScoreResult, rank:String, best:String, hash:String = ""):void 17 | { 18 | super(type, false, false); 19 | this.result = result; 20 | this.rank = rank; 21 | this.last_best = best; 22 | this.hash = hash; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/classes/ui/IScrollPane.as: -------------------------------------------------------------------------------- 1 | package classes.ui 2 | { 3 | 4 | public interface IScrollPane 5 | { 6 | function scrollTo(val:Number):void; 7 | function clear():void; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/classes/ui/SimpleBoxButton.as: -------------------------------------------------------------------------------- 1 | package classes.ui 2 | { 3 | import flash.display.Sprite; 4 | import flash.events.MouseEvent; 5 | 6 | public class SimpleBoxButton extends Sprite 7 | { 8 | private var _width:Number; 9 | private var _height:Number; 10 | 11 | public function SimpleBoxButton(width:Number, height:Number) 12 | { 13 | super(); 14 | this._height = height; 15 | this._width = width; 16 | 17 | drawBox(false); 18 | 19 | this.mouseChildren = false; 20 | this.tabEnabled = false; 21 | this.useHandCursor = true; 22 | this.buttonMode = true; 23 | 24 | addEventListener(MouseEvent.MOUSE_OVER, e_mouseOver); 25 | } 26 | 27 | private function e_mouseOver(e:MouseEvent):void 28 | { 29 | addEventListener(MouseEvent.MOUSE_OUT, e_mouseOut); 30 | drawBox(true); 31 | } 32 | 33 | private function e_mouseOut(e:MouseEvent):void 34 | { 35 | removeEventListener(MouseEvent.MOUSE_OUT, e_mouseOut); 36 | drawBox(false); 37 | } 38 | 39 | private function drawBox(doHover:Boolean):void 40 | { 41 | graphics.clear(); 42 | graphics.lineStyle(0, 0, 0); 43 | graphics.beginFill(0xffffff, doHover ? 0.2 : 0); 44 | graphics.drawRect(0, 0, _width, _height); 45 | graphics.endFill(); 46 | } 47 | 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/classes/user/UserStatsScore.as: -------------------------------------------------------------------------------- 1 | package classes.user 2 | { 3 | 4 | public class UserStatsScore 5 | { 6 | public var level_id:Number; 7 | 8 | public var perfect:Number; 9 | public var good:Number; 10 | public var average:Number; 11 | public var miss:Number; 12 | public var boo:Number; 13 | public var combo:Number; 14 | 15 | public var weight:Number; 16 | 17 | public function UserStatsScore(data:Object) 18 | { 19 | level_id = data.song; 20 | 21 | perfect = data.pa[0]; 22 | good = data.pa[1]; 23 | average = data.pa[2]; 24 | miss = data.pa[3]; 25 | boo = data.pa[4]; 26 | combo = data.pa[5]; 27 | 28 | weight = data.weight; 29 | } 30 | 31 | /** 32 | * Gets the PA string displayed in several places. 33 | * Example: 1653-1-0-0-0 34 | */ 35 | public function get pa_string():String 36 | { 37 | return perfect + "-" + good + "-" + average + "-" + miss + "-" + boo; 38 | } 39 | 40 | public function get score():Number 41 | { 42 | return (((perfect) * 50) + (good * 25) + (average * 5) - (miss * 10) - (boo * 5)); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/com/coltware/airxzip/ZipError.as: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2009 coltware@gmail.com 3 | * http://www.coltware.com 4 | * 5 | * License: LGPL v3 ( http://www.gnu.org/licenses/lgpl-3.0-standalone.html ) 6 | * 7 | * @author coltware@gmail.com 8 | */ 9 | package com.coltware.airxzip 10 | { 11 | public class ZipError extends Error 12 | { 13 | public function ZipError(message:String="", id:int=0) 14 | { 15 | super(message, id); 16 | } 17 | 18 | } 19 | } -------------------------------------------------------------------------------- /src/com/coltware/airxzip/ZipErrorEvent.as: -------------------------------------------------------------------------------- 1 | package com.coltware.airxzip 2 | { 3 | import flash.events.ErrorEvent; 4 | 5 | public class ZipErrorEvent extends ErrorEvent 6 | { 7 | public static const ZIP_NO_SUCH_METHOD:String = "ZipNoSuchMethod"; 8 | /** 9 | * Password is not match or not set(NULL) 10 | */ 11 | public static const ZIP_PASSWORD_ERROR:String = "ZipPasswordError"; 12 | 13 | public function ZipErrorEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, text:String=null, id:int=0) 14 | { 15 | super(type, bubbles, cancelable, text, id); 16 | } 17 | 18 | } 19 | } -------------------------------------------------------------------------------- /src/com/coltware/airxzip/ZipEvent.as: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2009 coltware@gmail.com 3 | * http://www.coltware.com 4 | * 5 | * License: LGPL v3 ( http://www.gnu.org/licenses/lgpl-3.0-standalone.html ) 6 | * 7 | * @author coltware@gmail.com 8 | */ 9 | package com.coltware.airxzip { 10 | 11 | import flash.events.Event; 12 | import flash.utils.*; 13 | 14 | use namespace zip_internal; 15 | /** 16 | * ZIPの解凍や圧縮時のイベントクラス 17 | * 18 | */ 19 | public class ZipEvent extends Event{ 20 | 21 | public static var ZIP_LOAD_DATA:String = "zipLoadData"; 22 | public static var ZIP_DATA_UNCOMPRESS:String = "zipDataUncompress"; 23 | public static var ZIP_DATA_COMPRESS:String = "zipDataCompress"; 24 | public static var ZIP_FILE_CREATED:String = "zipFileCreated"; 25 | 26 | zip_internal var $entry:ZipEntry; 27 | zip_internal var $data:ByteArray; 28 | zip_internal var $method:String; 29 | 30 | public function ZipEvent(type:String) { 31 | super(type); 32 | } 33 | 34 | public function get entry():ZipEntry{ 35 | return $entry; 36 | } 37 | 38 | public function get data():ByteArray{ 39 | if($method){ 40 | $data.uncompress($method); 41 | } 42 | return $data; 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /src/com/coltware/airxzip/crypt/ICrypto.as: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2009 coltware@gmail.com 3 | * http://www.coltware.com 4 | * 5 | * License: LGPL v3 ( http://www.gnu.org/licenses/lgpl-3.0-standalone.html ) 6 | * 7 | * @author coltware@gmail.com 8 | */ 9 | package com.coltware.airxzip.crypt 10 | { 11 | import com.coltware.airxzip.ZipEntry; 12 | import com.coltware.airxzip.ZipHeader; 13 | 14 | import flash.utils.ByteArray; 15 | 16 | public interface ICrypto 17 | { 18 | 19 | function checkDecrypt(entry:ZipEntry):Boolean; 20 | /** 21 | * initialize decrypto 22 | */ 23 | function initDecrypt(password:ByteArray,header:ZipHeader):void; 24 | /** 25 | * decrypto 26 | */ 27 | function decrypt(data:ByteArray):ByteArray; 28 | 29 | /** 30 | * initialize encrypto 31 | */ 32 | function initEncrypt(password:ByteArray,header:ZipHeader):void; 33 | 34 | /** 35 | * encrypto 36 | */ 37 | function encrypt(data:ByteArray):ByteArray; 38 | } 39 | } -------------------------------------------------------------------------------- /src/com/coltware/airxzip/zip_internal.as: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2009 coltware@gmail.com 3 | * http://www.coltware.com 4 | * 5 | * License: LGPL v3 ( http://www.gnu.org/licenses/lgpl-3.0-standalone.html ) 6 | * 7 | * @author coltware@gmail.com 8 | */ 9 | package com.coltware.airxzip { 10 | public namespace zip_internal = 11 | "http://www.coltware.com/zip_internal"; 12 | } -------------------------------------------------------------------------------- /src/com/flashfla/loader/DataEvent.as: -------------------------------------------------------------------------------- 1 | package com.flashfla.loader 2 | { 3 | import flash.events.Event; 4 | 5 | public class DataEvent extends Event 6 | { 7 | public var data:*; 8 | 9 | public function DataEvent(type:String, data:*, bubbles:Boolean = false, cancelable:Boolean = false):void 10 | { 11 | this.data = data; 12 | super(type, bubbles, cancelable); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/flashfla/net/DynamicURLLoader.as: -------------------------------------------------------------------------------- 1 | package com.flashfla.net 2 | { 3 | import flash.net.URLLoader; 4 | 5 | public dynamic class DynamicURLLoader extends URLLoader 6 | { 7 | public function DynamicURLLoader() 8 | { 9 | super(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/com/flashfla/net/events/MultipartURLLoaderEvent.as: -------------------------------------------------------------------------------- 1 | package com.flashfla.net.events 2 | { 3 | import flash.events.Event; 4 | 5 | /** 6 | * MultipartURLLoader Event for async data prepare tracking 7 | * @author Eugene Zatepyakin 8 | */ 9 | public class MultipartURLLoaderEvent extends Event 10 | { 11 | public static const DATA_PREPARE_PROGRESS:String = 'dataPrepareProgress'; 12 | public static const DATA_PREPARE_COMPLETE:String = 'dataPrepareComplete'; 13 | 14 | public var bytesWritten:uint = 0; 15 | public var bytesTotal:uint = 0; 16 | 17 | public function MultipartURLLoaderEvent(type:String, w:uint = 0, t:uint = 0) 18 | { 19 | super(type); 20 | 21 | bytesTotal = t; 22 | bytesWritten = w; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/flashfla/utils/Average.as: -------------------------------------------------------------------------------- 1 | package com.flashfla.utils 2 | { 3 | 4 | public class Average 5 | { 6 | private var size:int; 7 | public var value:Number; 8 | public var valueDeviation:Number; 9 | 10 | public function Average() 11 | { 12 | value = 0; 13 | valueDeviation = 0; 14 | size = 0; 15 | } 16 | 17 | public function addValue(value:int):void 18 | { 19 | this.value = (this.value * size + value) / (size + 1); 20 | value -= this.value; 21 | valueDeviation = (valueDeviation * size + value * value) / (size + 1); 22 | size++; 23 | } 24 | 25 | public function get deviation():Number 26 | { 27 | return Math.sqrt(valueDeviation); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/com/flashfla/utils/GameNotePool.as: -------------------------------------------------------------------------------- 1 | package com.flashfla.utils 2 | { 3 | 4 | import classes.GameNote; 5 | 6 | public class GameNotePool 7 | { 8 | public var pool:Vector.; 9 | 10 | public function GameNotePool() 11 | { 12 | pool = new Vector.(); 13 | } 14 | 15 | public function addObject(object:GameNote, mark:Boolean = true):GameNote 16 | { 17 | pool.push(new PoolObject(mark, object)); 18 | return object; 19 | } 20 | 21 | public function unmarkObject(object:GameNote, mark:Boolean = false):void 22 | { 23 | for each (var item:PoolObject in pool) 24 | { 25 | if (item.value == object) 26 | { 27 | item.mark = mark; 28 | } 29 | } 30 | } 31 | 32 | public function unmarkAll(mark:Boolean = false):void 33 | { 34 | for each (var item:PoolObject in pool) 35 | item.mark = mark; 36 | } 37 | 38 | public function getObject():GameNote 39 | { 40 | for each (var item:PoolObject in pool) 41 | { 42 | if (!item.mark) 43 | { 44 | item.mark = true; 45 | return item.value; 46 | } 47 | } 48 | return null; 49 | } 50 | } 51 | } 52 | 53 | import classes.GameNote; 54 | 55 | internal class PoolObject 56 | { 57 | public var mark:Boolean; 58 | public var value:GameNote; 59 | 60 | public function PoolObject(mark:Boolean, value:GameNote) 61 | { 62 | this.mark = mark; 63 | this.value = value; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/com/flashfla/utils/NumberUtil.as: -------------------------------------------------------------------------------- 1 | package com.flashfla.utils 2 | { 3 | 4 | public class NumberUtil 5 | { 6 | public static function numberFormat(number:*, maxDecimals:int = 2, forceDecimals:Boolean = false):String 7 | { 8 | var i:int = 0, inc:Number = Math.pow(10, maxDecimals), str:String = String(Math.round(inc * Number(number)) / inc); 9 | var hasSep:Boolean = str.indexOf(".") == -1, sep:int = hasSep ? str.length : str.indexOf("."); 10 | var ret:String = (hasSep && !forceDecimals ? "" : ".") + str.substr(sep + 1); 11 | 12 | if (forceDecimals) 13 | for (var j:int = 0; j <= maxDecimals - (str.length - (hasSep ? sep - 1 : sep)); j++) 14 | ret += "0"; 15 | 16 | while (i + 3 < (str.substr(0, 1) == "-" ? sep - 1 : sep)) 17 | ret = "," + str.substr(sep - (i += 3), 3) + ret; 18 | 19 | return str.substr(0, sep - i) + ret; 20 | } 21 | 22 | public static var fileSizes:Array = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; 23 | 24 | public static function bytesToString(bytes:Number):String 25 | { 26 | var index:uint = Math.floor(Math.log(bytes) / Math.log(1024)); 27 | return (bytes / Math.pow(1024, index)).toFixed(2) + " " + fileSizes[index]; 28 | } 29 | 30 | public static function hex2dec(hex:String):int 31 | { 32 | return hex ? parseInt(hex, 16) : 0; 33 | } 34 | 35 | public static function dec2hex(dec:int):String 36 | { 37 | return dec.toString(16).toUpperCase(); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/com/flashfla/utils/RollingAverage.as: -------------------------------------------------------------------------------- 1 | package com.flashfla.utils 2 | { 3 | 4 | public class RollingAverage 5 | { 6 | private var size:int; 7 | private var data:Vector.; 8 | private var dataValue:int; 9 | 10 | public function RollingAverage(size:int, value:int = 0) 11 | { 12 | this.size = size; 13 | this.dataValue = value * size; 14 | 15 | data = new Vector.(size); 16 | 17 | for (var i:int = 0; i < size; i++) 18 | data[i] = value; 19 | } 20 | 21 | public function addValue(value:int):void 22 | { 23 | dataValue += value - data.pop(); 24 | data.unshift(value); 25 | } 26 | 27 | public function reset(value:int = 0):void 28 | { 29 | dataValue = value * size; 30 | for (var i:int = 0; i < size; i++) 31 | data[i] = value; 32 | } 33 | 34 | public function get value():int 35 | { 36 | return dataValue / size; 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/com/greensock/TweenAlign.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 0.86 3 | * DATE: 6/15/2009 4 | * AS2 (AS3 version is also available) 5 | * UPDATES AND DOCUMENTATION AT: http://www.TweenLite.com 6 | **/ 7 | package com.greensock { 8 | /** 9 | * @private 10 | * Static constants for defining tween alignment. 11 | * 12 | *

Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

13 | * 14 | * @author Jack Doyle, jack@greensock.com 15 | **/ 16 | public class TweenAlign { 17 | public static const NORMAL:String = "normal"; 18 | public static const SEQUENCE:String = "sequence"; 19 | public static const START:String = "start"; 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /src/com/greensock/easing/Bounce.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * Eases, bouncing either at the beginning (easeIn), the end (easeOut), or both (easeInOut). 10 | * Bounce is a convenience class that congregates the 3 types of Bounce eases (BounceIn, BounceOut, 11 | * and BounceInOut) as static properties so that they can be referenced using the standard synatax, like 12 | * Bounce.easeIn, Bounce.easeOut, and Bounce.easeInOut. 13 | * 14 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

15 | * 16 | * @author Jack Doyle, jack@greensock.com 17 | **/ 18 | final public class Bounce { 19 | 20 | /** Eases out, bouncing at the end. **/ 21 | public static var easeOut:BounceOut = new BounceOut(); 22 | 23 | /** Bounces slightly at first, then to a greater degree over time, accelerating as the ease progresses. **/ 24 | public static var easeIn:BounceIn = new BounceIn(); 25 | 26 | /** Bounces in increasing degree towards the center of the ease, then eases out, bouncing to the end (decreasing in degree at the end). **/ 27 | public static var easeInOut:BounceInOut = new BounceInOut(); 28 | } 29 | } -------------------------------------------------------------------------------- /src/com/greensock/easing/BounceIn.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * @private 10 | * Bounces slightly at first, then to a greater degree over time, accelerating as the ease progresses. 11 | * 12 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

13 | * 14 | * @author Jack Doyle, jack@greensock.com 15 | **/ 16 | final public class BounceIn extends Ease { 17 | 18 | /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ 19 | public static var ease:BounceIn = new BounceIn(); 20 | 21 | /** @inheritDoc **/ 22 | override public function getRatio(p:Number):Number { 23 | if ((p = 1 - p) < 1 / 2.75) { 24 | return 1 - (7.5625 * p * p); 25 | } else if (p < 2 / 2.75) { 26 | return 1 - (7.5625 * (p -= 1.5 / 2.75) * p + .75); 27 | } else if (p < 2.5 / 2.75) { 28 | return 1 - (7.5625 * (p -= 2.25 / 2.75) * p + .9375); 29 | } else { 30 | return 1 - (7.5625 * (p -= 2.625 / 2.75) * p + .984375); 31 | } 32 | } 33 | 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/com/greensock/easing/BounceInOut.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * @private 10 | * Bounces in increasing degree towards the center of the ease, then eases out, bouncing to the end (decreasing in degree at the end). 11 | * 12 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

13 | * 14 | * @author Jack Doyle, jack@greensock.com 15 | **/ 16 | final public class BounceInOut extends Ease { 17 | 18 | /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ 19 | public static var ease:BounceInOut = new BounceInOut(); 20 | 21 | /** @inheritDoc **/ 22 | override public function getRatio(p:Number):Number { 23 | var invert:Boolean; 24 | if (p < 0.5) { 25 | invert = true; 26 | p = 1 - (p * 2); 27 | } else { 28 | p = (p * 2) - 1; 29 | } 30 | if (p < 1 / 2.75) { 31 | p = 7.5625 * p * p; 32 | } else if (p < 2 / 2.75) { 33 | p = 7.5625 * (p -= 1.5 / 2.75) * p + .75; 34 | } else if (p < 2.5 / 2.75) { 35 | p = 7.5625 * (p -= 2.25 / 2.75) * p + .9375; 36 | } else { 37 | p = 7.5625 * (p -= 2.625 / 2.75) * p + .984375; 38 | } 39 | return invert ? (1 - p) * 0.5 : p * 0.5 + 0.5; 40 | } 41 | 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/com/greensock/easing/BounceOut.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * @private 10 | * Eases out, bouncing at the end. 11 | * 12 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

13 | * 14 | * @author Jack Doyle, jack@greensock.com 15 | **/ 16 | final public class BounceOut extends Ease { 17 | 18 | /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ 19 | public static var ease:BounceOut = new BounceOut(); 20 | 21 | /** @inheritDoc **/ 22 | override public function getRatio(p:Number):Number { 23 | if (p < 1 / 2.75) { 24 | return 7.5625 * p * p; 25 | } else if (p < 2 / 2.75) { 26 | return 7.5625 * (p -= 1.5 / 2.75) * p + .75; 27 | } else if (p < 2.5 / 2.75) { 28 | return 7.5625 * (p -= 2.25 / 2.75) * p + .9375; 29 | } else { 30 | return 7.5625 * (p -= 2.625 / 2.75) * p + .984375; 31 | } 32 | } 33 | 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/com/greensock/easing/Circ.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * Eases with an abrupt change in velocity either at the beginning (easeIn), the end (easeOut), or both (easeInOut). 10 | * Circ is a convenience class that congregates the 3 types of Circ eases (CircIn, CircOut, 11 | * and CircInOut) as static properties so that they can be referenced using the standard synatax, like 12 | * Circ.easeIn, Circ.easeOut, and Circ.easeInOut. 13 | * 14 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

15 | * 16 | * @author Jack Doyle, jack@greensock.com 17 | **/ 18 | final public class Circ { 19 | 20 | /** Eases out with an abrupt change in velocity. **/ 21 | public static var easeOut:CircOut = new CircOut(); 22 | 23 | /** Eases in with an abrupt change in velocity. **/ 24 | public static var easeIn:CircIn = new CircIn(); 25 | 26 | /** Eases in and out with an abrupt change in velocity. **/ 27 | public static var easeInOut:CircInOut = new CircInOut(); 28 | } 29 | } -------------------------------------------------------------------------------- /src/com/greensock/easing/CircIn.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * @private 10 | * Eases in with an abrupt change in velocity. 11 | * 12 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

13 | * 14 | * @author Jack Doyle, jack@greensock.com 15 | **/ 16 | final public class CircIn extends Ease { 17 | 18 | /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ 19 | public static var ease:CircIn = new CircIn(); 20 | 21 | /** @inheritDoc **/ 22 | override public function getRatio(p:Number):Number { 23 | return -(Math.sqrt(1 - (p * p)) - 1); 24 | } 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/greensock/easing/CircInOut.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * @private 10 | * Eases in and out with an abrupt change in velocity. 11 | * 12 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

13 | * 14 | * @author Jack Doyle, jack@greensock.com 15 | **/ 16 | final public class CircInOut extends Ease { 17 | 18 | /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ 19 | public static var ease:CircInOut = new CircInOut(); 20 | 21 | /** @inheritDoc **/ 22 | override public function getRatio(p:Number):Number { 23 | return ((p*=2) < 1) ? -0.5 * (Math.sqrt(1 - p * p) - 1) : 0.5 * (Math.sqrt(1 - (p -= 2) * p) + 1); 24 | } 25 | 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/com/greensock/easing/CircOut.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * @private 10 | * Eases out with an abrupt change in velocity. 11 | * 12 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

13 | * 14 | * @author Jack Doyle, jack@greensock.com 15 | **/ 16 | final public class CircOut extends Ease { 17 | 18 | /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ 19 | public static var ease:CircOut = new CircOut(); 20 | 21 | /** @inheritDoc **/ 22 | override public function getRatio(p:Number):Number { 23 | return Math.sqrt(1 - (p = p - 1) * p); 24 | } 25 | 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/com/greensock/easing/ExpoIn.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * @private 10 | * Eases in a strong fashion starting out slowly and then accelerating. Produces an effect similar to the 11 | * popular "Zeno's paradox" style of scripted easing, where each interval of time decreases the remaining 12 | * distance by a constant proportion. 13 | * 14 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

15 | * 16 | * @author Jack Doyle, jack@greensock.com 17 | **/ 18 | final public class ExpoIn extends Ease { 19 | 20 | /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ 21 | public static var ease:ExpoIn = new ExpoIn(); 22 | 23 | /** @inheritDoc **/ 24 | override public function getRatio(p:Number):Number { 25 | return Math.pow(2, 10 * (p - 1)) - 0.001; 26 | } 27 | 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/com/greensock/easing/ExpoInOut.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * @private 10 | * Eases in a strong fashion starting out slowly and then accelerating, then decelerating at the end. 11 | * Produces an effect similar to the popular "Zeno's paradox" style of scripted easing, where each 12 | * interval of time decreases the remaining distance by a constant proportion. 13 | * 14 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

15 | * 16 | * @author Jack Doyle, jack@greensock.com 17 | **/ 18 | final public class ExpoInOut extends Ease { 19 | 20 | /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ 21 | public static var ease:ExpoInOut = new ExpoInOut(); 22 | 23 | /** @inheritDoc **/ 24 | override public function getRatio(p:Number):Number { 25 | return ((p*=2) < 1) ? 0.5 * Math.pow(2, 10 * (p - 1)) : 0.5 * (2 - Math.pow(2, -10 * (p - 1))); 26 | } 27 | 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/com/greensock/easing/ExpoOut.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * @private 10 | * Eases out in a strong fashion starting out fast and then decelerating. Produces an effect similar to the 11 | * popular "Zeno's paradox" style of scripted easing, where each interval of time decreases the remaining 12 | * distance by a constant proportion. 13 | * 14 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

15 | * 16 | * @author Jack Doyle, jack@greensock.com 17 | **/ 18 | final public class ExpoOut extends Ease { 19 | 20 | /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ 21 | public static var ease:ExpoOut = new ExpoOut(); 22 | 23 | /** @inheritDoc **/ 24 | override public function getRatio(p:Number):Number { 25 | return 1 - Math.pow(2, -10 * p); 26 | } 27 | 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/com/greensock/easing/Sine.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * Eases with a relatively low power either at the beginning (easeIn), the end (easeOut), or both (easeInOut). 10 | * Sine is a convenience class that congregates the 3 types of Sine eases (SineIn, SineOut, 11 | * and SineInOut) as static properties so that they can be referenced using the standard synatax, like 12 | * Sine.easeIn, Sine.easeOut, and Sine.easeInOut. 13 | * 14 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

15 | * 16 | * @author Jack Doyle, jack@greensock.com 17 | **/ 18 | final public class Sine { 19 | 20 | /** Eases out with slight deceleration. **/ 21 | public static var easeOut:SineOut = new SineOut(); 22 | 23 | /** Eases in with slight acceleration. **/ 24 | public static var easeIn:SineIn = new SineIn(); 25 | 26 | /** Eases in and then out with slight acceleration/deceleration. **/ 27 | public static var easeInOut:SineInOut = new SineInOut(); 28 | } 29 | } -------------------------------------------------------------------------------- /src/com/greensock/easing/SineIn.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * @private 10 | * Eases in with slight acceleration. 11 | * 12 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

13 | * 14 | * @author Jack Doyle, jack@greensock.com 15 | **/ 16 | final public class SineIn extends Ease { 17 | 18 | /** @private **/ 19 | private static const _HALF_PI:Number = Math.PI / 2; 20 | 21 | /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ 22 | public static var ease:SineIn = new SineIn(); 23 | 24 | /** @inheritDoc **/ 25 | override public function getRatio(p:Number):Number { 26 | return -Math.cos(p * _HALF_PI) + 1; 27 | } 28 | 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/com/greensock/easing/SineInOut.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * @private 10 | * Eases in and then out with slight acceleration/deceleration. 11 | * 12 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

13 | * 14 | * @author Jack Doyle, jack@greensock.com 15 | **/ 16 | final public class SineInOut extends Ease { 17 | 18 | /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ 19 | public static var ease:SineInOut = new SineInOut(); 20 | 21 | /** @inheritDoc **/ 22 | override public function getRatio(p:Number):Number { 23 | return -0.5 * (Math.cos(Math.PI * p) - 1); 24 | } 25 | 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/com/greensock/easing/SineOut.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0 3 | * DATE: 2012-03-22 4 | * AS3 (AS2 and JS versions are also available) 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing { 8 | /** 9 | * @private 10 | * Eases out with slight deceleration. 11 | * 12 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

13 | * 14 | * @author Jack Doyle, jack@greensock.com 15 | **/ 16 | final public class SineOut extends Ease { 17 | 18 | /** @private **/ 19 | private static const _HALF_PI:Number = Math.PI / 2; 20 | 21 | /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ 22 | public static var ease:SineOut = new SineOut(); 23 | 24 | /** @inheritDoc **/ 25 | override public function getRatio(p:Number):Number { 26 | return Math.sin(p * _HALF_PI); 27 | } 28 | 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/com/greensock/easing/core/EasePoint.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 1.0.0 3 | * DATE: 2013-03-27 4 | * AS3 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.easing.core { 8 | /** 9 | * @private 10 | * Used by RoughEase. Couldn't use an internal class due to instantiation order issues caused by referencing an EasePoint inside the RoughEase constructor when we create an "ease" public static var that's a RoughEase. 11 | * 12 | *

Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

13 | * 14 | * @author Jack Doyle, jack@greensock.com 15 | **/ 16 | final public class EasePoint { 17 | public var time:Number; 18 | public var gap:Number; 19 | public var value:Number; 20 | public var change:Number; 21 | public var next:EasePoint; 22 | public var prev:EasePoint; 23 | 24 | public function EasePoint(time:Number, value:Number, next:EasePoint) { 25 | this.time = time; 26 | this.value = value; 27 | if (next) { 28 | this.next = next; 29 | next.prev = this; 30 | this.change = next.value - value; 31 | this.gap = next.time - time; 32 | } 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /src/com/greensock/events/TweenEvent.as: -------------------------------------------------------------------------------- 1 | package com.greensock.events { 2 | import flash.events.Event; 3 | /** 4 | * Used for dispatching events from the GreenSock Animation Platform. 5 | * 6 | *

Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

7 | * 8 | * @author Jack Doyle, jack@greensock.com 9 | */ 10 | public class TweenEvent extends Event { 11 | /** @private **/ 12 | public static const VERSION:Number = 12.0; 13 | public static const START:String = "start"; 14 | public static const UPDATE:String = "change"; 15 | public static const COMPLETE:String = "complete"; 16 | public static const REVERSE_COMPLETE:String = "reverseComplete"; 17 | public static const REPEAT:String = "repeat"; 18 | 19 | public function TweenEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) { 20 | super(type, bubbles, cancelable); 21 | } 22 | 23 | public override function clone():Event { 24 | return new TweenEvent(this.type, this.bubbles, this.cancelable); 25 | } 26 | 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /src/com/greensock/plugins/BezierThroughPlugin.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 12.0 3 | * DATE: 2012-01-12 4 | * AS3 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.plugins { 8 | import com.greensock.TweenLite; 9 | /** 10 | * @private 11 | * [AS3/AS2 only] LEGACY 12 | * 13 | *

Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

14 | * 15 | * @author Jack Doyle, jack@greensock.com 16 | */ 17 | public class BezierThroughPlugin extends BezierPlugin { 18 | /** @private **/ 19 | public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility 20 | 21 | /** @private **/ 22 | public function BezierThroughPlugin() { 23 | super(); 24 | _propName = "bezierThrough"; 25 | } 26 | 27 | /** @private **/ 28 | override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { 29 | if (value is Array) { 30 | value = {values:value}; 31 | } 32 | value.type = "thru"; 33 | return super._onInitTween(target, value, tween); 34 | } 35 | 36 | } 37 | } -------------------------------------------------------------------------------- /src/com/greensock/plugins/RemoveTintPlugin.as: -------------------------------------------------------------------------------- 1 | /** 2 | * VERSION: 12.0 3 | * DATE: 2012-01-14 4 | * AS3 5 | * UPDATES AND DOCS AT: http://www.greensock.com 6 | **/ 7 | package com.greensock.plugins { 8 | import com.greensock.plugins.TintPlugin; 9 | /** 10 | * [AS3/AS2 only] [deprecated in favor of tint:null] Removes the tint of a DisplayObject over time. 11 | * 12 | *

USAGE:

13 | * 14 | import com.greensock.TweenLite; 15 | import com.greensock.plugins.TweenPlugin; 16 | import com.greensock.plugins.RemoveTintPlugin; 17 | TweenPlugin.activate([RemoveTintPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. 18 | 19 | TweenLite.to(mc, 1, {removeTint:true}); 20 | 21 | * 22 | *

Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

23 | * 24 | * @author Jack Doyle, jack@greensock.com 25 | */ 26 | public class RemoveTintPlugin extends TintPlugin { 27 | /** @private **/ 28 | public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility 29 | 30 | /** @private **/ 31 | public function RemoveTintPlugin() { 32 | super(); 33 | _propName = "removeTint"; 34 | } 35 | 36 | } 37 | } -------------------------------------------------------------------------------- /src/com/worlize/websocket/WebSocketError.as: -------------------------------------------------------------------------------- 1 | /************************************************************************ 2 | * Copyright 2010-2012 Worlize Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ***********************************************************************/ 16 | 17 | package com.worlize.websocket 18 | { 19 | 20 | public class WebSocketError extends Error 21 | { 22 | public function WebSocketError(message:* = "", id:* = 0) 23 | { 24 | super(message, id); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/worlize/websocket/WebSocketErrorEvent.as: -------------------------------------------------------------------------------- 1 | /************************************************************************ 2 | * Copyright 2010-2012 Worlize Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ***********************************************************************/ 16 | 17 | package com.worlize.websocket 18 | { 19 | import flash.events.ErrorEvent; 20 | 21 | public class WebSocketErrorEvent extends ErrorEvent 22 | { 23 | public static const CONNECTION_FAIL:String = "connectionFail"; 24 | public static const ABNORMAL_CLOSE:String = "abnormalClose"; 25 | 26 | public function WebSocketErrorEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, text:String = "") 27 | { 28 | super(type, bubbles, cancelable, text); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/com/worlize/websocket/WebSocketEvent.as: -------------------------------------------------------------------------------- 1 | /************************************************************************ 2 | * Copyright 2010-2012 Worlize Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ***********************************************************************/ 16 | 17 | package com.worlize.websocket 18 | { 19 | import flash.events.Event; 20 | 21 | public class WebSocketEvent extends Event 22 | { 23 | public static const OPEN:String = "open"; 24 | public static const CLOSED:String = "closed"; 25 | public static const MESSAGE:String = "message"; 26 | public static const FRAME:String = "frame"; 27 | public static const PING:String = "ping"; 28 | public static const PONG:String = "pong"; 29 | 30 | public var message:WebSocketMessage; 31 | public var frame:WebSocketFrame; 32 | 33 | public function WebSocketEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false) 34 | { 35 | super(type, bubbles, cancelable); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/com/worlize/websocket/WebSocketMessage.as: -------------------------------------------------------------------------------- 1 | /************************************************************************ 2 | * Copyright 2010-2012 Worlize Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ***********************************************************************/ 16 | 17 | package com.worlize.websocket 18 | { 19 | import flash.utils.ByteArray; 20 | 21 | public class WebSocketMessage 22 | { 23 | public static const TYPE_BINARY:String = "binary"; 24 | public static const TYPE_UTF8:String = "utf8"; 25 | 26 | public var type:String; 27 | public var utf8Data:String; 28 | public var binaryData:ByteArray; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/com/worlize/websocket/WebSocketOpcode.as: -------------------------------------------------------------------------------- 1 | /************************************************************************ 2 | * Copyright 2010-2012 Worlize Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ***********************************************************************/ 16 | 17 | package com.worlize.websocket 18 | { 19 | 20 | public final class WebSocketOpcode 21 | { 22 | // non-control opcodes 23 | public static const CONTINUATION:int = 0x00; 24 | public static const TEXT_FRAME:int = 0x01; 25 | public static const BINARY_FRAME:int = 0x02; 26 | public static const EXT_DATA:int = 0x03; 27 | // 0x04 - 0x07 = Reserved for further control frames 28 | 29 | // Control opcodes 30 | public static const CONNECTION_CLOSE:int = 0x08; 31 | public static const PING:int = 0x09; 32 | public static const PONG:int = 0x0A; 33 | public static const EXT_CONTROL:int = 0x0B; 34 | // 0x0C - 0x0F = Reserved for further control frames 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/com/worlize/websocket/WebSocketState.as: -------------------------------------------------------------------------------- 1 | /************************************************************************ 2 | * Copyright 2010-2012 Worlize Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | ***********************************************************************/ 16 | 17 | package com.worlize.websocket 18 | { 19 | 20 | public final class WebSocketState 21 | { 22 | public static const CONNECTING:int = 0; 23 | public static const OPEN:int = 1; 24 | public static const CLOSED:int = 2; 25 | public static const INIT:int = 3; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/worlize/websocket/WebSocketURI.as: -------------------------------------------------------------------------------- 1 | package com.worlize.websocket 2 | { 3 | 4 | public class WebSocketURI 5 | { 6 | public var scheme:String; 7 | public var host:String; 8 | public var port:uint; 9 | public var path:String; 10 | 11 | public function WebSocketURI(host:String, port:uint = 80, scheme:String = "ws", path:String = "/") 12 | { 13 | this.host = host; 14 | this.port = port; 15 | this.scheme = scheme; 16 | this.path = path; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/game/controls/ComboTotal.as: -------------------------------------------------------------------------------- 1 | package game.controls 2 | { 3 | import flash.display.DisplayObjectContainer; 4 | import game.GameOptions; 5 | 6 | public class ComboTotal extends Combo 7 | { 8 | public function ComboTotal(options:GameOptions, parent:DisplayObjectContainer) 9 | { 10 | super(options, parent); 11 | } 12 | 13 | override public function get id():String 14 | { 15 | return GameLayoutManager.LAYOUT_TOTAL; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/game/events/GamePlaybackEvent.as: -------------------------------------------------------------------------------- 1 | package game.events 2 | { 3 | import flash.utils.IDataOutput; 4 | 5 | public class GamePlaybackEvent 6 | { 7 | public var id:uint; 8 | public var index:uint; 9 | public var timestamp:uint; 10 | 11 | public function GamePlaybackEvent(id:uint, index:uint, timestamp:uint) 12 | { 13 | this.id = id; 14 | this.index = index; 15 | this.timestamp = timestamp; 16 | } 17 | 18 | public function writeData(output:IDataOutput):void 19 | { 20 | 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/game/events/GamePlaybackFocusChange.as: -------------------------------------------------------------------------------- 1 | package game.events 2 | { 3 | import flash.utils.IDataInput; 4 | import flash.utils.IDataOutput; 5 | 6 | public class GamePlaybackFocusChange extends GamePlaybackEvent 7 | { 8 | public static const ID:uint = 5; 9 | 10 | public var isFocus:Boolean; 11 | 12 | public function GamePlaybackFocusChange(index:uint, timestamp:int, isFocus:Boolean):void 13 | { 14 | super(ID, index, timestamp); 15 | this.isFocus = isFocus; 16 | } 17 | 18 | override public function writeData(output:IDataOutput):void 19 | { 20 | output.writeByte(ID); 21 | output.writeByte(4 + 4 + 1); // Length of everything below this. 22 | output.writeUnsignedInt(index); 23 | output.writeUnsignedInt(timestamp); 24 | output.writeByte(isFocus ? 1 : 0); 25 | } 26 | 27 | public static function readData(input:IDataInput):GamePlaybackFocusChange 28 | { 29 | var index:uint = input.readUnsignedInt(); 30 | var timestamp:uint = input.readUnsignedInt(); 31 | var isFocus:Boolean = input.readUnsignedByte() == 1 ? true : false; 32 | 33 | return new GamePlaybackFocusChange(index, timestamp, isFocus); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/game/events/GamePlaybackJudgeResult.as: -------------------------------------------------------------------------------- 1 | package game.events 2 | { 3 | import flash.utils.IDataInput; 4 | import flash.utils.IDataOutput; 5 | 6 | public class GamePlaybackJudgeResult extends GamePlaybackEvent 7 | { 8 | public static const ID:uint = 2; 9 | 10 | public var noteID:int; 11 | public var accuracy:int; 12 | 13 | public function GamePlaybackJudgeResult(index:uint, noteID:uint, accuracy:int, timestamp:Number):void 14 | { 15 | super(ID, index, timestamp); 16 | this.noteID = index; 17 | this.accuracy = accuracy; 18 | } 19 | 20 | override public function writeData(output:IDataOutput):void 21 | { 22 | output.writeByte(ID); 23 | output.writeByte(4 + 4 + 4 + 2); // Length of everything below this. 24 | output.writeUnsignedInt(index); 25 | output.writeUnsignedInt(timestamp); 26 | output.writeInt(noteID); 27 | output.writeShort(accuracy); 28 | } 29 | 30 | public static function readData(input:IDataInput):GamePlaybackJudgeResult 31 | { 32 | var index:uint = input.readUnsignedInt(); 33 | var timestamp:uint = input.readUnsignedInt(); 34 | var noteID:int = input.readInt(); 35 | var accuracy:int = input.readShort(); 36 | 37 | return new GamePlaybackJudgeResult(index, noteID, accuracy, timestamp); 38 | } 39 | 40 | public function toString():String 41 | { 42 | return index + ":" + timestamp + ":" + noteID + ":" + accuracy; 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/game/events/GamePlaybackKeyDown.as: -------------------------------------------------------------------------------- 1 | package game.events 2 | { 3 | import flash.utils.IDataInput; 4 | import flash.utils.IDataOutput; 5 | 6 | public class GamePlaybackKeyDown extends GamePlaybackEvent 7 | { 8 | public static const ID:uint = 3; 9 | 10 | public var key:uint; 11 | 12 | public function GamePlaybackKeyDown(index:uint, timestamp:Number, key:uint):void 13 | { 14 | super(ID, index, timestamp); 15 | this.key = key; 16 | } 17 | 18 | override public function writeData(output:IDataOutput):void 19 | { 20 | output.writeByte(ID); 21 | output.writeByte(4 + 4 + 1); // Length of everything below this. 22 | output.writeUnsignedInt(index); 23 | output.writeUnsignedInt(timestamp); 24 | output.writeByte(key); 25 | } 26 | 27 | public static function readData(input:IDataInput):GamePlaybackKeyDown 28 | { 29 | var index:uint = input.readUnsignedInt(); 30 | var timestamp:uint = input.readUnsignedInt(); 31 | var key:uint = input.readUnsignedByte(); 32 | 33 | return new GamePlaybackKeyDown(index, timestamp, key); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/game/events/GamePlaybackKeyUp.as: -------------------------------------------------------------------------------- 1 | package game.events 2 | { 3 | import flash.utils.IDataInput; 4 | import flash.utils.IDataOutput; 5 | 6 | public class GamePlaybackKeyUp extends GamePlaybackEvent 7 | { 8 | public static const ID:uint = 4; 9 | 10 | public var key:uint; 11 | 12 | public function GamePlaybackKeyUp(index:uint, timestamp:Number, key:uint):void 13 | { 14 | super(ID, index, timestamp); 15 | this.key = key; 16 | } 17 | 18 | override public function writeData(output:IDataOutput):void 19 | { 20 | output.writeByte(ID); 21 | output.writeByte(4 + 4 + 1); // Length of everything below this. 22 | output.writeUnsignedInt(index); 23 | output.writeUnsignedInt(timestamp); 24 | output.writeByte(key); 25 | } 26 | 27 | public static function readData(input:IDataInput):GamePlaybackKeyUp 28 | { 29 | var index:uint = input.readUnsignedInt(); 30 | var timestamp:uint = input.readUnsignedInt(); 31 | var key:uint = input.readUnsignedByte(); 32 | 33 | return new GamePlaybackKeyUp(index, timestamp, key); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/game/events/GamePlaybackSpectatorEnd.as: -------------------------------------------------------------------------------- 1 | package game.events 2 | { 3 | import flash.utils.IDataInput; 4 | import flash.utils.IDataOutput; 5 | 6 | public class GamePlaybackSpectatorEnd extends GamePlaybackEvent 7 | { 8 | public static const ID:uint = 7; 9 | 10 | public var direction:String; 11 | 12 | public function GamePlaybackSpectatorEnd(index:uint, timestamp:Number):void 13 | { 14 | super(ID, index, timestamp); 15 | } 16 | 17 | override public function writeData(output:IDataOutput):void 18 | { 19 | output.writeByte(ID); 20 | output.writeByte(4 + 4 + 1); // Length of everything below this. 21 | output.writeUnsignedInt(index); 22 | output.writeUnsignedInt(timestamp); 23 | output.writeByte(0); 24 | } 25 | 26 | public static function readData(input:IDataInput):GamePlaybackSpectatorEnd 27 | { 28 | var index:uint = input.readUnsignedInt(); 29 | var timestamp:uint = input.readUnsignedInt(); 30 | var end_type:uint = input.readByte(); 31 | 32 | return new GamePlaybackSpectatorEnd(index, timestamp); 33 | } 34 | 35 | public function toString():String 36 | { 37 | return "[GamePlaybackSpectatorEnd = " + index + ":" + timestamp + "]"; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/game/events/GamePlaybackSpectatorHit.as: -------------------------------------------------------------------------------- 1 | package game.events 2 | { 3 | import flash.utils.IDataInput; 4 | import flash.utils.IDataOutput; 5 | 6 | public class GamePlaybackSpectatorHit extends GamePlaybackEvent 7 | { 8 | public static const ID:uint = 6; 9 | 10 | public var direction:String; 11 | 12 | public function GamePlaybackSpectatorHit(index:uint, timestamp:Number, direction:String):void 13 | { 14 | super(ID, index, timestamp); 15 | this.direction = direction; 16 | } 17 | 18 | override public function writeData(output:IDataOutput):void 19 | { 20 | output.writeByte(ID); 21 | output.writeByte(4 + 4 + 1); // Length of everything below this. 22 | output.writeUnsignedInt(index); 23 | output.writeUnsignedInt(timestamp); 24 | output.writeByte(direction.charCodeAt(0)); 25 | } 26 | 27 | public static function readData(input:IDataInput):GamePlaybackSpectatorHit 28 | { 29 | var index:uint = input.readUnsignedInt(); 30 | var timestamp:uint = input.readUnsignedInt(); 31 | var direction:String = String.fromCharCode(input.readByte()); 32 | 33 | return new GamePlaybackSpectatorHit(index, timestamp, direction); 34 | } 35 | 36 | public function toString():String 37 | { 38 | return "[GamePlaybackSpectatorHit = " + index + ":" + timestamp + ":" + direction + "]"; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/game/graph/GraphCrossPoint.as: -------------------------------------------------------------------------------- 1 | package game.graph 2 | { 3 | 4 | public class GraphCrossPoint 5 | { 6 | public var index:int; 7 | public var x:Number; 8 | public var y:Number; 9 | public var timing:Number; 10 | public var color:uint; 11 | public var score:int; 12 | public var column:String; 13 | 14 | public function GraphCrossPoint(index:int, pos_x:Number, pos_y:Number, timing:Number, color:uint, score:int, column:String):void 15 | { 16 | this.index = index; 17 | this.x = pos_x; 18 | this.y = pos_y; 19 | this.timing = timing; 20 | this.color = color; 21 | this.score = score; 22 | this.column = column; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/game/noteskins/EmbedNoteskin1.as: -------------------------------------------------------------------------------- 1 | package game.noteskins 2 | { 3 | import flash.utils.ByteArray; 4 | 5 | public class EmbedNoteskin1 extends EmbedNoteskinBase 6 | { 7 | [Embed(source = "NoteSkin1.swf", mimeType = 'application/octet-stream')] 8 | private static const EMBED_SWF:Class; 9 | 10 | private static const ID:int = 1; 11 | 12 | override public function getData():Object 13 | { 14 | return {"id": ID, 15 | "name": "Default", 16 | "rotation": 90, 17 | "width": 64, 18 | "height": 64} 19 | } 20 | 21 | override public function getBytes():ByteArray 22 | { 23 | return new EMBED_SWF(); 24 | } 25 | 26 | override public function getID():int 27 | { 28 | return ID; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/game/noteskins/EmbedNoteskin10.as: -------------------------------------------------------------------------------- 1 | package game.noteskins 2 | { 3 | import flash.utils.ByteArray; 4 | 5 | public class EmbedNoteskin10 extends EmbedNoteskinBase 6 | { 7 | [Embed(source = "NoteSkin10.swf", mimeType = 'application/octet-stream')] 8 | private static const EMBED_SWF:Class; 9 | 10 | private static const ID:int = 10; 11 | 12 | override public function getData():Object 13 | { 14 | return {"id": ID, 15 | "name": "FFR Orbular", 16 | "rotation": 0, 17 | "width": 64, 18 | "height": 64} 19 | } 20 | 21 | override public function getBytes():ByteArray 22 | { 23 | return new EMBED_SWF(); 24 | } 25 | 26 | override public function getID():int 27 | { 28 | return ID; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/game/noteskins/EmbedNoteskin2.as: -------------------------------------------------------------------------------- 1 | package game.noteskins 2 | { 3 | import flash.utils.ByteArray; 4 | 5 | public class EmbedNoteskin2 extends EmbedNoteskinBase 6 | { 7 | [Embed(source = "NoteSkin2.swf", mimeType = 'application/octet-stream')] 8 | private static const EMBED_SWF:Class; 9 | 10 | private static const ID:int = 2; 11 | 12 | override public function getData():Object 13 | { 14 | return {"id": ID, 15 | "name": "Velocity", 16 | "rotation": 90, 17 | "width": 64, 18 | "height": 64} 19 | } 20 | 21 | override public function getBytes():ByteArray 22 | { 23 | return new EMBED_SWF(); 24 | } 25 | 26 | override public function getID():int 27 | { 28 | return ID; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/game/noteskins/EmbedNoteskin3.as: -------------------------------------------------------------------------------- 1 | package game.noteskins 2 | { 3 | import flash.utils.ByteArray; 4 | 5 | public class EmbedNoteskin3 extends EmbedNoteskinBase 6 | { 7 | [Embed(source = "NoteSkin3.swf", mimeType = 'application/octet-stream')] 8 | private static const EMBED_SWF:Class; 9 | 10 | private static const ID:int = 3; 11 | 12 | override public function getData():Object 13 | { 14 | return {"id": ID, 15 | "name": "BeatMania", 16 | "rotation": 0, 17 | "width": 88, 18 | "height": 64} 19 | } 20 | 21 | override public function getBytes():ByteArray 22 | { 23 | return new EMBED_SWF(); 24 | } 25 | 26 | override public function getID():int 27 | { 28 | return ID; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/game/noteskins/EmbedNoteskin4.as: -------------------------------------------------------------------------------- 1 | package game.noteskins 2 | { 3 | import flash.utils.ByteArray; 4 | 5 | public class EmbedNoteskin4 extends EmbedNoteskinBase 6 | { 7 | [Embed(source = "NoteSkin4.swf", mimeType = 'application/octet-stream')] 8 | private static const EMBED_SWF:Class; 9 | 10 | private static const ID:int = 4; 11 | 12 | override public function getData():Object 13 | { 14 | return {"id": ID, 15 | "name": "SM Orbular", 16 | "rotation": 0, 17 | "width": 64, 18 | "height": 64} 19 | } 20 | 21 | override public function getBytes():ByteArray 22 | { 23 | return new EMBED_SWF(); 24 | } 25 | 26 | override public function getID():int 27 | { 28 | return ID; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/game/noteskins/EmbedNoteskin5.as: -------------------------------------------------------------------------------- 1 | package game.noteskins 2 | { 3 | import flash.utils.ByteArray; 4 | 5 | public class EmbedNoteskin5 extends EmbedNoteskinBase 6 | { 7 | [Embed(source = "NoteSkin5.swf", mimeType = 'application/octet-stream')] 8 | private static const EMBED_SWF:Class; 9 | 10 | private static const ID:int = 5; 11 | 12 | override public function getData():Object 13 | { 14 | return {"id": ID, 15 | "name": "Metal", 16 | "rotation": 90, 17 | "width": 64, 18 | "height": 64} 19 | } 20 | 21 | override public function getBytes():ByteArray 22 | { 23 | return new EMBED_SWF(); 24 | } 25 | 26 | override public function getID():int 27 | { 28 | return ID; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/game/noteskins/EmbedNoteskin6.as: -------------------------------------------------------------------------------- 1 | package game.noteskins 2 | { 3 | import flash.utils.ByteArray; 4 | 5 | public class EmbedNoteskin6 extends EmbedNoteskinBase 6 | { 7 | [Embed(source = "NoteSkin6.swf", mimeType = 'application/octet-stream')] 8 | private static const EMBED_SWF:Class; 9 | 10 | private static const ID:int = 6; 11 | 12 | override public function getData():Object 13 | { 14 | return {"id": ID, 15 | "name": "Delta", 16 | "rotation": 90, 17 | "width": 64, 18 | "height": 64} 19 | } 20 | 21 | override public function getBytes():ByteArray 22 | { 23 | return new EMBED_SWF(); 24 | } 25 | 26 | override public function getID():int 27 | { 28 | return ID; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/game/noteskins/EmbedNoteskin7.as: -------------------------------------------------------------------------------- 1 | package game.noteskins 2 | { 3 | import flash.utils.ByteArray; 4 | 5 | public class EmbedNoteskin7 extends EmbedNoteskinBase 6 | { 7 | [Embed(source = "NoteSkin7.swf", mimeType = 'application/octet-stream')] 8 | private static const EMBED_SWF:Class; 9 | 10 | private static const ID:int = 7; 11 | 12 | override public function getData():Object 13 | { 14 | return {"id": ID, 15 | "name": "Delta (White)", 16 | "rotation": 90, 17 | "width": 64, 18 | "height": 64} 19 | } 20 | 21 | override public function getBytes():ByteArray 22 | { 23 | return new EMBED_SWF(); 24 | } 25 | 26 | override public function getID():int 27 | { 28 | return ID; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/game/noteskins/EmbedNoteskin8.as: -------------------------------------------------------------------------------- 1 | package game.noteskins 2 | { 3 | import flash.utils.ByteArray; 4 | 5 | public class EmbedNoteskin8 extends EmbedNoteskinBase 6 | { 7 | [Embed(source = "NoteSkin8.swf", mimeType = 'application/octet-stream')] 8 | private static const EMBED_SWF:Class; 9 | 10 | private static const ID:int = 8; 11 | 12 | override public function getData():Object 13 | { 14 | return {"id": ID, 15 | "name": "BeatMania (v2)", 16 | "rotation": 0, 17 | "width": 70, 18 | "height": 51} 19 | } 20 | 21 | override public function getBytes():ByteArray 22 | { 23 | return new EMBED_SWF(); 24 | } 25 | 26 | override public function getID():int 27 | { 28 | return ID; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/game/noteskins/EmbedNoteskin9.as: -------------------------------------------------------------------------------- 1 | package game.noteskins 2 | { 3 | import flash.utils.ByteArray; 4 | 5 | public class EmbedNoteskin9 extends EmbedNoteskinBase 6 | { 7 | [Embed(source = "NoteSkin9.swf", mimeType = 'application/octet-stream')] 8 | private static const EMBED_SWF:Class; 9 | 10 | private static const ID:int = 9; 11 | 12 | override public function getData():Object 13 | { 14 | return {"id": ID, 15 | "name": "Minestorm", 16 | "rotation": 0, 17 | "width": 64, 18 | "height": 64} 19 | } 20 | 21 | override public function getBytes():ByteArray 22 | { 23 | return new EMBED_SWF(); 24 | } 25 | 26 | override public function getID():int 27 | { 28 | return ID; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/game/noteskins/EmbedNoteskinBase.as: -------------------------------------------------------------------------------- 1 | package game.noteskins 2 | { 3 | 4 | import flash.utils.ByteArray; 5 | 6 | public class EmbedNoteskinBase 7 | { 8 | public function getData():Object 9 | { 10 | return null; 11 | } 12 | 13 | public function getBytes():ByteArray 14 | { 15 | return null; 16 | } 17 | 18 | public function getID():int 19 | { 20 | return 1; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/game/noteskins/ExternalNoteskin.as: -------------------------------------------------------------------------------- 1 | package game.noteskins 2 | { 3 | 4 | public class ExternalNoteskin 5 | { 6 | public var file:String; 7 | public var data:Object; 8 | public var json:String; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/game/noteskins/NoteSkin1.swf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:06224097b3574c466a2862b58a09c3c1e89a7f14b95a626fa5520a2e0b18d6cb 3 | size 66653 4 | -------------------------------------------------------------------------------- /src/game/noteskins/NoteSkin10.swf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:db725724518cf8170360f7772a7d0d22895962ab4f7fc2bc1aec99cc9af697d5 3 | size 50723 4 | -------------------------------------------------------------------------------- /src/game/noteskins/NoteSkin2.swf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5de2c0e4adf614ec9947e8665185ad4a80ee37da5a73aeba4a4ee90e6fcef8e9 3 | size 16909 4 | -------------------------------------------------------------------------------- /src/game/noteskins/NoteSkin3.swf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6aae9d9f78853cb122a135a818719afcb7e2ed3379c29156cee44d7a7460768f 3 | size 15827 4 | -------------------------------------------------------------------------------- /src/game/noteskins/NoteSkin4.swf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cde3da948233805c97a60a8c6bfe4d253ad84b076125efe841dbf1e13c582c9e 3 | size 32294 4 | -------------------------------------------------------------------------------- /src/game/noteskins/NoteSkin5.swf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8782acc4b8c6875114bfc274703e60e7129841ba73da621b5e7e220efaafefde 3 | size 46663 4 | -------------------------------------------------------------------------------- /src/game/noteskins/NoteSkin6.swf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:16b04ffb2770fc57c645b96defca59ab60169de63206c867caa220e692a9524e 3 | size 36576 4 | -------------------------------------------------------------------------------- /src/game/noteskins/NoteSkin7.swf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e25ff19eaa4acd915c46b2780b7d33ea7fad863a8f49397cb17d08fcd45e4d45 3 | size 39441 4 | -------------------------------------------------------------------------------- /src/game/noteskins/NoteSkin8.swf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0cd1ce584e07de4995ad694f5b5f1672a5fc9b1e6cd53d4a8ce03c63358459b6 3 | size 18099 4 | -------------------------------------------------------------------------------- /src/game/noteskins/NoteSkin9.swf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:835470cc7ed7a4dcf365713cf02acaa054d8d096326124ae56ea996c1c053bc3 3 | size 14000 4 | -------------------------------------------------------------------------------- /src/game/results/GameResultBackground.as: -------------------------------------------------------------------------------- 1 | package game.results 2 | { 3 | import assets.GameBackgroundStripes; 4 | import flash.display.BitmapData; 5 | import flash.display.GradientType; 6 | import flash.display.Sprite; 7 | import flash.geom.Matrix; 8 | 9 | public class GameResultBackground extends Sprite 10 | { 11 | static public var BG_LIGHT:int = 0x1495BD; 12 | static public var BG_DARK:int = 0x033242; 13 | 14 | public function GameResultBackground():void 15 | { 16 | // Create Background 17 | var _matrix:Matrix = new Matrix(); 18 | _matrix.createGradientBox(Main.GAME_WIDTH, Main.GAME_HEIGHT, 5.75); 19 | this.graphics.clear(); 20 | this.graphics.beginGradientFill(GradientType.LINEAR, [BG_LIGHT, BG_DARK], [1, 1], [0x00, 0xFF], _matrix); 21 | this.graphics.drawRect(0, 0, Main.GAME_WIDTH, Main.GAME_HEIGHT); 22 | this.graphics.endFill(); 23 | this.cacheAsBitmap = true; 24 | this.cacheAsBitmapMatrix = _matrix; 25 | 26 | var bt:BitmapData = new GameBackgroundStripes(); 27 | this.graphics.beginBitmapFill(bt, null, false); 28 | this.graphics.drawRect(0, 0, Main.GAME_WIDTH, Main.GAME_HEIGHT); 29 | this.graphics.endFill(); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/menu/MenuButton.as: -------------------------------------------------------------------------------- 1 | package menu 2 | { 3 | import classes.ui.BoxButton; 4 | import flash.display.DisplayObjectContainer; 5 | 6 | public class MenuButton extends BoxButton 7 | { 8 | public var panel:String; 9 | public var index:String; 10 | 11 | public function MenuButton(parent:DisplayObjectContainer = null, xpos:Number = 0, wid:Number = 0, message:String = "", isActive:Boolean = false, listener:Function = null):void 12 | { 13 | super(parent, xpos, 0, wid, 28, message, 12, listener); 14 | super.active = isActive; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/menu/MenuSongSelectionOptions.as: -------------------------------------------------------------------------------- 1 | package menu 2 | { 3 | 4 | public class MenuSongSelectionOptions 5 | { 6 | public var activeGenre:int = 0; 7 | public var activeIndex:int = -1; 8 | public var activeSongId:int = -1; 9 | public var pageNumber:int = 0; 10 | public var infoTab:int = 0; 11 | 12 | public var scroll_position:Number = 0; 13 | 14 | public var last_search_text:String; 15 | public var last_search_type:String; 16 | 17 | public var last_sort_type:String; 18 | public var last_sort_order:String; 19 | 20 | public var isFilter:Boolean = false; 21 | public var filter:Function = null; 22 | 23 | public var queuePlaylist:Array = []; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/popups/filebrowser/FileBrowserDifficultyItem.as: -------------------------------------------------------------------------------- 1 | package popups.filebrowser 2 | { 3 | import assets.menu.ChartDifficultyLargeItem; 4 | import classes.ui.Text; 5 | 6 | public class FileBrowserDifficultyItem extends DifficultyItem 7 | { 8 | public var cache_info:FileFolderItem; 9 | 10 | public function FileBrowserDifficultyItem(index:int, cache_info:FileFolderItem):void 11 | { 12 | this.cache_info = cache_info; 13 | 14 | super(index, cache_info['info']['chart'][index]); 15 | } 16 | 17 | override protected function drawUI():void 18 | { 19 | addChild(new ChartDifficultyLargeItem()); 20 | 21 | var diff:Text = new Text(this, -1, 0, chart['difficulty']); 22 | diff.setAreaParams(24, 25, "center"); 23 | 24 | var name:Text = new Text(this, 27, 0, chart['class']); 25 | name.setAreaParams(169, 25); 26 | 27 | var type:Text = new Text(this, 184, 0, getChartType(chart['type'])); 28 | type.setAreaParams(30, 25, "right"); 29 | 30 | this.graphics.lineStyle(0, 0, 0); 31 | this.graphics.beginFill(DIFFICULTY_COLORS[getChartColorIndex(chart['class_color'])], 1); 32 | this.graphics.drawRect(1, 1, 24, 22); 33 | this.graphics.endFill(); 34 | } 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/popups/filebrowser/FileBrowserFilter.as: -------------------------------------------------------------------------------- 1 | package popups.filebrowser 2 | { 3 | 4 | public class FileBrowserFilter 5 | { 6 | public var type:String = "any"; 7 | public var term:String = ""; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/popups/filebrowser/FileFolder.as: -------------------------------------------------------------------------------- 1 | package popups.filebrowser 2 | { 3 | 4 | public class FileFolder 5 | { 6 | public var folder:String; 7 | public var file:String; 8 | public var data:Vector.; 9 | 10 | public var author:String; 11 | public var name:String; 12 | public var stepauthor:String; 13 | public var banner:String; 14 | public var ext:String; 15 | 16 | public function FileFolder(folder:String, file:String, ext:String, item:FileFolderItem) 17 | { 18 | this.folder = folder; 19 | this.file = file; 20 | this.ext = ext; 21 | this.data = new [item]; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/popups/filebrowser/FileFolderItem.as: -------------------------------------------------------------------------------- 1 | package popups.filebrowser 2 | { 3 | 4 | public class FileFolderItem 5 | { 6 | public var loc:String; 7 | public var info:Object; 8 | 9 | public function FileFolderItem(loc:String, info:Object) 10 | { 11 | this.loc = loc; 12 | this.info = info; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/popups/replays/ReplayHistoryTabBase.as: -------------------------------------------------------------------------------- 1 | package popups.replays 2 | { 3 | import classes.replay.Replay; 4 | import classes.ui.ScrollPaneContent; 5 | 6 | public class ReplayHistoryTabBase 7 | { 8 | protected var parent:ReplayHistoryWindow; 9 | public var container:ScrollPaneContent; 10 | 11 | public function ReplayHistoryTabBase(replayWindow:ReplayHistoryWindow):void 12 | { 13 | this.parent = replayWindow; 14 | } 15 | 16 | public function get name():String 17 | { 18 | return null; 19 | } 20 | 21 | public function openTab():void 22 | { 23 | 24 | } 25 | 26 | public function closeTab():void 27 | { 28 | 29 | } 30 | 31 | public function setValues():void 32 | { 33 | 34 | } 35 | 36 | public function prepareReplay(r:Replay):Replay 37 | { 38 | return r; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/popups/settings/SettingsTabDebug.as: -------------------------------------------------------------------------------- 1 | package popups.settings 2 | { 3 | 4 | public class SettingsTabDebug extends SettingsTabBase 5 | { 6 | 7 | public function SettingsTabDebug(settingsWindow:SettingsWindow):void 8 | { 9 | super(settingsWindow); 10 | } 11 | 12 | override public function get name():String 13 | { 14 | return "debug"; 15 | } 16 | 17 | override public function openTab():void 18 | { 19 | 20 | } 21 | 22 | override public function setValues():void 23 | { 24 | 25 | } 26 | } 27 | } 28 | --------------------------------------------------------------------------------